คลัง
forensics

Wireshark (Forensics)

Wireshark เป็นเครื่องมือวิเคราะห์ packet เชิงลึกแบบ GUI จุดแข็งคือ display filter ที่ทรงพลังและ follow stream / export object บทนี้ลงลึก display filter ครบทุกแบบ, Statistics, follow stream, export objects, การถอด protocol เฉพาะ (USB/DNS/TLS), และเทคนิคหา flag (เนื้อหาเพื่อการศึกษา/ฝึกใน lab/CTF)

IntermediateAdvanced#wireshark#forensics#network#display-filter#follow-stream#ctf

1. Display filters (cheat sheet)

filter ที่ใช้บ่อย (display ≠ capture filter)
# Protocol
http / dns / tcp / udp / icmp / arp / tls / ftp / smb2 / telnet

# IP / port
ip.addr == 10.0.0.5            # เกี่ยวกับ IP นี้ (src หรือ dst)
ip.src == 10.0.0.5 ; ip.dst == 1.1.1.1
tcp.port == 80 ; udp.port == 53
tcp.stream eq 5               # stream เฉพาะ

# HTTP
http.request.method == "POST"
http.request.uri contains "admin"
http.response.code == 200
http.host == "evil.com"
http.file_data contains "flag"

# ค้นเนื้อหา
frame contains "flag"         # ทุก byte ใน frame
tcp contains "password"

# DNS (tunneling/exfil)
dns.qry.name contains "exfil"
dns.qry.type == 16            # TXT
frame.len > 200 && dns        # query ยาวผิดปกติ

# ตัด noise
!(arp || icmp || dns)

# scan detection
tcp.flags.syn==1 && tcp.flags.ack==0
display filter กรองที่แสดง; frame contains หา keyword เร็ว; tcp.stream eq N โฟกัส 1 บทสนทนา

2. Statistics — ภาพรวม

  • Statistics → Protocol Hierarchy: มี protocol อะไรบ้าง สัดส่วนเท่าไหร่ (เริ่มที่นี่)
  • Statistics → Conversations: ใครคุยกับใคร, ปริมาณ byte (หา flow ใหญ่ผิดปกติ)
  • Statistics → Endpoints: IP/port ทั้งหมด + geolocation
  • Statistics → HTTP → Requests: URL ที่ถูกขอทั้งหมด
  • Statistics → DNS: สรุป DNS query

3. Follow Stream + Export Objects

  • Follow → TCP/HTTP/UDP Stream: คลิกขวา packet → Follow — อ่านบทสนทนาเต็ม; ปุ่มมุมขวาล่างสลับ ASCII/Hex Dump/Raw; dropdown เลือกทิศทาง (client→server เท่านั้น)
  • Save Follow Stream: ในหน้าต่าง Follow กด Save As ดึง raw data (เช่นไฟล์ที่ถูกส่ง)
  • File → Export Objects → HTTP/SMB/TFTP/IMF/DICOM: ดึงไฟล์/รูป/email ที่โอนผ่าน network ออกมาเป็นไฟล์
  • Export Packet Bytes (Ctrl+H): ดึง raw bytes ของ field ที่เลือก (เช่น payload ที่ฝังไฟล์)

4. ถอด protocol เฉพาะ + หา flag

  • HTTP: Export Objects ดึงไฟล์/รูป; ดู POST data หา credential/flag
  • USB HID keyboard: filter usb.capdata → ดึง keystroke → map HID usage code → ข้อความที่พิมพ์ (มี script เช่น usbkeyboard.py)
  • USB mass storage: ดึงไฟล์ที่ copy ผ่าน USB
  • DNS tunneling: รวม subdomain จาก query → decode (base32/hex)
  • TLS decrypt: Preferences → Protocols → TLS → (Pre)-Master-Secret log filename → ใส่ SSLKEYLOGFILE
  • ICMP: ดู data field (ข้อมูลซ่อนใน ping)
  • ค้น flag: Edit → Find Packet → String → ค้น 'flag' ใน packet bytes
USB keystroke เป็นโจทย์ forensics ยอดนิยม — capture HID มี usb.capdata 8 byte/packet, byte ที่ 3-8 เป็น keycode; map ตาม HID usage table จะได้ข้อความ (flag) ที่พิมพ์

5. Quick Reference

  • filter: http.request.method=='POST', frame contains 'flag'
  • tcp.stream eq N, ip.addr==X, dns.qry.type==16
  • Statistics → Protocol Hierarchy / Conversations (เริ่ม)
  • Follow TCP/HTTP Stream; Export Objects ดึงไฟล์
  • USB: usb.capdata → map HID keycode → ข้อความ
  • TLS decrypt (SSLKEYLOGFILE); DNS/ICMP tunneling

🧭 จับมือทำทีละขั้น (มีแค่ Kali) + ถ้าติดไปไหนต่อ

สมมติเปิดไฟล์ pcap ด้วย Wireshark แล้วยังไม่รู้จะกดตรงไหนก่อน มีแค่ Kali เปล่าๆ ทำตามนี้ทีละขั้น

  1. 1เปิดไฟล์: พิมพ์ wireshark capture.pcapng ใน terminal (หรือดับเบิลคลิกในเมนู)
  2. 2ดู Statistics → Protocol Hierarchy ก่อนเสมอ ว่ามี protocol อะไรเด่น
  3. 3ลอง filter เร็ว: พิมพ์ frame contains "flag" ในช่องกรองด้านบน
  4. 4เจอ HTTP: filter http.request ดู URL/POST data
  5. 5คลิกขวา packet ที่น่าสนใจ → Follow → TCP/HTTP Stream อ่านบทสนทนาเต็ม
  6. 6File → Export Objects → HTTP/SMB ดึงไฟล์ที่ถูกโอนออกมา
  7. 7ถ้าเป็น DNS แปลกๆ: filter dns.qry.type==16 หรือดู query ยาวผิดปกติ
  8. 8ถ้าเป็น USB capture: filter usb.capdata แล้วใช้ script map HID keycode
  9. 9ถ้าเจอ TLS เข้ารหัส: Preferences → Protocols → TLS → ใส่ SSLKEYLOGFILE (ถ้าโจทย์แถมมาให้)
  10. 10Edit → Find Packet → String ค้น "flag" ใน packet bytes โดยตรง
Protocol Hierarchy บอกอะไร → ไปทางนั้น
Protocol Hierarchy บอกว่าเด่นเรื่องอะไร
HTTP/FTP/Telnet (plaintext เยอะ)n2
USB (usb.capdata)n3
DNS ผิดปกติ (จำนวน/ความยาว query)n4
TLS/HTTPS ทั้งหมดn5
Follow Stream/Export Objects เจอไฟล์หรือ credential ไหม
✅ เจอ→ เปิดไฟล์ที่ export หรือใช้ credential ต่อ จบ
❌ ไม่เจอ→ ลอง frame contains 'flag' ทั่วทั้ง capture
map usb.capdata เป็นข้อความเจอ flag ไหม
✅ เจอ→ จบ อ่านข้อความที่พิมพ์
❌ ยังไม่ชัด→ เช็คว่าเป็น HID keyboard จริงไหม (8 byte/packet, byte 3-8=keycode)
รวม dns.qry.name แล้ว decode เจอข้อความไหม
✅ เจอ→ ประกอบข้อความจาก query เป็น flag จบ
❌ ไม่เจอ→ อาจไม่ใช่ tunneling ย้อนกลับไปดู protocol อื่น
มี SSLKEYLOGFILE/private key คู่โจทย์ไหม
✅ มี→ ใส่ใน Preferences → TLS แล้วอ่าน HTTP plaintext จบ
❌ ไม่มี→ ตัน decrypt ไม่ได้ — ดู metadata แทน (SNI, cert CN, ขนาด/เวลา)
ยังไม่เจอเลย ต้องการอะไรต่อ
อยากใช้ CLI สรุปสถิติ/สคริปต์ดึง field อัตโนมัติtoTshark
โจทย์มี memory dump คู่กันtoVol
ต้องเรียงเวลาทุก eventtoTimeline
ขั้นตอน/งานเครื่องมือใน Kaliติดตั้งเพิ่ม (ถ้าไม่มี)เครื่องมือออนไลน์
เปิด/กรอง packetwiresharkapt install wireshark-
สรุปสถิติ/สคริปต์ CLItshark--
ดึงไฟล์ที่โอนwireshark (Export Objects)--
สร้าง log สรุปทั้ง capturezeekapt install zeek-
decode DNS/USB payload--CyberChef
map USB HID keystroke-git clone usbkeyboard-decoder scripts-
crack/ดูรหัสที่เจอjohn, hashcat-crackstation.net
🚑 ถ้าตันสนิท ลองท่าถัดไป:
• อยาก CLI/สคริปต์อัตโนมัติกว่า GUI (ดึง field เป็น batch) → ไป PCAP Analysis
• โจทย์มี memory dump คู่กัน → ไป Volatility
• ต้องเรียง event ทุกแหล่งตามเวลา → ไป Timeline Analysis
• ไฟล์ที่ export ออกมามี metadata น่าสน → ไป Metadata Collection

โน้ตของฉัน

ยังไม่มีโน้ตสำหรับหัวข้อนี้