Создаём зашифрованный контейнер в Linux штатными средствами.

Создаём зашифрованный контейнер в Linux штатными средствами.

Social Engineering

Сегодня я вам расскажу как создать зашифрованный контейнер в 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

Видите, контейнер появился в списке устройств файлового менеджера и как раз по указанному пути:

Social Engineering

Теперь дадим права на использование файлов в контейнере:

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

Social Engineering - Канал посвященный психологии, социальной инженерии, профайлингу, НЛП, Хакингу, Анонимности и безопасности в сети интернет, Даркнету и все что с ним связано. Добро пожаловать ;-)


S.E.Book - Литература социального инженера.

@Social_Engineering_bot - Бот обратной связи.

  1. Сигналы с помощью которых, вами манипулируют — подсказка от мастера переговоров.
  2. Вербовка людей. Психология Высшей Школы КГБ.
  3. Шифрование почты. Теория и практика.
  4. Осторожно, манипуляция! 12 примеров из популярных фильмов.
  5. Набор программ для взлома программ. Выбираем инструменты для реверса.

Report Page