Init. commit
This commit is contained in:
90
HumanAI-Forensic-Hard/README.md
Normal file
90
HumanAI-Forensic-Hard/README.md
Normal file
@@ -0,0 +1,90 @@
|
||||
# HumanAI
|
||||
|
||||
Мир захлестнул ИИ‑контент: генерации, копии, шум. Но где‑то в памяти системы есть то, что создано человеком. Найди это https://git.caplag.ru/kernel/HumanAI
|
||||
|
||||
## Решение
|
||||
|
||||
Всего есть два варианта решения:
|
||||
1. Плановое решение: восстановление контейнера VeraCrypt + извлечение криптоключей из RAM.
|
||||
2. Незапланированное решение: извлечение флага через кэш миниатюр Windows.
|
||||
|
||||
Сразу же загружаем дамп памяти в **Volatility**, выполняем базовые команды (`pslist`, `filescan` и т. д.).
|
||||
Что интересного узнаём:
|
||||
- VeraCrypt был запущен;
|
||||
- контейнер `human.vc` был смонтирован.
|
||||
|
||||
### Потихоньку-помаленьку
|
||||
|
||||
Проверяем следы присутствия **VeraCrypt**:
|
||||
```powershell
|
||||
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` из памяти. Ищем файловый объект:
|
||||
```powershell
|
||||
vol -q -f .\memdump.mem -r csv windows.filescan | Select-String -Pattern "human\\.vc|\\.vc$" -CaseSensitive:$false
|
||||
```
|
||||
|
||||
Дальше выгружаем файл через `dumpfiles`:
|
||||
```powershell
|
||||
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*:
|
||||
```powershell
|
||||
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);
|
||||
- извлекаем файлы и находим флаг.
|
||||
|
||||
### Неожиданный вариант решения
|
||||
|
||||
Эта ветка сработала без полного дешифрования контейнера. В дампе можно искать строки, связанные с путём к файлу флага:
|
||||
|
||||
```powershell
|
||||
strings -n 6 .\memdump.mem | Select-String -Pattern "flag|thumbcache|\\\.png|\\\.jpg|K:\\" -CaseSensitive:$false
|
||||
```
|
||||
|
||||
Таким образом в памяти встретится путь к `flag.png` на смонтированном томе VeraCrypt. Теперь проверим, есть ли исходный файл в файловых объектах:
|
||||
|
||||
```powershell
|
||||
vol -q -f .\memdump.mem windows.filescan | Select-String -Pattern "flag\\.png|flag" -CaseSensitive:$false
|
||||
```
|
||||
|
||||
Напрямую файл `flag.png` найти не получится, но это не тупик. Приступаем к изучению следующего потенциального кандидата - кэш миниатюр Windows:
|
||||
|
||||
```powershell
|
||||
vol -q -f .\memdump.mem windows.filescan | Select-String -Pattern "thumbcache_.*\\.db|thumbcache" -CaseSensitive:$false
|
||||
```
|
||||
|
||||
Выгрузим найденные объекты:
|
||||
```powershell
|
||||
mkdir out\thumbs -Force | Out-Null
|
||||
vol -q -f .\memdump.mem -o out\thumbs windows.dumpfiles --filter "thumbcache_.*\\.db|thumbcache" --ignore-case
|
||||
```
|
||||
|
||||
И теперь, наконец, извлечем изображения из дампа кэша. Как вариант, можно воспользоваться `carving`:
|
||||
|
||||
```powershell
|
||||
cd .\out\thumbs
|
||||
Get-ChildItem -File | ForEach-Object { binwalk -e -M $_.FullName }
|
||||
```
|
||||
|
||||
После этого просматриваем извлечённые изображения. Флаг окажется в одной из миниатюр.
|
||||
Reference in New Issue
Block a user