5.7 KiB
HumanAI
Мир захлестнул ИИ‑контент: генерации, копии, шум. Но где‑то в памяти системы есть то, что создано человеком. Найди это https://git.caplag.ru/kernel/HumanAI
Решение
Всего есть два варианта решения:
- Плановое решение: восстановление контейнера VeraCrypt + извлечение криптоключей из RAM.
- Незапланированное решение: извлечение флага через кэш миниатюр Windows.
Сразу же загружаем дамп памяти в Volatility, выполняем базовые команды (pslist, filescan и т. д.).
Что интересного узнаём:
- VeraCrypt был запущен;
- контейнер
human.vcбыл смонтирован.
Потихоньку-помаленьку
Проверяем следы присутствия VeraCrypt:
vol -q -f .\memdump.mem windows.modules | Select-String -Pattern "veracrypt|truecrypt" -CaseSensitive:$false
vol -q -f .\memdump.mem windows.pslist | Select-String -Pattern "veracrypt" -CaseSensitive:$false
vol -q -f .\memdump.mem windows.symlinkscan | Select-String -Pattern "VeraCrypt|Volume" -CaseSensitive:$false
Из этого мы сможем вытянуть достаточно важную информацию. Как минимум мы получим модуль драйвера VeraCrypt, его процесс и букву смонтированного тома вида K: -> \Device\VeraCryptVolume....
Плановый вариант решения
Начнем с того, что восстановим human.vc из памяти. Ищем файловый объект:
vol -q -f .\memdump.mem -r csv windows.filescan | Select-String -Pattern "human\\.vc|\\.vc$" -CaseSensitive:$false
Дальше выгружаем файл через dumpfiles:
mkdir out\dumpfiles -Force | Out-Null
vol -q -f .\memdump.mem -o out\dumpfiles windows.dumpfiles --filter "human\\.vc$|human\\.vc" --ignore-case
Обычно нужный файл находится среди объектов SharedCacheMap (часто с расширением .vacb). П
Пароль может не сохраниться в памяти, поэтому надёжнее идти через мастер-ключи. Одна из рабочих точек входа - Big Pool:
vol -q -f .\memdump.mem -r csv windows.bigpools | Select-String -Pattern "VCMM|TC|VC" -CaseSensitive:$false
Дальше нужно производим выгрузку памяти по подходящим pool tag и осуществляема поиск пар ключей AES-256 для XTS (key_a, key_b). Основными признаками, что мы вышли на верные ключи:
- находятся две разные 32-байтовые последовательности;
- они стабильно повторяются в связанных дампах.
Проверяем, что ключи действительно дешифруют начало файловой системы. Для VeraCrypt данные начнутся после оффсета на 0x20000. После AES-XTS-дешифровки сектора структура должна быть похожа на boot sector файловой системы и сигнатуры и поля должны выглядеть осмысленно, а не как случайный шум.
После подтверждения ключей и оффсета:
- расшифровываем контейнер;
- парсим файловую систему (в этом таске была FAT32);
- извлекаем файлы и находим флаг.
Неожиданный вариант решения
Эта ветка сработала без полного дешифрования контейнера. В дампе можно искать строки, связанные с путём к файлу флага:
strings -n 6 .\memdump.mem | Select-String -Pattern "flag|thumbcache|\\\.png|\\\.jpg|K:\\" -CaseSensitive:$false
Таким образом в памяти встретится путь к flag.png на смонтированном томе VeraCrypt. Теперь проверим, есть ли исходный файл в файловых объектах:
vol -q -f .\memdump.mem windows.filescan | Select-String -Pattern "flag\\.png|flag" -CaseSensitive:$false
Напрямую файл flag.png найти не получится, но это не тупик. Приступаем к изучению следующего потенциального кандидата - кэш миниатюр Windows:
vol -q -f .\memdump.mem windows.filescan | Select-String -Pattern "thumbcache_.*\\.db|thumbcache" -CaseSensitive:$false
Выгрузим найденные объекты:
mkdir out\thumbs -Force | Out-Null
vol -q -f .\memdump.mem -o out\thumbs windows.dumpfiles --filter "thumbcache_.*\\.db|thumbcache" --ignore-case
И теперь, наконец, извлечем изображения из дампа кэша. Как вариант, можно воспользоваться carving:
cd .\out\thumbs
Get-ChildItem -File | ForEach-Object { binwalk -e -M $_.FullName }
После этого просматриваем извлечённые изображения. Флаг окажется в одной из миниатюр.