Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Задачи на форензику (криминалистику) в соревнованиях 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