Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
kali-rpi-luks-crypt — Полное шифрование диска для Kali на Raspberry с использованием LUKS | Kitploit
Инструменты/GitHubGitHub/tothi/kali-rpi-luks-crypt
Безопасность встроенных системИнструменты шифрования/дешифрованияБезопасность оборудования и IoTОбучение и ОбразованиеЛаборатории и Практика
GitHubtothi/kali-rpi-luks-crypt

kali-rpi-luks-crypt

Полное шифрование диска для Kali на Raspberry с использованием LUKS

Репозиторий
1575 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Полное шифрование диска для Kali на Raspberry (или другой подобной архитектуре) с использованием LUKS

Это руководство посвящено запуску Kali на Raspberry (или другой подобной архитектуре, например ODROID-C2 с использованием полного шифрования диска с помощью LUKS. Основано на немного устаревшем документе здесь.

Мотивация

Развёртывание Kali на Raspberry Pi (или другом подобном, небольшом, маломощном оборудовании) в локальной сети в качестве «одноразового хакбокса», очевидно, полезно. Однако сохранение собранных данных в тайне является важным требованием. Здесь на помощь приходит полное шифрование диска как обязательная концепция безопасности.

Предварительные требования

Сначала мы должны установить официальный текущий образ Kali для Raspberry Pi (без шифрования) на SD-карту.

Рекомендуемый вариант (сейчас) — использование собственной сборки Raspberry Pi 3 с патчем nexmon (для использования возможностей мониторинга и инжекции встроенного WiFi). В официальном репозитории kali-arm-build-scripts есть автоматический скрипт сборки, который создаёт образ с нуля (на дистрибутиве Kali). А вот патченная версия, которая работает и на других дистрибутивах, кроме Kali (протестировано на Gentoo). В настоящее время (август 2017) рабочий скрипт сборки для ODROID-C2 также находится в этом форке.

Получите инструменты сборки и соберите образ с нуля от root (это может занять несколько часов):

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

Результирующий образ — rpi3-nexmon-2.0/kali-2.0-rpi3-nexmon.img.xz. Скопируйте его на SD-карту (используя pv для отображения прогресса):

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

(Образ должен работать, его можно протестировать сейчас.)

Подготовка образа RPi к зашифрованной загрузке

Мы монтируем образ с SD-карты и готовим initramfs, способный работать с LUKS, в среде chroot. Для этого на файловой системе SD-карты требуется двоичный файл qemu-arm-static для архитектуры x86 (хоста). Вышеупомянутый патченный скрипт сборки rpi3-nexmon.sh устанавливает и оставляет его в образе, так что всё должно работать хорошо. (В противном случае необходимо скопировать соответствующий статический двоичный файл qemu в образ.)

Инициализация среды chroot (на хост-системе от 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/

Сначала измените пароль по умолчанию для root:

root@kitploit:~
passwd

Установите необходимые пакеты (в среде chroot):

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

Обратите внимание, что на каждом запуске необходимо вводить ключ дешифрования. Предпочтительно делать это удалённо через SSH, поэтому dropbear нужен (в initramfs).

Теперь отредактируйте /boot/cmdline.txt, измените корневое устройство на отображаемое криптоустройство (/dev/mapper/crypt_sdcard) и добавьте соответствующий параметр cryptdevice.

Вот оригинальный /boot/cmdline.txt:

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

А вот обновлённый (отличия в параметрах root и 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

Теперь создайте /boot/config.txt со следующим содержимым:

root@kitploit:~
initramfs initramfs.gz followkernel

Обратите внимание, что на другом оборудовании нужны аналогичные шаги (файл с параметрами загрузки на ODROID-C2 — /boot/boot.ini).

Настроим аутентификацию по SSH-ключам Dropbear. Создайте пару ключей (без пароля) на хост-машине (вне chroot!) и прочитайте открытый ключ:

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

Добавьте открытый ключ в /etc/dropbear-initramfs/authorized_keys. Ограничьте доступ Dropbear по SSH только для настройки cryptroot, добавив перед ключом следующее:

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

Исправьте права доступа:

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

Отредактируйте /etc/fstab. Оригинал:

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

Обновлённое устройство / изменено на /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

Добавьте эту строку в /etc/crypttab:

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

Измените /etc/cryptsetup-initramfs/conf-hook, установив

root@kitploit:~
CRYPTSETUP=y

чтобы включить файлы cryptsetup в образ initramfs.

Наконец, создайте initramfs для текущей версии ядра и выйдите из chroot (не обращайте внимания на ошибки/предупреждения во время mkinitramfs):

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

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

Обратите внимание, что при создании образа (особенно на другом оборудовании) нужно быть осторожным, потому что uname -r возвращает версию ядра хоста, а не chroot. Так, например, на ODROID-C2 /boot/mkuinitrd не работает из коробки, следует вручную выполнить команды из скрипта (подправив версию ядра ДЛЯ ДРУГОГО ОБОРУДОВАНИЯ!):

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
#

Выйдите из среды chroot

root@kitploit:~
exit

Размонтируйте файловые системы и сделайте резервную копию корневой файловой системы перед созданием зашифрованного тома (и удалением всего) на 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/

Размонтируйте полный chroot:

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

Удалите незашифрованный корневой раздел (номер 2) и создайте пустой (заполняющий SD-карту):

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

Теперь (возможно) потребуется извлечь и вставить SD-карту обратно, чтобы зарегистрировать новые разделы.

Создайте зашифрованный том с надёжной парольной фразой (этот шаг уничтожает оригинальную корневую файловую систему!):

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

Восстановите корневую файловую систему на зашифрованный том и закройте диск:

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

Извлеките SD-карту и протестируйте её на Raspberry.

Загрузка устройства

Первый процесс загрузки завершится ошибкой и перейдёт в busybox. Введите следующие команды:

root@kitploit:~
# cryptsetup luksOpen /dev/mmcblk0p2 crypt_sdcard
## предоставьте пароль
# exit

Ваше устройство должно загрузиться сейчас. Войдите в систему с паролем, который вы выбрали ранее, и выполните:

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

Теперь вас попросят ввести парольную фразу с более красивым приглашением; кроме того, вы сможете подключиться по SSH к busybox и ввести парольную фразу (при желании можете использовать собственный файл known_hosts):

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

Как только всё заработает, не забудьте очистить файлы резервных копий на хосте:

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

Устранение неполадок

Чтобы получить полный отладочный вывод во время загрузки, вы можете добавить debug=1 в cmdline.txt.

Скачать инструмент