Стеганография в стиле мистер Робот :)
Сегодня я хотел бы познакомить читателей Хабра с цифровой стеганографией. В нынешнем примере мы создадим, протестируем, проанализируем и взломаем стегосистемы. Я использую операционную систему Kali GNU/Linux, но кому интересна тема на практике, тот может повторить все то же в любом другом дистрибутиве Линукс.
Но для начала совсем немного теории.
Как сообщает википедия:
Стеганогра́фия — способ передачи или хранения информации с учётом сохранения в тайне самого факта такой передачи (хранения).
Цифровая стеганография — направление классической стеганографии, основанное на сокрытии или внедрении дополнительной информации в цифровые объекты, вызывая при этом некоторые искажения этих объектов.
Стеганографическая система (стегосистема) — объединение методов и средств, используемых для создания скрытого канала для передачи информации.
Стегоанализ или Стеганоанализ — раздел стеганографии; наука о выявлении факта передачи скрытой информации в анализируемом сообщении.
Приступим к практике
Установим необходимые утлиты:
sudo apt update; apt install stegcracker steghide stegosuite binwalk stegseek
Далее будут примеры работы с утилитами стеганографии, стегоанализа и взлома паролей стегосистемы.
Создадим папку с файлами внутри нее (см скриншот ниже, содержимое папки выводим командой ls).
Создаем стегосистему утилитой steghide (естественно задаем пароль):
steghide embed -cf 1.jpg -ef secret.txt
Перед проверкой обязательно удаляем искомый текстовик secret.txt (rm secret.txt).
Проверяем (естественно вводим пароль):
steghide extract -sf 1.jpg
Стегосистема исправна, внутри изображения лежит текстовый файл.
При создании стегоконтейнера мы задали пароль. Теперь поробуем взломать пароль нашего стегохранилища методом брутфорс атаки утилитой Stegcracker:
stegcracker 1.jpg realyBest.txt
В данном случае realyBest.txt - словарь паролей.
Резултат выполнения:
Аналогичный синтаксис и метод атаки имеет и утилита stegseek:
stegseek 1.jpg realyBest.txt
Кстати, словарик паролей лежит вот тутЪ
Вообще данный пример очень неплохо подойдет новичкам, которые знакомятся с информационной безопасностью, для того чтобы узнать что есть брутфорс (взлом пароля методом автоматизированного перебора по словарю). Но продолжим далее.
Удалим все лишнее (команда rm file1 file2 ....) и оставим один png рисунок и зип архив. Дело в том что в системах линукс при помощи команды cat возможно слияние нескольких файлов в один. При чем тот файл который в синтаксисе будет стоять первым "поглотит" и остальные файлы. Синтаксис:
cat 3.png secret.zip >> 3.png
В данном случае изображение "поглотило" зип-файл с secret.txt внутри архива, но при этом функционал архива не нарушен. Удалим зип архив командой rm.
Для анализа такого рода стегосистемы можно воспользоваться утилитой binwalk:
binwalk 3.png
На скрине ниже виден вывод, а также что внутри картинки скрыт архив.
Зная что картинка содержит внутри зип, мы можем легко его разархивировать командой:
unzip 3.png
Проверим ls и видим что в директории снова два файла и содержимое архива снова лежит в директории.
Кроме того, в системах линукс есть восхитительная утилита с графическим интерфейсом stegosuite. Пользоваться ей очень просто и приятно.
Стоит помнить, что стегосистемы иногда очень хрупкие системы. Например при передаче файла‑стегосистемы через некоторые мессенджеры, лишние метаданные файла «обрубаются» мессенджером и по итогу мы получаем просто картинку, без спрятанного в него хранилища.
Спасибо за прочтение. До новых встреч.
Комментарии (5)
kt97679
03.10.2024 18:36+3Скорее всего вместо команды
cat 3.png secret.zip >> 3.png
должна быть командаcat secret.zip >> 3.png
GAlex1980
03.10.2024 18:36+1Я везде читал и считал, что принцип стеганографии в сокрытии самого факта наличия каких-либо данных в контейнере (в данном случае - графическом файле). Т.е. выполняется побитовое смешение данных из скрываемого сообщения и контейнера (графического/звукового/т.д.) по определенному закону. И данные внутри можно выявить только аналитическими методами.
RodionGork
Забавно, спасибо - не думал что кто-то до сих пор этим развлекается :) Однако отметил бы что даже в линуксе есть возможность сделать скриншот нужного окна (или фрагмента) а не всего экрана. Возможно это поможет сделать картинки в статье более удобными для просмотра.
Shaman_RSHU
Тот же FlameShot без проблем работает в X11, но не работает в Wayland. В некоторых дистрибутивах с GNOME (у меня ArchLinux, про deb-based не знаю) при нажатии PrtSc делается скриншот всего окна. Может быть у автора этот случай.
Vilos
Что значит "...даже..."? Именно в Линукс я впервые увидел что можно делать скриншот только окна, а не всего экрана. В те далёкие времена Win95 (Win98) мог об этой фиче только мечтать...даже сам механизм был кривой: жымкаешь кнопку принтскрин, но при этом визуально ничего не происходит. Идёшь в графический редактор и там вставляешь. Некоторые, крьати, до сих пор этим алгоритмом пользуются.