Guida in italiano sul come “craccare” password con Hashcat usando un attacco Brute Force. Hashcat è un tool molto sofisticato che viene usato per decriptare hashes. È il password cracker più veloce in circolazione anche per via del fatto che sfrutta il GPU della scheda grafica per velocizzare il processo. Con Hashcat si può “crackare” qualsiasi password, anche di WordPress per esempio, basta procurarsi l’hash file per poi “craccarlo” tranquillamente offline.

Chiaramente tool del genere possono venire usati in modo legittimo per testare la sicurezza delle password o recuperare una password come anche no.

Identificare un algoritmo hashing

Per “crackare” un hash file bisogna prima sapere che tipo di Algoritmo Hashing è stato usato. Per capirlo è facile, basta osservare i primi due caratteri del codice, vedi tabella sottostante.

Simbolo Algoritmo Hashing
$0 DES
$1 MD5 Hashing
$2 Blowfish
$2A Eksblowfish
$5 SHA256
$6 SHA512

Se il codice inizia con $6 vuol dire che l’algoritmo usato è SHA512. Ci sono anche dei programmi come per esempio hashid che possono essere utili nell’identificare il tipo di “algoritmo hashing”.

Eseguire il comando “hashcat –help” e dare un occhiata sotto “Hash modes“, c’è un lista di numeri di identificazione da usare. Nel nostro esempio – craccare password di sistema Linux con Hashcat – il numero da usare è 1800.

  15900 | DPAPI masterkey file v2                          | Operating Systems
  12800 | MS-AzureSync  PBKDF2-HMAC-SHA256                 | Operating Systems
   1500 | descrypt, DES (Unix), Traditional DES            | Operating Systems
  12400 | BSDi Crypt, Extended DES                         | Operating Systems
    500 | md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5)        | Operating Systems
   3200 | bcrypt $2*$, Blowfish (Unix)                     | Operating Systems
   7400 | sha256crypt $5$, SHA256 (Unix)                   | Operating Systems
   1800 | sha512crypt $6$, SHA512 (Unix)                   | Operating Systems
    122 | macOS v10.4, MacOS v10.5, MacOS v10.6            | Operating Systems
   1722 | macOS v10.7                                      | Operating Systems
   7100 | macOS v10.8+ (PBKDF2-SHA512)                     | Operating Systems
   6300 | AIX {smd5}                                       | Operating Systems
   6700 | AIX {ssha1}                                      | Operating Systems

Modalità di attacco di Hashcat

Numero Descrizione modalità attacco
0 Attacco a vocabolario
1 Combinazione
3 Attacco Brute Force
6 Attacco ibrido

Set di caratteri e maschera

Set di caratteri per Hashcat

Il set di caratteri da usare comprende lettere minuscole, lettere maiuscole, numeri e simboli. Vedi tabella sottostante:

  ? | Charset
 ===+=========
  l | abcdefghijklmnopqrstuvwxyz
  u | ABCDEFGHIJKLMNOPQRSTUVWXYZ
  d | 0123456789
  s |  !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
  a | ?l?u?d?s
  b | 0x00 - 0xff

Quindi per “crackare” una password che si sospetta sia composta da sole lettere minuscole, usare ?l, per lettere maiuscole ?u, per i numeri ?d eccetera. Se si vuole “craccare” una password composta da lettere minuscole, lettere maiuscole e numeri usare per esempio “-1 ?l?u?d ?1?1?1?1”. Se si vuole usare tutti i caratteri possibili usare ?a.

Maschera Hashcat

La maschera serve per definire il numero di caratteri della password da “craccare” come anche il tipo di caratteri da usare.

Un esempio di maschera per una password composta da 4 lettere minuscole potrebbe essere questo: ?l?l?l?l.

Craccare password di sistema Linux con Hashcat

In questo esempio sul come “crackare” password di sistema Linux con Hashcat come prima cosa creo un utente test.

:~ # useradd testuser
:~ # passwd testuser
Nuova password: 
PASSWORD ERRATA: è troppo corta
PASSWORD ERRATA: è troppo semplice
Reimmettere la nuova password: 
passwd: password aggiornata correttamente
:~ #

Il prossimo passo e creare un “hash file”. Le password in sistemi Linux sono contenute in modo criptato nel file /etc/shadow, nei sistemi moderni usando l’Hashing Algorithm” SHA512.

Ora per creare il file che ci serve dobbiamo estrarre questa informazione – la hash della password – dal file /etc/shadow con il seguente comando:

:~ # tail -n1 /etc/shadow 
testuser:$6$3jszVVeWR0jP6Bpr$eVtWKvj3KjQXUvIpz286QNRl1bs5EAcq6gBG.z.TvbJVjYetM0byqyb7rwFKQwkYnIag80QF4HqUBreIhY0Mz1:17911:0:99999:7:::
:~ # tail -n1 /etc/shadow > testuser.hash

Una volta creato l'”hash file” si può procedere. Per craccare la password contenuta nel file eseguire il seguente comando:

:~ # hashcat -m 1800 -a 3 testuser.hash ?l?l?l?l?l
hashcat (v3.00) starting...

OpenCL Platform #1: NVIDIA Corporation  
======================================
- Device #1: GeForce GTX 460, 240/963 MB allocatable, 7MCU

Hashes: 1 hashes; 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
* Uses-64-Bit
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger set to 75c

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

Session.Name...: hashcat
Status.........: Running
Input.Mode.....: Mask (?l?l?l?l?l) [5]
Hash.Target....: $6$3jszVVeWR0jP6Bpr$eVtWKvj3KjQXUvIpz286Q...
Hash.Type......: sha512crypt, SHA512(Unix)
Time.Started...: Tue Jan 15 21:02:08 2019 (29 secs)
Time.Estimated.: Tue Jan 15 21:28:50 2019 (26 mins, 7 secs)
Speed.Dev.#1...:     7444 H/s (11.61ms)
Recovered......: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts
Progress.......: 215040/11881376 (1.81%)
Rejected.......: 0/215040 (0.00%)
Restore.Point..: 0/456976 (0.00%)
HWMon.Dev.#1...: Temp: 60c Fan: 39%

$6$3jszVVeWR0jP6Bpr$eVtWKvj3KjQXUvIpz286QNRl1bs5EAcq6gBG.z.TvbJVjYetM0byqyb7rwFKQwkYnIag80QF4HqUBreIhY0Mz1:prova
                                                          
Session.Name...: hashcat
Status.........: Cracked
Input.Mode.....: Mask (?l?l?l?l?l) [5]
Hash.Target....: $6$3jszVVeWR0jP6Bpr$eVtWKvj3KjQXUvIpz286Q...
Hash.Type......: sha512crypt, SHA512(Unix)
Time.Started...: Tue Jan 15 21:02:08 2019 (2 mins, 23 secs)
Speed.Dev.#1...:     7469 H/s (11.59ms)
Recovered......: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.......: 1075200/11881376 (9.05%)
Rejected.......: 0/1075200 (0.00%)
Restore.Point..: 35840/456976 (7.84%)

Started: Tue Jan 15 21:02:08 2019
Stopped: Tue Jan 15 21:04:38 2019 
:~ #