# Threat Hunting

> Conduct proactive, hypothesis-driven threat hunts — search SIEM / EDR / logs for adversaries who haven't tripped an alert yet. ATT&CK-driven, hypothesis-based methodology. Use when the user mentions 'threat hunting,' 'proactive hunt,' 'TaHiTI,' 'PEAK framework,' 'MITRE ATT&CK hunt,' 'hypothesis-driven hunt,' 'hunt hypothesis,' 'living off the land,' 'LOLBins,' 'beaconing,' 'lateral movement detec…

- **Type:** Skill
- **Install:** `agentstack add skill-briiirussell-cybersecurity-skills-threat-hunting`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [briiirussell](https://agentstack.voostack.com/s/briiirussell)
- **Installs:** 0
- **Category:** [Search](https://agentstack.voostack.com/c/search)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [briiirussell](https://github.com/briiirussell)
- **Source:** https://github.com/briiirussell/cybersecurity-skills/tree/main/skills/threat-hunting

## Install

```sh
agentstack add skill-briiirussell-cybersecurity-skills-threat-hunting
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Threat Hunting — Proactive Adversary Detection

Hunt for adversaries who are already inside but haven't tripped an alert. Distinct from `incident-triage` (reactive, alert is firing) and from `siem-detection` (engineer rules so future alerts fire). This skill is the *proactive* layer — assume something has slipped through, look for it.

Hunting is hypothesis-driven, not browse-driven. "Let's look around the SIEM" is not hunting; "let's check for the specific pattern of T1059.001 (PowerShell) being launched by Office processes" is.

Cross-references: `siem-detection` (queries you write here often graduate to detection rules), `incident-triage` (what to do if a hunt confirms a finding), `breach-patterns` (a rich source of hunt hypotheses), `disk-forensics` (deeper analysis on confirmed hits).

## Methodology — PEAK framework

The PEAK (Prepare, Execute, Act, Knowledge) framework from Splunk SURGe — the most actionable hunting methodology I've seen.

### Step 1: Prepare

Form the hypothesis. Strong hypotheses share three properties:

1. **Specific** — names a technique, log source, and expected artifact
2. **Testable** — describes what evidence would confirm or deny
3. **Bounded** — has a defined time window and scope

**Bad hypothesis:** "Look for anomalies in the SIEM"
**Good hypothesis:** "Within the last 30 days, no service account should have run interactive PowerShell with `-encodedCommand` flag (T1059.001 + T1027). Search Sysmon event 1 for parent process = service-account-launched scheduled task, child = `powershell.exe`, command line contains `-enc` or `-encodedcommand`."

Hunt hypothesis sources, ranked by yield:

| Source | Yield | Effort |
|---|---|---|
| Recent incident (yours or peer's) | High | Low — pattern is concrete |
| `breach-patterns` skill catalog | High | Low — generalizes from public breaches |
| MITRE ATT&CK technique you don't have a detection for | Medium | Medium — read the technique, design the hunt |
| Threat intel report (CrowdStrike, Mandiant, vendor reports) | Medium | Medium — current patterns |
| Anomaly: "this number went up — why" | Low | Low — often FP, occasionally gold |

### Step 2: Execute

Run the hunt. Three execution patterns:

**Pattern A — Pivot from indicator.** Start with a specific IOC (IP, hash, domain) and look for any host or user that touched it.

```kql
// Sentinel — pivot from a suspicious IP across all log sources
union *
| where TimeGenerated > ago(90d)
| where contains("198.51.100.42")
| project TimeGenerated, Type, Computer, _ResourceId
```

**Pattern B — Pivot from technique.** Start with an ATT&CK technique and look for any host doing that.

```spl
// Splunk — T1547.001 Registry Run Keys persistence
index=sysmon EventCode=13 
  TargetObject="*\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\*"
| stats values(Details) by Computer, User
| where len(values(Details)) > 1
```

**Pattern C — Anomaly hunt.** Establish a baseline; look for outliers.

```kql
// Sentinel — service accounts authenticating from new geographies
SigninLogs
| where TimeGenerated > ago(30d)
| where UserType == "Service"
| summarize Countries = make_set(Location) by UserPrincipalName
| where array_length(Countries) > 1
```

### Step 3: Act

For every hit, three possible outcomes:

| Outcome | Action |
|---|---|
| Confirmed malicious | Escalate to `incident-triage` immediately |
| Confirmed benign | Document and move on |
| Unknown / unable to confirm | Deepen investigation (host artifacts, network traffic, user interview) |

Don't leave hits in the "unknown" state. Either resolve, or hand off with a documented next-step.

### Step 4: Knowledge

The hunt's value isn't the one hit — it's the artifacts.

For each hunt:

- If you found something, **write a detection rule** so future occurrences fire automatically (see `siem-detection`)
- If you didn't find anything, **document the hunt** — query, scope, time window, conclusion. Future hunters won't re-do it
- If the hunt was hard because of missing log coverage, **document the gap** and create a backlog item to fix log ingestion

Hunts that don't produce artifacts are work without compounding return. The whole point of the methodology is to turn every hunt into either a rule, a documented dead-end, or a coverage improvement.

## High-yield hunt catalog

### Persistence

- **Scheduled tasks created outside business hours** — `schtasks.exe /create` from Sysmon event 1 + EventCode 4698 from Windows Security
- **Run-key persistence** — registry writes to `HKCU\...\Run`, `HKLM\...\Run`, `HKCU\...\RunOnce`
- **Service installation outside known software-install windows** — EventCode 7045
- **WMI persistence** — `__EventFilter` and `CommandLineEventConsumer` subscriptions
- **Login items / launch daemons (macOS)** — `/Library/LaunchDaemons/*.plist`, `~/Library/LaunchAgents/*.plist`
- **Cron / systemd timers (Linux)** — `/etc/cron.*`, `/etc/systemd/system/*.timer`, user crontabs

### Defense evasion

- **PowerShell with `-EncodedCommand`** — base64-encoded scripts are evasion 80% of the time
- **`certutil.exe -decode`** — LOLBin used to decode dropper payloads
- **Sysmon EventCode 7 (Image loaded) for known-bad DLLs from non-standard paths**
- **Process executing from `%TEMP%`, `%APPDATA%`, `\Users\Public`** — non-standard exec paths
- **Command-line obfuscation patterns** — large amounts of `^`, backticks, `cmd /c echo y | ...`

### Credential access

- **LSASS access from unexpected processes** — Sysmon EventCode 10 with TargetImage = `lsass.exe` and SourceImage not in `[mssense.exe, NisSrv.exe, ...]`
- **`procdump.exe` or `comsvcs.dll` use** — process-dumping LOLBins
- **NTDS.dit access outside backup windows** — domain controller DB
- **AWS `GetSessionToken` or `AssumeRole` from new IPs** — credential capture pivot
- **OAuth consent grants for high-scope applications** — see `iam-audit`

### Discovery

- **`net group "Domain Admins"`** or equivalent enumeration commands
- **AD service ticket requests for high-value SPNs** (Kerberoasting prep) — EventCode 4769 with RC4 encryption
- **`whoami /all`, `quser`, `nltest /domain_trusts`** — situational awareness commands run by service accounts (humans rarely run these)
- **Cloud API listing — `ListBuckets`, `ListUsers`, `DescribeInstances` from unusual principals**

### Lateral movement

- **WMI execution to remote hosts** — Sysmon EventCode 1 with `wmic.exe` or `Invoke-WmiMethod`
- **PsExec / remote service creation patterns** — EventCode 7045 with random service name
- **Remote registry connections to unusual hosts**
- **SSH key reuse — one private key authenticating to many hosts in a short window**
- **AWS / GCP `AssumeRole` chains across accounts** — pivot detection

### Collection / staging / exfil

- **Large-volume reads from cloud storage by single principal** — unusual S3 / GCS access patterns
- **Archive creation patterns** — `Compress-Archive`, `7z.exe`, `tar`, `zip` operating on directories outside user home
- **DNS queries to recently-registered domains** — exfil over DNS or C2 beacon resolution
- **Outbound TLS to high-risk geographies** — depends on your organization's normal pattern
- **Beaconing patterns** — regular-interval connections (every N seconds ± jitter) to the same destination over hours

### Cloud-specific

- **IAM credential exfiltration patterns** — `GetCredentialReport`, `GenerateCredentialReport` from unusual principals
- **IMDS access from unusual processes / containers** — anything reaching `169.254.169.254` that isn't the cloud SDK
- **CloudTrail / Audit Log tampering attempts** — `StopLogging`, `DeleteTrail`, log-bucket access from non-logging principals
- **Cross-region resource creation by single principal in short window** — pivot or coin-mining setup

### Identity-provider-specific

- **OAuth app grants of high-scope permissions** (Google Workspace, M365) — adversary technique for persistence outside the user's password
- **MFA method enrollment from new device** — attacker registering their own MFA after stealing a session
- **Sign-ins from impossible geographies** — geolocation jumps that exceed travel time
- **Service-account authentication from new client / new IP** — service accounts should be predictable

## Tools

- **SIEM** — Splunk, Sentinel, Elastic, Chronicle, Sumo, Wazuh
- **EDR** — CrowdStrike (RTR), SentinelOne (deep visibility), Microsoft Defender (advanced hunting), Carbon Black
- **Sysmon** — open-source endpoint logging on Windows, output to SIEM
- **osquery** — SQL queries over endpoint state (cross-platform)
- **Velociraptor** — open-source live response and hunting framework (much more capable than free EDR)
- **Zeek** — network metadata for traffic analysis
- **MITRE ATT&CK Navigator** — coverage visualization
- **Hunt-Evil** — hunting playbook content (open-source)
- **MaxMind GeoIP** — geolocation lookup for IP-based hunts

## Output Format

```markdown
# Threat Hunt Report
## Hunt name: [descriptive — e.g., "Office process → encoded PowerShell"]
## Hypothesis: [specific, testable, bounded]
## Date range: [from - to]
## Hunter: [name]

### Methodology
- ATT&CK technique(s): [TXXXX.NNN]
- Data sources queried: [list]
- Query / queries:
  [the actual SIEM query]

### Findings
| Hit ID | Host / User / Resource | Outcome | Notes |
|--------|------------------------|---------|-------|

### Conclusion
- [Confirmed malicious / All benign / Inconclusive]
- [Confidence level — Low / Medium / High]

### Artifacts produced
- [ ] Detection rule added (link)
- [ ] Coverage gap documented (link)
- [ ] Negative-result documentation filed (link)

### Recommended follow-up
[Anything that needs deeper investigation, escalation, or future hunts]
```

## Boundaries

- Hunt only environments the user has authorization for
- Never query SIEM / EDR data outside the user's authority — even if the dataset is available, scope matters
- For confirmed-malicious findings, escalate to `incident-triage` immediately — do not continue hunting and risk tipping the adversary
- Live response actions (host isolation, account disablement) are incident response, not hunting — escalate
- Refuse to use threat-hunting techniques to surveil employees beyond what HR / legal has authorized
- Negative hunt results are valuable evidence, not failure — document and credit accordingly

## References

- PEAK Threat Hunting Framework (Splunk SURGe)
- TaHiTI (Targeted Hunting integrating Threat Intelligence) — Dutch model
- MITRE ATT&CK
- "The ThreatHunter Playbook" (Cyb3rWard0g) — open-source content
- Sigma rules repo — many rules can become hunt queries
- "Practical Threat Intelligence and Data-Driven Threat Hunting" — Valentina Costa-Gazcón
- David Bianco's "Pyramid of Pain" — IOC value hierarchy
- SANS FOR508 / FOR578 course materials
- Velociraptor community hunt content

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [briiirussell](https://github.com/briiirussell)
- **Source:** [briiirussell/cybersecurity-skills](https://github.com/briiirussell/cybersecurity-skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-briiirussell-cybersecurity-skills-threat-hunting
- Seller: https://agentstack.voostack.com/s/briiirussell
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
