Стеганография в стиле мистер Робот :)

Сегодня я хотел бы познакомить читателей Хабра с цифровой стеганографией. В нынешнем примере мы создадим, протестируем, проанализируем и взломаем стегосистемы. Я использую операционную систему 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)


  1. RodionGork
    03.10.2024 18:36
    +5

    Забавно, спасибо - не думал что кто-то до сих пор этим развлекается :) Однако отметил бы что даже в линуксе есть возможность сделать скриншот нужного окна (или фрагмента) а не всего экрана. Возможно это поможет сделать картинки в статье более удобными для просмотра.


    1. Shaman_RSHU
      03.10.2024 18:36

      Тот же FlameShot без проблем работает в X11, но не работает в Wayland. В некоторых дистрибутивах с GNOME (у меня ArchLinux, про deb-based не знаю) при нажатии PrtSc делается скриншот всего окна. Может быть у автора этот случай.


    1. Vilos
      03.10.2024 18:36
      +1

      Что значит "...даже..."? Именно в Линукс я впервые увидел что можно делать скриншот только окна, а не всего экрана. В те далёкие времена Win95 (Win98) мог об этой фиче только мечтать...даже сам механизм был кривой: жымкаешь кнопку принтскрин, но при этом визуально ничего не происходит. Идёшь в графический редактор и там вставляешь. Некоторые, крьати, до сих пор этим алгоритмом пользуются.


  1. kt97679
    03.10.2024 18:36
    +3

    Скорее всего вместо команды cat 3.png secret.zip >> 3.png должна быть команда cat secret.zip >> 3.png


  1. GAlex1980
    03.10.2024 18:36
    +1

    Я везде читал и считал, что принцип стеганографии в сокрытии самого факта наличия каких-либо данных в контейнере (в данном случае - графическом файле). Т.е. выполняется побитовое смешение данных из скрываемого сообщения и контейнера (графического/звукового/т.д.) по определенному закону. И данные внутри можно выявить только аналитическими методами.