Lesson 1 of 5 · 25 min read

The Hypothesis as Unit of Work — What Makes a Hunt Hypothesis Testable

A hunt is only as good as its hypothesis. The best hunt tools, the most complete telemetry, and the most experienced analyst produce noise if the hypothesis is vague, non-testable, or targeting something you cannot measure. The hypothesis is the unit of work — treat it with the same rigor as production code.


The Five-Property Hypothesis Test

Before running a single query, evaluate the hypothesis against all five criteria:

Hypothesis: "There might be malware in our environment from recent nation-state activity"

Specific?        NO — no named TTP, no actor, no behavioral target
Testable?        NO — 'malware' could be anything
Falsifiable?     NO — no result can prove there ISN'T malware
Time-bounded?    NO — no data window specified
Data-supported?  N/A — can't evaluate without specificity

Result: Anti-pattern. Don't hunt this. Refine it.
Hypothesis: "APT29 has been observed targeting organizations in our sector using 
             OAuth phishing (T1528). We hypothesize that an adversary has stolen 
             OAuth tokens from M365 users in our environment between 2024-07-01 
             and 2024-09-01, which would appear as MailItemsAccessed events from 
             unusual locations in the Unified Audit Log."

Specific?        YES — named TTP (OAuth token theft), named data source (UAL)
Testable?        YES — query UAL for MailItemsAccessed from unusual geolocations
Falsifiable?     YES — if no such UAL events exist, hypothesis is refuted for this window
Time-bounded?    YES — 2024-07-01 to 2024-09-01
Data-supported?  YES (if UAL is enabled and retained for 90 days — validate first)

Result: Valid hunt hypothesis. Proceed to data validation.

Hypothesis Types

TypeDescriptionExample
TTP-basedTargets a specific adversary behavior”Living-off-the-land via certutil download”
Actor-basedDriven by known adversary profile”APT41 using ProxyLogon against OWA”
Baseline deviationStatistical outlier from normal”Host with 10× normal outbound connections”
Data source anomalyGap or inconsistency in telemetry”Host in scope with no Sysmon data”
Threat intelligence-drivenCTI report → specific TTP query”Post-T1566.002 BOT reports → hunt for related T1059”

The F3EAD Hunt Loop

                        ┌──────────────────┐
                        │   CTI REPORT     │
                        │ (APT29 campaign) │
                        └────────┬─────────┘
                                 │ FIND: what TTP is relevant to us?

                        ┌──────────────────┐
                        │   HYPOTHESIS     │
                        │ (T1528, 90 days) │
                        └────────┬─────────┘
                                 │ FIX: what data shows this TTP?

                        ┌──────────────────┐
                        │   HUNT (QUERY)   │
                        │ UAL MailItemsAcc │
                        └────────┬─────────┘
                                 │ FINISH: confirm or refute

                    ┌────────────┴──────────────┐
                    │                           │
              TP FOUND                    NULL RESULT
                    │                           │
                    ▼                           ▼
             EXPLOIT + ANALYZE           DOCUMENT COVERAGE
             (IOCs, ATT&CK chain)       (this TTP, this window = clean)
                    │                           │
                    └───────────┬───────────────┘
                                │ DISSEMINATE

                       CTI deliverable or
                       detection rule + null journal

                                │ Next hypothesis generated

                       (loop back to FIND)

Hypothesis Quality vs. Hunt Outcome

A well-formed hypothesis that produces a null result is a success. A poorly-formed hypothesis that produces results is a trap.

Hypothesis A (poor): "Check if anything bad is happening in our logs"
→ Hunt produces 10,000 results → analyst can't process → no action
→ Hunt produces 0 results → analyst concludes "we're clean" (overconfident)
→ No detection rule possible → no journal entry meaningful
→ Both outcomes are useless

Hypothesis B (high quality): "An adversary using ProxyLogon (CVE-2021-26855) 
would generate IIS log entries with specific HTTP error codes (400, 500) 
against the /ecp/default.flt endpoint from external IPs, appearing in 
IIS access logs from our Exchange servers between 2024-01-01 and 2024-03-31."
→ Hunt produces 0 results → meaningful: Exchange not targeted via ProxyLogon 
   in this window, given this telemetry coverage
→ Hunt produces 3 results → investigate each, confidence in finding is high
   because hypothesis was specific
→ Detection rule: directly derivable from hypothesis criteria