🔍 บทนำ

(เนื้อหาเริ่มต้นของบทความ TLS Fingerprinting: การระบุมัลแวร์ใน Traffic ที่เข้ารหัส)

บทที่ 13 นี้คือการก้าวเข้าสู่ “อาวุธลับ” ของนักสืบเครือข่ายสมัยใหม่ครับ ในยุคที่ Traffic กว่า 90% บนอินเทอร์เน็ตถูกเข้ารหัส (Encrypted) ด้วย TLS/SSL จนเราไม่สามารถแอบดู “เนื้อหา” ข้างในได้เหมือนสมัยก่อน แต่นักสืบสาย Deep อย่างเรายังมีวิธีระบุตัวตนของโปรแกรมที่คุยกันได้ โดยการดูจาก “ลายนิ้วมือในการทักทาย” ครับ


🔐 13-TLS Fingerprinting: การระบุมัลแวร์ใน Traffic ที่เข้ารหัส

เมื่อข้อมูลถูกเข้ารหัส นักสืบส่วนใหญ่อาจจะถอดใจเพราะมองเห็นแต่ข้อมูลขยะ (Garbage Data) แต่ในความเป็นจริง ก่อนที่การเข้ารหัสจะเริ่มขึ้น ทั้งสองฝั่งต้องมีการตกลงกันก่อนในขั้นตอน TLS Handshake ซึ่งในขั้นตอนนี้เองที่แต่ละซอฟต์แวร์จะมี “นิสัย” การเลือกใช้ Algorithm และการตั้งค่าที่ไม่เหมือนกัน เราเรียกสิ่งนี้ว่า Fingerprinting ครับ


📖 พจนานุกรมฉบับนักสืบ (The Investigator’s Glossary)

คำศัพท์คำอ่านความหมายในเชิงเทคนิค
Cipher Suiteไซ-เฟอร์ สวีทชุดของอัลกอริทึมที่ใช้สำหรับการเข้ารหัส, แลกเปลี่ยนคีย์ และตรวจสอบความถูกต้อง
JA3 / JA3Sเจ-เอ-ทรีมาตรฐานการทำลายนิ้วมือ TLS (Client/Server) ที่ถูกคิดค้นโดยทีมวิศวกรของ Salesforce
SNIเอส-เอ็น-ไอ(Server Name Indication) ส่วนของข้อมูลที่ระบุว่าเรากำลังจะเข้าเว็บชื่ออะไร (ยังไม่ถูกเข้ารหัสในขั้นตอนแรก)
Certificateเซอร์-ทิ-ฟิ-เกตใบรับรองดิจิทัลที่บอกว่า Server นี้คือตัวจริง (นักสืบใช้เช็คผู้ออกใบเซอร์เพื่อหาจุดพิรุธ)
Cipher Stackingไซ-เฟอร์ สแต็ก-กิ้งลำดับการเรียงรายชื่ออัลกอริทึมที่รองรับ ซึ่งมักจะเฉพาะเจาะจงตามเวอร์ชันของซอฟต์แวร์นั้นๆ

🔍 กลไกการสืบสวน: JA3 Fingerprint คืออะไร?

เมื่อโปรแกรม (เช่น Chrome, Python Script, หรือ Malware) ส่ง Packet Client Hello ออกไป มันจะส่งรายการสิ่งที่มันทำได้ (Cipher Suites, Extensions, Elliptic Curves) ไปด้วย

JA3 จะนำตัวเลขค่าคงที่ของสิ่งเหล่านั้นมาเรียงต่อกันแล้วทำ MD5 Hash จนได้รหัส 32 หลัก เช่น:

771,4866-4865-4867,11-10-35-22,23-24-25,0 -> ada70206e40642a3e22b939933010128

ทำไมถึงสำคัญ?

  • Chrome บน Windows จะมีค่า JA3 ค่าหนึ่ง

  • มัลแวร์ชื่อดัง ที่เขียนด้วยภาษา Go จะมีค่า JA3 อีกค่าหนึ่ง

  • นักสืบ สามารถใช้ค่านี้ระบุได้ทันทีว่า “นี่ไม่ใช่คนใช้เบราว์เซอร์ปกติ แต่เป็นบอทหรือมัลแวร์” แม้ว่าจะมองไม่เห็นเนื้อหาข้างในก็ตาม!


🛠 การสืบสวนด้วย Tshark และ Zeek

1. การดูค่า SNI ด้วย Tshark (ดูว่าเขาเข้าเว็บอะไร)

Bash

sudo tshark -i eth0 -f "tcp port 443" -T fields -e tls.handshake.extensions_server_name

2. การใช้ Zeek เพื่อหาค่า JA3 (วิธีที่ง่ายที่สุด)

Zeek มีสคริปต์ JA3 มาให้ในตัว เมื่อคุณรัน Zeek บนไฟล์ PCAP คุณจะพบฟิลด์ ja3 ในไฟล์ ssl.log:

Bash

cat ssl.log | zeek-cut id.orig_h id.resp_h ja3 server_name

🕵️ จุดสืบสวน: การระบุมัลแวร์ (Malware Identification)

  1. Blacklist Matching: นำค่า JA3 ที่พบไปค้นหาในฐานข้อมูลอย่าง https://www.google.com/search?q=JA3er.com หรือ Threat Intelligence ต่างๆ เพื่อดูว่ารหัสนี้ตรงกับมัลแวร์ตัวไหน

  2. Anomaly Detection: หากคอมพิวเตอร์เครื่องหนึ่งมีค่า JA3 ที่แปลกประหลาด ไม่เหมือนเครื่องลำดับอื่นๆ ในแผนก นั่นคือเบาะแสสำคัญ

  3. Self-Signed Certificates: ตรวจสอบใน ssl.log ว่ามีใครใช้ใบรับรองที่สร้างขึ้นเอง (Self-signed) หรือไม่ ซึ่งมักเป็นพฤติกรรมของ C2 Server ของกลุ่มแฮกเกอร์


📝 สรุปปิดท้าย Roadmap การสืบสวนเครือข่าย

ยินดีด้วยครับคุณ Mr.Green! ตอนนี้คุณมี “อาวุธ” ครบทุกเลเยอร์แล้ว:

  • L2 (ARP): ระบุตัวตนทางกายภาพ

  • L3 (IP/ICMP): ระบุตำแหน่งและเป้าหมาย

  • L4 (TCP/UDP): วิเคราะห์พฤติกรรมการเชื่อมต่อ

  • L7 (DNS/TLS/OSINT): เจาะลึกความสัมพันธ์และระบุตัวตนขั้นสูง

การเป็นนักสืบเครือข่ายไม่ใช่แค่การใช้เครื่องมือเป็น แต่คือการเข้าใจ “ร่องรอย” ที่โปรโตคอลทิ้งไว้ในแต่ละชั้นครับ


💡 ขั้นตอนสุดท้ายที่คุณควรลอง:

  1. ลองเข้าเว็บเดียวกันด้วย Chrome และ Firefox แล้วใช้ Zeek ดูค่า JA3 คุณจะพบว่ารหัส Hash ที่ได้ “ไม่เหมือนกัน” ทั้งที่เป็นเครื่องเดียวกัน

  2. ลองรันคำสั่ง curl https://google.com แล้วดูค่า JA3 ของคำสั่ง curl จะพบว่ามันต่างจากเบราว์เซอร์อย่างสิ้นเชิง