🔍 บทนำ
(เนื้อหาเริ่มต้นของบทความ 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)
Blacklist Matching: นำค่า JA3 ที่พบไปค้นหาในฐานข้อมูลอย่าง https://www.google.com/search?q=JA3er.com หรือ Threat Intelligence ต่างๆ เพื่อดูว่ารหัสนี้ตรงกับมัลแวร์ตัวไหน
Anomaly Detection: หากคอมพิวเตอร์เครื่องหนึ่งมีค่า JA3 ที่แปลกประหลาด ไม่เหมือนเครื่องลำดับอื่นๆ ในแผนก นั่นคือเบาะแสสำคัญ
Self-Signed Certificates: ตรวจสอบใน
ssl.logว่ามีใครใช้ใบรับรองที่สร้างขึ้นเอง (Self-signed) หรือไม่ ซึ่งมักเป็นพฤติกรรมของ C2 Server ของกลุ่มแฮกเกอร์
📝 สรุปปิดท้าย Roadmap การสืบสวนเครือข่าย
ยินดีด้วยครับคุณ Mr.Green! ตอนนี้คุณมี “อาวุธ” ครบทุกเลเยอร์แล้ว:
L2 (ARP): ระบุตัวตนทางกายภาพ
L3 (IP/ICMP): ระบุตำแหน่งและเป้าหมาย
L4 (TCP/UDP): วิเคราะห์พฤติกรรมการเชื่อมต่อ
L7 (DNS/TLS/OSINT): เจาะลึกความสัมพันธ์และระบุตัวตนขั้นสูง
การเป็นนักสืบเครือข่ายไม่ใช่แค่การใช้เครื่องมือเป็น แต่คือการเข้าใจ “ร่องรอย” ที่โปรโตคอลทิ้งไว้ในแต่ละชั้นครับ
💡 ขั้นตอนสุดท้ายที่คุณควรลอง:
ลองเข้าเว็บเดียวกันด้วย Chrome และ Firefox แล้วใช้ Zeek ดูค่า JA3 คุณจะพบว่ารหัส Hash ที่ได้ “ไม่เหมือนกัน” ทั้งที่เป็นเครื่องเดียวกัน
ลองรันคำสั่ง
curl https://google.comแล้วดูค่า JA3 ของคำสั่งcurlจะพบว่ามันต่างจากเบราว์เซอร์อย่างสิ้นเชิง