
Anvil é uma ferramenta de avaliação de superfície de ataque com foco em runtime para aplicações thick client do Windows, desenvolvida para testadores de penetração e pesquisadores de segurança que conduzem avaliações direcionadas de segurança de aplicações. Ela cobre múltiplas classes de ataque em uma única execução direcionada.
Avaliação de escalada de privilégios e superfície de ataque baseada em tempo de execução para thick clients Windows.
Anvil é uma ferramenta de avaliação de escalada de privilégios e superfície de ataque baseada em tempo de execução para aplicações thick client Windows. Em vez de escanear o sistema de arquivos às cegas, ela combina captura Procmon com Windows AccessCheck para reportar apenas caminhos que são observados em tempo de execução e confirmados como graváveis por usuários padrão, eliminando o ruído de falsos positivos que aflige ferramentas genéricas de enumeração.
A maioria das ferramentas de avaliação de thick clients cobre uma ou duas classes de ataque. Anvil foi construída em torno da ideia de que observação em tempo de execução, explorabilidade verificada por ACL e uma ampla superfície de ataque devem coexistir na mesma execução direcionada — com um pipeline de portões que mantém a saída acionável.
Cada candidato passa por quatro portões sequenciais antes de ser reportado.
Portões Rígidos
AccessCheck do WindowsPortões Lógicos de Módulo
Supersede, OverwriteIf, etc.) + proteção de gravabilidade entre usuários.sys excluídosResolução do Alvo
A ferramenta resolve o alvo para um caminho executável (a partir de --exe, --service ou --pid). Se for um serviço, ServiceInfo é recuperado com PID e estado atuais.
Captura Procmon
O nível de integridade do processo é lido imediatamente após a inicialização (enquanto o processo está ativo) e armazenado no contexto.
Análise Filtrada por Módulo
Cada módulo solicita uma exportação CSV filtrada do Procmon usando seu próprio filtro .pmc (armazenado em filters/). O CSV é analisado e uma série de portões são aplicados:
Correlação Estática
O módulo com realiza uma passagem estática adicional — escaneando o binário alvo em busca de CLSIDs embutidos e verificando cada um contra HKLM e HKCU — para revelar oportunidades de sequestro não exercitadas durante a janela de captura. Estes são sinalizados com uma tag [Correlação Estática].
Relatório
Os achados são exibidos no terminal (com código de cores) e opcionalmente escritos em JSON ou em um relatório HTML independente.
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