Come faccio a rinforzare una password WPA2 date le seguenti condizioni?

6

Sto provando a forzare il mio WiFi, e dalla mia stessa ricerca, so che tutte le password predefinite per questo specifico modello di router che sto tentando di hackerare seguono le seguenti regole:

  1. lunghezza della password = 8

  2. Il set di caratteri [a-zA-Z0-9]

  3. Ogni carattere può essere utilizzato solo una volta nella password

  4. Sono presenti almeno 2 numeri minuscoli, 2 maiuscoli e 2 numeri.

Esempi di password possibili: r3wN4HTl, 5j3Wkl5Da, ecc ...

Come posso procedere con questa forza bruta, quante combinazioni ci saranno e quale sarebbe il tempo stimato per decifrare con successo la password?

    
posta Masky 09.04.2017 - 12:40
fonte

3 risposte

6

Se supponiamo che la tua passphrase sia stata generata casualmente (non influenzata da fattori di selezione umani), allora alcuni calcoli matematici di base e un paio di strumenti possono ottenere la maggior parte del modo lì. La tua restrizione n. 3 (ogni carattere può essere utilizzato una sola volta) è la più difficile, ma probabilmente non ridurrebbe molto lo spazio totale delle combinazioni, quindi per ora consiglio di metterlo da parte.

Cattura la complessità

Per prima cosa, dai un'occhiata a lo strumento policygen da il pacchetto di strumenti PACK . È possibile generare un set di maschere che corrispondono alla lunghezza e ai minimi.

Puoi anche informare la stima del tempo usando il parametro policygen --pps . Questo indica a policygen quante password al secondo può tentare la tua piattaforma di destinazione.

Ad esempio, se hai una GPU simile alla mia GTX 970 SC (che può fare 185 kH / s per WPA / WPA2 usando hashcat ), otterrai qualcosa di simile al seguente:

$ policygen --pps=185000 --minlength=8 --maxlength=8 \
  --mindigit=2 --minlower=2 --minupper=2 --maxspecial=0 -o test.masks
                       _
     PolicyGen 0.0.2  | |
      _ __   __ _  ___| | _
     | '_ \ / _' |/ __| |/ /
     | |_) | (_| | (__|   <
     | .__/ \__,_|\___|_|\_\
     | |
     |_| [email protected]


[*] Saving generated masks to [test.masks]
[*] Using 185,000 keys/sec for calculations.
[*] Password policy:
    Pass Lengths: min:8 max:8
    Min strength: l:2 u:2 d:2 s:None
    Max strength: l:None u:None d:None s:0
[*] Generating [compliant] masks.
[*] Generating 8 character password masks.
[*] Total Masks:  65536 Time: >1 year
[*] Policy Masks: 2940 Time: >1 year

$ wc -l test.masks
2940 test.masks

Il set risultante di 2940 maschere copre l'insieme di tutte le possibilità che corrispondono ai tuoi vincoli.

Stima del tempo

Si noti che policygen stima che il tempo sia superiore a 1 anno. Per una stima più ravvicinata, potresti non essere in grado di prevedere quando la tua passphrase specifica sarebbe spezzata, ma puoi stabilire un limite superiore e una media (metà del limite superiore).

Utilizzando lo strumento per la maschera di% di hashcat , puoi ottenere il numero totale di combinazioni per un maschera data. Eseguendolo contro ogni maschera e sommando i risultati:

for mask in 'cat test.mask'; do \
    mp64 --combinations $mask; done \
    | awk '{s+=$1} END {print s}'

... restituisce il seguente numero:

5.84746e+13

o approssimativamente combinazioni 58474600000000 . Supponendo 185.000 hash al secondo, ovvero (5.84746e + 13/1985000) / 60/60/24 = 340,95 giorni o circa un anno per esaurire lo spazio chiavi intero . La passphrase media verrebbe violata entro mezzo anno (metà del tempo necessario per attraversare lo spazio totale della tastiera).

Naturalmente, questa stima temporale è legata direttamente alla potenza di calcolo disponibile. Man mano che aggiungi più GPU al mix, le prestazioni aumenteranno in modo lineare con le loro prestazioni.

Avvio dell'attacco

Per provare a decifrare, devi semplicemente alimentare il tuo handshake WPA2 e il tuo elenco di maschere a hashcat , in questo modo. Nota che questo rig ha più di una GPU.

$ ./hashcat -w 4 -a 3 -m 2500 [your-wpa2-hccapx-filename] test.masks

hashcat (v3.5.0) starting...

OpenCL Platform #1: NVIDIA Corporation
======================================
* Device #1: GeForce GTX 1080, 2028/8113 MB allocatable, 20MCU
* Device #2: GeForce GTX 1080, 2028/8114 MB allocatable, 20MCU
* Device #3: GeForce GTX 1080, 2028/8114 MB allocatable, 20MCU
* Device #4: GeForce GTX 1080, 2028/8114 MB allocatable, 20MCU
* Device #5: GeForce GTX 970, 1009/4037 MB allocatable, 13MCU
* Device #6: GeForce GTX 970, 1009/4037 MB allocatable, 13MCU

OpenCL Platform #2: Advanced Micro Devices, Inc.
================================================
* Device #7: AMD FX(tm)-8350 Eight-Core Processor, skipped.

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

Applicable optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
* Slow-Hash-SIMD

Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger disabled.

[s]tatus [p]ause [r]esume [b]ypass [c]heckpoint [q]uit =>


Session..........: hashcat
Status...........: Running
Hash.Type........: WPA/WPA2
Hash.Target......: 8381533406003807685881523 (AP:ae:f5:0f:22:80:1c STA:98:7b:dc:f9:f9:50)
Time.Started.....: Sun Apr  9 07:30:31 2017 (1 sec)
Time.Estimated...: Sun Apr  9 08:08:54 2017 (38 mins, 22 secs)
Guess.Mask.......: ?d?d?d?d?l?l?u?u [8]
Guess.Queue......: 1/2940 (0.03%)
Speed.Dev.#1.....:   401.7 kH/s (403.50ms)
Speed.Dev.#2.....:   402.4 kH/s (405.15ms)
Speed.Dev.#3.....:   405.4 kH/s (402.24ms)
Speed.Dev.#4.....:   403.3 kH/s (400.39ms)
Speed.Dev.#5.....:   187.0 kH/s (283.22ms)
Speed.Dev.#6.....:   185.3 kH/s (285.72ms)
Speed.Dev.#*.....:  1985.0 kH/s
Recovered........: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts
Progress.........: 0/4569760000 (0.00%)
Rejected.........: 0/0 (0.00%)
Restore.Point....: 0/456976000 (0.00%)
Candidates.#1....: 1234maMA -> 1618pqAN
Candidates.#2....: 1218pqAN -> 1667yzMA
Candidates.#3....: 1242yzMA -> 1631tgBA
Candidates.#4....: 1771seGO -> 1558paAN
Candidates.#5....: 1784jaAN -> 1816blON
Candidates.#6....: 1261tgBA -> 1523reGO
HWMon.Dev.#1.....: Temp: 63c Fan: 90% Util:100% Core:1822MHz Mem:4513MHz Bus:8
HWMon.Dev.#2.....: Temp: 55c Fan: 90% Util:100% Core:1809MHz Mem:4513MHz Bus:4
HWMon.Dev.#3.....: Temp: 56c Fan: 90% Util:100% Core:1822MHz Mem:4513MHz Bus:16
HWMon.Dev.#4.....: Temp: 50c Fan: 90% Util:100% Core:1822MHz Mem:4513MHz Bus:4
HWMon.Dev.#5.....: Temp: 54c Fan: 60% Util:100% Core:1379MHz Mem:3004MHz Bus:1
HWMon.Dev.#6.....: Temp: 58c Fan: 60% Util:100% Core:1366MHz Mem:3004MHz Bus:1

hashcat inizierà a lavorare nel tuo elenco di maschere, uno alla volta. Poiché policygen ordina le maschere in ordine (approssimativamente) di complessità, le maschere più veloci vengono visualizzate per prime nell'elenco. Quindi ogni maschera tenderà a prendere (all'incirca) più tempo di quelli precedenti.

Probabilmente non vorresti aspettare fino a quando non sarà finito. :)

    
risposta data 09.04.2017 - 17:27
fonte
1

Ho un metodo diverso per calcolare questa cosa e sfortunatamente raggiungo un altro valore.

Devi usare almeno 2 cifre, quindi per il primo, ci sono 10 possibilità, per il secondo 9, che rende possibili 90 coppie.

Analog per lettere 26 * 25 combinazioni maiuscole e minuscole.

Dopo aver scelto 6 caratteri in questo modo, abbiamo libertà per gli ultimi due, che è (26 + 26 + 10-6) = (62-6) = 56 e 55 per l'ultimo.

In combinazione si tratta di combinazioni ((10 * 9 * 26 * 25 * 26 * 25 * 56 * 55)), solo per i caratteri, la password potrebbe consistere in, senza conoscere l'ordine corretto.

Questo è 117 117 000 000 (117 miliardi, 1,2 e12).

Moltiplicato il 8! = (40320) shufflings per combinazione possibile, raggiungo quindi

4 722 157 440 000 000 (4.7e16)

Non so da dove provenga la differenza, specialmente no, cosa significa binom (26, inferiore).

Se modifico entrambi i risultati, ottengo questo:

factor $((10*9*26*25*26*25*56*55*40320)) 
4722157440000000: 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 5 5 5 5 5 5 5 7 7 11 13 13

factor 58474600000000
58474600000000: 2 2 2 2 2 2 2 2 2 5 5 5 5 5 5 5 5 61 4793

Non capisco da dove provenga il 4793 - così come il 61. Per il mio risultato, penso che sia ragionevole: 2x26 può essere scomposto in 2x (2x13), l'11 è da 5x11 = 55 e presto.

    
risposta data 07.02.2018 - 16:18
fonte
0

Sogno un futuro in cui tutte le domande per insegnare la combinatoria siano "quante password seguono questi criteri?".

Divertiamoci.

Per prima cosa, hai 62 caratteri, 8 di questi creano circa 2.18e14 possibilità. Quindi questo è un limite superiore. Dal momento che usiamo anche ogni carattere al massimo una volta in base alla condizione 4, questo si riduce a 62 * 61 * ... * 55 possibilità oa circa 1.36 e14.

In secondo luogo, abbiamo bisogno di almeno 2 numeri minuscoli, 2 maiuscoli e 2 numeri. Se contiamo solo quante volte ciascuna categoria si verifica, tutte le password rientrano in 2 su 4 = 6 categorie.

  1. 4L + 2U + 2D o 2L + 4U + 2D
  2. 2L + 2U + 4D
  3. 3L + 3U + 2D
  4. 3L + 2U + 3D o 2L + 3U + 3D

Per ogni categoria abbiamo binom (26, inferiore) * binom (26, superiore) * binom (10, cifre) possibili selezioni di lettere e 8! permutazioni della selezione. (Il fatto che le lettere non possano ripetersi rende le cose molto più semplici qui.)

Questo fornisce un totale di circa 3.90e13 possibili password. (Lo strumento policygen utilizzato da Royce non consente di specificare che ogni lettera può essere utilizzata una sola volta, quindi questo numero è leggermente inferiore.)

    
risposta data 09.04.2017 - 22:39
fonte

Leggi altre domande sui tag