Lesson 5 of 5 · 25 min read

Calibrated Assessment — Confidence Language, Hunt Journals, and Closing Hunts

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 TypeData QualityCorroborationConfidence
TP: malfind MZ header + VT 47/72 + ESTABLISHED C2 connectionFull-fidelity Zeek + Sysmon3 independent signals agreeHIGH
TP: beacon CV = 0.024 + self-signed certFull-fidelity Zeek2 signals agree, no endpoint pivotMODERATE
Lead: slightly elevated NXDOMAIN ratio, no other signalsFull-fidelity Zeek DNS1 signal, no corroborationLOW
Null: no beacons found (full coverage)Full-fidelity, full retentionComplete data, all candidates evaluatedHIGH (null)
Null: no beacons found (partial coverage)Some segments missingNot all candidates evaluatedMODERATE (null)

Language Conventions (ICD 203-style)

PhraseConfidence LevelUse When
”We assess with high confidence…”HIGHAll signals corroborate, data complete
”We assess with moderate confidence…”MODERATE2 of 3 signals present, minor data gap
”We assess with low confidence…”LOW1 signal, significant data gap
”We cannot assess…”N/AData 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.