Содержание статьи
- Что делаем?
- Задание
- Определяем профиль
- Собираем информацию о машине
- Процессы
- История браузера
- Список команд в консоли
- Что еще можно сделать?
- Перепроверяем информацию
- Дампим память
- Хранение картинок в памяти
- Краткие выводы
Задачи на форензику (криминалистику) в соревнованиях Capture The Flag делятся на несколько больших типов: анализ оперативной памяти, жесткого диска и исследование дампов трафика. В этой статье мы разберем задачу Remote Password Manager на тему анализа памяти из соревнования JustCTF 2021, а заодно рассмотрим малоизвестную, но очень полезную фишку GIMP.
Что делаем?
Анализ оперативной памяти часто используется, когда у нас был физический доступ к машине и получилось снять слепок оперативной памяти. По нему можно определить, какие приложения запускались во время этого сеанса, потому что, пока человек не выключил или не перезагрузил компьютер, в оперативной памяти хранится интересующая нас информация (например, данные процессов).
info
Еще интересные данные можно найти в файлах подкачки (pagefile.sys) и гибернации (hiberfil.sys). Для *nix-based-систем стоит поискать в swap-разделе.
Для анализа дампов памяти существует несколько приложений, которые на слуху у всех, кто хоть раз имел дело с задачами на форензику: это Volatility, Memoryze, и Autopsy (в связке с Volatility). Есть, конечно, и другие, но подробно мы на них останавливаться не будем.
Крупные решения вроде Autopsy хороши тем, что позволяют произвести комплексный анализ всего слепка одной кнопкой, однако цена за это — большое время работы программы. На соревнованиях обычно необходимо делать задачу максимально быстро, поэтому использовать мы будем Volatility. В «Хакере» уже были статьи, связанные с этим чудесным инструментом, так что, если ты новичок в теме, стоит сначала ознакомиться с ними.
Задание
Вот как выглядело условие задачи. Нам дан непосредственно слепок оперативной памяти и его хеш MD5 для проверки.
Приблизительный перевод:
У меня есть самый безопасный менеджер паролей. Даже если ты украдешь мой ноутбук, ты не сможешь узнать мои секреты.
Подсказка: Удаленный не значит обязательно браузер
Закачаем наш образ на машину, где будем проводить анализ (у меня это Kali):
$ wget https://ams3.digitaloceanspaces.com/justctf/69f7647d-2f7a-4604-b9f6-553c6bb447ee/challenge.tar.gz
Распакуем:
$ tar -xzvf challenge.tar.gz
И сразу же проверим, что с ним все в порядке:
$ md5sum pub/challenge.vmem
Если хеш не сошелся с исходным хешем — придется еще раз скачать архив.
О важности актуальных версий
Ни для кого не секрет, что с каждым обновлением любого инструмента разработчики стараются добавить новые возможности и убрать старые недокументированные возможности баги. В операционных системах семейства Linux есть встроенные менеджеры пакетов, которые существенно упрощают установку и обновление программ. Из‑за этого большинство людей первым делом лезет в свой пакетный менеджер, чтобы установить оттуда программу.
Однако здесь есть небольшие шероховатости: разработчик может забыть (или забить?) обновить пакет в репозитории. В таких случаях приходится искать исходники и собирать актуальную версию самостоятельно.
Те, кто знаком с Volatility, знают о его особенностях. Например, что он использует так называемые профили, которые позволяют правильно распарсить весь слепок оперативной памяти, и энтузиасты постоянно обновляют их список. Разумеется, профиль можно сделать и самостоятельно, но явно проще воспользоваться готовыми. Во время соревнования я столкнулся с тем, что давно не обновлял свой Volatility и нужных профилей для решения задачи у меня не оказалось.
Чтобы с тобой не случилось подобного, перед началом решения задачи я настоятельно рекомендую обновить (или установить) Volatility с гитхаба проекта.
Определяем профиль
Первым делом нам необходимо определить версию операционной системы, с которой снимали слепок. Это можно сделать командой imageinfo:
$ vol.py -f challenge.vmem imageinfo

Нам нужно обратить внимание на строчку с Suggested Profile(s). Именно здесь нам говорят, что предполагаемый профиль слепка оперативной памяти — Win10x64_18362. Теперь мы должны указывать аргумент --profile Win10x64_18362 для последующих команд.
www
Полная документация по Volatility есть в Wiki по инструменту на GitHub.
Собираем информацию о машине
Какую информацию имеет смысл добыть вначале? Обычно это:
- процессы;
- история браузера;
- история запущенных команд в консоли.
Этих трех пунктов хватает для определения вектора дальнейшей разведки.
Процессы
Чтобы найти процессы, нам достаточно использовать команду pstree. Есть еще pslist, но первая команда удобнее, потому что показывает процессы в виде дерева — так намного проще понять, на какие из них стоит обратить внимание.
$ vol.py -f challenge.vmem --profile Win10x64_18362 pstree

Ничего бросающегося в глаза, вроде pswd_manager.exe или not_a_virus.exe, не видно, поэтому продолжим нашу разведку.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
1 год9300 р. |
1 месяц870 р. |
Я уже участник «Xakep.ru»