Getting started
pip install -e .
# Works offline (ATT&CK KB + ART index ship with the package)
gauntlet profiles # real ATT&CK groups per profile
gauntlet plan --profile ransomware --top 15 # CTI-prioritized emulation plan
gauntlet plan --profile APT29,G0007 --top 10 # custom profile from groups
gauntlet predict --observed T1566.001,T1059.001 # likely next techniques
gauntlet manifest --profile ransomware --top 10 --out out/plan.json # DRY-RUN ART manifest
# Real data (~117 MB, pinned + SHA-256 verified; add --only ...,mordor-compound,splunk,published for ~65 MB more)
export GAUNTLET_DATA_DIR=/path/outside/repo # default ./data (git-ignored)
python scripts/download_data.py
gauntlet replay --profile ransomware --top 15 --ruleset sigma-core \
--navigator out/layer.json --json out/baseline.json # coverage on real recordings
gauntlet replay --profile ransomware --top 15 --ruleset sigma-core \
--baseline out/baseline.json # exit 2 on a coverage regression
gauntlet bench --out out # OTRF benchmark
Exact commands, expected outputs and runtimes for every published number are in Reproduce.
Example: replay --profile ransomware --top 15 --ruleset sigma-core (abridged; captured in benchmark run 37094883465, full output in results/replay-ransomware-top15.txt):
Replaying 33 recordings for 15 prioritized techniques (profile 'ransomware', 18 groups) through sigma-core ...
technique prio tactic result detections
[~] T1059 0.944 execution partial PCRE.NET Package Image Load; PCRE.NET Package Temp Files
[-] T1059.001 0.556 execution missed -
[+] T1003 0.549 credential-access detected DPAPI Domain Backup Key Extraction
[+] T1021 0.535 lateral-movement detected CobaltStrike Service Installations - Security; ...
[-] T1547.001 0.494 persistence missed -
[~] T1112 0.481 persistence partial NetNTLM Downgrade Attack; NetNTLM Downgrade Attack - Registry
[+] T1543.003 0.473 persistence detected Suspicious Service Path Modification
[~] T1047 0.432 execution partial T1047 Wmiprvse Wbemcomn DLL Hijack; Wmiprvse Wbemcomn DLL Hijack
...
Technique coverage: 56% threat-weighted: 61% off-target rules/recording: 1.5
The 56% is 10 of the 18 techniques labelled on the 33 chosen recordings (Wilson [33.7, 75.4]), which include 3 co-labelled techniques beyond the 15 prioritized ones; over the 15 prioritized techniques alone it is 9 of 15 = 60% [35.7, 80.2]. For T1547.001 the full SigmaHQ package does detect both recordings, but only with medium-level rules that the core filter drops.
Load out/layer.json or results/navigator-*.json in ATT&CK Navigator to view coverage as a heatmap: green = detected, amber = partial, red = missed.
Docker
The container image ghcr.io/rakshit-737/gauntlet-detection-coverage:1.1.2 is built from the v1.1.2 tag. Avoid the older 1.0.0 image: it resolves rules inside site-packages (sim reports 0%).
See Reproduce for runtimes and expected outputs, and Evaluation for what the numbers mean.