🔍 บทนำ

(เนื้อหาเริ่มต้นของบทความ Zeek for Investigators: เปลี่ยน Log มหาศาลให้กลายเป็นเบาะแส)

ในบทที่ 8 นี้ เราจะขยับจากการจ้องมอง Packet ทีละบรรทัด มาสู่การใช้เครื่องมือระดับ “สมองกล” อย่าง Zeek (เดิมชื่อ Bro) ครับ

หาก Tshark คือการมองผ่าน “กล้องจุลทรรศน์” เพื่อดูทุกรายละเอียด Zeek ก็คือ “สายสืบหน้าจอ” ที่คอยจดบันทึกพฤติกรรมสรุป (Summary) ของทุกคนที่เดินผ่านเครือข่ายให้เราโดยอัตโนมัติ สำหรับนักสืบแล้ว Zeek คือเครื่องมือที่จะเปลี่ยนไฟล์ PCAP ขนาด 1GB ให้กลายเป็นไฟล์ Log ขนาดเล็กที่อ่านง่ายและเต็มไปด้วย “เบาะแส” ครับ


🦉 08-Zeek for Investigators: เปลี่ยน Log มหาศาลให้กลายเป็นเบาะแส

ในการสืบสวนเครือข่ายที่มี Traffic หนาแน่น เราไม่สามารถนั่งอ่าน Packet ทีละตัวได้ Zeek เข้ามาแก้ปัญหานี้โดยการทำตัวเป็น Network Security Monitor (NSM) ซึ่งไม่ได้แค่ดักจับ Packet แต่จะ “ตีความ” (Interpret) ว่าเกิดอะไรขึ้น แล้วสรุปเป็นไฟล์ Log แยกตามประเภท เช่น ใครคุยกับใคร (conn.log), ใครเข้าเว็บอะไร (http.log) หรือใครกำลังขอไฟล์อะไร (files.log)


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

คำศัพท์คำอ่านความหมายในเชิงเทคนิค
Flow-basedโฟล-เบสต์การวิเคราะห์ข้อมูลแบบ “ภาพรวม” โดยมองการคุยกันตั้งแต่ต้นจนจบเป็น 1 รายการ (Flow)
Transactionแทรน-แซก-ชันหน่วยของการทำงานในระดับ Application เช่น การส่ง 1 Request และได้รับ 1 Response
Dumb Snifferดัมบ์ สนิก-เฟอร์คำเรียกเล่นๆ ของเครื่องมือที่เก็บ Packet อย่างเดียวโดยไม่คิด (ต่างจาก Zeek ที่เป็น Smart Analyzer)
UID (Unique ID)ยู-ไอ-ดีรหัสประจำตัวของการเชื่อมต่อ ซึ่ง Zeek จะใช้เชื่อมโยง Log หลายๆ ไฟล์เข้าด้วยกัน

🕵️ ทำไม Zeek ถึงเป็น “เพื่อนรัก” ของนักสืบ?

เมื่อคุณรัน Zeek บนไฟล์ PCAP หรือบน Interface จริง คุณจะได้ไฟล์ Log ที่จัดระเบียบมาแล้ว ดังนี้:

  1. conn.log (หัวใจหลัก): สรุปการเชื่อมต่อทั้งหมด ใคร (Source IP) คุยกับใคร (Dest IP), ใช้พอร์ตอะไร, คุยนดานแค่ไหน และส่งข้อมูลไปกี่ Byte

  2. dns.log: รวมคำถาม-ตอบ DNS ทั้งหมด (ไม่ต้องมานั่งกรองใน Tshark เอง)

  3. ssl.log: สรุปข้อมูลใบเซอร์ (Certificates) และค่า SNI ของเว็บที่ถูกเรียก

  4. weird.log: บันทึกสิ่งผิดปกติ (Anomaly) ที่ Zeek พบ เช่น Packet ที่ผิดมาตรฐาน (มักเจอพวกสแกนเนอร์ที่นี่)


🛠 การสืบสวนด้วย Zeek บน Arch Linux

ก่อนอื่นให้ติดตั้ง Zeek (อาจต้องใช้ AUR):

Bash

# ตัวอย่างการติดตั้ง (ขึ้นอยู่กับ Repository ของคุณ)
yay -S zeek

1. การวิเคราะห์ไฟล์ PCAP ที่เก็บมา

สมมติคุณมีไฟล์ evidence.pcap ที่ได้จากการสืบสวน:

Bash

zeek -r evidence.pcap

Zeek จะสร้างไฟล์ .log จำนวนมากในโฟลเดอร์ปัจจุบันทันที

2. การใช้ zeek-cut เพื่อหาเบาะแสแบบเร็วๆ

หากต้องการรู้ว่า “ใครแอบสแกนพอร์ตเราบ้าง” ให้ไปดูที่ conn.log:

Bash

cat conn.log | zeek-cut id.orig_h id.resp_p proto service | head -n 20

คำสั่งนี้จะดึงเฉพาะ IP ต้นทาง, พอร์ตปลายทาง และชื่อบริการมาโชว์ให้อ่านง่ายๆ


🕵️ บันทึกการวิเคราะห์: ร่องรอยที่ Zeek ทิ้งไว้

  1. Connection State: ใน conn.log จะมีฟิลด์ conn_state ถ้าคุณเห็นค่า S0 ซ้ำๆ จาก IP เดียวกัน นั่นคือการสแกนแบบ SYN Stealth Scan (ส่ง SYN มาแล้วหายไป)

  2. History: ฟิลด์ history จะบอกลำดับ Flags เช่น ShAdD (SYN, SYN-ACK, ACK, Data) ซึ่งบอกได้ทันทีว่าการเชื่อมต่อนั้น “สำเร็จ” และมีการส่งข้อมูลจริง

  3. Notice Framework: Zeek สามารถตั้งกฎ (Scripts) ให้แจ้งเตือนเมื่อเจอสิ่งที่น่าสงสัย เช่น “มีการเดารหัสผ่าน SSH (Brute Force)”


📝 สรุปภารกิจในบทนี้

การใช้ Zeek คือการยกระดับจากการเป็น “คนนั่งดู Packet” มาเป็น “ผู้จัดการระบบสืบสวน” ครับ Zeek จะช่วยให้คุณประหยัดเวลาได้มหาศาล และทำให้คุณเห็น “พฤติกรรม” (Behavior) แทนที่จะเห็นแค่ “ข้อมูล” (Data)


💡 ขั้นตอนต่อไปที่คุณควรลอง:

  1. ลองรัน Zeek บนไฟล์ PCAP ที่คุณเคยเก็บไว้จากบท Nmap แล้วเปิดดูไฟล์ weird.log คุณจะเห็นว่า Zeek ฟ้องพฤติกรรมของ Nmap ไว้เพียบ!

  2. ใช้ zeek-cut ดึงข้อมูลจาก dns.log มาดูว่าในเครื่องคุณมีการเรียกชื่อ Domain แปลกๆ บ้างหรือไม่