
Anvil ist ein Runtime-first-Tool zur Bewertung der Angriffsfläche für Windows-Thick-Client-Anwendungen, entwickelt für Penetrationstester und Sicherheitsforscher, die gezielte Sicherheitsbewertungen von Anwendungen durchführen. Es deckt mehrere Angriffsklassen in einem einzigen gezielten Durchlauf ab.
Runtime-first Privilege Escalation und Angriffsflächenbewertung für Windows Thick Clients.
Anvil ist ein Runtime-first-Tool für Privilege Escalation und Angriffsflächenbewertung für Windows Thick-Client-Anwendungen. Anstatt blind das Dateisystem zu scannen, kombiniert es Procmon-Capture mit Windows AccessCheck, um nur solche Pfade zu melden, die zur Laufzeit beobachtet und von Standardbenutzern als beschreibbar bestätigt wurden, wodurch das False-Positive-Rauschen beseitigt wird, das generische Aufzählungswerkzeuge plagen.
Die meisten Thick-Client-Bewertungswerkzeuge decken ein oder zwei Angriffsklassen ab. Anvil wurde mit der Idee entwickelt, dass Laufzeitbeobachtung, ACL-verifizierte Ausnutzbarkeit und eine breite Angriffsfläche in einem einzigen gezielten Durchlauf zusammenkommen sollten – mit einer gesteuerten Pipeline, die die Ausgabe handlungsrelevant hält.
Jeder Kandidat durchläuft vier aufeinanderfolgende Prüfungen, bevor er gemeldet wird.
Harte Prüfungen
AccessCheck-APIModul-Logikprüfungen
Supersede, OverwriteIf, etc.) + benutzerübergreifende Beschreibbarkeitswächter.sys-Pfade ausgeschlossenZielauflösung
Das Tool löst das Ziel in einen ausführbaren Pfad auf (über --exe, --service oder --pid). Handelt es sich um einen Dienst, werden ServiceInfo mit aktueller PID und Zustand abgerufen.
Procmon-Capture
Die Prozessintegritätsstufe wird sofort nach dem Start (während der Prozess noch lebt) ausgelesen und im Kontext gespeichert.
Modulspezifische gefilterte Analyse
Jedes Modul fordert einen gefilterten CSV-Export von Procmon unter Verwendung seines eigenen .pmc-Filters (gespeichert in filters/) an. Die CSV wird geparst, und eine Reihe von Prüfungen wird angewendet:
Statische Korrelation
Das com-Modul führt eine zusätzliche statische Analyse durch – es scannt die Ziel-Binärdatei auf eingebettete CLSIDs und überprüft jede gegen HKLM und HKCU – um Hijacking-Möglichkeiten aufzudecken, die während des Capture-Zeitfensters nicht genutzt wurden. Diese werden mit einem [Statische Korrelation]-Tag markiert.
Berichterstattung
Die Ergebnisse werden im Terminal ausgegeben (farbcodiert) und optional als JSON oder als eigenständiger HTML-Bericht geschrieben.
flowchart TB
%% Phase 1
subgraph Phase1["Phase 1: Ziel- & Laufzeit-Erkennung"]
TR["Ziel-Auflöser<br/>--exe / --service / --pid"] -->
IL["Integritätsprüfung<br/>Medium-IL-Start / Dienst-Neustart"] -->
PM["Procmon-Engine<br/>Laufzeit-FS / Reg / Pipe-Ereignisse"]
end
%% Phase 2
subgraph Phase2["Phase 2: Signal-Reduktion"]
direction LR
PF["Modulspezifische PMC-Filter<br/>Nur hochwertige Spuren"] -->
CSV["Gefilterter CSV-Export"]
end
%% Phase 3
subgraph Phase3["Phase 3: Ausnutzbarkeits-Prüfungen"]
HG["Harte Prüfungen<br/>Hohe Integrität<br/>Kein geschützter Pfad"] -->
ACL["AccessChk-Validierung<br/>Beschreibbar durch Standardbenutzer"] -->
LG["Logik-Prüfungen<br/>Modulspezifische Regeln"]
end
%% Phase 4
subgraph Phase4["Phase 4: Korrelation"]
RT["Laufzeit-Ergebnisse"]
ST["Statische Korrelation<br/>COM: CLSID-Binärscan / Registry"]
end
%% Phase 5
subgraph Phase5["Phase 5: Berichterstattung"]
SV["Schweregrad-Engine<br/>P1–P5"] --> OUT["Konsolenausgabe"]
SV --> JSON["JSON-Bericht"]
SV --> HTML["HTML-Bericht"]
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