Password Hashes
La gestione delle password in Linux è una parte fondamentale della sicurezza del sistema. Comprendere come le password sono memorizzate e come un attaccante può ottenere gli hash delle password è cruc
Guida Approfondita su Linux Password Hashes e il Dumping delle Password
La gestione delle password in Linux è una parte fondamentale della sicurezza del sistema. Comprendere come le password sono memorizzate e come un attaccante può ottenere gli hash delle password è cruciale, sia per la protezione che per le attività di penetration testing.
#### 1. Struttura dei File delle Password in Linux
In Linux, le informazioni relative agli utenti sono distribuite in due file principali:
/etc/passwd: Contiene informazioni generali sugli utenti del sistema, inclusi i nomi utente, le informazioni sull'account, la directory home e la shell di login. Tuttavia, non contiene le password in chiaro.
/etc/shadow: Contiene gli hash delle password. A differenza del filepasswd, che è leggibile da tutti gli utenti del sistema, il fileshadowè leggibile solo dall'utente root. Questa è una misura di sicurezza che previene l'accesso non autorizzato agli hash delle password.
Struttura di una riga in /etc/passwd:
username:x:UID:GID:Full Name:/home/username:/bin/bashIn questa riga, x sta a indicare che la password è memorizzata nel file /etc/shadow e non nel file /etc/passwd.
Struttura di una riga in /etc/shadow:
username:$6$randomsalt$hashedpassword:17727:0:99999:7:::La parte interessante di questa riga è la porzione che inizia con $6$, che indica l'algoritmo di hashing utilizzato (in questo caso, SHA-512) e l'hashedpassword che rappresenta la password criptata dell'utente.
#### 2. Hashing delle Password in Linux
Linux utilizza diversi algoritmi per criptare le password. Gli algoritmi di hashing determinano quanto siano sicure le password archiviate nel sistema. Nel file /etc/passwd o /etc/shadow, l'algoritmo utilizzato è specificato subito dopo il simbolo $. Ecco una panoramica degli algoritmi di hashing più comuni in Linux:
$1$: MD5
$2a$,$2b$,$2y$: Blowfish (bcrypt)
$5$: SHA-256
$6$: SHA-512
#### 3. Tecniche di Dumping degli Hash delle Password
Una delle attività fondamentali per un penetration tester è ottenere gli hash delle password degli utenti su un sistema Linux. Le tecniche principali per "dumpare" (estrarre) gli hash delle password da un sistema Linux sono le seguenti:
##### 3.1 Accesso ai File /etc/passwd e /etc/shadow
- File
/etc/passwd: È leggibile da tutti gli utenti, ma non contiene gli hash delle password, solo un segnaposto (x).
- File
/etc/shadow: Contiene gli hash delle password. Poiché solo root ha accesso a questo file, un attaccante dovrà ottenere privilegi di root per leggerlo.
sudo cat /etc/shadowUna volta ottenuto l'accesso a questo file, gli hash delle password possono essere facilmente estratti.
##### 3.2 Escalation dei Privilegi per Accedere a /etc/shadow
Se un attaccante ha accesso come utente non privilegiato, dovrà eseguire un'operazione di privilege escalation per ottenere l'accesso al file /etc/shadow. Alcuni dei metodi più comuni per questo sono:
- Sfruttamento di vulnerabilità nel sistema: Se il sistema è vulnerabile a una CVE che permette l'escalation dei privilegi, l'attaccante può ottenere accesso root.
- Misconfigurazione dei permessi: Se il file
/etc/shadowè configurato in modo errato e è leggibile da un utente non privilegiato, l'attaccante può facilmente accedere agli hash delle password.
##### 3.3 Dumping degli Hash con Tools
Esistono diversi strumenti utilizzati per dumpare gli hash delle password da Linux. Ecco alcuni dei più comuni:
unshadow: Combina i contenuti dei file/etc/passwde/etc/shadowper preparare gli hash delle password per gli attacchi.
unshadow /etc/passwd /etc/shadow > hashes.txtjohn(John the Ripper): Uno degli strumenti più noti per cracking delle password. Può essere utilizzato per attaccare gli hash estratti.
john hashes.txthashcat: Un altro potente strumento per il cracking delle password. È molto efficiente e può utilizzare GPU per velocizzare gli attacchi.
hashcat -m 1800 hashes.txt#### 4. Tecniche per Cracking degli Hash
Dopo aver ottenuto gli hash delle password, la fase successiva è il cracking delle stesse. Ci sono vari metodi per farlo, ma il più comune è l'uso di attacchi a forza bruta o dizionario.
##### 4.1 Attacco a Forza Bruta
Questo tipo di attacco tenta tutte le combinazioni possibili per una password fino a quando non viene trovata una corrispondenza. È il più semplice ma anche il meno efficiente, poiché il tempo necessario per il cracking cresce esponenzialmente con la lunghezza e la complessità della password.
##### 4.2 Attacco con Rainbow Tables
Le Rainbow tables sono tabelle precomputate contenenti hash per tutte le possibili password. Con un attacco a rainbow table, l'attaccante può risolvere l'hash velocemente, ma questo metodo è efficace solo con algoritmi di hashing deboli (come MD5). Per proteggersi, i moderni sistemi utilizzano il salting, che rende obsoleti gli attacchi con rainbow tables.
##### 4.3 Utilizzo di un Dizionario
Un attacco basato su dizionario usa una lista precompilata di parole comuni, combinazioni di parole e varianti per cercare di indovinare la password. Gli attacchi con dizionario sono molto più veloci rispetto agli attacchi a forza bruta, ma possono comunque fallire se la password è complessa.
##### 4.4 Utilizzo di GPU per Cracking
Strumenti come hashcat possono utilizzare la potenza delle GPU per eseguire il cracking delle password a una velocità molto più elevata rispetto all'uso della sola CPU. Le GPU sono particolarmente adatte per eseguire attacchi di forza bruta su grandi quantità di hash.
#### 5. Mitigazioni e Protezioni
Per proteggere il sistema dalle minacce legate agli hash delle password, sono necessarie alcune misure di sicurezza:
- Utilizzare algoritmi di hashing sicuri come SHA-512 o bcrypt per garantire che gli hash siano resistenti agli attacchi.
- Usare un salt lungo e unico per ogni password, che rende gli attacchi di rainbow table e dizionario molto più difficili.
- Limitare l'accesso al file
/etc/shadow, in modo che solo l'utente root possa leggere gli hash delle password.
- Monitorare i file di sistema, in particolare
/etc/passwde/etc/shadow, per verificare la presenza di accessi non autorizzati.
#### 6. Conclusione
La gestione delle password su Linux è un elemento critico per la sicurezza del sistema. Gli hash delle password sono una difesa fondamentale contro l'accesso non autorizzato, ma se non configurati correttamente, possono diventare un punto di debolezza. Conoscere le tecniche per il dumping e il cracking delle password, nonché le migliori pratiche di sicurezza per proteggere gli hash, è essenziale per ogni professionista della sicurezza.