WPA3
WPA3 แทนที่ WPA2 ด้วย SAE (Simultaneous Authentication of Equals หรือ Dragonfly) — password-authenticated key exchange ที่ให้ forward secrecy และป้องกัน offline dictionary attack ที่ใช้ได้กับ WPA2 พร้อมบังคับ PMF (Protected Management Frames) บทนี้อธิบายกลไก SAE, ทำไม WPA2 attack ใช้ไม่ได้, ช่องโหว่ Dragonblood, การ downgrade ผ่าน transition mode กลับไป WPA2, บทบาทของ PMF, และสถานะเครื่องมือ (เนื้อหาเพื่อการศึกษา/ทดสอบในเครือข่ายที่ได้รับอนุญาต)
1. WPA3 ต่างจาก WPA2 อย่างไร
WPA3-Personal แทน PSK 4-way handshake ด้วย SAE (Dragonfly) — เป็น password-authenticated key exchange (PAKE) ที่สร้างบน Diffie-Hellman ให้ forward secrecy (จับ handshake วันนี้แล้วรู้รหัสภายหลัง ก็ถอดของเก่าไม่ได้) และป้องกัน offline crack ต่างจาก WPA2 ที่จับ handshake มา brute offline ได้ตามใจ — SAE ไม่เปิดเผยข้อมูลพอให้ verify การเดารหัสนอกเครือข่าย ทุกครั้งที่เดาต้อง interact กับ AP จริง (online, ช้า, ตรวจจับได้)
| WPA2-PSK | WPA3-SAE | |
|---|---|---|
| key exchange | 4-way handshake | SAE (Dragonfly) + 4-way |
| offline crack จาก capture | ได้ (handshake/PMKID) | ไม่ได้ |
| forward secrecy | ไม่มี | มี |
| การเดารหัส | offline ไม่จำกัด | online เท่านั้น (ช้า/ตรวจจับได้) |
| management frame protection (PMF) | optional | บังคับ (mandatory) |
| deauth attack | ได้ (frame ไม่ป้องกัน) | ป้องกันด้วย PMF |
2. SAE / Dragonfly ทำงานอย่างไร
SAE ทำ 2 เฟส: Commit (แต่ละฝ่ายส่งค่าที่ derive จากรหัสผ่าน hash-to-curve/hash-to-group โดยไม่เปิดเผยรหัส) แล้ว Confirm (พิสูจน์ว่าต่างฝ่ายได้ key เดียวกัน) ผลคือ PMK ที่นำไปทำ 4-way handshake ต่อ จุดสำคัญ: ค่าที่ส่งใน commit เป็น commitment ที่ verify offline ไม่ได้ — จึงต้องเดากับ AP จริงทีละครั้ง
3. ทำไม WPA2 attack ใช้ไม่ได้
การจับ handshake/PMKID แล้ว crack offline (หัวใจของการโจมตี WPA2 — ดู wpa2) ใช้กับ WPA3-SAE ไม่ได้ เพราะ SAE ออกแบบให้ข้อมูลที่จับได้ไม่พอ verify การเดารหัสแบบ offline ผู้โจมตีต้องเดาทีละครั้งกับ AP จริง (online) ซึ่งช้ามาก ถูก rate-limit และตรวจจับได้ — ทำให้ dictionary attack ไม่คุ้ม นอกจากนี้ PMF ที่บังคับใน WPA3 ทำให้ deauth attack ไม่ทำงาน (จึงบังคับ reconnect เพื่อจับ handshake ไม่ได้เหมือน WPA2)
4. Dragonblood — ช่องโหว่ SAE
ปี 2019 Vanhoef & Ronen เปิดเผย Dragonblood — ชุดช่องโหว่ใน SAE รุ่นแรก (CVE-2019-9494 ถึง 9499) ที่ leak ข้อมูลรหัสผ่านผ่าน side-channel และเปิดทาง downgrade ทำให้ทำ offline dictionary partitioning ได้บาง implementation
| ช่องโหว่ | ประเภท | ผลกระทบ |
|---|---|---|
| CVE-2019-9494 | cache-based side-channel | leak ข้อมูล password element → partition attack |
| CVE-2019-9495 | timing-based side-channel | เวลาในการ hash-to-group รั่วข้อมูลรหัส |
| CVE-2019-9496 | SAE reflection / DoS | ทำให้ SAE handshake ล้ม (DoS) |
| CVE-2019-9497/9498/9499 | EAP-pwd issues | กระทบ EAP-pwd (ตระกูล Dragonfly) |
| Downgrade to WPA2 | transition mode | บังคับ client ใช้ WPA2 → crack แบบเดิม |
หลักการ side-channel: implementation ที่ใช้อัลกอริทึม hunting-and-pecking ในการ hash รหัสเป็นจุดบนเส้นโค้ง มี branch/เวลา/cache access ที่ขึ้นกับค่ารหัส — วัด timing หรือ cache แล้วอนุมานว่ารหัสอยู่ใน partition ใด ทำซ้ำหลาย observation จนแคบลงพอจะ offline brute ได้ SAE รุ่นใหม่ใช้ hash-to-curve (SSWU) แบบ constant-time จึงปิดช่องนี้ — Dragonblood กระทบเป็นหลักกับ firmware/ไดรเวอร์เก่าที่ไม่ patch
5. Transition Mode Downgrade → WPA2
หลาย AP เปิด WPA3 transition mode (โฆษณาทั้ง WPA3-SAE และ WPA2-PSK ด้วย SSID/รหัสเดียวกัน) เพื่อให้อุปกรณ์เก่าที่ไม่รองรับ SAE ยังต่อได้ — นี่คือจุดอ่อนหลักในทางปฏิบัติ เพราะรหัสเดียวกันถูกใช้กับ WPA2 ด้วย ผู้โจมตีตั้ง rogue AP ที่โฆษณาเฉพาะ WPA2 (SSID เดียวกัน) ทำให้ client ที่รองรับ WPA2 หลงมาต่อแบบ WPA2 แล้วจับ handshake ไป crack offline ตามปกติได้ (ดู wpa2)
# 1) ตรวจว่า AP เป็น transition mode
sudo airodump-ng wlan0mon
# ดูคอลัมน์ AUTH/ENC: ถ้าเห็นทั้ง WPA2 และ WPA3 (เช่น "WPA2 WPA3" / "PSK SAE")
# = transition mode → มีช่องทาง downgrade
# ถ้าเป็น SAE อย่างเดียว = WPA3-only → offline crack ไม่ได้
# 2) จับ handshake ผ่านช่องทาง WPA2 (transition mode)
# hcxdumptool รวบ frame ที่เกี่ยวข้อง (client ที่ต่อแบบ WPA2)
sudo hcxdumptool -i wlan0mon -o dump.pcapng --enable_status=1
# 3) แปลง + crack แบบ WPA2 (เมื่อได้ WPA2 handshake จาก transition)
hcxpcapngtool -o hash.hc22000 dump.pcapng
hashcat -m 22000 hash.hc22000 rockyou.txt
# → ได้ passphrase เดียวกับที่ใช้กับ WPA3 (รหัสร่วมกัน)
# WPA3-only (SAE เท่านั้น) → hash เอาไป offline crack ไม่ได้6. PMF (Protected Management Frames)
WPA3 บังคับ PMF (802.11w) ซึ่งเซ็น management frame (deauth/disassoc) — ทำให้เทคนิค WPA2 ที่ส่ง deauth ปลอมเพื่อบังคับ client หลุดแล้ว reconnect (เพื่อจับ handshake) ใช้ไม่ได้ เพราะ AP/client ปฏิเสธ deauth ที่ไม่ได้เซ็น นี่เป็นอีกเหตุผลที่การจับ handshake ของ WPA3-only ยากกว่ามาก
- PMF = required ใน WPA3 → deauth/disassoc flood ไม่ทำงาน
- WPA2 ที่เปิด PMF ก็กัน deauth ได้เช่นกัน (optional ใน WPA2, required ใน WPA3)
- ผลต่อ attacker: ไม่มีทางบังคับ reconnect เพื่อจับ handshake → ต้องรอ client ต่อเองตามธรรมชาติ
- transition mode ฝั่ง WPA2 อาจไม่ได้บังคับ PMF → ยังมีช่องให้ deauth client เก่า
7. สถานะเครื่องมือ
| เครื่องมือ | ใช้กับ WPA3 | หมายเหตุ |
|---|---|---|
| airodump-ng | ตรวจโหมด (SAE / transition) | ดู ENC/AUTH column |
| hcxdumptool | จับ frame (WPA2 side ของ transition) | SAE-only จับไปก็ crack ไม่ได้ |
| hashcat -m 22000 | crack เฉพาะ WPA2 handshake | ไม่มีโหมด offline สำหรับ SAE |
| Dragonblood tools (dragonslayer/drake) | ทดสอบ CVE-2019-94xx | ต้อง implementation เก่าที่ยังไม่ patch |
| wpa_supplicant / hostapd | ตั้ง SAE/rogue AP ทดสอบ | ใช้จำลอง transition/downgrade ใน lab |
8. Quick Reference
- WPA3 ใช้ SAE (Dragonfly) → offline crack จาก capture ไม่ได้ (ต่างจาก WPA2)
- SAE: Commit (derive จากรหัส, verify offline ไม่ได้) → Confirm → PMK → 4-way
- PMF บังคับ → deauth attack ไม่ทำงาน (จับ handshake ยาก)
- ช่องทางหลัก (practical): transition mode → downgrade → จับ WPA2 handshake → crack
- ตรวจ transition: airodump เห็นทั้ง WPA2+WPA3 (PSK+SAE)
- Dragonblood (CVE-2019-94xx): side-channel/timing บน implementation เก่า (ยาก)
- crack: hcxdumptool → hcxpcapngtool → hashcat -m 22000 (เฉพาะ WPA2 side)
- WPA3-only + PMF + patch = ทน offline attack → เหลือแค่ online guess (ช้ามาก)
🧭 จับมือทำทีละขั้น (มีแค่ Kali) + ถ้าติดไปไหนต่อ
สมมติโจทย์บอกว่าเป้าหมายเป็น WPA3 (หรือ scan แล้วเจอ SAE) มีแค่ Kali — เรื่องแรกที่ต้องรู้คือ AP เป็น WPA3-only หรือ transition mode เพราะวิธีเล่นต่างกันคนละแบบ อย่าเพิ่งไปลอง crack offline แบบ WPA2 ตรงๆ เพราะจะไม่ได้ผล
- 1เปิด monitor mode:
sudo airmon-ng start wlan0 - 2สแกนดู AP เป้าหมาย:
sudo airodump-ng wlan0mon - 3ดูคอลัมน์ ENC/AUTH ให้ละเอียด — ถ้าเห็นทั้ง
WPA2 WPA3หรือPSK SAE= transition mode; ถ้าเห็น SAE ล้วน = WPA3-only - 4ถ้าเป็น transition mode: ไปทำตาม workflow ของ WPA2 ได้เลย (จับ client ที่ต่อแบบ WPA2 ด้วย
hcxdumptoolแล้ว crack ปกติ) - 5ถ้าเป็น WPA3-only: อย่าเสียเวลา deauth (PMF บล็อกไว้แล้ว) — เช็คแทนว่า firmware/AP รุ่นเก่าก่อนปี 2019 ไหม (มีโอกาสโดน Dragonblood)
- 6ค้นหา CVE ของรุ่น chipset/driver ที่ใช้:
searchsploit <vendor> wifiหรือดูใน cve.mitre.org - 7ถ้าเก่าและยังไม่ patch: ลองเครื่องมือ Dragonblood (dragonslayer/drake) เก็บ timing/cache measurement — ต้องใช้ความอดทนสูง ไม่ใช่ push-button
- 8ถ้า patch แล้วหรือใหม่: ยอมรับว่าไม่มีทาง offline crack — เหลือแค่ online guess ที่ AP จริง (ช้ามาก ตรวจจับได้ ไม่คุ้มในโจทย์ CTF ส่วนใหญ่)
- 9สรุป: ให้ transition mode เป็นทางลัดอันดับ 1 เสมอ ก่อนไปยุ่งกับ Dragonblood
| ขั้นตอน/งาน | เครื่องมือใน Kali | ติดตั้งเพิ่ม (ถ้าไม่มี) | เครื่องมือออนไลน์ |
|---|---|---|---|
| ตรวจโหมด AP (SAE/transition) | airodump-ng | - | - |
| จับฝั่ง WPA2 ของ transition | - | apt install hcxtools hcxdumptool | - |
| crack WPA2 handshake ที่ได้ | aircrack-ng, hashcat | - | weakpass.com |
| ค้นหา CVE ของ chipset/driver | searchsploit | - | cve.mitre.org, nvd.nist.gov |
| ทดสอบ Dragonblood (CVE-2019-94xx) | - | git clone dragonslayer/drake (vanhoefm GitHub) | - |
| ตั้ง rogue AP ทดสอบ downgrade ใน lab | hostapd, wpa_supplicant | - | - |
โน้ตของฉัน
ยังไม่มีโน้ตสำหรับหัวข้อนี้