Hypothesis Generation
Every hunt begins with a question. Not "is there malware?" but something specific enough to test with data: "Did an actor use PowerShell remoting to move laterally from workstations to servers in the last 30 days, leaving WinRM connection events and script block logs on destination hosts?" A bad hypothesis wastes analyst hours. A good hypothesis targets specific evidence, ties to a real technique, and produces a clear result whether or not the threat is present.
What Makes a Good Hypothesis?
A hypothesis is a specific, testable statement about adversary behavior in your environment. It is not a concern, not a vague worry, and not a repeat of a problem statement. It names the technique, the expected evidence, and the scope of investigation.
Compare these two statements:
- "There might be malware somewhere on our network."
- "An attacker used PowerShell remoting (T1021.006) to move laterally from workstations to servers, generating WinRM connection logs (Event 4624 Type 3 from PowerShell.exe) and script block logs (Event 4104) on destination hosts in the last 30 days."
The first is a concern. The second is a hypothesis. You can write a query to test the second one. You cannot write a query to test the first.
Four qualities make a hypothesis ready to hunt:
- Specific: Names a technique and describes its expected behavioral signature. Testable with available data.
- Actionable: A query or set of queries can be written immediately to investigate it.
- Bounded: Defines a scope (systems, time window, data sources). Prevents runaway scope creep during execution.
- ATT&CK-anchored: Tied to a specific technique or sub-technique. This connects the hypothesis to known actor behavior, known data sources, and known detection guidance.
| Bad Hypothesis | Why It Fails | Improved Version |
|---|---|---|
| "Hunt for malware" | No scope, no technique, not testable with any query | "Hunt for LOLBin (certutil or bitsadmin) used to download payloads from external hosts (T1105)" |
| "Look for suspicious PowerShell" | Too vague, generates thousands of results, burns time | "Hunt for Base64-encoded PowerShell commands initiated from Office processes (T1059.001 + T1566.001)" |
| "Check for hackers" | Not a hypothesis at all. No technique, no evidence, no scope. | "Hunt for Kerberoasting: multiple RC4 TGS requests for service accounts from a single host (T1558.003)" |
| "Investigate recent alert" | That is IR triage, not hunting. Starts from a confirmed signal, not a hypothesis. | "Hunt for C2 beaconing: periodic outbound HTTPS connections at fixed intervals to low-reputation domains (T1071.001)" |
| "Find lateral movement" | Too broad. Lateral movement is a tactic covering 15+ techniques. Cannot query a tactic. | "Hunt for WMIC-based remote process creation for lateral movement (T1047)" |
Where Hypotheses Come From
Hunters often stall at hypothesis generation because they treat it as creative work. It is not. Hypotheses come from structured inputs: threat intelligence, the ATT&CK framework, anomalies in your own data, and situational context from your organization. Each source type produces a different kind of hypothesis with different reliability and urgency characteristics.
| Source Type | Trigger | Example | Urgency |
|---|---|---|---|
| Intel-Driven | Threat report or CTI product describes actor TTP | APT29 report describes BITS job persistence. Hypothesis: BITSAdmin.exe spawning from unusual parents or downloading from external IPs. | High: real, current threat |
| TTP-Driven | ATT&CK technique is high-value and coverage has not been tested | T1003 (credential dumping) is ubiquitous in breaches. Have we ever hunted it? Test LSASS memory access patterns. | Medium: coverage gap |
| Anomaly-Driven | Baseline analysis reveals statistical deviation | One host produces 10x the normal DNS query volume. Hypothesis: DNS tunneling C2 (T1071.004). | Medium: data-driven signal |
| Situational | Business event changes threat model | Company announced acquisition. M&A espionage campaigns historically spike. Hunt for insider data staging and unusual external transfers. | Contextual: business-relevant |
Prioritize in this order: Intel-Driven first (real, attributed threat to your industry), Situational second (business context makes specific attack types more likely), TTP-Driven third (systematic coverage improvement), Anomaly-Driven fourth (data signals that may or may not be threats).
CrowdStrike OverWatch tracks over 140 named adversary groups. Their hunt team knows which groups target which industry verticals and uses that context to prioritize which hypotheses are relevant each week. You may not have that intelligence depth, but the principle scales: use what you know about who targets organizations like yours to bias your hypothesis backlog toward the most relevant threats.
The ABLE Framework
ABLE is the hypothesis structuring model from the PEAK framework (developed by Splunk SURGe). It forces you to answer four questions before writing a single query: Actor, Behavior, Location, Evidence. If you cannot answer all four, the hypothesis is not ready.
| Component | Question It Answers | What to Specify |
|---|---|---|
| Actor | Who are you hunting for? | Named group (APT29, FIN7), general category (ransomware affiliate, insider threat), or "unknown advanced" |
| Behavior | What specific TTP? | ATT&CK technique + sub-technique + human-readable description of the specific action |
| Location | Where in the environment? | Platform (Windows/Linux/cloud), network segment, identity layer (AD, Entra ID), specific host groups |
| Evidence | What artifacts would exist if true? | Specific event IDs, log fields, artifact types, expected values or patterns |
Actor: APT41 (state-sponsored, dual financial and espionage motivation, known to target healthcare and financial services)
Behavior: T1055.001 Process Injection. APT41 injects malicious DLLs into legitimate processes using CreateRemoteThread to evade process-based detection and inherit the trust of the host process.
Location: Windows endpoints in the finance and trading application segment, specifically hosts running the trading platform and portfolio management software.
Evidence: Sysmon Event 10 (ProcessAccess) from a non-system process targeting lsass.exe or a finance application process with GrantedAccess flags indicating write permissions (0x1FFFFF, 0x1010). Sysmon Event 7 (ImageLoad) showing an unsigned or unusual DLL loaded into a legitimate process. ETW telemetry showing CreateRemoteThread API calls across process boundaries.
Actor: Ransomware affiliate (financially motivated, operating in pre-encryption phase, goal is to disable recovery options before deploying encryptor)
Behavior: T1490 Inhibit System Recovery. Attacker deletes Volume Shadow Copies using vssadmin.exe or wmic.exe to prevent victim from recovering files without paying ransom. This consistently occurs minutes to hours before encryption begins.
Location: All Windows servers and workstations. Priority: file servers, backup servers, domain controllers.
Evidence: Process creation events (Event 4688 or Sysmon 1) where Image ends with vssadmin.exe or wmic.exe, CommandLine contains "delete shadows" or "shadowcopy delete". Parent process is often cmd.exe or PowerShell.exe, which may itself have been spawned by a remote execution mechanism. Absence of legitimate backup software in the process tree.
Actor: [Named group | General category | Unknown advanced] Behavior: [ATT&CK T####.### + sub-technique name + specific action description] Location: [Platform | Network segment | Identity layer | Host group] Evidence: [Log source | Event IDs | Artifact types | Specific fields and expected values]
ATT&CK as a Hypothesis Source
Every ATT&CK technique page is a structured hypothesis seed. It tells you who uses the technique, how it works, what artifacts it leaves, what logs you need, and what controls reduce its effectiveness. A hunter who knows how to extract that information can generate dozens of well-formed hypotheses from a single ATT&CK session.
How to read a technique page for hunting:
- Procedure Examples: Real-world actor usage. This is the Actor field in ABLE. It also shows you specific implementation details that inform your query, such as the exact flags or file paths an actor uses.
- Detection Section: ATT&CK's recommended detection guidance. Translate this directly into query logic. It is the starting point for your Evidence field.
- Data Sources: The log sources required to detect this technique. If you do not have them, you cannot hunt it. Document the gap.
- Mitigations: Controls that reduce the technique's effectiveness. Useful context: if you have the mitigation deployed, factor that into your hypothesis scope.
Red Canary analyzed telemetry from 1,700 organizations covering 305 petabytes of data and 329 billion records per day. Across five years of analysis, the same techniques appear consistently in the top detections, comprising approximately 46% of all confirmed threats. These are your highest-priority hypothesis sources because they are what attackers actually use, not just what threat reports discuss theoretically.
| Technique | ATT&CK ID | Why High-Frequency | Hunt Priority |
|---|---|---|---|
| PowerShell | T1059.001 | Living-off-the-land, fileless attacks, nearly universal across actor groups | CRITICAL |
| Windows Management Instrumentation | T1047 | Admin tool abuse, remote execution, lateral movement, persistence | CRITICAL |
| Process Injection | T1055 | Defense evasion, memory-only payloads, inherits process trust | CRITICAL |
| OS Credential Dumping | T1003 | Enables all subsequent phases of attack; near-universal in advanced intrusions | CRITICAL |
| Scheduled Task/Job | T1053.005 | Persistence and execution, very common, built-in Windows feature | HIGH |
| Registry Run Keys / Startup Folder | T1547.001 | Persistence, low effort to implement, common in commodity and advanced malware | HIGH |
| LSASS Memory | T1003.001 | Primary credential theft method, required for pass-the-hash and Kerberos attacks | HIGH |
| Obfuscated Files or Information | T1027 | Defense evasion, pairs with T1059, used to avoid string-based detection | HIGH |
| Command and Scripting Interpreter | T1059 | Parent technique covering cmd.exe, PowerShell, VBScript, JavaScript; universal execution | HIGH |
| Remote Services | T1021 | Lateral movement via SMB, RDP, WinRM, SSH; covers entire movement phase | HIGH |
Attackers chain techniques in predictable patterns. A single hunt rarely covers a full attack chain, but understanding the chains tells you which techniques to prioritize and what to pivot to when you find one. Three common chains worth building hypothesis pairs around:
| Chain | Techniques | What It Represents |
|---|---|---|
| Credential theft via lateral movement | T1078 (Valid Accounts) + T1021.002 (SMB) + T1003.001 (LSASS dump) | Attacker uses valid creds to reach a server via SMB, dumps LSASS for additional credentials, repeats |
| Initial access to execution chain | T1566.001 (Spearphish) + T1059.001 (PowerShell) + T1055 (Injection) | Phishing delivers macro, macro runs PowerShell, PowerShell injects into a trusted process |
| WMI lateral movement pattern | T1047 (WMI) + T1021.006 (WinRM) + T1049 (Network Discovery) | Attacker uses WMI for remote execution, switches to WinRM for interactive sessions, runs discovery commands |
Prioritizing Your Hunt Backlog
A healthy hunt program generates hypotheses faster than it can execute them. That is a good problem to have, but it requires a disciplined prioritization system. Without one, hunters default to the most interesting hypothesis rather than the most important one. Interesting and important are not the same.
A simple four-factor scoring matrix prevents that bias. Score each hypothesis from 0-3 on each factor. Max total: 12. Hunt the highest scores first.
| Factor | 0 | 1 | 2 | 3 |
|---|---|---|---|---|
| Threat Relevance | No current threat reports | General threat landscape mention | Actively used against your sector | Active campaign targeting your org type right now |
| Data Availability | Log source not collected | Partial coverage or gaps | Log source available, some quality issues | Full coverage, clean data, tested |
| Business Impact | Minimal blast radius if undetected | Moderate impact to one system or team | Significant operational impact | Catastrophic: ransomware, data exfil, executive compromise |
| Hunt Coverage | Hunted this area in last 2 weeks | Hunted 1-3 months ago | Hunted 3-6 months ago | Never hunted or no record of prior hunt |
| Hypothesis | Relevance | Data | Impact | Coverage | Total |
|---|---|---|---|---|---|
| LSASS dump via comsvcs.dll (T1003.001) | 3 | 3 | 3 | 2 | 11 |
| Kerberoasting (T1558.003) | 3 | 2 | 3 | 1 | 9 |
| DNS tunneling C2 (T1071.004) | 2 | 2 | 2 | 3 | 9 |
| Macro-enabled document execution (T1566.001) | 3 | 3 | 2 | 1 | 9 |
| BITSAdmin persistence (T1197) | 2 | 2 | 2 | 2 | 8 |
Treat your hunt backlog like a Kanban board: Backlog (scored, not yet scheduled), Planned (assigned to a sprint or analyst), In Progress (hunt running), Complete (documented), and New Detections Created (rules or alerts derived from findings). The last stage is critical. A hunt that does not produce a detection rule or a documented data gap has not fully closed.
Converting Threat Intel to Hypotheses
Threat reports are dense and often written for intelligence consumers, not hunters. The skill is extracting the operational content: which techniques were used, in which sequence, with which tools, leaving which artifacts. Then translating each technique into an ABLE-structured hypothesis.
"Threat cluster CL-CRI-042 was observed targeting financial services firms in Q2 2026. Initial access via spearphishing with ISO attachments (T1566.001, T1553.005). Payload staged via BITSAdmin from compromised CDN infrastructure (T1105, T1197). Lateral movement via WMI remote process creation (T1047). Credential theft via comsvcs.dll MiniDump of LSASS (T1003.001). Data exfiltration over HTTPS to dedicated C2 domains registered via Cloudflare proxy (T1048.002, T1071.001)."
From that single report, extract five distinct hypotheses:
| # | Technique | Actor | Behavior | Location | Evidence |
|---|---|---|---|---|---|
| 1 | T1553.005 | CL-CRI-042 | ISO/IMG mounted to bypass Mark-of-the-Web, spawning LOLBin execution | User workstations with optical drive or ISO mount capability | Sysmon 1: process spawned from a mounted ISO path (e.g., D:\ or virtual drive). Parent: explorer.exe. Unusual executable names from removable-path location. |
| 2 | T1197 + T1105 | CL-CRI-042 | BITSAdmin used to download second-stage payload from external CDN host | All Windows workstations | Sysmon 1: bitsadmin.exe with /transfer and external URL arguments. Sysmon 3: bitsadmin.exe network connection to non-Microsoft external IP. Event 4688: bitsadmin.exe CommandLine with /download. |
| 3 | T1047 | CL-CRI-042 | WMI remote process creation from compromised workstation to server | Windows servers, particularly those with financial application access | Sysmon 1 on destination host: WmiPrvSE.exe as parent process. Event 4624 Type 3 logon correlated with WMI process creation. Event 4688: child process spawned by WmiPrvSE.exe with suspicious command line. |
| 4 | T1003.001 | CL-CRI-042 | comsvcs.dll MiniDump used to dump LSASS memory to a temp file | All Windows hosts, priority on servers where admin accounts log in | Sysmon 1: rundll32.exe with CommandLine containing "comsvcs" + "MiniDump" + "lsass". Sysmon 10: process accessing lsass.exe with high-privilege access rights. Sysmon 11: .dmp file created in temp or unusual directory. |
| 5 | T1071.001 + T1102 | CL-CRI-042 | C2 beaconing over HTTPS to Cloudflare-proxied domains, periodic intervals | All endpoints, particularly servers and hosts with internet egress | Proxy logs: periodic HTTPS connections at fixed intervals to domains behind Cloudflare ASNs with low historical traffic. DNS logs: Sysmon 22 queries to recently registered domains resolving to Cloudflare IPs. NetFlow: consistent small byte-count HTTPS connections at regular intervals. |
Hypothesis 4 (comsvcs.dll LSASS dump) directly translates into a Sigma rule that any SIEM can consume:
title: Potential LSASS Memory Dump via comsvcs.dll
id: e1a3b5c2-f4d6-4e89-a0b2-c3d5e7f90123
status: experimental
description: Detects LSASS memory dump using comsvcs.dll MiniDump function,
common in credential theft operations. Observed in multiple ransomware
pre-deployment and APT intrusion chains.
author: H3AD-LEARN
date: 2026/06/02
logsource:
category: process_creation
product: windows
detection:
selection_img:
Image|endswith: '\rundll32.exe'
selection_cmd:
CommandLine|contains|all:
- 'comsvcs'
- 'MiniDump'
- 'lsass'
condition: selection_img and selection_cmd
falsepositives:
- Legitimate memory diagnostics tools (verify process tree and initiating user)
level: critical
tags:
- attack.credential_access
- attack.t1003.001
Common Mistakes in Hypothesis Generation
Most hypothesis failures fall into five patterns. Recognizing them before you start saves hours of wasted hunt time.
| Mistake | What Happens | Fix |
|---|---|---|
| Too broad | "Detect malicious PowerShell" generates thousands of results. The analyst burns hours triaging noise and loses confidence in the hunt process. | Narrow with parent process context, specific flags, or behavioral combination. "PowerShell with -enc flag initiated from an Office application process" is testable. |
| Too narrow | "Check CVE-2024-1234 exploit on host DESKTOP-ABC01" is a single-point check, not a systematic hunt. Even if it finds nothing, it tells you nothing about the broader environment. | Broaden to the TTP the CVE enables, across the relevant system segment. "Hunt for memory corruption exploitation indicators across web-facing hosts in the DMZ." |
| No telemetry | Hypothesis requires WMI activity logs, but the WMI provider is not enabled. Hunt cannot proceed. Analyst discovers the gap mid-hunt after the sprint is already allocated. | Always validate data availability as part of ABLE (Evidence field). Run a test query before scheduling the hunt. If data is absent, log the gap and move to a testable hypothesis. |
| No ATT&CK anchor | "Look for suspicious network traffic" cannot be measured for coverage, cannot be evaluated objectively, and produces inconsistent results across analysts. | Tie to a specific technique (T1071 Application Layer Protocol) with specific sub-behaviors (abnormal user agents, fixed-interval beaconing, unusual port for protocol). |
| Confirmation bias | Hunter suspects a specific host is compromised. Hunt is designed to confirm that belief. Evidence contradicting the hypothesis is ignored. Result: false positive escalated to IR. | Document what would disprove the hypothesis before starting. A null result is as valuable as a positive one. Design queries to surface all results, not just confirming ones. |
The confirmation bias mistake is the hardest to self-diagnose. The fix is structural: before executing any hunt, write down the conditions that would prove the hypothesis false. If your only planned queries are designed to confirm your suspicion, add at least one query that would surface contrary evidence. This is the same rigor applied in scientific investigation and it applies directly to adversary hunting.
Key Takeaways
- A good hypothesis is specific, actionable, bounded, and ATT&CK-anchored. If you cannot write a query to test it, it is not a hypothesis.
- Hypotheses come from four sources: threat intelligence, ATT&CK technique coverage gaps, anomalies in your own data, and situational business context. Prioritize intel-driven and situational sources first.
- The ABLE framework (Actor, Behavior, Location, Evidence) structures every hypothesis. All four fields must be filled before a hunt begins.
- PowerShell (T1059.001) is the most consistently observed technique in Red Canary's multi-year analysis, appearing in the top attacker techniques for five consecutive years across 1,700 organizations.
- Prioritize hunt backlog using a four-factor matrix: Threat Relevance, Data Availability, Business Impact, and Hunt Coverage. Score 0-3 per factor. Hunt the highest scores first.
- Every threat report contains multiple hypotheses. Extract each technique from the report and build a separate ABLE-structured hypothesis for each one.
- A null result is valid and valuable. It either confirms that controls work for this technique or reveals a data gap. Both outcomes are worth documenting.
Knowledge Check
Click an answer to reveal the explanation.
Q1. What are the four components of the ABLE hypothesis framework?
Q2. Which of the following is a well-formed hunt hypothesis?
Q3. According to Red Canary's multi-year analysis, what is the most consistently observed ATT&CK technique, appearing across approximately 46% of detections?
Q4. In the four-factor hypothesis prioritization scoring matrix, which factor rewards hypotheses that have never been hunted before?
Q5. What is the value of a null result in a threat hunt?