TulaCTF Forensics

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.

А затем надо было догадаться, что что-то не так

9 файлов по 136 Мбайт не равно занятому месту на диске

и вот здесь надо было сообразить про 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}



Report Page