Agentic Threat Hunter: offline demo

Deterministic detection first, evidence-constrained investigation second. This page was built on this machine in 1.2 s at 2026-09-28T21:11:20+00:00. It used no API key, no network and no model call. Each section links the files its numbers come from.

1. Detect

23 deterministic rules ran over 1118 synthetic events (462 process, 389 network, 267 logon, 0 control), generated with seed 1337 into this folder.

1118events
16findings
14 / 2true / false positives
12/12labelled attack stages detected
SeverityRuleFindingHostAccountATT&CK (candidate)
CRITICALATH-004Possible LSASS credential accessPC01jdoeT1003.001 (Credential Access); T1218.011 (Stealth)
CRITICALATH-005Failed logon burst followed by successful authenticationFS02svc_backupT1110.001 (Credential Access); T1078 (Persistence)
CRITICALATH-012Security product disabled or reconfiguredPC03achenT1685 (Defense Impairment)
CRITICALATH-011Windows recovery mechanisms destroyedPC03achenT1490 (Impact)
HIGHATH-001Office application spawned a script interpreterPC01jdoeT1059.001 (Execution); T1204.002 (Execution)
HIGHATH-002Encoded PowerShell command executionPC01jdoeT1027.010 (Stealth); T1059.001 (Execution); T1105 (Command and Control)
HIGHATH-003Script interpreter connected to an external hostPC01jdoeT1071.001 (Command and Control); T1105 (Command and Control)
HIGHATH-014Credential material access from a command linePC01jdoeT1003.001 (Credential Access)
HIGHATH-006Account authenticated from a host where it has no sessionFS02svc_backupT1021.002 (Lateral Movement); T1078 (Persistence)
HIGHATH-007Remote service execution (PsExec-style)FS02svc_backupT1569.002 (Execution); T1021.002 (Lateral Movement)
HIGHATH-008Bulk data staged into an archiveFS02svc_backupT1560.001 (Collection); T1074.001 (Collection)
MEDIUMATH-009Macro-enabled document opened via email clientPC01jdoeT1204.002 (Execution)
MEDIUMATH-010Sequence of discovery commands from one parent processPC01jdoeT1033 (Discovery); T1069.002 (Discovery); T1482 (Discovery)
MEDIUMATH-003Script interpreter connected to an external hostFS02svc_backupT1071.001 (Command and Control)
MEDIUMATH-003Script interpreter connected to an external hostPC07adm_sarahT1071.001 (Command and Control); T1105 (Command and Control)
LOWATH-002Encoded PowerShell command executionPC07adm_sarahT1027.010 (Stealth); T1059.001 (Execution)

Per-rule precision and recall against ground_truth.json

RuleTPFPFNPrecisionRecallNote
ATH-0011001.001.00
ATH-0021100.501.001 FP from the labelled benign look-alike
ATH-0032100.671.001 FP from the labelled benign look-alike
ATH-0041001.001.00
ATH-0051001.001.00
ATH-0061001.001.00
ATH-0071001.001.00
ATH-0081001.001.00
ATH-0091001.001.00
ATH-0101001.001.00
ATH-0111001.001.00
ATH-0121001.001.00
ATH-0141001.001.00

10 rules target telemetry this scenario does not contain (for example cloud and Kubernetes rules) and stay silent: ATH-013, ATH-015, AWS-001, AWS-002, AWS-003, AWS-004, AWS-005, AWS-006, K8S-001, K8S-002.

These are the constructed demo scenarios, scored against the labels the generator itself wrote. They show that the pipeline works and is measured. They are not a production detection rate.

Evidence: ground_truth.json · findings.json · evaluation.json

2. Correlate

Findings are joined into cases only on shared evidence: process lineage, hosts, accounts and authentication context. 14 findings formed 2 case(s); 2 stayed isolated. Tactics are listed in ATT&CK v19.2 (Enterprise, content release August 2026) kill-chain order. Each mapping must cite telemetry.

CASE-001 · CRITICAL · grouping confidence high · 12 findings · hosts FS02, PC01 · accounts jdoe, svc_backup
ExecutionPersistenceStealthCredential AccessDiscoveryLateral MovementCollectionCommand and Control
CASE-001: 12 findings correlated across 2 host(s) (FS02, PC01) and 2 account(s) (jdoe, svc_backup) over 1566s (09:12:04-09:38:10). Behaviour is consistent with 8 ATT&CK tactic(s): Execution -> Persistence -> Stealth -> Credential Access -> Discovery -> Lateral Movement -> Collection -> Command and Control. 30 of 30 links rest on structural evidence (shared events, process lineage, or host-to-host movement) rather than timing alone. Grouping confidence: high. Backed by 31 telemetry events. This is a correlation of observed behaviour and requires analyst confirmation; it does not establish that an intrusion occurred.
CASE-002 · CRITICAL · grouping confidence medium · 2 findings · hosts PC03 · accounts achen
ImpactDefense Impairment
CASE-002: 2 findings correlated across 1 host(s) (PC03) and 1 account(s) (achen) over 220s (11:12:00-11:15:40). Behaviour is consistent with 2 ATT&CK tactic(s): Impact -> Defense Impairment. 1 of 1 links rest on structural evidence (shared events, process lineage, or host-to-host movement) rather than timing alone. Grouping confidence: medium. Backed by 6 telemetry events. This is a correlation of observed behaviour and requires analyst confirmation; it does not establish that an intrusion occurred.

Evidence: cases.json

3. Investigate with verified evidence

The workflow runs telemetry → seed → investigation → report as sealed, resumable stages. Read-only tools retrieve the evidence. Each report separates FACT from INFERENCE and HYPOTHESIS. Verification rejects a cited event id that the investigation never retrieved and any unsupported typed premise. It does not prove that free prose is correct. Engine: deterministic, profile operational-v6, over the three synthetic dev scenarios.

ScenarioWhat happensExpectedVerdictCorrectReport
sample-01Remote service shell, then a credential export.
reg.exe save HKLM\SAM C:\ProgramData\sam.hiv /y
maliciousMaliciousyeshtml · md
sample-02Remote service shell, then routine maintenance.
dism.exe /Online /Cleanup-Image /ScanHealth
benignMaliciousnohtml · md
sample-03Remote service shell; the deciding child process is deliberately absent.abstainMaliciousnohtml · md
The deterministic engine gets 1 of 3 right. The rules fire the same way whether the child process is a credential export or a health scan, so triage calls 2 non-malicious case(s) malicious. Telling these apart is the job of the model arm, recorded in section 4.

All reports: investigations/index.html

4. The model's recorded runs

No model runs in this demo. These are recorded outputs of qwen3.5:9b (operational-v6) from Colab run holdout-9b-v6-ecd865890442, replayed as static pages. The rows sample-01 to sample-03 are the same synthetic scenarios as section 3. The rows h05, h07 and h14 are real Windows logs from the DEDALE dataset (CC BY 4.0). The gallery keeps the failure in view.

CaseArmDataExpectedVerdictWhat it showsReport
sample-01model (D1)syntheticmaliciousMaliciouscorrect malicious: Probed the process tree, found reg.exe saving the SAM hive, called it malicious.html · md
sample-01deterministicsyntheticmaliciousMaliciouscorrect malicious: Deterministic triage calls the same incident malicious from the detection findings.html · md
sample-02model (D1)syntheticbenignBenigncorrect benign: Found dism.exe /ScanHealth under the remote shell and cleared it as maintenance.html · md
sample-02deterministicsyntheticbenignMaliciousFALSE ACCUSATION: Deterministic triage cannot tell maintenance from credential export: it accuses.html · md
sample-03model (D1)syntheticabstainAbstaincorrect abstain: The deciding child process is deliberately missing; the model abstained and named the gap.html · md
sample-03deterministicsyntheticabstainMaliciousOVER-CALL: Deterministic triage calls it malicious although the telemetry cannot decide.html · md
h14model (D1)DEDALE (CC BY 4.0)benignBenigncorrect benign: Real Windows logs: a user opening a local PDF in Firefox, correctly cleared.html · md
h14deterministicDEDALE (CC BY 4.0)benignAbstainsafe abstain: The deterministic arm abstains, as it did on all 18 holdout cases.html · md
h07model (D1)DEDALE (CC BY 4.0)maliciousAbstainsafe abstain: APT implant (svcmon.exe): two process-tree probes, opaque child, abstained. Safe, but no answer.html · md
h07deterministicDEDALE (CC BY 4.0)maliciousAbstainsafe abstain: The deterministic arm abstains.html · md
h05model (D1)DEDALE (CC BY 4.0)maliciousBenignUNSAFE CLEAR: The failure: an APT step cleared as benign, partly because whoami.exe is signed by Microsoft.html · md
h05deterministicDEDALE (CC BY 4.0)maliciousAbstainsafe abstain: The deterministic arm abstains instead of clearing.html · md

Gallery · Attribution (DEDALE, CC BY 4.0)

5. Measured honestly

Investigative value on Windows: NOT demonstrated.

Pre-registered evaluation on 12 fresh Windows cases from DEDALE (6 malicious, 6 benign), run holdout-9b-v6-ecd865890442, qwen3.5:9b on operational-v6:

0/6malicious cases called malicious
3unsafe clears: malicious called benign
5/6benign cases cleared
0.42balanced accuracy (rule: > 0.5)
18/18deterministic arm abstained

Evidence: pre-registration · results

ATH is a research prototype, not a production SOC product. README