Стеганография
Изучаю стеганографию с нуля на практике. Здесь разборы решённых задач: не только ответ, но и как к нему прийти, что было подозрительным, какие гипотезы не сработали и почему.
Как я думаю над задачей
аномалия→гипотеза→проверка инструментом→извлечение→интерпретация
- Ищи аномалию носителя. Встраивание всегда оставляет след: лишние байты, странные значения, неверная CRC, «грязные» цвета.
- Название задачи — подсказка. Иногда это прямо имя инструмента.
- Береги данные. Копируй из исходного файла: браузер «нормализует» пробелы и Unicode.
- «Ничего не нашёл» — тоже результат. Он сужает круг мест, где могут лежать данные.
- Стандартный инструмент видит только стандартное. Проверяй сырую структуру:
xxd,strings,pdf-parser. - Почти сработало — проверь точность, а не меняй гипотезу.
- Числа 32–126 пробуй как ASCII. Задержки кадров, цвета, номера: в половине задач финальный ход был именно такой.
Разборы
[!] про ответы. У задач с Root-Me ответы не публикую: правила платформы просят этого не делать. У остальных флаг спрятан под спойлер.
Лаборатория
В процессе
- WAV «Never Gonna Give You Up» — судя по всему, DeepSound: нужен запуск под Windows.
- PPM-файл 70 × 50 — заголовок разобран, два цвета; дальше сверить размер (13 + 70 × 50 × 3 = 10 513 байт) и рассмотреть картинку в увеличении.
- «Музыкальная картина» — JPEG 19000 × 12274,
stegseekне хватает памяти; нужен swap.
Набор инструментов (Kali)
sudo apt install exiftool binwalk steghide stegseek pngcheck imagemagick gimp audacity sox poppler-utils
sudo gem install zsteg # LSB-анализ PNG/BMP
# Stegsolve: java -jar stegsolve.jar # битовые плоскости и Data Extract
# pdf-parser.py — от Didier Stevens; CyberChef — в браузере
| Шаг | Команда |
|---|---|
| тип файла | file f — расширению не верить |
| метаданные | exiftool f |
| вложенные файлы и хвосты | binwalk f, xxd f | tail |
| строки | strings -n 6 f |
| структура PNG | pngcheck -vf f.png |
| LSB | zsteg -a f.png, Stegsolve |
| steghide (JPEG/BMP/WAV) | stegseek --seed f.jpg, stegseek f.jpg rockyou.txt |