TulaCTF Forensics
КапибарыForensics
Успели решить три задачи на форензику. Названия "Бетховен отдыхает"? "Скачал файтинг, а он...", и "Сапер 2". Чем отличается совсем не помним. Попробуем рассказать по порядку.
В во всех задачах в условии задачи был дан дамп памяти.
🌟 Любой анализ дампов памяти начинается с использования volatility. Хороший список команд можно посмотреть на ресурсе (для подключения нужен VPN). Нам пригодилось следующие:
- windows.envars - получить список переменных окружения.
- windows.cmdline - получить список процессов с аргументами

- windows.pslist - получить полный список процессов
- windows.dumpfiles --pid ХХХ - сдампить память процесса и возможные файлы
- windows.filescan.FileScan - поиск файлов в памяти
Первая задача (Бетховен)
Для решения первой задачи использовался файл Slider & Magnit - Morze.wav. Его можно было найти, выполнив команду windows.cmdline, а затем команду
py vol.py -o 2q -f TulaCTF.raw windows.dumpfiles --pid 4656
Получаем кучу файлов. Делаем поиском wav и видим файлы

они разного размера, но оба начинаются с RIFF и имеют одинаковый "смысл"

только у одного еще мусор в конце 😁
Слушаем морзянку мы с помощью сайта и получили в итоге флаг

Но почему то кажется, что здесь была ошибка и подходил именно флаг
Флаг: TULACTFMORZECODECANDOMUSIC
Вторая задача (Сапер)
Во второй задаче надо было обратить внимание на процесс 4812, где был ярлык LookaAtMe.bat, чтобы его отдампить нужно найти файл в памяти, для этого мы запускаем команду:
py vol.py -f TulaCTF.raw windows.filescan
получаем большой список (его нельзя перенаправить в файл, скрипт вываливается с ошибкой, но на экран - вполне), где поиском находим:
0xc90da9ab3950 \ProgramData\Microsoft\Windows\Start Menu\Programs\Игры\LookAtMe.bat 216
затем командой:
py vol.py -o 2ц -f TulaCTF.raw windows.dumpfiles --virtaddr 0xc90da9ab3950
дампим его в файл
@echo off set /p "flag=KR2WYYKDKRDHWMK7ONCWKX3ZKUYF6QTVKRPVS5JQL5SDA3SUPU======" pause >nul
здесь на интересует переменная флаг, очень похоже на использование какой-то из BASE16/32/64 кодировки. Так как только большие буквы начинаем пробовать с BASE32 и получаем флаг.
Флаг: TulaCTF{1_sEe_yU0_BuT_Yu0_d0nT}
Третья задача (Скачал файтинг, а он)
Искать надо файл в "загрузках", лучше всего для этой цели подходит:
0xc90da9ab3ae0 \Users\user\Downloads\Mortal_Kombat.bat
Запускаем команду для его получения
py vol.py -o 2ц -f TulaCTF.raw windows.dumpfiles --virtaddr 0xc90da9ab3ae0
и получаем вот такой результат

Первая часть это программа - шутка, а вторая - ? Можно запустить программу binwalk, но сигнатура 7z - явный признак того, что перед нами архив .7z ✍️
он зашифрован, оттуда при помощи 7z2hashcat64 утилиты вытащили hash пароля, затем скормили его ресурсу и получили пароль: password.
Распаковав архив, получили флаг:
Флаг: TulaCTF{настоящий_classic_я_бы_даже_сказал_pleasantly}
Четвертая задача (Mr.Robot)
Условие:

Решение:
В отличие от предыдущих была построена на виртуальной машине. Нужно было подключить ее к VirtualBox, загрузить систему, там виден ярлык VeraCrypt и то, что 5 Гб жесткого диска неразмечены (RAW), так как других больших файлов в системе нет, можно сделать вывод о том, что криптоконтейнер - это диск D.

Для перебора паролей нужно использовать hashcat и первые 512 байт криптоконтейнера. Для этого мы его дампим в файл vera.hash
dd if=/dev/sdb3 of=vera.hash bs=512 count=1
и запускаем
hashcat -d 1 -m 13751 vera.hash -a 3 -1 ?u?l?d sT?1?1xAp3 -o hackedhashes.pot
где d - устройство для перебора, исходя из аппаратной конфигурации,
m - это режим работы hashcat, и вот здесь есть особенности

у нас именно Full-Disk Encryption SHA256+AES256, а режим XTS512. Вот как то так VeraCrypt использует AES, что длина ключа удваивается и надо считать 512. А вот почему Legacy, а не 29451? пока тоже просто запомним.
Получаем пароль sTg6xAp3
После открытия диска мы видим 10 файлов rockyou (это словари паролей)

на что надо было обратить внимание. На даты изменения файлов. У 6 и 10 она другая. То есть файлы 1-5 и 7-9 одинаковые, а 6 немного другой. И нужно было их сравнить побайтово. Найдется новый пароль autoline_rulit.
А затем надо было догадаться, что что-то не так

и вот здесь надо было сообразить про NTFS стримы (потоки). Автор таска привел в пример классную статью о них и посоветовал использовать NTFS Stream Explorer. Открываем файл в нем и видим два "лишних" потока: 1. с фоткой котика на 420 Мб и 2. зашифрованным архивом.
Пароль к архиву как мы нашли раньше autoline_rulit.
И получаем флаг:
TulaCTF{Mr_R0boT_5enDs_gReet1ngS_t0_fan5_wHo_l1ke_To_hiDe_f1lEs}
Из интересного еще:
привлекает внимание фейковый файл Not a flag, открытый в блокноте:
TulaCTF{THEREISNOFLAGHAHA}