-
Notifications
You must be signed in to change notification settings - Fork 5
Glossary
DFIR / agent / MCP terms used across the project. Sorted alphabetically.
This project. DART = Detection And Response Team — deliberately a category name rather than a product name, so the scope can grow from autonomous DFIR (Phase 1) to detection engineering (Phase 2) to agentic SOC (Phase 3) without rebranding.
Design philosophy: guardrails are encoded in the type system and function surface, not in the LLM prompt. A jailbroken model is still bounded by what functions exist on the wire. Compare prompt-first.
See Architecture-first vs prompt-first.
Append-only JSONL where each entry's entry_hash includes the previous entry's hash. SHA-256. Tampering with any entry breaks the chain at that point and every subsequent point. See dart-audit.
8-character hex string (4-byte secrets.token_hex(4)) randomly generated per audit-chain entry. Findings cite their supporting audit_ids. The finding emitter in DeterministicAnalyst refuses to emit findings without them.
tests/test_mcp_bypass.py. Asserts that destructive function names (execute_shell, write_file, mount, umount, eval, exec_python, network_egress, delete_file, system, spawn_process, kill_process — full list in the test) are not registered on the surface, and that the negative set never overlaps the positive set. The most important test in the repo — if it fails, the architectural guarantee is broken.
A YAML tag in a playbook that says what kind of case the rules are tuned for: insider_threat_remote_hands, ransomware_response, web_breach, etc. See dart-playbook.
The property that an audit chain re-validates from scratch: every entry's prev_hash matches the previous entry's entry_hash. The CLI command is python3 -m dart_audit verify <file>.
When two artifacts disagree about a fact — e.g. auth log says event happened at T, MFT timestamp says T - 11 seconds. dart-corr flags it as UNRESOLVED and refuses to let the agent emit findings until the hypothesis is revised. Mechanical, not subjective.
The wrapper loop. The only Python package with control flow. Reads a playbook, calls MCP functions, runs dart-corr, writes audit chain, emits findings.
SHA-256 chained audit log. Append-only JSONL. CLI for verify and trace.
Cross-artifact correlation. DuckDB-backed. Surfaces contradictions as UNRESOLVED. The architecture-first claim made concrete.
The typed MCP server. the typed forensic function surface, schema-validated, read-only. The "surface" — anything not here is not callable.
YAML sequencing rules. Operator-tunable. Decides what the agent calls next given the current state.
Run the agent without an external LLM. Uses the playbook policy directly. No ANTHROPIC_API_KEY needed. Suitable for CI and air-gapped runs.
DART_EVIDENCE_ROOT env var. The directory the agent reads from. Mounted read-only by the operator (Layer 3 defense). All MCP functions route file paths through _safe_resolve which canonicalizes and rejects anything outside this root.
A claim the agent emits in its final report, e.g. "USB Kingston DataTraveler inserted at 14:22:18 UTC". Each finding cites the audit_id of the supporting MCP call. Findings without citations are blocked at write time.
The agent's current working theory. Versioned (v1, v2, ...) with confidence scoring. Revised on UNRESOLVED contradictions or new evidence.
Run the agent connected to a real Claude API instance. Requires ANTHROPIC_API_KEY. Same surface, same architectural guarantees as deterministic mode. See Live-mode.
"Living Off the Land Binary". A signed Microsoft binary with a benign primary purpose that can be repurposed for malicious use (e.g. comsvcs.dll for LSASS dump, regsvr32.exe for code execution). Detected by detect_credential_access and similar functions.
Anthropic's open protocol for connecting an LLM to typed external tools. Used by dart-mcp over JSON-RPC stdio. https://modelcontextprotocol.io
The framework that maps attacker techniques to a tactic taxonomy (12 enterprise tactics: Initial Access, Execution, ..., Impact). Every detection function in dart-mcp is mapped to one or more T-IDs. https://attack.mitre.org
A YAML file that encodes "what should the agent call next given the current state". Operator-tunable, lives in dart-playbook.
The opposite of architecture-first. Guardrails live in the LLM's system prompt: "do not modify evidence", "do not exfiltrate". Vulnerable to prompt injection, jailbreaks, and prompt erosion over long sessions.
An attempt to replay a previously recorded audit entry as if it were a fresh one. Prevented by per-entry random audit_id. The chain integrity check still validates structurally; the random IDs make stitched-together logs detectable.
The reasoning pattern Agentic-DART implements: form hypothesis → call typed tools → check for contradictions → revise on contradiction → emit findings with citations. Encoded in the dart-playbook YAML, executed by dart-agent.
Open YAML-based signature format for security event log detection. Vendor-agnostic. Not directly used in Phase 1 (Phase 2 will add dart-synth for Sigma rule synthesis from audit corpora). https://github.com/SigmaHQ/sigma
The set of function names callable on the MCP wire. As of v1.0.1: 47 native MCP tools + 25 SIFT adapters = 72 typed read-only tools. Asserted as the test test_mcp_surface.py::test_registered_tools_are_exact_set.
The path-safety helper in dart_mcp. Canonicalizes any path argument (resolves .., symlinks), and rejects results outside DART_EVIDENCE_ROOT. Layer 2 of the read-only guarantee.
Modifying file timestamps to evade detection. Detected by comparing $SI (Standard Information, user-modifiable) against $FN (File Name, kernel-set) in the MFT. Mismatch = timestomp. T1070.006.
- About the name — why "DART"
- Architecture deep dive
- MCP function catalog
Agentic-DART — autonomous DFIR agent · architecture-first, not prompt-first · MIT license · github.com/Juwon1405/agentic-dart
- The Memex bet ⭐ Why this design
- About the name
- Architecture-first vs prompt-first
- Architecture deep dive
- Threat model
- Glossary
- dart-mcp — typed surface (native + SIFT adapters)
- dart-agent — senior-analyst loop
- dart-corr — cross-artifact correlation
- dart-audit — SHA-256 chained log
- dart-playbook — senior-analyst sequencing rules (v3 default)
- MCP function catalog (native + SIFT adapters)
- Comparison with adjacent tools
- FAQ
- Operator guide — distro-agnostic
- Running on SIFT
- Live mode
- Accuracy report
-
Roadmap ⭐ Phase 1 ~95% complete
- Phase 1 — Agentic DFIR ⭐ dedicated page · SANS submission
-
Phase 2 — Detection engineering
- The self-learning loop ⭐ design note
- Phase 3 — Agentic SOC
- Phase 4 — Broader agentic security