Die Linux Distro Kali Linux, welche auf Debian basiert, beinhaltet neben den Pentest-Tools auch eine Implementation von Emergency Self Destruction of LUKS.
Dabei handelt es ursprünglich sich um cryptsetup-nuke-keys (A patch for cryptsetup which adds the option to nuke all keyslots given a certain passphrase.
)
Installation
Sofern noch nicht installiert, kann man dies (unter Kali Linux) mit apt install cryptsetup-nuke-password
nachholen.
Jetzt verwendet man dpkg-reconfigure cryptsetup-nuke-password
um ein entsprechendes Passwort zu vergeben.
Anschließend wiederholt man die Eingabe des Selbstzerstörungspasswort.
Und dann kümmert sich das System um den Rest der Einrichtung:
root@kali:~# dpkg-reconfigure cryptsetup-nuke-password
INFO: Storing the nuke password's crypted hash in /etc/cryptsetup-nuke-password/password_hash
update-initramfs: deferring update (trigger activated)
Trigger für initramfs-tools (0.133) werden verarbeitet ...
update-initramfs: Generating /boot/initrd.img-4.19.0-kali5-amd64
Behind the scene, this creates
/etc/cryptsetup-nuke-password/password_hash
with the output ofecho your-password | /usr/lib/cryptsetup-nuke-password/crypt --generate
and rebuilds the initramfs (update-initramfs -u
).
Quelle: gitlab.com/kalilinux
Die Selbstzerstörung
Nach dem Anlegen der „Selbstzerstörung“ funktioniert natürlich alles andere immer noch ordnungsgemäß. D.h. man kann mit dem entsprechenden Passwort weiterhin die Festplatte entschlüsseln.
Wird nun allerdings das Selbstzerstörungspasswort eingegeben, so ist die Festplattenverschlüsselung unbrauchbar gemacht worden, denn es ist nun nicht mehr möglich die Festplatte zu entschlüsseln, selbst mit dem richtigen Passwort.
Wenn man mit einer Live-CD bootet kann man sich per cryptsetup luksDump /dev/sda5
anschauen welche Key Slots
vergeben sind.
Vor der Selbstzerstörung:
root@kali:~# cryptsetup luksDump /dev/sda5
LUKS header information for /dev/sda5
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha256
Payload offset: 4096
MK bits: 512
MK digest: 92 27 09 05 8d 58 f8 2c b4 16 3f e0 c2 6b 8d 9b 34 59 f9 52
MK salt: b9 92 33 0d e1 82 d2 0c 18 7e dc 84 95 db 92 0e
79 45 6f a7 58 77 a9 5b 52 d6 1a f9 05 f3 82 b2
MK iterations: 110890
UUID: b1866a04-0474-47b0-8a33-6c9faf3eb135
Key Slot 0: ENABLED
Iterations: 1826786
Salt: a3 28 80 2a ac a0 aa 66 e7 10 11 de d5 3f 0a 5d
14 32 b2 c6 7f 90 3a be f0 0a 0f b5 ab db f5 8c
Key material offset: 8
AF stripes: 4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
Nach der Selbstzerstörung:
Wie man sieht sind hier alle Key Slots leer und somit ist kein entschlüsseln der Festplatte möglich.
Eine Sicherung des LUKS Headers erstellen
Die Syntax lautet:
cryptsetup luksHeaderBackup <device> --header-backup-file <file>
bei Kali Linux wäre das zum Beispiel:
cryptsetup luksHeaderBackup --header-backup-file /root/luksheader.bck /dev/sda5
Das hierbei erstellte Backup der LUKS-Header /root/luksheader.bck
sollte nun entsprechend extern sicher abgelegt werden.
Sicherung des LUKS Headers wieder einspielen
Möchte man seine Festplattenverschlüsselung nach der Selbszerstörung mithilfe des Backups wiederherstellen, so lautet die Syntax:
cryptsetup luksHeaderRestore <device> --header-backup-file <file>
Ein Beispiel:
Nun kann die Festplatte wieder ordnungsgemäß mit dem richtigen Passwort entschlüsselt werden.
das Paket cryptsetup-nuke-password
auf anderen Systemen verwenden
Wenn man weitere Debian Systeme, welche per LUKS verschlüsselte Festplatten verwenden, mit der Selbstzerstörung ausstatten möchte kann man das entsprechende Paket mit apt download cryptsetup-nuke-password
herunterladen und auf dem entsprechenden System dann per dpkg -i <Paketname.deb>
installieren.
Dies habe ich bereits mit Debian 10 getestet.
Alternativ verwendet man zur Installation die offiziellen Kali Linux Repos:
Kali Linux Repos hinzufügen
als erstes fügt man die offiziellen Kali Linux Repos in die lokale /etc/apt/sources.list
echo "deb http://http.kali.org/kali kali-rolling main non-free contrib" >> /etc/apt/sources.list
Hinzufügen der Pub-Keys
root@debian:~# gpg --keyserver hkp://keys.gnupg.net --recv-keys ED444FF07D8D0BF6
gpg: key ED444FF07D8D0BF6: 184 signatures not checked due to missing keys
gpg: key ED444FF07D8D0BF6: "Kali Linux Repository <devel@kali.org>" 185 new signatures
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: new signatures: 185
root@debian:~# gpg -a --export ED444FF07D8D0BF6 | sudo apt-key add -
OK
Nun aktuallisiert man die Paketquellen per apt update
und installiert anschließend das Paket per apt install cryptsetup-nuke-password
.