Правильная флешка с Kali и persistence mode (с сохранением настроек и результатов) Приветствую Вас, дорогие жители и гости форума. В этой статье я постараюсь доступным языком рассказать о некоторых тонкостях создания флешки с Kali или чем-то подобным. В результате мы получим загружаемую флешку с самой системой, а также специальным разделом persistence, в котором будут сохраняться результаты работы и настройки. Флешка также будет нормально определяться windows, для чего будет создан ntfs или fat32 раздел, но обо всём по порядку. Для начала нам, конечно же, потребуется ISO образ. (Я использовал kali-linux-1.1.0a-i386.iso sha-1: 593f0e5b5db5e65102b12f047a7383740c5d7d7a.) Затем нужно, загрузившись из под Linux, проделать определённые действия. (На тот момент, данный образ у меня уже был записан на болванку, и я загрузился с него в Live режиме.) Теперь производим разметку флешки (у меня она определилась, как sdb). (Кстати по поводу флешек, лучше не скупиться и купить что-нибудь компактное и скоростное. Я использовал Transcend TS32GJF710, можно взять её USB2.0 аналог TS32GJF510.) Открываем флешку в GParted (gparted /dev/sdb) и создаём чистую таблицу разделов типа ms-dos (Device -> Create Partittion Table). Теперь переходим к созданию разделов. Первым создаём ntfs (если хотите fat32) раздел для windows систем примерно в половину объёма флешки (можете потом, даже, затереть на корпусе 32Gb и написать 16Gb, чтобы никто не догадался ). Важно, чтобы раздел для windows был именно первым (sdb1), иначе она его не отобразит. Далее создаём системный ext2 раздел размером чуть больше, чем занимает наш ISO образ. Не забываем указать флаг boot, чтобы раздел был загружаемым. (ext2 - относительно простая файловая система без журналирования. На мой взгляд, это наилучший вариант для статического хранения файлов образа в данной ситуации. Хотя, если отформатируете в ext3 или ext4 - не страшно, тоже будет работать.) На оставшемся месте создаём раздел (желательно без форматирования). Его мы будем использовать под persistence. Должно получиться примерно следующее: Переходим в терминал: Code: # создаём каталог и монтируем к нему системный раздел флешки mkdir /mnt/kali mount /dev/sdb2 /mnt/kali # при желании можно его совсем почистить rm -vRf /mnt/kali/* Открываем наш образ менеджером архивов. Выделяем всё кроме [BOOT]. Нажимаем “Extract” и извлекаем выбранное в /mnt/kali. Бывают ситуации, когда файла образа нет, а есть только диск. Тогда файлы можно скопировать прямо с диска: Code: # создаём каталог и монтируем к нему привод mkdir /mnt/sr0 mount /dev/sr0 /mnt/sr0 # копируем файлы kali с привода на раздел rsync -av /mnt/sr0/* /mnt/kali # размонтируем привод umount /mnt/sr0 Ну что, файлы скопированы. Пришло время заняться загрузчиком. На диске с Kali используется загрузчик isolinux, нам же для загрузки с ext раздела потребуется extlinux. В Kali он уже есть и лежит в /usr/lib/EXTLINUX. Сразу скажу, что isolinux, extlinux, syslinux - это всё загрузчики из одного семейства, так что менять почти ничего не придётся. Code: # копируем загрузчик в MBR флешки dd if=/usr/lib/EXTLINUX/mbr.bin of=/dev/sdb bs=512 # устанавливаем (хотя, скорей настраиваем) загрузчик # в каталог live (поскольку там хранится загрузочное ядро (vmlinuz, initrd.img)) extlinux --install /mnt/kali/live Так как загрузчик сменился, нужно кое-что переименовать. Code: mv /mnt/kali/isolinux /mnt/kali/syslinux mv /mnt/kali/syslinux/isolinux.cfg /mnt/kali/syslinux/syslinux.cfg mv /mnt/kali/syslinux/isolinux.bin /mnt/kali/syslinux/syslinux.bin (Кстати, фоновая картинка при загрузке хранится в syslinux/splash.png, её лучше поменять её на что-то менее вызывающее.) Ну вот и всё, мы получили загружаемую флешку с Kali. Раздел sdb2 можно смело размонтировать (umount /dev/sdb2). Не забываем, что раздел sdb2 должен быть помечен, как boot (иначе не стартанёт). Переходим ко второй части – persistence. Как мной уже было сказано выше, persistence – это специальный раздел, предназначенный для сохранения результатов и настроек. С ним вы можете удалять имеющиеся и устанавливать дополнительные пакеты. Всё это сохранится, и, настроив систему единожды, вам не придётся проделывать это каждый раз. Таких разделов может быть несколько, но мы пока рассмотрим вариант всего с одним. Самый простой вариант создания такого раздела – это отформатировать sdb3 в ext3 (можно и в ext4, но, насколько я знаю, debian, на котором собственно и построена Kali, лучше работает с ext3), и создать в его корне конфигурационный файл. Code: # форматируем раздел sdb3 в ext3 mkfs.ext3 -L persistence /dev/sdb3 # создаём каталог и монтируем к нему persistence раздел флешки mkdir /mnt/persistence mount /dev/sdb3 /mnt/persistence # создаём конфигурационный файл persistence echo "/ union" > /mnt/persistence/persistence.conf # размонтируем раздел sdb3 umount /dev/sdb3 На этом можно было бы поставить точку, но, а если предположить, что этой флешкой может завладеть кто-то, кто ей завладеть никак не должен? И тут на помощь приходит шифрование. Да, Kali (и не только она) поддерживает использование шифрованного persistence раздела. Ну что, для начала нужно создать криптоконтейнер. При форматировании система запросит подтверждение, для этого нужно ввести YES большими буквами. Затем вводим парольную фразу первый, и второй раз (парольную фразу лучше придумать заранее). Code: # форматируем раздел (вывод информации о ходе выполнения, шифрование aes-xts-plain, размер ключа 512 бит, подтвердить парольной фразой) cryptsetup --verbose --cipher aes-xts-plain64 --key-size 512 --verify-passphrase luksFormat /dev/sdb3 # проверяем раздел cryptsetup isLuks /dev/sdb3 && echo "Sucess ;)" # смотрим, что получилось cryptsetup luksDump /dev/sdb3 Ну а дальше всё просто. Code: # открываем получившийся криптоконтейнер cryptsetup luksOpen /dev/sdb3 sdb3_crypted # проверяем открывшийся раздел cryptsetup status sdb3_crypted # создаём файловую систему внутри шифрованного раздела mkfs.ext3 -L persistence /dev/mapper/sdb3_crypted # форматируем раздел sdb3 в ext3 mkfs.ext3 -L persistence /dev/sdb3 # создаём каталог и монтируем к нему шифрованный раздел mkdir /mnt/persistence mount /dev/mapper/sdb3_crypted /mnt/persistence # создаём конфигурационный файл persistence echo "/ union" > /mnt/persistence/persistence.conf # производим размонтирование umount /dev/mapper/sdb3_crypted # закрываем шифрованный раздел cryptsetup luksClose sdb3_crypted Ещё не устали? А вот я подустал, если честно. Ну ладно, идём дальше. Часть третья. Финальные штрихи. Зашифровать persistence – это, конечно, хорошо. А как насчёт экстренного пароля самоуничтожения? Да, вот такая ещё фишка есть в Kali. Хотя, самоуничтожения – это, однако, громко сказано. Ввод такого пароля просто стирает все кей-слоты. Кей-слот – это своего рода пароль к разделу. Их может быть несколько. Я не буду вдаваться в тонкости работы криптоконтейнеров, но если убить все кей-слоты, то шифрованный раздел будет уже не открыть. При установке такого пароля система сначала запросит любой существующий пароль, затем нужно ввести пароль самоуничтожения. Он вводится один раз, без подтверждения, так что будьте внимательны. Code: # добавляем пароль самоуничтожения cryptsetup luksAddNuke /dev/sdb3 А теперь, на всякий случай, расскажу, как делать и восстанавливать резервные копии заголовков шифрованного раздела. Code: # создаём резервную копию заголовка шифрованного раздела cryptsetup luksHeaderBackup --header-backup-file luksheader.back /dev/sdb3 # восстанавливаем заголовок шифрованного раздела из резервной копии cryptsetup luksHeaderRestore --header-backup-file luksheader.back /dev/sdb3 Кстати, перед тем, как спрятать резервную копию, её тоже можно зашифровать. Code: # шифруем файл резервной копии openssl enc -e -aes-256-cbc -in luksheader.back -out luksheader.back.enc # расшифровываем файл openssl enc -d -aes-256-cbc -in luksheader.back.enc -out luksheader.back.dec # выведем для наглядности контрольные суммы # исходный и расшифрованный файлы должны быть идентичны sha1sum luksheader.back luksheader.back.dec Ну и на этом, пожалуй, можно остановиться. Пробуйте. Задавайте вопросы.
P.S. С октября 2015 года прекращена поддержка Kali 1.0. Если вы хотите дальше продолжить ей пользоваться, для вас какое-то время будут доступны старые репозитории. Для этого отредактируйте файл /etc/apt/sources.list Там должно быть что-то вроде: Code: deb http://http.kali.org/kali kali main contrib non-free deb-src http://http.kali.org/kali kali main contrib non-free deb http://security.kali.org/kali-security kali/updates main contrib non-free deb-src http://security.kali.org/kali-security kali/updates main contrib non-free Исправьте поддомены источника с http и security на old, а также смените название kali на moto, чтобы получилось что-то вроде: Code: deb http://old.kali.org/kali moto main contrib non-free deb-src http://old.kali.org/kali moto main contrib non-free deb http://old.kali.org/kali-security moto/updates main contrib non-free deb-src http://old.kali.org/kali-security moto/updates main contrib non-free
Система на флешку встала Персистенс раздел тоже Ставлю виртуал бокс и воникс - перегружаюсь и нету виртуал бокса ) Вопрос! Подскажите подробно как записать в персистенс виртуал бокс с вониксом