С появлением более маленьких и более быстрых ARM устройств, таких как новый Raspberry Pi 2 (для которого сейчас собран образ Kali), мы наблюдаем всё более и более частое использование маленьких устройств в качестве «чемоданчика хакера на подхвате». Будучи новой и новаторской технологией, есть один большой недостаток этой концепции — а именно конфиденциальность данных, сохранённых на самом устройстве. В большинстве установок, которые мы видели, сделано мало для защиты чувствительной информации, сохранённой на SD картах этих маленьких компьютеров. Этот факт в купе с дружескими подталкиванием обусловили запрос на создание зашифрованного LUKS, поддерживающего возможность NUKE (самоуничтожения) образа Kali Linux для наших устройств Raspberry Pi. Ниже описано как это сделать. Т.е. вы можете повторить этот процесс и заиметь самому эту клёвость.

Взгляд с высоты птичьего полёта на процесс шифрования диска

Описанный здесь процесс был опробован и успешно прошёл тесты на Raspberry Pi B+ и Raspberry Pi 2 (далее будем называть просто “RPi”). Но вообще должно быть тривиальной задачей применить эту инструкцию к любому устройству ARM, на котором запущена Kali. До того как мы начнём, давайте уделим минутку быстрому описанию того, что мы будем делать — сам процесс несложный, но требует некоторых действий. Коротко говоря, основы заключаются в том, что:

  1. Мы скачиваем необходимый образ Kali Raspberry Pi RPi и записываем его с помощью dd на SD карту.
  2. Мы делаем chroot для образа RPi и устанавливаем/обновляем несколько файлов для нашего зашифрованного загрузчика.
  3. Мы создаём файл initramfs, который включает Dropbear и свеже сгенерированнные ключи SSH.
  4. Мы делам rsync модифицированой rootfs во временно расположение резервной копии, а затем удаляем раздел rootfs с SD.
  5. Затем мы заново создаём зашифрованный раздел, на который мы восстановим данные раздела рута. Вот и всё!

Если всё пройдёт успешно, RPi будет загружаться, а затем LUKS будет выкидывать нас на ввод пароля для расшифровывания диска рута, одновременно открывая сессию Dropbear SSH, через которую вы можете подключиться по SSH и ввести пароль расшифровки загрузчика. Ах да, мы уже сказали, что этот образ будет иметь функцию LUKS NUKE (самоуничтожения при вводе заранее заданного пароля)?

Начинаем работать руками

Как всегда, все наши ARM dev сделаны на машине Kali amd64 и мы мы убедились, что имеются все необходимые зависимости, которые нам нужны. Мы загружаем последний образ Kali RPi (1.1.0), извлекаем его и записываем с помощью dd на нашу SD карту, которая в нашем случае показывается как sdb2 — у вас она может быть названа по-другому, учитывайте это!

После использования dd мы монтируем различные разделы и делаем chroot в образе Kali RPi:

Затем мы обновляем наш образ и устанавливаем некоторые базовые пакеты, которые нам нужны для этого процесса:

Мы создаём первоначальный файл initramfs, который будет триггером для генерации ключей dropbear SSH. Сначала мы узнаём версию модулей директории как показано ниже (она может различаться в зависимости от различных версий образов):

Затем мы используем информацию о версии для генерирования базового файла initramfs.

Мы настраиваем службу OpenSSH так, чтобы она запускалась при загрузке, не забывая изменить пароль по умолчанию.

Далее мы проверяем, что директория /boot смонтирована и если так, мы изменяем параметры загрузки в cmdline.txt и config.txt.

…и добавляем / изменяем следующие параметры:

Далее идёт config.txt:

Теперь мы занимаемся доступом Dropbear SSH. Мы копируем закрытый ключ SSH на наш лэптоп:

И ограничиваем SSH соединение, позволяя ему взаимодействовать только с приложением cryptroot.

Мы копируем следующее в самом начале публичного ключа ssh.

Затем мы создаём fstab и crypttab с нашим сконфигурированным загрузчиком устройства и выходим из chroot:

Во время наших тестов мы заметили, что в некоторых случаях требуется время для пробуждения USB порта, что может похерить инициализацию сетевого initrd Dropbear. Для исправления этого мы можем предоставить 5 секундную задержку до размещения функции configure_networking в самой initrd:

измените:

на:

Сохраните и выйдете из файла, затем заново сгенерируйте initramfs и выйдите из chroot. Вы можете не обращать внимание на предупреждения cryptsetup и device-mapper.

Теперь мы сносим chroot и делаем резервную копию нашего раздела rootfs:

Оказавшись вне chroot мы размонтируем всё:

После окончания этого мы удаляем существующий второй раздел SD карты и пересоздаём новый пустой раздел, который мы настроем как зашифрованный LUKS.

Вынимаем нашу SD карту и подключаем её обратно, чтобы зарегистрировались новые разделы, затем начинаем установку зашифрованного раздела.

Когда готово, мы восстанавливаем резервную копию rootfs на только что зашифрованный раздел.

Затем мы размонтируем и закрываем том.

Вот оно! Теперь всё, что нам осталось сделать, это загрузиться в RPi с использованием модифицированной SD карты. initramfs загрузит Dropbear и получит DHCP адрес в вашей LAN (вы также можете назначить IP принудительно), это позволит вам подключиться по SSH к загружаемой RPi и ввести пароль расшифрования. Когда пароль принят, Dropbear закроется, а RPi продолжит загрузку. Вы должны увидеть что-то вроде следующего:

Могу я иметь LUKS NUKE (функцию самоуничтожения по паролю) с этой Pi?

Если вы не знакомы с функцией Kali Linux LUKS NUKE, значит вы пропустили что-то важное о Kali. Хотя эта стадия является опциональной, она позволяет настроить и применить пароль для экстренного самоуничтожения вашего зашифрованного диска LUKS. Чтобы сделать это, просто задайте пароль Nuke (самоуничтожения) на вашем зашифрованном разделе:

С заданным Nuke паролем вы теперь можете удалённо очистить зашифрованный мастер-ключи LUKS, что сделает данные на SD карте недоступными.

Похожие темы

Metasploit – руководство пользователя... Это неофициальный перевод руководства пользователя Metasploit на русский язык. Перевод может содержать неточности. Оригинал статьи на английском я...
Включение проводного соединения на Kali Linux... После установки Kali Linux на флешку и загрузки с неё, я обнаружил, что проводная сеть у меня не работает. Работает Wi-Fi, заработал VPN, а проводна...
Как заменить OSX на Kali Linux Требования для установки Kali Linux Начиная с Kali Linux 1.0.8, Kali Linux поддерживает EFI из коробки. Эта добавленная функция упрощает получен...
Выпущена новая версия Kali Linux 1.1.0... После почти двух лет публичной разработки (и ещё года за сценой), авторы гордо представляют выпуск Kali Linux – версии 1.1.0. Этот релиз прино...
Kali Linux 2.0 с ядром 4.0 – Установка проприетарн... Инструкция применима к Kali Linux 2.0 с ядром 4.0 и Kali Linux 1.1.0 с ядром 3.18. Если у вас видеокарта от AMD, то обратитесь к статье "Устано...