Содержание статьи
Что делаем?
Анализ оперативной памяти часто используется, когда у нас был физический доступ к машине и получилось снять слепок оперативной памяти. По нему можно определить, какие приложения запускались во время этого сеанса, потому что, пока человек не выключил или не перезагрузил компьютер, в оперативной памяти хранится интересующая нас информация (например, данные процессов).
info
Еще интересные данные можно найти в файлах подкачки (pagefile.
) и гибернации (hiberfil.
). Для *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
для последующих команд.
www
Полная документация по Volatility есть в Wiki по инструменту на GitHub.
Собираем информацию о машине
Какую информацию имеет смысл добыть вначале? Обычно это:
- процессы;
- история браузера;
- история запущенных команд в консоли.
Этих трех пунктов хватает для определения вектора дальнейшей разведки.
Процессы
Чтобы найти процессы, нам достаточно использовать команду pstree
. Есть еще pslist
, но первая команда удобнее, потому что показывает процессы в виде дерева — так намного проще понять, на какие из них стоит обратить внимание.
$ vol.py -f challenge.vmem --profile Win10x64_18362 pstree
Ничего бросающегося в глаза, вроде pswd_manager.
или not_a_virus.
, не видно, поэтому продолжим нашу разведку.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»