คลัง
wireless

Handshake Analysis

Handshake Analysis คือการตรวจสอบและจัดการ 4-way handshake ที่จับมาได้ก่อน crack — ยืนยันว่า handshake ครบ (มี EAPOL message ที่จำเป็น), แยกเฉพาะ handshake ที่ดี, และแปลง format บทนี้ลงลึกการอ่าน EAPOL ใน Wireshark, การ verify, และการ clean capture (เนื้อหาเพื่อทดสอบที่ได้รับอนุญาต)

IntermediateAdvanced#handshake#wireless#eapol#4-way#wireshark#verify#ctf

1. ทำไมต้องวิเคราะห์ handshake ก่อน crack

การ crack จะสำเร็จก็ต่อเมื่อ handshake ที่จับมาครบและถูกต้อง — capture ที่ได้บ่อยครั้งมี handshake ไม่ครบ (ขาด message), มี handshake ปนกันหลาย AP, หรือมี noise การวิเคราะห์ก่อนช่วยประหยัดเวลา (ไม่ต้อง crack handshake เสียที่ crack ไม่ได้อยู่แล้ว) และยืนยันว่าจับสำเร็จจริง

2. EAPOL messages — handshake ครบคืออะไร

4-way handshake คือ EAPOL frame 4 ตัว (M1–M4) สำหรับ crack ต้องการอย่างน้อย M2 (มี MIC จาก client) คู่กับ M1 (มี ANonce) — ที่สำคัญที่สุดคือคู่ M1+M2 หรือ M2+M3 ที่มี nonce และ MIC ครบ

messageมีอะไรสำคัญต่อ crack
M1 (AP→Client)ANonceให้ ANonce
M2 (Client→AP)SNonce + MICสำคัญสุด (MIC ใช้ verify)
M3 (AP→Client)GTK + MICใช้ได้เช่นกัน
M4 (Client→AP)ACKไม่จำเป็น

3. ตรวจ handshake ใน Wireshark

filter EAPOLLinux
# เปิด capture ใน Wireshark แล้วใช้ display filter:
eapol

# ดูว่ามี message 1-4 ครบไหม (ดู Info column: "Message 1 of 4" ฯลฯ)
# ต้องมีอย่างน้อย M1+M2 ของ BSSID เดียวกัน (nonce ตรงคู่)

# ผ่าน tshark
tshark -r capture.cap -Y "eapol" -T fields -e wlan.sa -e wlan.da -e eapol.type

# กรองเฉพาะ BSSID
# wlan.bssid == aa:bb:cc:dd:ee:ff && eapol
ดู Info column ว่ามี 'Message 1/2/3/4 of 4' — M1+M2 (หรือ M2+M3) ครบ = crack ได้

4. Verify และ clean capture

ตรวจและแยก handshakeLinux
# aircrack-ng บอกว่ามี handshake ไหม
aircrack-ng capture-01.cap
# จะ list AP ที่มี "(handshake)" กำกับ

# wpaclean — แยกเฉพาะ handshake ที่ดี ตัด noise
wpaclean clean_out.cap capture-01.cap

# แปลงเป็น hashcat 22000 (ตรวจความครบในตัว)
hcxpcapngtool -o hash.22000 capture.pcapng
# ถ้า hcxpcapngtool ไม่ output = handshake ไม่ครบ → จับใหม่
ถ้า aircrack-ng ไม่ขึ้น (handshake) หรือ hcxpcapngtool ไม่ได้ hash → ต้องกลับไปจับใหม่ (deauth อีกครั้ง)

5. Troubleshooting

  • ไม่มี handshake: client ไม่ได้ reconnect — deauth อีก, รอ client active, หรือลอง PMKID แทน
  • handshake ไม่ครบ: จับได้แค่บาง message — เข้าใกล้ AP/client มากขึ้น, ลด noise
  • crack ไม่ได้ทั้งที่ handshake ครบ: passphrase ไม่อยู่ใน wordlist — ลอง wordlist อื่น/rule/mask
  • หลาย AP ปน: ใช้ --bssid กรองตอนจับ, หรือ wpaclean แยก
  • nonce ไม่ตรงคู่: M1 กับ M2 มาคนละ session — จับใหม่ให้ได้คู่ต่อเนื่อง

6. Quick Reference

  • ตรวจ handshake ก่อน crack = ประหยัดเวลา
  • ต้องการ M2 (MIC) + M1 (ANonce) ครบคู่
  • Wireshark filter: eapol → ดู Info 'Message N of 4'
  • verify: aircrack-ng cap (ขึ้น handshake?) / hcxpcapngtool
  • clean: wpaclean out.cap in.cap
  • ไม่ครบ → deauth จับใหม่ หรือใช้ PMKID

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

สมมติมีไฟล์ capture (.cap/.pcapng) อยู่ในมือแล้ว — จากโจทย์ CTF ที่แจกมา หรือจับเองด้วย airodump-ng/hcxdumptool — แต่ยังไม่รู้ว่า crack ได้จริงไหม ทำตามนี้ ก่อน เสียเวลา crack จะได้ไม่พลาด

  1. 1เปิดไฟล์ใน Wireshark แล้วพิมพ์ display filter: eapol — ถ้าไม่มี frame ขึ้นเลย แปลว่าไม่มี handshake ในไฟล์นี้
  2. 2ดู Info column ของแต่ละ frame — ควรเห็นข้อความ 'Message 1 of 4', 'Message 2 of 4' ฯลฯ
  3. 3เช็คว่ามี M1 (จาก AP) กับ M2 (จาก client) ของ BSSID เดียวกัน ต่อเนื่องกันไหม
  4. 4ยืนยันด้วยบรรทัดคำสั่ง: tshark -r capture.cap -Y eapol -T fields -e wlan.sa -e wlan.da -e eapol.type
  5. 5ให้ aircrack-ng เช็คซ้ำ: aircrack-ng capture-01.cap — ต้องเห็นคำว่า (handshake) ต่อท้าย BSSID เป้าหมาย
  6. 6แปลงเป็น hashcat format พร้อมเช็คความครบในตัว: hcxpcapngtool -o hash.22000 capture.pcapng
  7. 7ดูว่า hash.22000 มีข้อมูลจริงไหม: cat hash.22000 — ควรเห็นบรรทัดขึ้นต้น WPA*02*... (handshake) หรือ WPA*01*... (PMKID)
  8. 8ถ้ามีหลาย AP ปนกันในไฟล์เดียว ให้แยกก่อนด้วย wpaclean clean_out.cap capture-01.cap
  9. 9เมื่อ hash.22000 มีข้อมูลแล้ว ค่อยไป crack ต่อด้วย hashcat/aircrack-ng
มีไฟล์ capture แล้ว — ตรวจก่อน crack
เปิด capture + filter eapol ใน Wireshark
display filter: eapol
✅ เห็น frame eapol อย่างน้อยคู่นึง→ ตรวจว่าครบ M1+M2
❌ ไม่เห็น eapol เลย→ ไฟล์นี้ไม่มี handshake
ดู Info column: มี Message 1+2 (หรือ 2+3) ของ BSSID เดียวกันต่อเนื่องไหม
✅ มีคู่ครบ nonce ตรงกัน→ verify ด้วยเครื่องมือ
❌ ไม่ครบ/nonce ไม่ตรงคู่→ กลับไปจับใหม่ (deauth อีกรอบ)
ยืนยันด้วย aircrack-ng + hcxpcapngtool
aircrack-ng cap.cap ; hcxpcapngtool -o hash.22000 cap.pcapng
✅ ทั้งคู่ยืนยันว่ามี handshake / ได้ hash ออกมา→ ไป crack ต่อ
❌ hcxpcapngtool ไม่ output อะไร→ ลอง clean ตัด noise ก่อน
ตัด noise ด้วย wpaclean ก่อนแปลงใหม่
wpaclean clean_out.cap capture-01.cap
✅ clean แล้วแปลงได้ hash→ ไป crack ต่อ
❌ ยังไม่ได้แม้ clean แล้ว→ handshake เสียจริง กลับไปจับใหม่
ขั้นตอน/งานเครื่องมือใน Kaliติดตั้งเพิ่ม (ถ้าไม่มี)เครื่องมือออนไลน์
เปิด/อ่าน EAPOL framewireshark, tshark-cyberchef.org (แกะ hex ของ frame)
ตรวจว่ามี handshakeaircrack-ng--
ตัด noise / แยก handshake ที่ดีwpaclean (มากับ aircrack-ng)--
แปลงเป็น hashcat format-apt install hcxtools (hcxpcapngtool)-
เช็ค hash กับฐานข้อมูลสาธารณะ--wpa-sec.stanev.org (upload handshake)
crack ต่อเมื่อ hash พร้อมhashcat, aircrack-ng-hashcat.net/wiki
🚑 ถ้าตันสนิท ลองท่าถัดไป: Aircrack-ng — ถ้าต้องกลับไปจับ handshake ใหม่ทั้งหมด (ไฟล์เดิมไม่มี/ไม่ครบ); Hashcat Workflow — เมื่อ hash.22000 พร้อมแล้ว ไปเลือก attack mode ต่อ; WPA2 — ถ้าอยากทบทวนว่า 4-way handshake ทำงานยังไงและมีทาง PMKID; WPA3 — ถ้าเจอ SAE แทน EAPOL ปกติ (ไม่ใช่ handshake แบบเดียวกัน)

โน้ตของฉัน

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