|
|
||
Несколько человек спросили меня какие инструменты я использую для CTF. Мой выбор зависит от специфики CTF. Существуют всевозможные CTF для разных аспектов ИБ, Forensics, Steganography, Boot2Root, Reversing, расследование инцидентов, Web, Crypto и также те, что сочетают в себе несколько разновидностей. Для каждого направления необходим свой набор инструментов для получения флага.
Эта статья представляет собой обзор высокого уровня и поможет понять с чего начать или как продвинуться если вы застряли с заданием.
Стеганография - это практика сокрытия информации в каком-либо тексте или данных. Существует много типов файлов и методов скрытия файлов/данных. Я кратко расскажу о нескольких инструментах, которые использую.
Есть несколько вещей, которые я делаю в ходе решения задач:
- Проверяю расширение файла. Я тратил много времени на то, чтобы в конечном итоге понять, что я имею дело с файлом другого расширения.
- Использую стандартные инструменты прежде чем исследовать глубже. Проверьте файл с помощью file, strings, exiftool, pngcheck и откройте в шестнадцатеричном редакторе и только потом переходите в инструменты, предназначенные для определенного типа файла.
- Используемые инструменты зависят от типа файла. Google: 'filetype ctf tools'.
Есть десятки инструментов, которые я не смогу охватить в этом руководстве. Это руководство должно дать вам довольно хорошую отправную точку для поиска дополнительных инструментов и методов стеганографии.
Получение флага во многом зависит от вашей настойчивости и умения пользоваться поисковиком.
Инструменты, упомянутые выше, не являются единственными инструментами. Но для начала этого должно хватить.
File:
#file <filename>
Расширение файла было изменено
Другой 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 покажет чанки данных, которые не являются критическими для рендеринга.
Сломанный PNG
Приведенный пример является отличным показателем заранее поврежденного изображения, которое необходимо исправить для получения флага. В ошибке содержится достаточно информации для вас, чтобы найти в поисковике способ исправить ее.
exiftool: вывод метаданных для медифайлов
stegsolv: отличный инструмент с GUI, позволяющий анализировать изображение и находить цветовые слои, карты и скрытые строки.
Онлайн инструменты:
Универсальные декодеры
Эти два инструмента подходят для декодирования строк и unicode.
Я писал, что речь будет в основном об инструментах, но сложно разобраться без реальных примеров.
Данный файл записан как 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, мы получаем флаг.
|
Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души"
М.Николаев "Вторжение на Землю"