Оригинал взят у
jmp3r в Анализ задачи по стеганографии Suspicious AVI (Hackit CTF) 450 pts
В данной статье представляю свое решение на далеко не самое простое задание в категории Stego с HackIT CTF, как обычно подходы и инструменты могут быть разные, результат в данном случае один - получение флага.
Сразу скажу что я не ярый поклонник ctf, но коллеги поставили перед фактом, мол мы тебя в команду записали, может решишь чего :) В общем решил глянуть, решил пару заданий по реверсу и крипте и тут увидел интересное и наиболее весомое по баллам задание по стеганографии, собственно далее о нем и пойдет речь.

Имеем видео по ссылке
Качаем, смотрим свойства через MediaInfo:
Format/Info : Audio Video Interleave
Copyright : http://countersite.org/images/hehehe.avi
Video
Format : PNG
Format/Info : Portable Network Graphic
Codec ID/Info : Motion PNG
Avi'шка представляет из себя последовательность PNG-кадров, и конечно же не может не броситься в глаза ссылка в свойстве Copyright.
Качаем файл по ней и понимаем, что скорее всего это оригинальное видео, размер файла отличается, поскольку в PNG используется сжатие DEFLATE (zlib).
Логично будет разложить видео покадрово и сравнить. Для этих целей я использовал ExeInfo и Total Commander.
Несмотря на то, что ExeInfo - это анализатор для исполняемых файлов, очень часто он является очень полезным и для других задач.
Перетаскиваем файл avi.avi в программу и выбираем рип PNG файлов:

253 - file/s found
Аналогичную операцию проводим с файлом hehehe.avi, avi'шки лучше по разным папкам разложить, так как ExeInfo складывает риппнутые файлы рядом с анализируемым файлом.
Итак имеем две папки с png-файлами, сравним их инструментом синхронизации папок Total Commander'а:

В таком виде, как они есть сравнивать их бессмысленно (выше писал о сжатии в PNG), поэтому "разожмем" их например в bmp.
Я воспользовался онлайн-сервисом по первой ссылке в гугле по запросу png to bmp.
Итак, имеем 2 bmp-файла одинакового размера:

Видно разницу в 1 бит, что явно указывает на LSB, ну что ж, попробуем извлечь скрытую информацию, для этого нам понадобится инструмент StegSolve.
Откроем первый BMP, затем Analyse->Image Combiner и выберем второе BMP-изображение, переключимся на XOR и сохраним полученное изображение solved.bmp
В этой же утилите откроем новый полученный BMP-файл и из меню выберем пункт Data Extract, выставим 0-ые биты R,G,B, жмем Preview и видим следующее:

Да-да, кто сюда уже дошел, то должен быть в теме, что это смахивает на код на BrainFuck'e. Сохраним полученные данные через Save Bin, откроем текстовым редактором:
+[----->+++<]>+.[-->+<]>.--[->++<]>-.++++++++.-[-->+<]>----.[--->++<]>--.+++++++.-[->+++++<]>.[--->+<]>----.[-->+<]>-----.---.-[----->+<]>--.---------------.++++++++++++++.+++.[-->+<]>----.----[->++<]>-.+++++++++.[-->+<]>.--[->++<]>-.++++++++.-[-->+<]>--.-[->++<]>.>--[-->+++<]>.
Теперь перейдем по первой ссылке гугла brainfuck online и выполним данный код, нажав Execute:
Заветный флаг :
h4ck1t{br41n_mp4_h4ck3d}
и +450 баллов команде.
И конечно: Gr33tz to my friends (you know who you are)
Сразу скажу что я не ярый поклонник ctf, но коллеги поставили перед фактом, мол мы тебя в команду записали, может решишь чего :) В общем решил глянуть, решил пару заданий по реверсу и крипте и тут увидел интересное и наиболее весомое по баллам задание по стеганографии, собственно далее о нем и пойдет речь.

Имеем видео по ссылке
Качаем, смотрим свойства через MediaInfo:
Format/Info : Audio Video Interleave
Copyright : http://countersite.org/images/hehehe.avi
Video
Format : PNG
Format/Info : Portable Network Graphic
Codec ID/Info : Motion PNG
Avi'шка представляет из себя последовательность PNG-кадров, и конечно же не может не броситься в глаза ссылка в свойстве Copyright.
Качаем файл по ней и понимаем, что скорее всего это оригинальное видео, размер файла отличается, поскольку в PNG используется сжатие DEFLATE (zlib).
Логично будет разложить видео покадрово и сравнить. Для этих целей я использовал ExeInfo и Total Commander.
Несмотря на то, что ExeInfo - это анализатор для исполняемых файлов, очень часто он является очень полезным и для других задач.
Перетаскиваем файл avi.avi в программу и выбираем рип PNG файлов:

253 - file/s found
Аналогичную операцию проводим с файлом hehehe.avi, avi'шки лучше по разным папкам разложить, так как ExeInfo складывает риппнутые файлы рядом с анализируемым файлом.
Итак имеем две папки с png-файлами, сравним их инструментом синхронизации папок Total Commander'а:

В таком виде, как они есть сравнивать их бессмысленно (выше писал о сжатии в PNG), поэтому "разожмем" их например в bmp.
Я воспользовался онлайн-сервисом по первой ссылке в гугле по запросу png to bmp.
Итак, имеем 2 bmp-файла одинакового размера:

Видно разницу в 1 бит, что явно указывает на LSB, ну что ж, попробуем извлечь скрытую информацию, для этого нам понадобится инструмент StegSolve.
Откроем первый BMP, затем Analyse->Image Combiner и выберем второе BMP-изображение, переключимся на XOR и сохраним полученное изображение solved.bmp

В этой же утилите откроем новый полученный BMP-файл и из меню выберем пункт Data Extract, выставим 0-ые биты R,G,B, жмем Preview и видим следующее:

Да-да, кто сюда уже дошел, то должен быть в теме, что это смахивает на код на BrainFuck'e. Сохраним полученные данные через Save Bin, откроем текстовым редактором:
+[----->+++<]>+.[-->+<]>.--[->++<]>-.++++++++.-[-->+<]>----.[--->++<]>--.+++++++.-[->+++++<]>.[--->+<]>----.[-->+<]>-----.---.-[----->+<]>--.---------------.++++++++++++++.+++.[-->+<]>----.----[->++<]>-.+++++++++.[-->+<]>.--[->++<]>-.++++++++.-[-->+<]>--.-[->++<]>.>--[-->+++<]>.
Теперь перейдем по первой ссылке гугла brainfuck online и выполним данный код, нажав Execute:

h4ck1t{br41n_mp4_h4ck3d}
и +450 баллов команде.
И конечно: Gr33tz to my friends (you know who you are)