Как найти флаг в картинке ctf
Перейти к содержимому

Как найти флаг в картинке ctf

  • автор:

Практическая стеганография. Скрытие информации в изображениях PNG

На хакерских конкурсах и играх CTF (Capture The Flag) иногда попадаются задачки на стеганографию: вам дают картинку, в которой нужно найти скрытое сообщение. Наверное, самый простой способ спрятать текст в картинке PNG — прописать его в одном из цветовых каналов или в альфа-канале (канал прозрачности). Для выявления подобных «закладок» есть специальные инструменты, такие как stegsolve, pngcheck и stegdetect, иногда конкурсантам приходится вручную повозиться с фильтрами в GIMP или Photoshop.

Однако прогресс не стоит на месте — и в последнее время всё чаще используются другие способы скрытия данных, например, PNG-наполнение. Посмотрим, как это делается.

Начнём с небольшого теоретического введения по «невидимым» частям PNG.

Альфа-канал

На экране компьютера при отображении картинки цвета создаются сочетанием красного, зелёного и синего компонентов. Эти три цветовые плоскости называются каналами. Обычно они записываются как RGB.

Кроме этих трёх каналов, в PNG может быть ещё четвёртый канал, называемый альфа (обозначается буквой А) для определения уровня прозрачности. Полученное изображение RGBA определяет видимые цвета и степень прозрачности.

В большинстве графических форматов альфа-канал является значением от 0% до 100% (или от 0 до 255 в байтах). Значение 0% (чёрный) обозначает место на изображении, где должна быть полная прозрачность — тут значение RGB игнорируется, и полностью виден фон под картинкой. Значение альфа-канала 100% (белый) означает, что каналы RGB полностью непрозрачны. Промежуточные значения определяют, насколько нужно смешать фон со значением RGB-пикселя.

Альфа-градиент в PNG

Значения альфа-градиента обычно используются для наложения изображения на другое изображение или на веб-страницу. Альфа-градиенты есть в PNG, WebP, ICO, ICN и других растровых форматах. Формат GIF поддерживает только логическое значение (пиксель либо прозрачен, либо нет).

Альфа-канал — только один из вариантов для размещения скрытого текста. Переходим к PNG-наполнению (padding) для прямой записи данных в бинарный файл.

PNG-наполнение по столбцам

Формат PNG достаточно прост. Каждый файл начинается с восьми стандартных байт подписи, вот её десятичные значения: 137 80 78 71 13 10 26 10 . Первый байт выбран за пределами ASCII, чтобы никакой редактор случайно не принял изображение за текстовый файл. Следующие три байта соответствуют буквам P, N, G. Затем разрыв строки DOS (13 10), маркер DOS окончания файла (26), чтобы программа type не выдавала весь бинарный мусор, и маркер Unix новой строки.

После заголовка начинаются блоки данных (chunks) со стандартной структурой. Сначала идёт блок IHDR с указанием ширины и высоты изображения, цветового пространства, количества бит на пиксель, методом сжатия, методом фильтрации и указанием наличия/отсутствия чересстрочного кодирования. Для ширины и высоты выделено по четыре байта, для остальных параметров — по одному байту.

Затем следует опциональный блок tEXt с текстовыми метаданными, например, с названием программы, которая сгенерировала данный файл PNG. В текстовые блоки можно записывать текстовую информацию в открытом виде.

За IHDR и tEXt следуют блоки IDAT со сжатыми значениями RGB или RGBA для растровых пикселей. При рендеринге PNG обрабатывается IHDR, выделяется буфер в памяти для изображения, данные извлекаются из сжатого формата и попиксельно записываются в буфер. Файл PNG завершается блоком IEND.

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

Обычно изображения PNG содержат 8 или 16 бит информации на каждый канал RGB или RGBA, то есть выходит от трёх до восьми байт на пиксель. В таком формате все байты заняты полезной информацией о цвете и прозрачности, так что в конце каждой строки графического изображения у нас нет места для записи произвольных данных.

Но для задач стеганографии нужно знать, что PNG поддерживает и меньшую глубину цвета: 1 бит (2 цвета), 2 бита (4 цвета) и 4 бита (16 цветов). В такой ситуации получается, что в одном байте хранится информация о нескольких пикселях. Вот здесь и появляется теоретическая возможность для «горизонтального» наполнения PNG посторонними данными. Если ширина картинки в пикселях не кратна восьми, то в последнем байте строки остаётся неиспользуемые биты, которые все вместе формируют целый неиспользуемый «столбец пикселей».

В случае 1-битного изображения в конце каждой строки может остаться до 7 свободных бит, которые не будут обработаны парсером. В случае 2-битного изображения в последнем байте остаётся до 3 свободных бит. Онлайновый инструмент FotoForensics находит такие неиспользуемые «столбцы пикселей» в изображениях PNG.

Впрочем, PNG-картинки с малой глубиной цвета встречаются очень редко, поэтому и данный метод стеганографии можно считать экзотикой. Если вам попалось PNG-изображение с 2, 4 или 16 цветами, один этот факт уже вызывает подозрение и может инициировать проверку PNG-наполнения по столбцам.

Совсем другое дело — PNG-наполнение за границами картинки. Это более простой метод стеганографии, который позволяет спрятать в изображении гораздо больше информации.

PNG-наполнение за границами картинки

PNG-наполнение за границами картинки (post-pixel padding) часто используется в различных играх, головоломках и конкурсах, не только хакерских. Вот как работает этот метод:

    Берём изображение PNG (с любой глубиной цвета).


Вставляем секретную информацию в нижнюю часть картинки.

  • Сохраняем PNG, не используя чересстрочное кодирование.
  • Открываем файл в hex-редакторе.
  • Находим блок IHDR. Он располагается в начале файла после восьми обязательных байт подписи и помечен как IHDR.


    Первые четыре байта после метки IHDR — это ширина файла, следующие четыре байта — высота. Уменьшаем это значение c 00 00 01 9D (413 пикселей), например, до 00 00 01 7E (382 пикселя).


    Не забудьте пересчитать четыре байта CRC (в формате PNG вычисляется значение CRC для каждого блока данных, в том числе для IHDR), которые записаны в конце блока. Если вы не можете посчитать CRC самостоятельно, посмотрите это значение в любом PNG-файле с аналогичными значениями блока IHDR.

    Обратите внимание, что секретные данные остались в нижней части изображения. Размер файла не изменился: 335 906 байт. Просто парсер теперь не обрабатывает эти пиксели — и нижняя часть картинки не демонстрируется на экране.

    Несложно догадаться, что в «секретной» части картинки можно спрятать не только текстовую надпись, но и произвольные данные. Например, мы можем записать туда запароленный архив RAR. Картинка с секретным посланием может быть опубликована на Habrastorage или любом другом общедоступном хостинге. Послание получит только тот человек, с которым вы заранее договорились о способе передачи информации и согласовали пароль. Таким способом вредоносные программы могут передавать полезную нагрузку через Хабр и другие общедоступные хостинги.

    На правах рекламы

    VDS для размещения сайтов — это про наши эпичные! Все серверы «из коробки» защищены от DDoS-атак, автоматическая установка удобной панели управления VestaCP. Лучше один раз попробовать 😉

    Работа с изображениями

    В этой статье мы поговорим о способе определения метода сокрытия информации в изображениях.

    Общие проверки для BMP/PNG/JMP и других

    1

    Получение exif файлов
    Первое что обычно я делаю, если не знаю с чего начать — получаю exif файла. Пример:
    Дана картинка:

    1. Переходим на сайт http://regex.info/exif.cgi
    2. Отсылаем картинку.
    3. Замечаем текст Youarethebesthackerihaveeverseen!1337 — это и есть флаг к заданию!

    2

    Получение GEO-тегов

    3

    Аналогичное с EXIF решение, но отсылается файлик на сайт http://www.geoimgr.com/
    В итоге получаем координаты:

    Обычно данные действия требуются в заданиях на форенсику, например популярное задание по фотографии с телефона найти город, где находится воришка.

    Архив

    4

    Изображение может оказаться архивом. Чаще всего это заметно, если картинка весит больше, чем доолжна весить при таких размерах.
    Пример:
    Дано изображение:

    1. Переименовать оканчание в .rar/.zip/.7z или в любой другой тип архивов (перебор).
    2. Попробовать распаковать.
    3. При оканчании .rar данный файл разархивируется. Получаем файл flag.txt
    4. Открываем txt файл и получаем флаг «BESTFLAGIHAVEEVERSEEN!»
    5. Profit!

    Все признаки по которым можно это заподозрить/убедиться:

    • Большой вес изображения при данном разрешении
    • В hexedit увидеть заголовки двух склеенных файлов — изображения и архива
    • Перебор оканчаний с последующим разархивированием

    PNG/BMP изображения

    Нам дано изображение. Попробуем по некоторым факторам определить, как нам решить этот таск.

    5

    Монотонное изображение

    Если вам дали монотонное изображение, то чаще всего в ней находятся водяные знаки.

    Водяные знаки
    Чтобы узнать, есть ли на ней водяные знаки, есть несколько вариантов

    6

    Painter
    Самый простой вариант — открыть изображение в Painter (или любом другом редакторе изображений).

    Далее заливкой тыкнуть каким-нибудь контрастным цветом. В данном случае лучше всего белым.

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

    Другое
    Есть еще утилиты, помогающие в поиске водяных знаков, такая как StegSolve. Их мы рассмотрим в соответствующей теме.

    Обыкновенное изображение

    7

    Нам дано обыкновенное ничем не выделяющееся изображение.

    Попиксельное вычитание из оригинала
    Тут нам следует найти оригинал изображения.

    Поиск оригинала изображения
    Для этого есть несколько способов.
    Сретства для поиска изображений:

    • https://images.google.com/
    • https://yandex.ru/images/

    8

    Воспользуемся google поиском:

    Находим в картинках изображение такого же размера и скачиваем его.
    Далее нам остается с помощью какой-либо библиотеки написать программу,которая пройдется по двум изображениям и выделит отличающиеся пиксели.
    Лично я сделал со StegSolve, речь о котором пойдет в соседнем разделе.

    Разноцветные пиксели

    9

    Пиксели двух цветов
    Если у вас предоставлено изображение с пикселями двух цветов, то первое что попробуем сделать — это перевести пиксели в байты.
    Приведу пример с прошедших соревнований Break In CTF 2016 — таск You Can(t) See Me.
    Нам дана картинка color.png:

    1. Пишем программу на Python+PIL/Pygame, которая проходит по строкам и создает свою строку f, в которой заменяет черный пиксель на 0 и красный пиксель на 1. Стоит заметить что при переходе на новую строку пикселей во время считывания, мы добавляем пробел в нашу строку f. В итоге получаем строку из 7 разных повторяющихся цифр.
    2. Идем на сайт https://www.branah.com/ascii-converter и вбиваем нашу строку в поле «Binary» и тыкаем на «Convert».
    3. Видим в поле «ASCII» текст «3xXKkFstTUpsG2IFDirE6xDrcAF8DSx4iWxd5f9IQ9T205izN8lS2MQUlsF11gT4TFXHHlLHVHprNTtrh6lURfdUW7Lpuzgu1VKzwb1bg1oq6Ae3GnykkLZZsnze3HVLxHlfCYtzyrcV2Oxp0Gb0Z2ELphR4Oxo7TyvHCuWKWlN8t8KIfHysZK7jBNPu6wRVEUPIwVra.»
    4. Флаг найден!

    Pic stego

    В этой статье мы поговорим о способе определения метода сокрытия информации в изображениях.

    Общие проверки для BMP/PNG/JMP и других

    Получение exif файлов

    Первое что обычно я делаю, если не знаю с чего начать — получаю exif файла. Пример:

    EXIF.jpg

    Дана картинка:

    1. Переходим на сайт http://regex.info/exif.cgi 2. Отсылаем картинку. 3. Замечаем текст Youarethebesthackerihaveeverseen!1337 - это и есть флаг к заданию!

    Getexif.png

    Получение GEO-тегов

    Аналогичное с EXIF решение, но отсылается файлик на сайт http://www.geoimgr.com/

    В итоге получаем координаты:

    Geotags.png

    Обычно данные действия требуются в заданиях на форенсику, например популярное задание по фотографии с телефона найти город, где находится воришка.

    Приписанный в конец файла текст

    Для определения воспользуемся текстовым редактором или hex редактором.

    Пример строки в конце файла:

    TEXT IN THE END

    Архив

    Изображение может оказаться архивом. Чаще всего это заметно, если картинка весит больше, чем доолжна весить при таких размерах.

    RARImage.jpg

    Дано изображение:

    1. Переименовать оканчание в .rar/.zip/.7z или в любой другой тип архивов (перебор). 2. Попробовать распаковать. 3. При оканчании .rar данный файл разархивируется. Получаем файл flag.txt 4. Открываем txt файл и получаем флаг "BESTFLAGIHAVEEVERSEEN!" 5. Profit!

    Все признаки по которым можно это заподозрить/убедиться:

    • Большой вес изображения при данном разрешении
    • В hexedit увидеть заголовки двух склеенных файлов — изображения и архива
    • Перебор оканчаний с последующим разархивированием

    PNG/BMP изображения

    Нам дано изображение. Попробуем по некоторым факторам определить, как нам решить этот таск.

    Монотонное изображение

    WaterStego.png

    Если вам дали монотонное изображение, то чаще всего в ней находятся водяные знаки.

    Водяные знаки

    Чтобы узнать, есть ли на ней водяные знаки, есть несколько вариантов

    Painter

    Самый простой вариант — открыть изображение в Painter (или любом другом редакторе изображений).

    Решение с Painter

    Далее заливкой тыкнуть каким-нибудь контрастным цветом. В данном случае лучше всего белым.

    WaterSolved.png

    Информация об изображении

    В некоторых программах-просмотрах картинок есть статистика по цветам/пикселям.

    Таким образом мы можем узнать, что картинка не монотонна и на ней присутствуют пиксели разных цветов.

    На этом этапе суть в том, чтобы определить следующий этап:) Тут может быть как морзянка, так и бинарный код (1001010), о чем пойдет в соответствующей последующей главе.

    Другое

    Есть еще утилиты, помогающие в поиске водяных знаков, такая как StegSolve. Их мы рассмотрим в соответствующей теме.

    Обыкновенное изображение

    StegoXORimage.png

    Нам дано обыкновенное ничем не выделяющееся изображение.

    Попиксельное вычитание из оригинала

    Тут нам следует найти оригинал изображения.

    Поиск оригинала изображения

    Для этого есть несколько способов.

    Сретства для поиска изображений:

    https://images.google.com/ https://yandex.ru/images/ 

    Воспользуемся google поиском:

    SearchStegoOriginal.png

    Находим в картинках изображение такого же размера и скачиваем его.

    Далее нам остается с помощью какой-либо библиотеки написать программу,которая пройдется по двум изображениям и выделит отличающиеся пиксели.

    Лично я сделал со StegSolve, речь о котором пойдет в конце страницы.

    Рассмотрим случаи исхода попиксельного вычитания.

    Равномерно распределенные пиксели
    Hallucinate

    Если при XOR оригинала и исходного изображений вы видите ярко выражены равномерно распределенные измененные пиксели, значит используется утилита Hallucinate.

    JHide

    Если при XOR оригинала и исходного изображений вы видите еле виднеющиеся пиксели синего цвета, то используется утилита JHide.

    OpenPuff

    Отличается от JHide только тем, что задействует большее количество байт.

    Чередующиеся пиксели двух изображений

    Чтобы это определить, нам требуется воспользоваться программой StegSolve, о которой будет сказано в отдельном пункте.

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

    Anubis

    Если в файле присутствуют строки limiter1, limiter2, inserted length begins, то используется стеганографическая утилита Anubis

    DeEgger Embedder

    Если в файле используется hex-строка

    24 23 26 29 2A 40 26 28 23 5E 2A 00 D1 8B 87 8B FF

    то используется утилита DeEgger Embedder

    Вдобавок присутствует файл .sig

    Если у вас есть файл .sig, то используется утилита OpenStego.

    Разноцветные пиксели

    Пиксели двух цветов

    Если у вас предоставлено изображение с пикселями двух цветов, то первое что попробуем сделать — это перевести пиксели в байты.

    Приведу пример с прошедших соревнований Break In CTF 2016 — таск You Can(t) See Me.

    Нам дана картинка color.png:

    Последовательность действий: 1. Пишем программу на Python+PIL/Pygame, которая проходит по строкам и создает свою строку f, в которой заменяет черный пиксель на 0 и красный пиксель на 1. Стоит заметить что при переходе на новую строку пикселей во время считывания, мы добавляем пробел в нашу строку f. В итоге получаем строку из 7 разных повторяющихся цифр. 2. Идем на сайт https://www.branah.com/ascii-converter и вбиваем нашу строку в поле "Binary" и тыкаем на "Convert". Видим в поле "ASCII" текст "3xXKkFstTUpsG2IFDirE6xDrcAF8DSx4iWxd5f9IQ9T205izN8lS2MQUlsF11gT4TFXHHlLHVHprNTtrh6lURfdUW7Lpuzgu1VKzwb1bg1oq6Ae3GnykkLZZsnze3HVLxHlfCYtzyrcV2Oxp0Gb0Z2ELphR4Oxo7TyvHCuWKWlN8t8KIfHysZK7jBNPu6wRVEUPIwVra." 4. Флаг найден!
    Пиксели восьми разных цветов

    В случае с 8 пикселями разных цветов сразу же вспоминается Brainloller (http://esolangs.org/wiki/Brainloller).

    Может быть не только brainloller в чистом виде — например сделать замену пикселям.

    Пример изображения brainloller:

    Brainloller.png

    1. Скачиваем интерпретатор по ссылке - https://github.com/hhhonzik/python-brainfuck 2. Запускаем: python3 brainx.py -l Brainloller.png 3. Видим HelloWorld. Profit!
    Множество разных цветов
    ASCII->RGB

    Если у вас параметры цветов колеблются между 50 и 150 (включая 32) — вероятнее всего каждый из параметров цвета (red, green и blue) был заменен ASCII-кодами символов.

    Many colors.png

    1. Пишем программу, которая проходится по всем пикселям 2. Переводим все параметры пикселей Red, Green и Blue в ASCII символы с такими же номерами. 3. Обьединяем все символы в строку

    Важно! В некоторых CTF символы пикселей обьединяются не по строкам, а по столбцам!

    PIET

    Так же эта картинка может являться программой на языке PIET.

    Пример изображения (NeoQuest 2015):

    Piet.jpg

    Обрезанное изображение

    Если перед вами изображение, которое вероятнее всего было обрезано, как например это (таск с training.hackerdom.ru):

    Keepcalm.png

    То значит кто то принудительно изменил размер изображения.

    Единственный способ, которым можно восстановить изображение, это подбирать изначальные размеры.

    Чаще всего изменяется именно высота (иначе могут быть повреждения изображения).

    Поэтому начнем подбирать высоту изображения.

    Для этого откроем его в программе SynalyzeIt (или в hexinator) и включим парсинг содержимого:

    SynalyzeIt PNG.png

    И меняем значение высоты (height) в правой колонке.

    Не забываем, что нам требуется восстанавливать чексумму для корректного открытия.

    Поэтому после каждого изменения запускаем программу pngcsum (http://schaik.com/png/pngcsum.html):

    Pngcsum.png

    Лично я подбираю бинарным поиском — если у меня слишком много захвачено по высоте, то изображение не будет показано.

    В итоге был найден точный размер изображения 600×728:

    И непосредственно ответ:

    Как найти флаг в картинке ctf

    Стеганография — это практика сокрытия информации в каком-либо тексте или данных. Существует много типов файлов и методов скрытия файлов/данных. Я кратко расскажу о нескольких инструментах, которые использую. Есть несколько вещей, которые я делаю в ходе решения задач: — Проверяю расширение файла. Я тратил много времени на то, чтобы в конечном итоге понять, что я имею дело с файлом другого расширения.
    — Использую стандартные инструменты прежде чем исследовать глубже. Проверьте файл с помощью file, strings, exiftool, pngcheck и откройте в шестнадцатеричном редакторе и только потом переходите в инструменты, предназначенные для определенного типа файла.
    — Используемые инструменты зависят от типа файла. Google: ‘filetype ctf tools’. Есть десятки инструментов, которые я не смогу охватить в этом руководстве. Это руководство должно дать вам довольно хорошую отправную точку для поиска дополнительных инструментов и методов стеганографии. Получение флага во многом зависит от вашей настойчивости и умения пользоваться поисковиком.

    Инструменты

    • Strings: находит и печатает текстовые строки, встроенные во все файлы
    • Hexeditor: программа, позволяющая пользователю просматривать и редактировать исходные данные файлов на двоичном уровне
    • binwalk: это быстрый и простой в использовании инструмент для анализа, реверс инжиниринга и извлечении вложенных в файл данных
    • File: команда определяет тип файла и выводит эту информацию в удобном виде (например, «ASCII text») или тип MIME (например, «text/plain; charset=us-ascii»). Поскольку имена файлов в UNIX могут быть полностью независимы от типа файла, file может быть полезной командой для определения того как дальше работать с файлом;
    • xxd: это команда Linux, которая создает шестнадцатеричный дамп данного файла или стандартного ввода. Она также может преобразовать данные из одной системы счисления в другую. Как и uuencode и eedecode она позволяет передавать двоичные данные в представлении ASCII.
    • stegosolve: отличный инструмент GUI, который охватывает широкий спектр для анализа файлов, включая цветовые профили, планы, карты цветов, строки.
    • Sonic visualizer: отличный инструмент для поиска скрытых сообщений в аудиофайлах и для работы с такими файлами в целом.

    Инструменты, упомянутые выше, не являются единственными инструментами. Но для начала этого должно хватить.

    Примеры использования инструментов

    File:

    #file

    Расширение файла было изменено

    Другой GIF файл, который им не является

    Sonic visualizer:

    Sonic visualizer это отличный инструмент для поиска скрытых сообщений в аудио файлах.

    Пример спектограммы со скрытым сообщением.

    Помните, что не обязательно флаг будет находиться спектрограмме если это mp3 файл.

    Пример задания без скрытого сообщения

    Кадр для файла выше был скрыт между mp3 фреймами. С помощью strings удалось получить флаг в этом задании. Изображение ниже.

    Пример еще одной спектрограммы с флагом

    Hex editor: это шикарный инструмент для множества целей. Редактор показывает исходной содержание файла.

    Это текстовый файл в текстовом редакторе. Странные символы «� � � � �� » скрывают за собой какие-то данные. Многие данные теряются при копировании и вставке из одного редактора в другой.

    Тот же файл в Hex редакторе, как вы можете видеть тут отображается больше данных, чем в самом файле.

    К счастью для нас, данные тут не затронуты. Копирование данных в онлайн-декодер даст нам флаг.

    Strings: отлично подходит для вывода печатаемых строк из файла.

    # strings filename | awk 'length($0)>15' | sort -u /\ Setting the minimum length for a string can help clean out a lot of the garbage. this will only print strings with 15 or more chars. # strings -a -n 15 filename

    Strings -a сканирует файл целиком, а не только секцию с данными

    binwalk: отлично подходит для проверки вложенных файлов (или скленных в один файл)

    Binwalk -e автоматически распакует все файлы. Для примера выше ничего не нужно распаковывать.

    pngcheck: проверка на наличие каких-либо повреждений или аномальных разделов. Команда pngcheck -v покажет чанки данных, которые не являются критическими для рендеринга.

    Приведенный пример является отличным показателем заранее поврежденного изображения, которое необходимо исправить для получения флага. В ошибке содержится достаточно информации для вас, чтобы найти в поисковике способ исправить ее.

    exiftool: вывод метаданных для медифайлов

    stegsolv: отличный инструмент с GUI, позволяющий анализировать изображение и находить цветовые слои, карты и скрытые строки.

    Эти два инструмента подходят для декодирования строк и unicode.

    Примеры из реальных CTF

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

    Ложные расширения файлов

    Данный файл записан как GIF, но вывод команды file показывает, что это не так

    Вот так выглядит реальный GIF

    Можно посмотреть реальное содержание файла

    Этот файд в hex-редакторе

    Просто текстовый редактор

    Тот же файл с утилитой strings

    Я специально показываю несколько разных решений для одного задания, чтобы вы поняли. что это можно сделать разными способами.

    Скрытые файлы

    Вы можете увидеть, что это ICO файл

    Интересные строки для ICO файла

    Тот же файл в hex-редакторе

    PK может быть индикатором того, что в этом файле скрыт ZIP архив. Возможно, что PK это заголовок ZIP архива. Подробнее про сигнатуры файлов.

    Я покажу два способа решения этой проблемы. Первый способ простой, а второй сложный.

    Метод 1: использование binwalk

    Мы используем binwalk -e для извлечения любых потенциальных файлов. Это сработало и теперь у нас есть запароленный ZIP файл. Как вы можете видеть ниже.

    Метод 2: распаковка и сохранение hex

    На картинке ниже вы можете видеть, что я просто сохранил отдельно секцию, начинающуюся с 50 4b, которая является заголовком файла PK.

    Вставка и сохранение сырого hex начиная с заголовка PK

    Я сохранил файл из шестнадцатеричного редактора как test.zip

    Но ZIP оказался защищенным

    На этой картинке мы видим, что два метода извлечения файла дают одинаковые результаты.

    Попробуем раскрыть пароль при помощи fcrackzip.

    Я потратил на это намного больше времени чем хотел, установив количество минимальных символов 4. Мне казалось, что никто не станет использовать пароль менее 4 символов и был не прав. Теперь у нас есть txt файл, извлеченный из архива.

    Просто скрытые

    Давайте разберем файл несколькими инструментами, упомянутыми выше.

    Да, это просто картинка JPEG

    Тут мы видим все двоичные строки, найденные в картинке

    То же в hex-редакторе

    Открытый в notepad файл показывает аналогичные вещи

    Двоичная строка, преобразованная в ASCII, дает нам флаг.

    Скрытый в изображении

    Рассмотрим простое задание для иллюстрации. Часть изображения скрыта, поскольку это все еще активный CTF.

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

    Откроем изображение в Stegsolve и полистаем слои пока не найдем флаг.

    Красивые цвета

    Я видел такое несколько раз. Сначала это раздражало. Первое задание, которое я решил, заняло так много времени, что даже времени CTF не хватило.

    Я проделал с этим файлом то же, что и с другими: file, strings и все остальное. Даже если не получается, создатель CTF дает обычно подсказку.

    Вот предоставленная картинка

    Тот же файл, открытый в GIMP

    У нас есть файл открытый в GIMP. Если мы используем пипетку для каждого цвета, то получаем 1: 8b8b61 2: 8b8b61 3: 8B8B70 4: 8B8B6A 5: 8B8B65 6: 8B8B73, который является шестнадцатеричным представлением. Нам нужны последние две цифры каждого из значений цвета. Остается 61 61 70 6А 65 73. Преобразуя этот код в ASCII, мы получаем флаг.

    Полезные ресурсы

    • Изменение чанка IHDR для коррекции ширины или высоты изображения, чтобы показать скрытые части фотографии где может быть скрыт флаг https://www.w3.org/TR/PNG/#11IHDR
    • Сигнатуры файлов
    • Большой набор инструментов для Стеганографии https://github.com/DominicBreuker/stego-toolkit
    • Sonic Visualizer для анализа mp3 файлов
    • Zsteg — определение скрытых файлов в PNG & BMP
    • OpenStego
    • Gimp
    • ffmpeg — видео кодек
    • Комментарии: 3, последний от 01/12/2020.
    • © Copyright Автор
    • Размещен: 19/05/2019, изменен: 19/05/2019. 15k. Статистика.
    • Статья: Переводы
  • Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *