Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
kali-rpi-luks-crypt — Chiffrement complet du disque pour Kali sur Raspberry avec LUKS | Kitploit
Outils/GitHubGitHub/tothi/kali-rpi-luks-crypt
Sécurité des Systèmes EmbarquésOutils de Chiffrement/DéchiffrementSécurité Matériel et IoTApprentissage et ÉducationLabs et Pratique
GitHubtothi/kali-rpi-luks-crypt

kali-rpi-luks-crypt

Chiffrement complet du disque pour Kali sur Raspberry avec LUKS

Voir le dépôt
1571il y a 7 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Chiffrement complet du disque pour Kali sur Raspberry (ou autre architecture similaire) avec LUKS

Ce tutoriel est dédié à l'exécution de Kali sur Raspberry (ou autre architecture similaire, par ex. ODROID-C2 avec chiffrement complet du disque avec LUKS. Basé sur le document un peu obsolète ici.

Motivation

Déployer Kali sur Raspberry Pi (ou autre matériel similaire, petit et peu puissant) dans un environnement LAN en tant que 'boîte à piratage jetable' est évidemment utile. Cependant, garder les données collectées secrètes est une exigence essentielle. C'est là que le chiffrement complet du disque intervient en tant que concept de sécurité obligatoire.

Prérequis

Nous devons d'abord configurer une image Kali officielle actuelle pour le Raspberry Pi (sans chiffrement) sur une carte SD.

L'option recommandée (maintenant) est d'utiliser une construction personnalisée pour Raspberry Pi 3 avec le patch nexmon (pour utiliser les capacités de surveillance et d'injection WiFi intégrées). Il y a un script de construction automatisé dans le dépôt officiel kali-arm-build-scripts qui configure l'image à partir de zéro (sur une distribution Kali). Et voici une version patchée qui fonctionne aussi sur d'autres distributions que Kali (testée sur Gentoo). Actuellement (2017-08), le script de construction fonctionnel pour ODROID-C2 se trouve également ici dans ce dépôt forké.

Obtenez les outils de construction et construisez l'image à partir de zéro en tant que root (cela peut prendre quelques heures) :

root@kitploit:~
$ git clone https://github.com/tothi/kali-arm-build-scripts
$ cd kali-arm-build-scripts
$ sudo ./rpi3-nexmon.sh 2.0

L'image résultante est rpi3-nexmon-2.0/kali-2.0-rpi3-nexmon.img.xz. Copiez-la sur la carte SD (en utilisant pv pour afficher la progression) :

root@kitploit:~
# pixz -d rpi3-nexmon-2.0/kali-2.0-rpi3-nexmon.img.xz - | pv -treb | dd of=/dev/mmcblk0 bs=512k

(L'image devrait fonctionner, elle peut être testée maintenant.)

Préparation de l'image RPi pour un démarrage chiffré

Nous montons l'image depuis la carte SD et préparons un initramfs capable des fonctionnalités LUKS dans un environnement chroot. Pour que cela fonctionne, un binaire qemu-arm-static x86 (hôte) est nécessaire sur le système de fichiers de la carte SD. Le script de construction patché rpi3-nexmon.sh ci-dessus l'installe et le laisse sur l'image, donc les choses devraient bien fonctionner. (Sinon, la copie du binaire statique qemu approprié sur l'image est nécessaire.)

Initialisation de l'environnement chroot (sur le système hôte en tant que root) :

root@kitploit:~
# mkdir -p /mnt/chroot/boot
# mount /dev/mmcblk0p2 /mnt/chroot/
# mount /dev/mmcblk0p1 /mnt/chroot/boot/

# mount -t proc none /mnt/chroot/proc
# mount -t sysfs none /mnt/chroot/sys
# mount -o bind /dev /mnt/chroot/dev
# mount -o bind /dev/pts /mnt/chroot/dev/pts

# LANG=C chroot /mnt/chroot/

Nous changeons d'abord le mot de passe par défaut pour root :

root@kitploit:~
passwd

Installez les paquets requis (dans l'environnement chroot) :

root@kitploit:~
# apt-get update
# apt-get install busybox cryptsetup dropbear

Notez que nous devons saisir la clé de déchiffrement à chaque démarrage. Nous le faisons de préférence à distance via SSH, c'est pourquoi dropbear est nécessaire (dans l'initramfs).

Maintenant, éditez /boot/cmdline.txt, changez le périphérique root en périphérique crypté mappé (/dev/mapper/crypt_sdcard) et ajoutez le paramètre cryptdevice approprié.

Voici donc un /boot/cmdline.txt original :

root@kitploit:~
dwc_otg.fiq_fix_enable=2 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rootflags=noload net.ifnames=0

Et voici la version mise à jour (différences dans les paramètres root et cryptdevice) :

root@kitploit:~
dwc_otg.fiq_fix_enable=2 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mapper/crypt_sdcard cryptdevice=/dev/mmcblk0p2:crypt_sdcard rootfstype=ext4 rootwait rootflags=noload net.ifnames=0

Maintenant, créez /boot/config.txt avec le contenu suivant :

root@kitploit:~
initramfs initramfs.gz followkernel

Notez que sur d'autres matériels, des étapes similaires sont nécessaires (le fichier contenant les paramètres de démarrage sur ODROID-C2 est /boot/boot.ini).

Configurons l'authentification par clé SSH Dropbear. Créez une paire de clés (sans mot de passe) sur la machine hôte (en dehors du chroot !) et lisez la clé publique :

root@kitploit:~
$ ssh-keygen -N "" -f kali-dropbear
$ cat ./kali-dropbear.pub

Ajoutez la clé publique à /etc/dropbear-initramfs/authorized_keys. Limitez l'accès SSH Dropbear uniquement pour la configuration de cryptroot en préfixant la clé avec ceci :

root@kitploit:~
command="/scripts/local-top/cryptroot && kill -9 `ps | grep -m 1 'cryptroot' | cut -d ' ' -f 3`"

Corrigez les permissions :

root@kitploit:~
chmod 600 /etc/dropbear-initramfs/authorized_keys

Éditez /etc/fstab. Original :

root@kitploit:~
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1

Périphérique / mis à jour changé en /dev/mapper/crypt_sdcard :

root@kitploit:~
# <file system>           <mount point>   <type>  <options>       <dump>  <pass>
proc                      /proc           proc    defaults          0       0
/dev/mmcblk0p1            /boot           vfat    defaults          0       2
/dev/mapper/crypt_sdcard  /               ext4    defaults,noatime  0       1

Ajoutez cette ligne à /etc/crypttab :

root@kitploit:~
crypt_sdcard /dev/mmcblk0p2 none luks

Modifiez /etc/cryptsetup-initramfs/conf-hook en définissant

root@kitploit:~
CRYPTSETUP=y

pour inclure les fichiers cryptsetup dans l'image initramfs.

Enfin, créez initramfs pour la version actuelle du noyau et quittez le chroot (ne vous souciez pas des erreurs/avertissements pendant mkinitramfs) :

root@kitploit:~
# ls -l /lib/modules/ |awk -F" " '{print $9}'

4.4.50-v7+
# mkinitramfs -o /boot/initramfs.gz 4.4.50-v7+

Notez que nous devons être prudents lors de la génération de l'image (surtout sur d'autres matériels), car uname -r renvoie la version du noyau de l'hôte, pas celle du chroot. Ainsi, par exemple, sur ODROID-C2, /boot/mkuinitrd ne fonctionne pas directement, nous devons exécuter les commandes du script manuellement (en ajustant la version du noyau POUR D'AUTRES MATÉRIELS !) :

root@kitploit:~
# rm /boot/initrd.img-3.14.79
# update-initramfs -c -k 3.14.79
# mkimage -A arm64 -O linux -T ramdisk -C none -a 0 -e 0 -n "uInitrd" -d /boot/initrd.img-3.14.79 /boot/uInitrd
#

Quittez l'environnement chroot

root@kitploit:~
exit

Démontez les systèmes de fichiers et sauvegardez rootfs avant de créer le volume chiffré (et de tout supprimer) sur la carte SD :

root@kitploit:~
# umount /mnt/chroot/boot
# umount /mnt/chroot/sys
# umount /mnt/chroot/proc
# mkdir -p /mnt/backup
# rsync -avh /mnt/chroot/* /mnt/backup/

Démontez le chroot complet :

root@kitploit:~
# umount /mnt/chroot/dev/pts
# umount /mnt/chroot/dev
# umount /mnt/chroot

Supprimez la partition root non chiffrée (n° 2) et créez-en une vide (remplissant la carte SD) :

root@kitploit:~
# echo -e "d\n2\nw" | fdisk /dev/mmcblk0
# echo -e "n\np\n2\n\n\nw" | fdisk /dev/mmcblk0

Maintenant, (probablement) le débranchement et la réinsertion de la carte SD sont nécessaires pour enregistrer les nouvelles partitions.

Créez un volume chiffré avec une phrase de passe forte (cette étape détruit la rootfs originale !) :

root@kitploit:~
# cryptsetup -v -y --cipher aes-cbc-essiv:sha256 --key-size 256 luksFormat /dev/mmcblk0p2
# cryptsetup -v luksOpen /dev/mmcblk0p2 crypt_sdcard
# mkfs.ext4 /dev/mapper/crypt_sdcard

Restaurer rootfs sur le volume chiffré et fermer le disque :

root@kitploit:~
# mkdir -p /mnt/encrypted
# mount /dev/mapper/crypt_sdcard /mnt/encrypted/
# rsync -avh /mnt/backup/* /mnt/encrypted/
# umount /mnt/encrypted/
# cryptsetup luksClose /dev/mapper/crypt_sdcard
# sync

Éjectez la carte SD et testez-la sur le Raspberry.

Démarrage de l'appareil

Le premier processus de démarrage échouera et tombera dans busybox. Entrez les commandes suivantes :

root@kitploit:~
# cryptsetup luksOpen /dev/mmcblk0p2 crypt_sdcard
## provide password
# exit

Votre appareil devrait démarrer maintenant. Connectez-vous avec le mot de passe que vous avez choisi plus tôt et exécutez :

root@kitploit:~
mkinitramfs -o /boot/initramfs.gz
reboot

On vous demandera la phrase de passe avec une invite plus agréable, de plus vous devriez pouvoir vous connecter en ssh à busybox et entrer la phrase de passe (vous pouvez utiliser un fichier known_hosts personnalisé si vous le souhaitez) :

root@kitploit:~
$ ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" -i ~/.ssh/kali-dropbear [email protected]

Une fois que cela fonctionne, n'oubliez pas de nettoyer les fichiers de sauvegarde sur l'hôte :

root@kitploit:~
# rm -fr /mnt/backup
# rm -fr /mnt/chroot

Dépannage

Pour obtenir une sortie de débogage complète pendant le démarrage, vous pouvez ajouter debug=1 dans cmdline.txt

Télécharger l’outil