LUKS è l’acronimo di Linux unified key setup ed è un robusto sistema di cifratura implementato in molte distribuzioni di Linux. Tramite LUKS è possibile cifrare intere partizioni tramite un set di password. In alcuni casi, ad esempio quando l’utente ha dimenticato la password oppure negli ambiti di indagine forense, può essere necessario accedere a partizioni cifrate con LUKS.
Gli approcci basati sull’inserimento di manuale risultano essere improponibili per la lentezza delle operazioni. Per questo motivo può essere utile creare uno script che legge un file di testo contenente le password e, sequenzialmente, prova a decifrare/sbloccare il volume
Verificare che il volume sia protetto con LUKS
La prima cosa da fare è quella di accertarsi che il volume sia effettivamente protetto da LUKS. Per fare questo basta utilizzare il semplice comando.
sudo cryptsetup isLuks /dev/sd2 -v
Qualora il volume, in questo caso /dev/sd2/ fosse cifrato con LUKS il sistema risponde con “comando eseguito con successo”
Creare un file di password
Il file di password, che per convenzione chiameremo password.txt, conterrà per ciascuna linea l’elenco di password potenziali per sbloccare il volume. Ciò non toglie che possono essere utilizzati elenchi già esistenti che contengono le combinazioni più comuni di password.
Anche in questo caso basta creare da shell il file password.txt.
nano password.txt
Creazione dello script
Adesso è ora di creare un semplice script, chiamato bruteforce.sh, che conterrà le istruzioni utili per leggere ogni linea del file e utilizzarla come password di sblocco del volume. Appena lo script rileva la password corretta si blocca restituendo un avviso.
touch bruteforce.sh
chmod +xbruteforce.sh
nano bruteforce.sh
A questo punto, dall’editor nano, basta incollare questo breve script. In caso di tentativo di sblocco di un volume diverso da /dev/sd2 basta sostituire il riferimento con la posizione desiderata (ad esempio /dev/sda, /dev/hd1, /dev/hd2, …)
set -x
while read password;
do
printf $password | sudo cryptsetup luksOpen --test-passphrase /dev/sdb $@ && echo Trovata && break;
done < password.txt