🔍 บทนำ
(เนื้อหาเริ่มต้นของบทความ Abnormal Flags Analysis: สแกนหาจุดพิรุธผ่าน TCP Flags)
บทที่ 7 นี้เราจะเจาะลึกสิ่งที่เรียกว่า “สีหน้าพิรุธ” ของ Packet ครับ ในบทก่อนเราเรียนรู้การจับมือที่ปกติ แต่ในโลกของการจารกรรม ผู้บุกรุกมักจะใช้เทคนิคการตั้งค่า Flag (ธง) ใน TCP Header ให้ผิดธรรมชาติเพื่อหลบเลี่ยงการตรวจจับของ Firewall หรือเพื่อระบุประเภทของระบบปฏิบัติการเป้าหมาย
หากคุณอ่าน Flag เหล่านี้ขาด คุณจะเห็น “เจตนาซ่อนเร้น” ของผู้บุกรุกทันทีครับ
🚩 07-Abnormal Flags Analysis: สแกนหาจุดพิรุธผ่าน TCP Flags
ในสถานการณ์ปกติ TCP Flags จะถูกตั้งค่าตามลำดับขั้นตอนของโปรโตคอล แต่สำหรับนักสืบเครือข่าย เมื่อเราพบ Packet ที่มีตัวเลือกแปลกๆ เช่น การส่งสัญญาณปิดการเชื่อมต่อทั้งที่ยังไม่ได้เริ่มจับมือ หรือการส่ง Packet ที่ไม่มี Flag เลยแม้แต่ตัวเดียว สิ่งเหล่านี้คือ “ธงแดง” (Red Flags) ที่บอกว่ามีคนกำลังพยายามทำอะไรบางอย่างกับระบบของคุณ
📖 พจนานุกรมฉบับนักสืบ (The Investigator’s Glossary)
| คำศัพท์ | คำอ่าน | ความหมายในเชิงเทคนิค |
|---|---|---|
| Evasion | อี-เว-ชัน | เทคนิคการ “หลบหลีก” ระบบป้องกัน เช่น การดัดแปลง Packet เพื่อให้ Firewall มองข้าม |
| Out-of-State | เอาต์-ออฟ-สเตท | Packet ที่โผล่มาแบบ “ผิดจังหวะ” เช่น ส่งคำตอบรับ (ACK) มาทั้งที่ไม่มีการส่งข้อมูล |
| Xmas Scan | คริสต์-มาส สแกน | การส่ง Packet ที่เปิด Flag ทุกตัวจนสว่างไสวเหมือนไฟต้นคริสต์มาส (FIN, PSH, URG) |
| Null Scan | นัล สแกน | การส่ง Packet ที่ “ว่างเปล่า” ไม่มีการตั้งค่า Flag ใดๆ เลย (000000) |
| Bitwise Filter | บิต-ไวส์ ฟิล-เตอร์ | การกรองข้อมูลระดับบิต ซึ่งนักสืบใช้เพื่อหาเจาะจงเฉพาะ Flag ที่สนใจใน Tshark |
🕵️ วิเคราะห์การสแกนแบบผิดธรรมชาติ (Evasion Scans)
ผู้บุกรุกมักใช้ Nmap ในโหมดพิเศษเพื่อทดสอบว่า Firewall ของเป้าหมายฉลาดแค่ไหน:
1. Null Scan (ธงว่าง)
กลไก: ส่ง Packet ที่ไม่มี Flag เลย
เจตนา: ตามมาตรฐาน TCP เครื่องที่เปิดอยู่ควรจะ “เงียบ” เมื่อเจอหน้าต่างที่ว่างเปล่าแบบนี้ แต่ถ้าเครื่องปิดอยู่มันจะตอบ
RSTกลับมาจุดสืบสวน: ตรวจจับด้วย Tshark:
tcp.flags == 0
2. Xmas Scan (ธงไฟคริสต์มาส)
กลไก: เปิด Flag FIN, PSH, และ URG พร้อมกัน
เจตนา: เป็นการสร้างความสับสนให้ระบบจัดการ Stack ของ OS รุ่นเก่าๆ เพื่อดูการตอบสนอง
จุดสืบสวน: ตรวจจับด้วย Tshark:
tcp.flags == 0x029(เลขฐานสิบหกของ FIN+PSH+URG)
3. SYN-FIN Scan (การทักทายที่ขัดแย้ง)
กลไก: ส่งทั้งทักทาย (SYN) และขอลาก่อน (FIN) ใน Packet เดียวกัน
เจตนา: เป็นสถานะที่เป็นไปไม่ได้ในธรรมชาติ ใช้เพื่อหลบเลี่ยง IDS (Intrusion Detection System) บางรุ่นที่ตรวจจับแค่ SYN อย่างเดียว
จุดสืบสวน: ตรวจจับด้วย Tshark:
tcp.flags.syn == 1 && tcp.flags.fin == 1
🛠 การสืบสวนด้วย Tshark: เจาะลึกระดับบิต
การใช้ Tshark กรองหา Flag ที่ผิดปกติ ต้องใช้ความแม่นยำสูงครับ:
กรองหา Packet ที่พยายาม “Reset” การเชื่อมต่อแบบรัวๆ (อาจโดนยิง RST Attack)
Bash
sudo tshark -i eth0 -Y "tcp.flags.reset == 1"
กรองหา Xmas Scan (มองหาบิตพิรุธ)
Bash
sudo tshark -i eth0 -Y "tcp.flags & 0x29"
🕵️ บันทึกการวิเคราะห์: ทำไมต้องทำเรื่องยากให้วุ่นวาย?
นักสืบต้องเข้าใจว่าผู้บุกรุกไม่ได้ใช้เทคนิคเหล่านี้เพียงเพื่อความสนุก แต่มีเป้าหมาย 3 ประการ:
OS Fingerprinting: แต่ละระบบปฏิบัติการ (Windows, Linux, BSD) มีวิธีการตอบสนองต่อ Flag ที่ผิดกฎ TCP ไม่เหมือนกัน นักสืบจึงใช้จุดนี้ระบุ OS เป้าหมายได้แม่นยำกว่าการดู TTL
Firewall Bypassing: Firewall บางรุ่นจะตรวจสอบเฉพาะการเริ่มจับมือ (SYN) แต่ถ้าเราส่ง Packet “ไร้สถานะ” (Out-of-state) เข้าไป มันอาจจะปล่อยผ่านไปถึงเครื่องข้างใน
Information Gathering: เพื่อหาพอร์ตที่เปิดอยู่โดยไม่ทิ้งร่องรอยไว้ในระบบ Log ของ Application
💡 ขั้นตอนต่อไปที่คุณควรลอง:
ลองใช้ Nmap ในเครื่อง Arch Linux ของคุณรันคำสั่ง
sudo nmap -sX localhost(Xmas Scan) แล้วเปิด Tshark ดูผลลัพธ์ที่เกิดขึ้น คุณจะเห็น “ไฟคริสต์มาส” สว่างขึ้นในหน้าจอ Terminal ของคุณทันทีสังเกตว่า
tcp.flags.strใน Tshark จะแสดงตัวอักษรย่อของ Flag ที่เปิดอยู่ เช่น[FIN, PSH, URG]