Категории

Прячем данные на флешке, без помощи стороннего софта

Kiki Jo

Наблюдатель
Уровень 001
6
4
Усп. сделок
N/A
Необходимость делать бекапы – своих проектов, сид фраз и паролей – становится очевидной после первого обыска или просто вышедшего из строя компьютера. Большинство учится на своих ошибках и тут как повезёт: кто-то теряет код-базу за месяц работы, а кто-то до сих пор грызёт себе локти из-за того, что десять лет назад не сохранил сид-фразу от кошелька с несколькими биткоинами.
Вам нужно зарегистрироваться, чтобы видеть изображения.

И как только появляется эта здравая мысль: “боже, я должен делать бекапы” – если ваш бизнес не совсем белый и вы человек дальновидный, вы сразу задаётесь и такими вопросами:

1. Как сделать так, чтобы только я мог прочитать свой бекап? (шифрование)
2. Как сделать так, чтобы никто даже не знал, что у меня есть секретные данные? (стеганография или удалённое хранение)
3. Как сделать так, чтобы бекап не потерялся через 5 лет? (надёжность)

Сначала мой выбор пал на удалённый VPS с 30 Гб диска. Схема кажется простая: выучиваешь IP и пароль сервера, раз в месяц\неделю по SSHFS монтируешь в папку на свой компьютер, кидаешь в папку всё самое важное, демонтируешь папку. Получается что-то такое:​

VPS → SSHFS → Папка с бекапами​

Правда, тогда файлы на сервере хранятся не зашифрованными. Добавим ecryptfs:​

VPS → SSHFS → ecrypts → Папка с бекапами​

Плюсы этой схемы очевидные:

1. Данные уже спрятаны. IP сервера и ключи доступа у тебя в голове, нет никаких “физических” доказательств того, что у тебя есть какие-то секретные данные, пароли к которым нужно выпытывать раскалённым утюгом.
2. Лёгкая доступность данных. Даже если тебя ограбят до нитки, ближайший компьютер с линуксом и интернетом + данные для входа у тебя в голове возвращают полный доступ ко всей нужной информации.

А вот минусы:

1. За сервер нужно платить, больше размер бекапов – больше плата
2. Недолговечность. Хранить данные на удалённом сервере значит доверять хостинг провайдеру. Кто может обещать, что твой хостинг не закроется через пять лет?
3. Низкая скорость передачи данных. Помимо скорости самого интернет-соединения (если верить моим экспериментам с сетью) сама эта связка sshfs → ecryptfs получается ужасно медленной. По-видимому, для VPS единственный приемлемый по скорости работы способ работы это не пытаться шифровать всю файловую систему, а вместо этого разбивать свои бекапы на отдельные зашифрованные тома и перекачивать уже их. Понятное дело, это уже чуть менее удобно.

По этим причинам я стал пользоваться физическими носителями. Но с ними уже во всю появляется проблема стеганографии. Если твою флешку найдут при обыске, она не только должна быть зашифрована: для сотрудника отдела “К” она должна выглядеть как обычная Windows флешка с фильмами, мемами и всяким мусором.

Знающие люди посоветуют hidden volume на VeraCrypt или другое готовое решение для сокрытия данных. И конечно, прятать данные на VeraCrypt лучше, чем не прятать вообще. Есть только одна проблема: наличие подобных программ на ПК уже вызовет большое подозрение и заставит майора изучать внешние носители более тщательно.

Но к нашему с вами счастью, Linux “из коробки” это швейцарский нож, хорошо владея которым можно делать потрясающие вещи без помощи стороннего программного обеспечения. Сейчас я пошагово распишу, как сделать у флешки второе (зашифрованное) дно.

1. Найди свою флешку в списке устройств. Для этого вставь её и введи:

Код:
lsblk

В консоли появится список устройств среди которых будет например:

Код:
sda 4:0 1 32G 0 disk /run/mediа...

Сравни размер устройства в списке с известным размером флешки. Можешь вытащить флешку и ввести команду ещё раз, чтобы посмотреть, какое устройство пропало из списка. Тут главное точно определить, к какому именно устройству из этого списка прицеплена флешка. Скорее Статьи на тему кибербезопасностивсего это “sda”, “sdb” или “sdc” (определи внимательно, если перепутать – можно случайно стереть весь linux). Дальше в этом руководстве будем считать, что твоя флешка это sda.

2. Это не обязательно, но я советую перетереть пустое пространство флешки, на случай, если там раньше лежало что-то важное (а ещё чтобы чуть-чуть усложнить картину дискового пространства для какого-нибудь задрота ФСБшника который будет её ковырять).

Код:
sudo dd if=/dev/random of=/dev/sda status=progress

Вот эта команда заполнит всё пространство флешки случайными байтами. На это может уйти час.

3. Теперь создадим самую обычную скучную флешку. Сделаем её максимально заурядной поместив Windows таблицу разделов и стандартный Windows раздел:​

Код:
sudo fdisk /dev/sda

На этой команде появится консольное меню где нужно ввести последовательно:

o <Enter> (создали partition table MS-DOS)
n <Enter> (создаём новый раздел)
p <Enter> (создаём главный раздел, значение по-умолчанию)
1 <Enter> (раздел номер 1, значение по-умолчанию)
2048 <Enter> (первый сектор памяти, значение по-умолчанию)
<Enter> (последний сектор, оставим значение по-умолчанию, чтобы раздел заполнил всю флешку)
w <Enter> (записать изменения)

4. Теперь отформатируй Windows раздел:

Код:
sudo mkfs.ntfs -f /dev/sda1

На появившуюся в системе флешку (не появилась – выткни и воткни обратно) положи какие-нибудь фотки, мемы и пиратские фильмы. Главное: не занимай ими слишком много места. Если флешка на 60 Гб, используй 2-3-5 из них.

5. Теперь приступим к созданию секретного раздела.

Возьмём нашу флешку, пропустим, например, первые 10 Гб её памяти (они заняты фильмами и мусором от Windows) и подключим оставшееся пустое пространство как новую флешку:

Код:
sudo losetup --offset 10Gb -f /dev/sda1 --show

После этой команды появится новое устройство (его имя выведется в консоли), например, /dev/loop20. По сути это новая “флешка”, которая незаметно живёт в пустом пространстве устройства 10 гигабайт от начала памяти (см. рисунок).

Важно, что есть разница между 10Gb и 10G. Запомни, какую именно размерность использовал, и используй её при следующем монтировании.

6. Осталось настроить шифрование:

Код:
sudo cryptsetup luksFormat /dev/loop20

cryptsetup попросит ввести “YES” и затем придумать новый пароль. Лучше придумать надёжный пароль и запомнить его, не записывая. Бекап может понадобиться на компьютере, на котором нет менеджера паролей.

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

Код:
sudo cryptsetup open /dev/loop20 backup
(расшифровали)

Код:
sudo mkfs.exfat /dev/mapper/backup
(отформатировали) (на любой вопрос просто нажимай <Enter>, форматирование может занять время)

Код:
sudo mkdir -p /mnt/backup
(создали папку на компьютере, куда будет подключена секретная флешка, можно выбрать любую пустую директорию)

Код:
sudo mount /dev/mapper/backup /mnt/backup
(подключили флешку)

Код:
sudo mkdir -p /mnt/backup/mybackup
(создали папку на флешке)

Код:
sudo chown -R $USER:$USER /mnt/backup/mybackup
(разрешили пользователю доступ к папке)

Готово. Теперь у вас в папке /mnt/backup подключена флешка. Всё что вы положите в эту папку окажется на секретном зашифрованном разделе USB.

Чтобы закончить работу и безопасно извлечь устройство (если просто выдернуть – данные могут повредиться) выполни:
Код:
sudo umount /dev/mapper/backup
sudo cryptsetup close backup
sudo losetup -d /dev/loop20

8. Когда флешка уже создана и настроена, чтобы воспользоваться ей в следующий раз, достаточно выполнить только эти шаги из инструкции выше:

8.1 Подключить флешку и найти её в списке устройств, например, /dev/sdb

8.2
Код:
sudo losetup –offset 10Gb -f /dev/sdb --show
(подключаем неразмеченное пространство; не забудь найти нужный loop, например, loop19)

8.3
Код:
sudo cryptsetup open /dev/loop19 backup
(расшифровываем)

8.4
Код:
sudo mkdir -p /mnt/backup
(подготовили директорию в которой появится содержимое флешки)

8.5
Код:
sudo mount /dev/mapper/backup /mnt/backup
(подключили флешку)


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

Примечания:

1. Этот способ лучше всего подходит для бекапа большого количества относительно небольших файлов (1-100-200 Мб). При копировании 2-3-5 Гб я видел заметное проседание скорости записи, возможно, как-то связано с медленной работой самой флешки + loop (сдвиг в памяти) + шифрование. На форумах предлагают разные способы увеличения скорости, например, модифицировать команду дешифровки таким образом:

Код:
sudo cryptsetup open /dev/loop20 backup --use-directio --perf-no_read_workqueue --perf-no_write_workqueue

2. Копировать файлы лучше всего через rsync чтобы видеть прогресс и иметь больше контроля над процессом:

Код:
rsync passwords.kdbx /mnt/backup/mybackup --progress

3. Вместо 10Gb можно выбрать любой разумный сдвиг в памяти (если вся флешка 16Гб, можно сделать сдвиг 6, например). Вместо «backup» - любое другое имя. Будет лучше, если ты придумаешь свои параметры. Если это руководство станет слишком популярным, сотрудники спецслужб будут искать скрытый раздел в первую очередь с параметрами и именами, перечисленными здесь.

4. Из-за относительно медленной скорости записи при копировании большого объёма данных может переполниться i\o буфер и linux начинает вести себя странно. Самый простой способ избежать такого поведения — добавить особый флаг в команду монтирования устройства:

Код:
sudo mount -o sync /dev/mapper/backup /mnt/backup

С этим флагом linux будет записывать каждый участок данных прямо на устройство, не наращивая очередь записи. На первый взгляд скорость записи может просесть, но такой способ работы может оказаться более стабильным.

4. Статья написана без ChatGPT и описывает мой собственный опыт сокрытия данных. Замечания \ идеи \ преложения пишите сюда или в личку. О чём ещё по теме инфобеза вам было бы интересно почитать? - тоже пишите.​
 

Вложения

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

Конвертер валют