
Anvil — это инструмент оценки поверхности атаки для толстых клиентских приложений Windows, ориентированный в первую очередь на анализ в рантайме. Он создан для специалистов по тестированию на проникновение и исследователей безопасности, проводящих целевые оценки безопасности приложений. Инструмент охватывает несколько классов атак за один целевой запуск.
Повышение привилегий и оценка поверхности атак для толстых клиентов Windows, основанные на анализе выполнения.
Anvil — это инструмент для повышения привилегий и оценки поверхности атак для толстых клиентов Windows, основанный на анализе выполнения. Вместо слепого сканирования файловой системы он сочетает захват Procmon с Windows AccessCheck, чтобы сообщать только о тех путях, которые наблюдаются во время выполнения и подтверждены как доступные для записи стандартными пользователями, устраняя шум ложных срабатываний, свойственный универсальным инструментам перечисления.
Большинство инструментов для оценки толстых клиентов охватывают один или два класса атак. Anvil построен на идее, что наблюдение во время выполнения, проверка на эксплуатацию через ACL и широкая поверхность атак должны быть объединены в одном целевом запуске — с конвейером проверок, который делает выводы применимыми на практике.
Каждый кандидат проходит четыре последовательных проверки, прежде чем будет зафиксирован.
Жёсткие проверки
AccessCheckЛогические проверки модулей
Supersede, OverwriteIf и т.д.) + защита от записи между пользователями.sys ядраОпределение цели
Инструмент определяет путь к исполняемому файлу цели (из --exe, --service или --pid). Если это служба, извлекается ServiceInfo с текущим PID и состоянием.
Захват Procmon
Уровень целостности процесса считывается сразу после запуска (пока процесс жив) и сохраняется в контексте.
Анализ с фильтрами по модулю
Каждый модуль запрашивает отфильтрованный экспорт CSV из Procmon, используя свой собственный файл .pmc (хранится в filters/). CSV анализируется, и применяется ряд проверок:
Статическая корреляция
Модуль com выполняет дополнительный статический проход — сканирование целевого бинарного файла на наличие встроенных CLSID и проверку каждого из них против HKLM и HKCU — чтобы выявить возможности перехвата, не проявившиеся во время захвата. Они помечаются тегом [Static Correlation].
Формирование отчёта
Результаты выводятся в терминал (с цветовой кодировкой) и, при необходимости, записываются в JSON или автономный HTML-отчёт.
flowchart TB
%% Phase 1
subgraph Phase1["Phase 1: Target & Runtime Discovery"]
TR["Target Resolver<br/>--exe / --service / --pid"] -->
IL["Integrity Gate<br/>Medium-IL launch / Service restart"] -->
PM["Procmon Engine<br/>Runtime FS / Reg / Pipe events"]
end
%% Phase 2
subgraph Phase2["Phase 2: Signal Reduction"]
direction LR
PF["Per-Module PMC Filters<br/>High-signal traces only"] -->
CSV["Filtered CSV Export"]
end
%% Phase 3
subgraph Phase3["Phase 3: Exploitability Gates"]
HG["Hard Gates<br/>High-Integrity target<br/>Not protected path"] -->
ACL["AccessChk Validation<br/>Writable by standard user"] -->
LG["Logic Gates<br/>Module-specific rules"]
end
%% Phase 4
subgraph Phase4["Phase 4: Correlation"]
RT["Runtime Findings"]
ST["Static Correlation<br/>COM: CLSID binary scan / registry"]
end
%% Phase 5
subgraph Phase5["Phase 5: Reporting"]
SV["Severity Engine<br/>P1–P5"] --> OUT["Console Output"]
SV --> JSON["JSON Report"]
SV --> HTML["HTML Report"]
end
%% Cross-phase flow
PM --> PF
CSV --> HG
LG --> RT
ST -.-> RT
RT --> SV
%% Styling
classDef p1 fill:#0f2a44,stroke:#4cc9f0,color:#e6f1ff
classDef p2 fill:#2b193d,stroke:#f72585,color:#fde8f3
classDef p3 fill:#1f2d1c,stroke:#7ae582,color:#eaf7ea
classDef p4 fill:#3a1f1f,stroke:#ffb703,color:#fff3d6
classDef p5 fill:#0b2e2a,stroke:#00f5d4,color:#e6fffb
class Phase1 p1
class Phase2 p2
class Phase3 p3
class Phase4 p4
class Phase5 p5
linkStyle default stroke:#9aa4b2,stroke-width:2px