Cracking with metasploit
In questo approfondimento, esploreremo i concetti fondamentali sui Linux password hashes, le metodologie per raccoglierli e come sfruttare Metasploit per recuperare le password in chiaro, inclusi coma
Guida Approfondita sui Linux Password Hashes e sull'Utilizzo di Metasploit per il Crack delle Password
In questo approfondimento, esploreremo i concetti fondamentali sui Linux password hashes, le metodologie per raccoglierli e come sfruttare Metasploit per recuperare le password in chiaro, inclusi comandi avanzati e tecniche supplementari.
#### 1. Introduzione ai Linux Password Hashes
In Linux, le password degli utenti non sono memorizzate in chiaro, ma in un formato hash. Questo è un metodo di sicurezza per proteggere le credenziali degli utenti da accessi non autorizzati. Gli hash delle password si trovano comunemente nel file /etc/shadow, che è accessibile solo agli utenti con privilegi elevati (root). Ecco un esempio di come potrebbe apparire un hash della password:
user:$6$saltsalt$RgWUz6zZ.zG1mQ7kwcQ1A5GGhbhWh42StBy7GfW/F5Mw/VpmYfUu6x/ZygpRfTHpUwFz5C5Y59uRjmy3U3m3W0:18030:0:99999:7:::In questo esempio, il prefisso $6$ indica l'algoritmo di hashing SHA-512, mentre la parte saltsalt è il "sale" (salt) usato per rendere l'hash più sicuro.
#### 2. Comando di Metasploit per Raccogliere gli Hash delle Password
Per raccogliere gli hash delle password di un sistema Linux, possiamo utilizzare il modulo post/linux/gather/hashdump in Metasploit. Questo modulo consente di estrarre gli hash delle password memorizzati in /etc/shadow e di eseguire attacchi di forza bruta per cercare di ottenere la password in chiaro.
##### 2.1 Passaggi per Eseguire il Dump degli Hash delle Password
1. Carica il modulo hashdump: Nel terminale di Metasploit, esegui il comando per caricare il modulo:
use post/linux/gather/hashdumpset SESSION 11 è il numero della sessione Metasploit attiva.
3. Esegui il modulo per raccogliere gli hash delle password:
Una volta impostato il modulo e la sessione, esegui il modulo:
exploit#### 3. Crack dei Password Hashes con Metasploit
Una volta che abbiamo raccolto gli hash delle password, il passo successivo è cercare di recuperare la password in chiaro. Questo può essere fatto utilizzando un modulo ausiliario di Metasploit, come auxiliary/analyze/crack_linux, che aiuta a "crackare" gli hash tramite vari algoritmi di cracking.
##### 3.1 Esecuzione del Modulo di Analisi per Craccare la Password
1. Carica il modulo di cracking:
use auxiliary/analyze/crack_linuxset SHA512 truerun#### 4. Tecniche di Cracking Avanzate
##### 4.1 Uso di un Dizionario
Il cracking tramite dizionario è una delle tecniche più comuni per decifrare gli hash delle password. Si utilizza un file di dizionario contenente le parole più comuni o combinazioni di parole che un attaccante potrebbe utilizzare come password. Metasploit supporta questa modalità di cracking utilizzando il comando john integrato.
Esempio di comando:
john --format=sha512crypt --wordlist=/path/to/wordlist.txt /path/to/hashfile##### 4.2 Attacco a Forza Bruta
Se un dizionario non porta a buoni risultati, l'attacco a forza bruta può essere una tecnica alternativa. Questo processo tenta tutte le combinazioni possibili per la password. L'uso di strumenti come John the Ripper o Hashcat è utile per eseguire attacchi di forza bruta.
Esempio di comando con John the Ripper:
john --format=sha512crypt --incremental /path/to/hashfile#### 5. Tecniche Avanzate di Cracking: Rainbow Tables
Una delle tecniche più potenti per crackare gli hash delle password è l'uso delle rainbow tables. Le rainbow tables sono precomputazioni di hash per tutte le combinazioni possibili di password, utilizzate per decifrare velocemente gli hash senza dover eseguire calcoli costosi. Queste tabelle riducono drasticamente il tempo necessario per scoprire la password in chiaro.
##### 5.1 Cos’è una Rainbow Table?
Una rainbow table è una tabella precompilata di hash per parole comuni o combinazioni di password. Le tabelle possono contenere milioni o miliardi di hash, il che consente di risparmiare tempo durante il cracking. L'idea è che se un hash è presente nella tabella, è possibile risalire alla password corrispondente senza dover calcolare ogni possibile combinazione.
Esistono due tipi principali di rainbow tables:
- Tabelle per hashing con sale: Se il sistema utilizza un "sale" (salt), ogni password è hashata con un valore unico. Le tabelle standard non funzionano su hash con sale, quindi sono necessarie rainbow tables specifiche per il sale.
- Tabelle senza sale: Se il sistema non utilizza un sale, le tabelle tradizionali sono sufficienti per il cracking.
##### 5.2 Uso delle Rainbow Tables con Hashcat
Hashcat è uno degli strumenti più potenti per il cracking delle password, e supporta l'uso delle rainbow tables per accelerare il processo di cracking.
1. Preparazione della Rainbow Table: Prima di utilizzare Hashcat, è necessario scaricare o generare le rainbow tables. I file di rainbow table sono generalmente molto grandi e devono essere archiviati su un disco rigido sufficientemente capiente. Un buon esempio di rainbow table è "Project RainbowCrack". 2. Utilizzo di Hashcat con una Rainbow Table: Se si possiede una rainbow table per SHA-512 (o un altro algoritmo di hashing), è possibile utilizzarla con Hashcat. Ecco un comando base:
hashcat -m 1800 -a 0 hashfile.txt rainbow_table.rt-m 1800 indica l'algoritmo SHA-512.
- -a 0 specifica che stiamo usando l'attacco "straight" (standard).
- hashfile.txt è il file che contiene gli hash da decifrare.
- rainbow_table.rt è il file della rainbow table.
3. Risultato: Se l'hash è presente nella rainbow table, Hashcat recupererà immediatamente la password corrispondente.
##### 5.3 Rainbow Tables e Salting
Le rainbow tables standard non sono efficaci contro gli hash che utilizzano il "salting", poiché ogni hash di password è combinato con un valore casuale unico (il "sale"). Tuttavia, esistono rainbow tables per SHA-512 con sale, ma richiedono molta più memoria e spazio di archiviazione, oltre a tempi di preparazione molto lunghi.
Se si sta affrontando un sistema che utilizza il salting, l'uso di rainbow tables specifiche per l'algoritmo e il sale specifico è l'unica via per un attacco efficace. In alternativa, si può cercare di effettuare un attacco a forza bruta o un attacco basato su dizionari per recuperare la password.
##### 5.4 Potenziali Debolezze
Molti sistemi Linux hanno configurazioni di default o password deboli che sono vulnerabili a tecniche di cracking comuni. Ad esempio:
- Password troppo corte: password brevi possono essere facilmente trovate tramite attacchi di dizionario o forza bruta.
- Hashing debole: gli algoritmi di hashing più vecchi, come MD5 o SHA-1, sono vulnerabili agli attacchi di collisione e possono essere facilmente decifrati con le rainbow tables.
#### 6. Tecniche di Difesa
Se sei un amministratore di sistema, è fondamentale implementare misure di protezione per impedire l'uso di queste tecniche da parte di un attaccante.
##### 5.1 Utilizzo di Salting e Hashing Complesso
Assicurati di utilizzare SHA-512 con un sale univoco per ogni password. Questo rende gli attacchi basati su rainbow table molto più difficili.
##### 6.2 Abilitare il Login con Password Complesse
Utilizzare password lunghe e complesse, evitando password comuni e predicibili. Configura le politiche di password per impedire l'uso di password semplici.
##### 6.3 Utilizzo di Autenticazione a Due Fattori (2FA)
Aggiungere una seconda fase di autenticazione (2FA) riduce significativamente il rischio di compromissione anche se la password viene crackata.
##### 6.4 Limitare l’Accesso ai File di Sistema
Limitare l'accesso a file critici come /etc/shadow e /etc/passwd. Utilizzare il controllo degli accessi basato su ruoli (RBAC) per gestire chi può accedere ai dati sensibili.
#### 7. Conclusioni
La gestione degli hash delle password in Linux è un aspetto cruciale per la sicurezza dei sistemi. L'utilizzo di strumenti come Metasploit permette di esplorare come raccogliere e crackare questi hash per scopi di ethical hacking, aiutando a capire meglio come proteggere un sistema dalle vulnerabilità legate alla gestione delle credenziali.
Tuttavia, è essenziale comprendere anche le contromisure necessarie per prevenire l’esposizione e il cracking delle password. L'implementazione di buone pratiche di gestione delle password, insieme a un uso consapevole delle tecniche di sicurezza avanzate, è la chiave per mantenere un ambiente sicuro.