vadox
Начинающий
- Регистрация
- Сообщения
- 17
- Реакции
- 0
Сегодня рассмотрим самое противоречивое задание NeoQUEST-2020: первая его часть является рекордсменом по количеству прошедших его участников, а вторая часть покорилась лишь единицам. Что же в нем такого особенного? Разбираемся под катом!
Тебе когда-нибудь приходилось исследовать дамп оперативной памяти? А знаешь ли ты, сколько всего интересного можно оттуда извлечь? (спойлер: все, включая результаты работы запущенных скриптов, недавние фотографии, а также историю браузера).
А как насчет экзотичных SQL-инъекций? Ты загружаешь определенную картинку на сайт, а тебе выдается информация из закрытой базы данных — разве это не идеальное преступление?
В первой части статьи мы рассмотрим средства для анализа дампа оперативной памяти и научимся извлекать оттуда нужную нам информацию, а во второй части статьи наглядно покажем процесс манипуляции тегами картинки для проведения хитрой инъекции
Итак, задании предлагается скачать архив, который содержит бинарный файл размером 1 Гб с говорящим названием memdump.bin, исходя из чего можно предположить, что это дамп оперативной памяти. Для его исследования будем использовать фреймворк volatility. Volatility поддерживает различные плагины, которые упрощают поиск и извлечение из дампа различной полезной для
Судя по выводу команды imageinfo, мы имеем дело с дампом памяти Windows 7. Далее посмотрим список запущенных процессов в системе на момент снятия дампа с помощью команды pslist:
В полученном списке можно заметить несколько интересных процессов. Начнем исследование с процесса chrome.exe — в браузере всегда можно найти что-нибудь интригующее. Для volatility существуют дополнительные плагины, которые автоматизируют извлечение информации из процессов. Например, плагин chromehistory позволит нам извлечь из дампа оперативной памяти историю посещений браузера:
В истории хрома можно заметить сразу несколько интересных вещей. Во-первых, ссылка на вторую часть задания, а также поисковые запросы про метаданные в PNG изображениях, что также является подсказкой ко второй части, но к этому обратимся позже. На текущем же этапе для нас интересны запросы про промокод
Удача! Похоже, в дампе присутствует некий promo.pdf. Попробуем вытащить его, используя команду dumpfiles:
На этом этапе могут возникнут небольшие сложности из-за того, некоторые программы просмотра pdf-документов могут не распознать только что извлеченный файл (необходимо просто удалить лишние байты в конце файла). Но разве страшны нам какие-то лишние байты? В конце концов открываем документ и видим QR-код, прочитав который, мы получаем флаг от первой части задания (а заодно и промокод на получение подарочка от команды NeoQUEST — ведь мы дарим памятные призы всем прошедшим хотя бы одно задание участникам!).
Далее попробуем получить второй флаг. Вернемся к сайту, ссылку на который нашли в истории браузера. Для доступа на сайт требуется ввести промокод. Вспоминаем историю поиска в браузере и описание самого документа (USE THIS TO JOIN), из чего можно предположить, что первый флаг и является нужным нам промокодом. Вводим его в поле и попадаем на сайт, где нам предлагают загрузить картинку:
Судя по тому, как часто сайт зависал, наши участники решили опытным путем проверить загрузку всех возможных типов документов. Энное количество времени спустя понимаем, что на сайт можно загружать только изображения в формате PNG. Следующей головоломкой является сообщение «Not enough data to store this image, sorry!», возникающее при попытке загрузить какую-нибудь картинку.
Возвращаясь к истории браузера, вспоминаем про запросы вида «add metadata to png file». Путем несложных умозаключений делаем вывод, что, скорее всего, для загрузки изображения на сайт в его метаданные должны быть внесены определенные значения. Начать можно с изучения формата PNG (описание есть, например, тут). Сначала проверяем список стандартных ключевых слов для метаданных PNG изображений, например: «Author», «Description» и т.д. Используя, например, утилиту convert из набора ImageMagick, добавим метаданные тестовому изображению:
convert test.png -set 'Title' '1' -set 'Author' '2' -set 'Description' '3' -set 'Copyright' '4' -set 'Creation Time' '5' -set 'Software' '6' -set 'Disclaimer' '7' -set 'Warning' '8' -set 'Source' '9' -set 'Comment' '0' out.png
Пробуем загрузить полученное изображение на сайт и радуемся успеху:
Оказывается, что необходимыми полями метаданных являются Title, Description, Author и Copyright.
Подсказку к этому, к слову, можно отыскать и в дампе памяти: можно найти упоминание файла mr_cat.png, используя volatility.