Создаём зашифрованный контейнер в Linux штатными средствами.
Social Engineering![](/file/ea583fb544884b3ad9c37.png)
Сегодня я вам расскажу как создать зашифрованный контейнер в Linux штатными средствами. Т.е. нам не надо будет устанавливать какие-то внешние программы, мы будем пользоваться утилитами, которые уже существуют в Linux "из коробки" или на уровне ядра. Для начала немного о самих утилитах:
dd (dataset definition) — утилита UNIX, служит для копирования, конвертации файлов, а так же — чтения данных. Название унаследовано от оператора DD (Dataset Definition) из языка JCL.
Кроме всего прочего, данная утилита позволяет скопировать регионы из файлов «сырых» устройств, например, сделать резервную копию загрузочного сектора жёсткого диска, или прочитать фиксированные блоки данных из специальных файлов, таких, как /dev/zero или /dev/random.
cryptsetup — утилита для настройки виртуальных блочных устройств под управлением служб ядра "device mapper" (dm) и dm-crypt. Поддерживаются виртуальные тома форматов "plain dm-crypt" и LUKS. Формат LUKS более функционален, чем "plain dm-crypt", благодаря наличию специального блока метаданных.
Эти две утилиты присутствуют в большинстве дистрибутивов изначально. Теперь, когда стало понятно что это за утилиты и какие функции они выполняют, то перейдём к созданию контейнера. Для начала нам нужно создать ключевой файл которым мы будем разблокировать контейнер каждый раз:
dd if=/dev/random of=/home/user/enigma bs=4096 count=1
Разберём немного параметры команды:
if - указывает на источник, т.е. на то, откуда копируем. Указывается файл, который может быть как обычным файлом, так и файлом устройства. В данном случае - это /dev/random, устройство случайных чисел.
of - это файл назначения или путь до файла. В данном случае это создаваемый файл enigma. Вы можете назвать его как вам угодно.
bs - количество байт, которые будут записаны за раз. В данном случае бы создаём файл длиною 4096 байт.
count - число, которое указывает, сколько кусков будет скопировано.
Проще говоря, утилита dd создаёт нам файл-ключ под названием enigma размером 4096 байт. Вам надо будет хранить этот файл как зеницу ока, иначе если вы его потеряете, то контейнер нельзя будет разблокировать, соответственно и все данные хранящиеся в нём станут недоступны.
Теперь перейдём к созданию файла самого контейнера с помощью всё той же утилиты dd:
dd if=/dev/zero of=/home/user/mystery.mp3 bs=1 count=0 seek=2G
Тут уже всё понятно, кроме последнего параметра seek. Он указывает как раз размер создаваемого контейнера. Если коротко, то утилита dd создаст файл mystery.mp3 в домашней папке размером 2 ГБ и перезапишет его нулями. Я специально создал файл контейнера в формате .mp3. Хоть слабая, но маскировка. Он конечно проигрываться не будет, но его можно поместить в директорию с кучей музыкальных файлов, что хоть как-то затруднит его обнаружение.
Следующим шагом нам надо зашифровать созданный контейнер с помощью утилиты cryptsetup:
sudo cryptsetup -v -y -c aes-xts-plain64 -s 512 -h sha512 -i 5000 --use-random luksFormat /home/user/mystery.mp3 /home/user/enigma
Здесь мы шифруем контейнер алгоритмом aes-xts-plain64 на что указывает параметр -c (cipher), он более предпочтителен для контейнеров LUKS и используется по-умолчанию. Все поддерживаемые ядром алгоритмы и модули можно посмотреть с помощью команды:
cat /proc/crypto
Параметр -s указывает размер ключа, равный 512 битам. Параметр -h (hash) указывает хэширующую функцию (алгоритм), в данном случае это sha512. Параметр -i (iter-time) указывает сколько миллисекунд потратить на обработку. Параметр --use-random luksFormat отформатирует контейнер с помощью случайных чисел генерируемых устройством /dev/random.
При удачном выполнении команды вам будет показано следующее:
WARNING! ======== Данные на /home/user/mystery.mp3 будут перезаписаны без возможности восстановления. Are you sure? (Type uppercase yes): YES Создан слот ключа 0. Команда выполнена успешно.
При вопросе Are you sure? (Type uppercase yes) вам надо будет ввести заглавными буквами YES, после чего продолжится шифрование.
Теперь, чтобы разблокировать контейнер, вам надо ввести команду:
sudo cryptsetup luksOpen /home/user/mystery.mp3 SECRET --key-file /home/user/enigma
SECRET - это точка сопоставления, которая используется для отображения и монтирования устройств и томов. Вы можете дать ей любое название.
Теперь нам надо отформатировать разблокированный контейнер в файловую систему. В дистрибутивах Linux более предпочтительным и используемым по-умолчанию является формат ext4. Для форматирования используется команда mkfs:
sudo mkfs.ext4 /dev/mapper/SECRET
На что получите вывод:
Creating filesystem with 523776 4k blocks and 131072 inodes Filesystem UUID: 39c24a2a-7fda-4e02-b56b-bbc52ed48197 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, Social Engineering, Allocating group tables: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done
Файл открытого устройства обычно расположен в /dev/mapper/имя. При этом можно выполнять различные действия, в том числе форматирование.
Создадим каталог в домашней папке куда мы будем монтировать контейнер, например:
mkdir ./mounted
Теперь смонтируем контейнер в этот каталог:
sudo mount /dev/mapper/SECRET ./mounted
Видите, контейнер появился в списке устройств файлового менеджера и как раз по указанному пути:
![](/file/871647bb7d3819d6c5ab8.png)
Теперь дадим права на использование файлов в контейнере:
sudo chown -R "$USER":"$USER" ./mounted
Если этого не сделать, то все действия с файлами можно будет совершать только с правами root.
Чтобы размонтировать контейнер, необходимо выполнить команду:
sudo umount /home/user/mounted/
Чтобы заблокировать контейнер, выполните команду:
sudo cryptsetup luksClose SECRET
можно это сделать одной командой:
sudo umount /home/user/mounted/ && sudo cryptsetup luksClose SECRET
Всё, в следующий раз когда вам нужно будет разблокировать контейнер и смонтировать его в каталог, просто наберите две команды:
sudo cryptsetup luksOpen /home/user/mystery.mp3 SECRET --key-file /home/user/enigma
и
sudo mount /dev/mapper/SECRET ./mounted
За SIM откланиваюсь. Как видите, создать зашифрованный контейнер можно штатными утилитами Linux, не прибегая к установке сторонних программ.
Всем удачи!
P.S. При написании статьи использовались справочные материалы по cryptsetup с сайта opennet.ru
![](/file/1b10174b5315836100cc3.png)
Social Engineering - Канал посвященный психологии, социальной инженерии, профайлингу, НЛП, Хакингу, Анонимности и безопасности в сети интернет, Даркнету и все что с ним связано. Добро пожаловать ;-)
S.E.Book - Литература социального инженера.
@Social_Engineering_bot - Бот обратной связи.
![](/file/1b10174b5315836100cc3.png)