Files
Geroi-Kodeksa/HumanAI-Forensic-Hard
2026-03-02 21:44:22 +03:00
..
2026-03-02 21:44:22 +03:00
2026-03-02 21:44:22 +03:00

HumanAI

Мир захлестнул ИИ‑контент: генерации, копии, шум. Но где‑то в памяти системы есть то, что создано человеком. Найди это https://git.caplag.ru/kernel/HumanAI

Решение

Всего есть два варианта решения:

  1. Плановое решение: восстановление контейнера VeraCrypt + извлечение криптоключей из RAM.
  2. Незапланированное решение: извлечение флага через кэш миниатюр 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 }

После этого просматриваем извлечённые изображения. Флаг окажется в одной из миниатюр.