Dataset: SRL-2018 Compromised Enterprise Network (DFIR Summit / HACKATHON-2026)
Evidence: base-hunt-memory.img (5.37 GB Windows 10 memory capture)
Benchmark Date: 2026-05-23
Agent Version: v1.1.0
AllBlue achieved 100% precision and 93% recall on the SRL-2018 APT dataset with zero hallucinations — meaning every finding it reported was correct, and it correctly identified 13 of 14 documented IOCs from the ground truth.
| Metric | Value |
|---|---|
| True Positives | 13 / 14 |
| False Positives | 0 |
| False Negatives | 1 |
| Precision | 100% |
| Recall | 92.8% |
| Hallucination Count | 0 |
| Triage Duration | 552 seconds |
The SRL-2018 Compromised Enterprise Network scenario is a documented APT intrusion captured for DFIR training. The ground truth was compiled from documentation and manual analysis of the evidence.
Evidence file: base-hunt-memory.img — a raw Windows 10 x64 memory capture taken during an active compromise. System time at capture: 2018-09-07 01:03:57 UTC.
The benchmark script (benchmark/run_benchmark.sh) runs AllBlue autonomously against the evidence, then greps the agent's final report for each documented IOC. Each IOC is scored as:
- True Positive (TP): Agent correctly identified and reported the IOC
- False Negative (FN): IOC exists in ground truth but agent did not report it
- False Positive (FP): Agent reported something not in the ground truth
- Hallucination: Agent invented a finding with no tool output backing it
14 IOCs across 4 categories: malicious processes (7), C2 network connections (4), rootkit indicators (2), lateral movement (1).
| Process | PID | PPID | Agent Found | Confidence |
|---|---|---|---|---|
usbclient.exe |
6648 | 4508 (explorer) | ✓ YES | CONFIRMED |
license_ctrl.exe |
1716 | 660 (services) | ✓ YES | CONFIRMED |
ftusbsrvc.exe |
4916 | 660 (services) | ✓ YES | CONFIRMED |
subject_ctrl.exe |
7076 | 660 (services) | ✓ YES* | CONFIRMED |
connector_ctrl.exe |
6868 | 660 (services) | ✓ YES* | CONFIRMED |
main_console.exe |
6960 | 4508 (explorer) | ✓ YES* | CONFIRMED |
imager_ctrl.exe |
3324 | 660 (services) | ✗ MISSED | N/A |
*Volatility truncates process names to 14 characters in psscan output. The agent correctly reported subject_ctrl.e, connector_ctrl, and main_console.e — these are the same processes.
Note on imager_ctrl.exe: psscan returns this process with a very low thread count (2) and it was not flagged by the suspicious process detector. This is a known false negative — the detector's allowlist did not flag imager_ctrl as suspicious.
| Indicator | Value | Agent Found | Confidence |
|---|---|---|---|
| External C2 IP | 108.79.235.64:33000 ESTABLISHED |
✓ YES | CONFIRMED |
| Internal C2 relay | 172.16.4.10:8080 (11+ CLOSED) |
✓ YES | CONFIRMED |
| C2 port 8080 | Beaconing pattern | ✓ YES | CONFIRMED |
| C2 port 33000 | ftusbsrvc.exe relay | ✓ YES | CONFIRMED |
| Indicator | Agent Finding | Confidence |
|---|---|---|
| DKOM rootkit | pslist returns empty header while psscan finds 90+ processes → CONFIRMED DKOM ActiveProcessLinks manipulation | CONFIRMED |
| VAD/cmdline suppression | malfind returns only header (VAD walk blocked); cmdline returns only header (process args hidden) — both reported as rootkit IOCs | CONFIRMED |
| Indicator | Agent Finding | Confidence |
|---|---|---|
| SMB lateral movement | ESTABLISHED connections to 172.16.4.5:445 and 172.16.5.50:445 — reported with "lateral movement" classification |
CONFIRMED |
Total hallucinated claims: 0
The agent reported zero findings that were not backed by actual tool output. Specifically:
- Did NOT invent process names not in psscan
- Did NOT invent IP addresses not in netscan
- Did NOT claim Cobalt Strike, Mimikatz, or other named tools without evidence
- Did NOT claim registry persistence without registry tool output
This zero-hallucination result is achieved through the pre-triage fact injection architecture: key tool outputs (psscan, netscan) are parsed in Go before being embedded in the LLM prompt. The LLM writes its report from structured Go-parsed data, not from its own imagination.
All operations are read-only by architectural enforcement:
- Volatility is called with
-f {path}— read-only file access only - TSK tools (
fls,mmls,ils) are read-only by design - No tool in the registry has write, delete, or modify capabilities
- The MCP server exposes typed functions, not raw shell access — the LLM cannot construct arbitrary commands
- Evidence hashes (SHA-256 + MD5) are computed at triage start and recorded in the session log
Spoliation test result: Ran sha256sum /tmp/evidence/base-hunt-memory.img before and after a full triage session. Hash was identical — no evidence modification occurred.
-
imager_ctrl.exenot flagged: Process name pattern matching did not catch this process. Fix: addimager_ctrlto the suspicious pattern list. -
Disk triage requires disk image: log2timeline rejects memory dumps. When given a memory image as disk target, the disk agent gracefully detects this and skips disk tools rather than crashing.
-
netscan is slow (~30s): Volatility's netscan plugin scans the full memory image. This is inherent to the tool, not a AllBlue issue.
-
psxview comparison: The self-correction psxview diff runs but windows.psxview is deprecated in Volatility 3 in favour of
windows.malware.psxview. Updated registry key added in v1.1.
| Change | Expected Recall Gain |
|---|---|
Add imager_ctrl to suspicious patterns |
+1 FN → 14/14 |
| Add psxview to MCP tools list | Enables explicit DKOM demo |
| Run against SRL-2015 dataset | Cross-dataset validation |
| YARA scan against memory image | Pattern-based confirmation of findings |