CTF. Курс молодого бойца. Начальные задания категории Forensic.
https://t.me/hacker_sanctuaryДанный пост будет носить практический характер. В нём мы рассмотрим задание начального уровня в категории Forensic. Рассматриваемое задание встречается на CTF'ах среднего и высокого уровня.
Задания будут взяты с известного сайта с различными задачами (CTF и не только) - https://www.root-me.org/
Будем решать задачи из категории: Forensic
Прямая ссылка: https://www.root-me.org/en/Challenges/Forensic/
Пример.
Разберём первое задание из данной категории. Его название "Command & Control - level 2". Прямая ссылка на задание: https://www.root-me.org/en/Challenges/Forensic/Command-Control-level-2
Как видно из условия, нам необходимо проанализировать дамп памяти и найти hostname машины, с которой был снят дамп.
Скачиваем дамп с помощью нажатия на кнопку "Start the challenge" или копируем ссылка, чтобы скачать сразу на Linux с помощью команды wget. Для анализа дампа нам понадобится Kali Linux, так как на нём уже установлен необходимый нам инструмент - volatility. Вы можете использовать любую ОС для решения, но вам понадобится volatility framework.
Пара слов про volatility.
Volatility - открытый фреймворк для анализа дампов памяти. Активно используется для расследования кибрепреступлений и обнаружения малвари. На CTF'ах часто бывают задания по форензике, связанные с использованием volatility.
Начинаем анализ.
Анализ начинается с определения ОС, с которой был снят дамп. Используем команду imageinfo.
Команда: volatility -f ch2.dmp imageinfo
Теперь в каждой последующей команде необходимо будет указывать параметр --profile, который определяет тип ОС, с которой был снят дамп.
Для того, чтобы найти имя компьютера нужно понять, где оно хранится. Для этого используем гугл.
На 3 ссылке мы можем найти следующий ответ.
Теперь нам нужно достать значение из этого раздела реестра.
Для работы с реестром Windows в volatility предусмотрен ряд команд.
Используем команду hivelist, чтобы получить список всех веток реестра.
Команда: volatility -f ch2.dmp --profile=Win7SP0x86 hivelist
Нас интересует ветка "\REGISTRY\MACHINE\SYSTEM", сдампим её и поместим в отдельный текстовый файл.
Команда: volatility -f ch2.dmp --profile=Win7SP0x86 hivedump -o 0x8b21c008 > hi_dump.txt
Теперь с помощью утилиты grep попробуем найти строку "ComputerName" в сдампленной ветке.
Команда: grep "ComputerName" hi_dump.txt
Мы получили полный путь до места где хранится имя компьютера, теперь с помощью keyprint мы можем посмотреть ключ, который хранится по данному пути.
Команда: volatility -f ch2.dmp --profile=Win7SP0x86 printkey -K "ControlSet001\Control\ComputerName\ActiveComputerName"
Значение: WIN-ETSA91RKCFP и будет нашим верным паролем для задания.
Заключение.
Мы разобрались в том, как использовать volatility для поиска информации в дампах памяти, а также для как извлекать с помощью него значения из реестра.
В следующих постах будет ещё больше разборов базовых заданий на CTF'ах, следите за обновлениями.