Come Hackerare una Password Mac Senza Cambiarla
Un MacBook spento può essere compromesso in meno di tre minuti. Con pochi comandi, un hacker può estrarre l’hash della password di una vittima e decifrarla a sua insaputa.
L’obiettivo in questo articolo è quello di acquisire il file .plist di una vittima che contiene l’hash della sua password. Quindi, utilizzare uno script Python per convertire il file .plist in un formato di interpretazione per Hashcat, per poi rivelare la password. Il metodo più semplice per eseguire questo attacco richiede: un accesso fisico al MacBook della vittima, una modalità di ripristino, un’unità USB, un altro MacBook e Hashcat.
Inoltre è possibile procedere senza l’unità USB e il MacBook della vittima, creando invece un utente temporaneo sul MacBook della vittima tramite il quale è possibile eseguire i comandi. L’utente temporaneo può quindi essere eliminato una volta finito il procedimento. Per questa guida, tuttavia, mostreremo il metodo con l’unità USB.
La modalità di ripristino è una delle varie modalità di avvio supportate dai dispositivi Mac. Include una serie di strumenti per reinstallare MacOS, reimpostare le password degli account e configurare la password del firmware. Anche se questa funzione è stata progettata per aiutare gli utenti a chiudere il proprio account e cancellare il disco rigido interno, è spesso utilizzata dagli hacker che tentano di ottenere l’accesso non autorizzato ai file riservati.
Dall’avvento di Mojave 10.14, macOS non consente più agli utenti (nemmeno root) di modificare i file .plist che contengono password protette da hash mentre il sistema operativo è in esecuzione. Ora questi dati possono essere acquisiti solo utilizzando la modalità di ripristino.
L’unità flash USB serbe per spostare il file .plist della vittima dal suo MacBook a quello dell’hacker. L’unità flash USB utilizzata in questo tutorial è formattata in FAT32, ma i formati NTFS e APFS dovrebbero funzionare allo stesso modo.
Ci sono alcuni comandi specifici per macOS nello script Python che semplificano la conversione del file .plist in un formato che Hashcat può interpretare. Questo è il motivo per cui è necessario un altro MacBook (o quantomeno un altro account sul MacBook della vittima).
Per accedere alla password del Mac della vittima senza cambiarla, l’hash dovrà essere attaccato e craccato. MacOS è ottimo per proteggere la password della vittima. Non è possibile visualizzare le password degli utenti in formato di testo. Le soluzioni di cracking basate su CPU (come JohnTheRipper) impiegano letteralmente decenni per craccare un singolo hash e quindi non sono efficaci. Hashcat con una GPU decente è fortemente consigliato.
Passaggio 1Entrare in Modalità Ripristino
Per accedere alla modalità di ripristino per prima cosa assicurati che il MacBook della vittima sia completamente spento. Quindi premi il pulsante di accensione tenendo premuto Command + R sulla tastiera. Dopo circa 30 secondi, verrà visualizzato il logo Apple e sarà possibile rilasciare i tasti Command + R. Se appare la schermata in basso, la modalità di ripristino è stata abilitata correttamente e i lettori possono procedere al passaggio successivo di questo tutorial.
Se il MacBook richiede una password, significa che il firmware è protetto e configurato per impedire attacchi in modalità ripristino. Sfortunatamente, questo significa che il MacBook della vittima non è adatto all’attacco mostrato in questo articolo.
Passaggio 2Disattivare il SIP (Opzionale)
Il System Integrity Protection (SIP) di Apple è una funzionalità di sicurezza progettata per limitare la modifica delle componenti di macOS. Dall’avvento die Mojave, la directory /var/db/dslocal/nodes/Default/ rientra nell’ambito della protezione SIP e manderà un messaggio di “Operazione non consentita” se qualcuno tenta di visualizzarlo. Impedisce persino agli utenti root di modificare e accedere a determinate directory.
In un test, ho scoperto che la directory /Default/ non poteva essere visualizzata o modificata nemmeno in modalità di ripristino. Un’anomalia, in quanto altri test hanno consentito l’accesso a Default / senza disabilitare la SIP.
Per scoprire se il SIP deve essere disabilitato, apri un Terminale mentre sei in modalità di ripristino. Nella barra del menu nella parte superiore dello schermo, seleziona “Utilità”, quindi “Terminale”. Quindi, utilizzare il comando ls -R sotto.
ls -R /Volumes/<hard drive name>/var/db/dslocal/nodes/Default/
Questo comando tenterà ricorrentemente (-R) di elencare i file nella directory Default /. Se l’output mostra molti file .plist, non disabilitare SIP e passare al passaggio successivo di questo tutorial. Se l’output mostra il messaggio “Operazione non consentita”, disabilitare SIP utilizzando il comando csrutil sottostante.
csrutil disable
System Integrity Protection disabilitato con successo. Si prega di riavviare il computer affinché le modifiche vengano effettuate.
Dopo che viene visualizzata la richiesta di riavvio, spegnere e riavviare nuovamente la modalità di ripristino. Con il SIP disabilitato, è possibile procedere al passaggio successivo di questo tutorial.
Passaggio 3Estrarre il Plist della Vittima
Inserisci l’unità USB nel MacBook della vittima. Attendi qualche secondo per consentirne l’auto mount. Quindi copia il file .plist desiderato nell’unità USB usando il comando cp qui sotto. Il target .plist utilizzerà il nome utente della vittima (es. Tokyoneon.plist).
cp /Volumes/<hard drive name>/var/db/dslocal/nodes/Default/users/<username>.plist /Volumes/<usb name>/
Assicurati di cambiare il <nome del disco rigido> nel comando precedente. Probabilmente sarà “macOS”, ma potrebbe essere diverso se la vittima ha acquistato il MacBook anni fa e l’ha aggiornato a Mojave o High Sierra. In tal caso, il nome del disco rigido potrebbe apparire come “Macintosh HD” o qualche variazione di questo tipo. Inoltre, cambia il <nome usb> nell’unità USB inserita nel MacBook.
Fatto. Il file necessario è stato estratto, il MacBook della vittima può essere spento e il resto del tutorial richiederà solo il MacBook dell’hacker. Se il SIP è stato disabilitato nel passaggio precedente, riattivalo prima di spegnere il computer con il seguente comando.
csrutil enable
Passaggio 4Copiare il Plist nel Computer dell’Hacker
Utilizzando il MacBook dell’hacker, inserisci l’unità flash USB contenente il target .plist e copialo (cp) nella directory /tmp/. La directory /tmp/ è predefinita nello script Python del passaggio successivo per renderla abbastanza generico da essere seguito da tutti i lettori. Finché il file .plist della vittima si trova nella directory / tmp /, lo script Python sarà in grado di convertirlo in un hash.
cp /Volumes/<usb name>/<username>.plist /tmp/
Passaggio 5Scarica ed Esegui lo Script Python Hashdump
Lo script Python utilizzato per convertire il file .plist estratto nel formato desiderato di Hashcat è stato preso dal framework Empire e si trova su GitHub. Apri un terminale e scarica lo script hashdump con il seguente comando curl. L’argument -o salverà lo script con il nome “hashdump.py”.
curl ‘https://raw.githubusercontent.com/tokyoneon/hashdump.py/master/hashdump.py’ -o hashdump.py
A questo punto dai allo script il permesso di esecuzione, utilizzando il comando chmod.
chmod +x hashdump.py
Infine esegui lo script hashdump.py con i privilegi di root.
sudo python hashdump.py
[(‘tokyoneon’, ‘$ml$27548$ba6261885e349ecb847854136cf32e9561cd1af65616f7ce11abb3f04786729c$88ad7849c5b30cce20b9d6ecde9e5be3b6736646965e0414d45d40510a574f864bafd9c5dc06fdb3cb189b877c3aa1312c2e4497ea854d3653f5861365d41a4250042a78c93dace17d212ccbb6584e3350efe95bd138f27b1705ad97166d2f11fb749b6138139a9e1ebeecb1a96750db53dbf75434c4b320b500589fa64bf5f8’)]
Rimuovi il testo che circonda l’hash (mostrato sotto) e salvalo in un file chiamato “hash.txt”. Quindi sposta hash.txt su Hashcat.
$ml$27548$ba6261885e349ecb847854136cf32e9561cd1af65616f7ce11abb3f04786729c$88ad7849c5b30cce20b9d6ecde9e5be3b6736646965e0414d45d40510a574f864bafd9c5dc06fdb3cb189b877c3aa1312c2e4497ea854d3653f5861365d41a4250042a78c93dace17d212ccbb6584e3350efe95bd138f27b1705ad97166d2f11fb749b6138139a9e1ebeecb1a96750db53dbf75434c4b320b500589fa64bf5f8
Step 6Craccare l’Hash
Per craccare l’hash della vittima con Hashcat, usa il comando seguente.
hashcat -a 0 -m 7100 /path/to/hash.txt /path/to/wordlists/passwords.txt -w 4 –potfile-path /tmp/cracked_hash.pot
L’attacco alla directory, o “modalità diretta”, viene specificato usando l’argument -a 0. La modalità hashing specifica per macOS viene abilitata usando l’argument -m 7100 ed è necessaria per tutti gli hash macOS estratti dalla versione 10.8 o successiva. Per migliorare le prestazioni generali di Hashcat, imposta -w (o –workload-profile) su 4 per massimizzare la velocità di cracking. Infine, l’argument –potfile-path viene utilizzato per salvare l’hash craccato nel file specificato.
È anche possibile eseguire attacchi ibridi in cui le combinazioni di cifre vengono aggiunte alla fine di ogni parola nella wordlist. Ad esempio, “password12” e “password77”.
hashcat -a 6 -m 7100 /path/to/hash.txt /path/to/wordlists/everyword.txt ?d?d -w 4 –potfile-path /tmp/db.pot
L’attacco ibrido è abilitato dall’argument -a 6. Questa volta una lista di parole “everyword” che contiene 479.000 parole inglesi viene utilizzata in combinazione con ?d?d che dice a Hashcat di aggiungere ogni combinazione di due cifre possibili a ciascuna password nella wordlist. Per aggiungere tre o quattro cifre, utilizzare rispettivamente “?d?d?d” e “?d?d?d?d” .
Mentre Hashcat è in esecuzione, verranno visualizzati i seguenti dati. Se la password è giusta, apparirà nella parte inferiore del terminale e Hashcat si fermerà.
Session……….: hashcat
Status………..: Running
Hash.Type……..: macOS v10.8+ (PBKDF2-SHA512)
Hash.Target……: $ml$27548$ba6261885e349ecb847854136cf32e9561cd1af65…d41a42
Guess.Base…….: File (/root/wordlists/passwords.txt)
Guess.Queue……: 1/1 (100.00%)
Speed.Dev.#1…..: 7740 H/s (98.63ms) @ Accel:256 Loops:64 Thr:512 Vec:1
Recovered……..: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts
Progress………: 0/329968 (0.00%)
Rejected………: 0/0 (0.00%)
Restore.Point….: 0/329968 (0.00%)
Candidates.#1….: 123456 -> zzzzzzzz9
HWMon.Dev.#1…..: Temp: 57c Fan: 31% Util:100% Core:1873MHz Mem:3802MHz Bus:16
[s]tatus [p]ause [b]ypass [c]heckpoint [q]uit =>
Considerazioni sull’Hash Cracking
Determinare quanto tempo si impiegherà per craccare un hash è difficile da ipotizzare. Attacchi ibridi o a directory possono richiedere una quantità variabile di tempo in base a diversi fattori:
- Lunghezza della Wordlist — Ovviamente, una wordlist contenente miliardi di parole può richiedere ore, giorni o addirittura mesi per essere completata. Quando si eseguono attacchi forzati contro gli hash di macOS, si raccomanda una wordlist breve, specifica per il bersaglio.
- Iterazioni dell’Hash — Non tutti gli hash macOS sono uguali. Le iterazioni di hash vengono utilizzate come un “fattore di rallentamento”, che essenzialmente obbliga le CPU e le GPU a impiegare molto più tempo a calcolare un singolo tentativo di acquisizione password. Il numero di iterazioni variava nei miei test contro Mojave e High Sierra. In alcuni casi, le iterazioni erano impostate su 27.000. Altre volte, oltre 45.000. Se questo valore sia impostato in modo casuale o specifico per ogni versione di macOS, non è chiaro dai miei test. Una cosa è certa, più alto è questo valore, più a lungo Hashcat dovrà lavorare per craccare un singolo hash. Le iterazioni più elevate potrebbero essere la differenza tra 25.000 e solo 1.000 tentativi al secondo. Per identificare il numero di iterazioni utilizzate nel file .plist estratto, dare di nuovo un’occhiata all’hash della vittima (mostrato sotto). All’inizio dell’hash, tra il secondo e il terzo simbolo del dollaro ($), è possibile trovare il numero di iterazioni (27.548).
$ml$27548$ba6261885e…
- Modello GPU — Con una vecchia scheda grafica GeForce GTX 1060 e un hash con 27.548 iterazioni, è possibile eseguire ~ 8.000 tentativi al secondo. Il tipo di GPU utilizzato influenzerà drasticamente le prestazioni generali dell’attacco. Non consigliamo GPU precedenti alla GTX 750ti
Come Proteggersi dagli Attacchi in Modalità Ripristino
Ci sono diverse cose che gli utenti possono fare per difendersi da questi attacchi (vedi sotto).
- Abilita la protezione della password del firmware. Per impedire che l’hacker entri con una USB, in modalità utente singolo o in modalità di ripristino, impostare una password del firmware. Il firmware richiederà una password aggiuntiva all’avvio solo se qualcuno tenta di avviare MacBook in modalità utente singolo, gestore di avvio, disco di destinazione o ripristino. Una password del firmware da sola, tuttavia, non proteggerà il disco rigido nel caso in cui il disco venga rimosso fisicamente dal MacBook. Per una maggiore protezione, abilitare la crittografia del disco rigido.
- Abilita la crittografia FileVault. FileVault può essere abilitato navigando su “Preferenze di sistema”, quindi su “Sicurezza e privacy” e facendo clic su “Attiva FileVault” (potrebbe essere necessario prima sbloccare le impostazioni). Al termine, il MacBook si riavvierà e richiederà una password per sbloccare il computer ogni volta che il Mac si avvia. Nessun account sarà autorizzato ad accedere automaticamente e anche l’accesso alla modalità utente singolo richiederà una password. Questo è il modo migliore per prevenire attacchi contro il disco crittografato anche nel caso in cui venisse fisicamente rimosso dal laptop. Si consiglia di utilizzare una passphrase complessa di 21 caratteri per proteggersi dagli hacker con hardware brute-force dedicati.
Commenti