Confidence is earned, not assumed. A null hunt result is only as valuable as the analyst’s documented certainty about what they covered. Calibrated assessment is the last step — and the one most frequently skipped.
ICD 203 Confidence in Hunt Outputs
The Intelligence Community uses standardized confidence language to prevent consumers from over-interpreting uncertain assessments. Threat hunters should adopt the same discipline.
Confidence Mapping for Hunt Findings
| Finding Type | Data Quality | Corroboration | Confidence |
|---|---|---|---|
| TP: malfind MZ header + VT 47/72 + ESTABLISHED C2 connection | Full-fidelity Zeek + Sysmon | 3 independent signals agree | HIGH |
| TP: beacon CV = 0.024 + self-signed cert | Full-fidelity Zeek | 2 signals agree, no endpoint pivot | MODERATE |
| Lead: slightly elevated NXDOMAIN ratio, no other signals | Full-fidelity Zeek DNS | 1 signal, no corroboration | LOW |
| Null: no beacons found (full coverage) | Full-fidelity, full retention | Complete data, all candidates evaluated | HIGH (null) |
| Null: no beacons found (partial coverage) | Some segments missing | Not all candidates evaluated | MODERATE (null) |
Language Conventions (ICD 203-style)
| Phrase | Confidence Level | Use When |
|---|---|---|
| ”We assess with high confidence…” | HIGH | All signals corroborate, data complete |
| ”We assess with moderate confidence…” | MODERATE | 2 of 3 signals present, minor data gap |
| ”We assess with low confidence…” | LOW | 1 signal, significant data gap |
| ”We cannot assess…” | N/A | Data not available for this hypothesis |
| ”We found no evidence of…” | Null (state confidence separately) | Null result with explicit scope |
The Hunt Journal Entry
Every hunt, regardless of result, requires a journal entry that can stand alone.
Complete Entry Template
## Hunt [YYYY-MM-DD-NN] — [TTP Name] — [Hypothesis Source]
**Date:** 2024-09-02
**Analyst:** M. Torres
**Hunt type:** Hypothesis-Driven — from CTI report [UNC3524 campaign, 2024-08-28]
---
### Hypothesis
"If an adversary used DNS tunnelling (T1048.003) via TXT records against our
M365 email environment between 2024-06-01 and 2024-09-02, we would observe
TXT query volume > 50/hour from a single internal host in Zeek dns.log, with
average first-label length > 30 characters."
**Null hypothesis:** "No adversary is using DNS tunnelling via TXT records in
our environment during this period."
---
### Data Source Validation
- Zeek dns.log: full-fidelity (no sampling) ✓
- Retention: 90 days — covers full hypothesis window ✓
- TXT qtype field populated: confirmed (sampled 100 TXT queries in past 7 days) ✓
- Coverage gap: branch office Zeek sensors — only 7-day retention
→ Branch office excluded from this hunt's null result
---
### Queries Run
1. TXT query volume per host (30-day window) — see: dns_txt_volume_2024-09-02.kql
2. Unique FQDN count per registered domain (tunnelling signature) — see: dns_fqdn_ratio.kql
3. Average first-label length filter (>30 chars) — see: dns_label_len.kql
---
### Findings
**Result:** NULL — no DNS tunnelling found in HQ segments for 30-day window
Candidates evaluated: 4 hosts with TXT query count > 50 in 30 days
- 10.1.1.5: 134 TXT queries to _dmarc.corp.com — EXCLUDED (mail server, legitimate SPF)
- 10.1.1.6: 89 TXT queries to various domains — EXCLUDED (weather app, SPF checks, mixed)
- 10.4.2.15: 67 TXT queries to google.com TXT — EXCLUDED (DNS lookup tool, known)
- 10.3.3.1: 52 TXT queries (avg label len: 12 chars) — NOT TUNNELLING (labels too short)
All 4 candidates triaged. None met tunnelling criteria.
---
### Assessment
**Confidence in null result:** MODERATE
- High-quality full-fidelity data for HQ (full retention, no sampling)
- Branch office excluded — 7-day retention insufficient for this 30-day hunt
→ A tunnelling channel present only in branch offices and older than 7 days
would NOT be caught by this hunt
**Conclusion:** "We assess with MODERATE confidence that no DNS tunnelling via TXT
records occurred in HQ segments between 2024-06-01 and 2024-09-02. Branch office
is an unvalidated gap. This technique is not currently evidenced in the covered scope."
---
### Next Hypothesis Generated
Hypothesis [2024-09-02-02]: "Check if branch office Zeek sensors can be upgraded
to 30-day retention, then re-run this hunt with branch coverage for Q4 2024."
Closing a Hunt: The Completion Checklist
□ All success criteria met (all candidates evaluated OR threshold documented)
□ Hunt journal entry written (hypothesis, data, queries, findings, confidence)
□ Coverage gaps explicitly stated
□ PEAK Act outputs produced:
□ IR ticket (if TP found)
□ Detection rule + ABLE documentation (if TP → durable pattern)
□ CTI deliverable (if novel finding)
□ Null result documented (if no TP — still required)
□ Next hypothesis spawned (even if: "no follow-up needed — this TTP covered")
□ ATT&CK Navigator layer updated
□ Hunt report shared with detection engineering team
A hunt is officially closed when all boxes are checked. An unclosed hunt — findings documented but no detection rule, or null result with no journal entry — produces half the value of a properly closed one.