Skip to main content
ProcessesSIEMXDR

What is Threat Hunting?

Threat hunting is the proactive search through security telemetry for attackers that existing controls missed. The hunter starts from a hypothesis about how an adversary would behave, queries logs and endpoint data to prove or disprove it, and turns the result into a new detection. NIST describes the goal as disrupting adversaries as early as possible.

Definition

Threat Hunting
Threat hunting is the proactive search through security telemetry for attackers that existing controls missed. The hunter starts from a hypothesis about how an adversary would behave, queries logs and endpoint data to prove or disprove it, and turns the result into a new detection. NIST describes the goal as disrupting adversaries as early as possible.

How Threat Hunting Works

An alert-driven SOC looks at what a rule already flagged. A hunt starts from the opposite assumption: an attacker may already be inside, using techniques no rule covers, and the only way to find out is to go and look. NIST SP 800-53 writes this into control RA-10 (Threat Hunting) as a capability to search for indicators of compromise and to "detect, track, and disrupt threats that evade existing controls". The guidance attached to the control calls hunting an active means of defense, set against firewalls, intrusion detection and prevention, sandboxes and SIEM, and gives it an objective: track and disrupt adversaries as early as possible in the attack sequence, and measurably improve the speed and accuracy of the response.

A hunt ends in one of three ways, and all three count:

  • Evidence of an attacker. The hunt becomes an incident, and the queries go to incident response with the timeline.
  • A null result. Nothing in the data you checked. Write down the hypothesis, the time range and the hosts covered, so the next hunter knows what was ruled out and what was never looked at.
  • A visibility gap. The data that would answer the question does not exist: a log source nobody collects, retention that is too short. Closing the gap is the result.

Whichever it is, the hunt should leave something permanent behind: a detection rule, a hardening change, or a written reason why neither is possible.

Threat hunting frameworks and hunt types

Most programs borrow their structure from a published framework. The Sqrrl Threat Hunting Reference Model appeared in 2015, and TaHiTI, from the Dutch Payments Association, in 2018. A more recent one is PEAK (Prepare, Execute, and Act with Knowledge), published by Splunk and written by David Bianco, who helped create the Sqrrl model, with Ryan Fetterman. Every PEAK hunt runs through three phases: prepare (pick a topic, research it, plan the data), execute (query and analyze), act (document, automate, communicate). PEAK names three hunt types:

Hunt typeStarts fromExample question
Hypothesis-drivenOne adversary behavior you can describeIs anyone using a service account to log on interactively?
Baseline (exploratory data analysis)What normal looks like in one data sourceWhich logon types does each account use, and which combinations appear only once?
Model-assisted (M-ATH)A machine learning model of good or bad behaviorWhich RDP sessions does a model score as unlike the account's own history?

A fourth kind of work often gets called hunting too: sweeping the logs for indicators from a fresh report (hashes, domains, IPs). It is the "search for indicators of compromise" half of RA-10. It is quick and worth doing, but it only finds what someone else has already seen.

Inside a hunt, four data techniques do most of the work:

  • Searching: filter for a specific value or pattern, such as one logon type for one class of account.
  • Grouping: collect the events that share a set of attributes, for example everything one source IP did in an hour.
  • Clustering: let statistics put similar events together, then look at the small clusters left over.
  • Stack counting: count how often each combination of values appears and read the bottom of the list first. The hunt below found its lead that way.

A worked hunt: service accounts that log on like people

Simulated example generated by SOCSimulator Research. Hosts, accounts, addresses and times are invented; event IDs, field names and logon type values are Microsoft's.

Hypothesis. An attacker who gets a service account's password (by cracking a Kerberoasted ticket, reading it from a script, or finding it reused) will at some point log on with it interactively or over RDP. The service itself never does: it logs on as type 5 (Service) or type 3 (Network). MITRE ATT&CK v20 lists the behavior as an analytic for Valid Accounts (T1078): "interactive and remote logins by service accounts or users at unusual times, with unexpected child process activity". In v20, T1078 sits under four tactics: Initial Access, Persistence, Privilege Escalation and Stealth.

Data. Event 4624 (an account was successfully logged on) from the Security log of every member server and workstation. The event is written on the machine being logged on to, so domain controller logs alone miss most of it, and it only appears with the Audit Logon subcategory enabled. Microsoft's monitoring guidance for 4624 puts service accounts on its list of high-value accounts, and suggests watching for a mismatch between the logon type and the account that uses it. The logon types that matter here:

LogonTypeNameMicrosoft's description
2InteractiveA user logged on to this computer.
3NetworkA user or computer logged on to this computer from the network.
5ServiceThe Service Control Manager started a service.
10RemoteInteractiveA user logged on to this computer remotely using Terminal Services or Remote Desktop.
11CachedInteractiveA user logged on to this computer with network credentials that were stored locally on the computer.

Types 3 and 5 are a service account's normal life. Types 2, 10 and 11 are the hunt. Service accounts in this environment follow a svc_ naming convention; if yours don't, swap the name filter for a list exported from Active Directory (accounts with a service principal name are a good start).

Query 1: stack count in Microsoft Sentinel (KQL). Written against the documented SecurityEvent schema; SOCSimulator has not run it against a live workspace.

SecurityEvent
| where TimeGenerated > ago(30d)
| where EventID == 4624 and LogonType in (2, 10, 11)
| where TargetUserName startswith "svc_"
| summarize Logons = count(), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated),
            Sources = make_set(IpAddress, 10), Elevated = make_set(ElevatedToken, 2)
          by TargetUserName, Computer, LogonType
| sort by Logons asc

The same in Splunk (SPL). The field names follow Splunk's own detection for RDP logons (Logon_Type, user, dest, src). Point the index at wherever your Security log lands; if it is ingested as XML, the logon type field may be LogonType instead.

index=wineventlog EventCode=4624 Logon_Type IN (2, 10, 11) user="svc_*"
| stats count AS logons min(_time) AS first_seen max(_time) AS last_seen values(src) AS sources BY user, dest, Logon_Type
| sort logons

The result, rarest first:

TargetUserName  Computer               LogonType  Logons  FirstSeen         Sources        Elevated
svc_backup      FS02.corp.example      10         1       2026-10-11 02:14  10.10.40.77    Yes
svc_scan        WS-0143.corp.example   2          3       2026-09-29 16:02  127.0.0.1      Yes
svc_sqlagent    SQL01.corp.example     2          41      2026-09-17 09:31  127.0.0.1      Yes
svc_backup      BKP01.corp.example     10         58      2026-09-16 08:05  10.10.5.20     Yes

Reading the stack. Every row breaks policy. Only one looks like an attacker.

  • svc_backup on BKP01: 58 RDP logons from 10.10.5.20. That address is the admin jump host, and the backup team signs in with the service account to troubleshoot jobs. No intrusion here; the finding is a shared password nobody rotates, and it goes to the identity team as a ticket.
  • svc_sqlagent on the SQL01 console: 41 logons, every one inside a maintenance window on the change calendar. The same finding, for the database team.
  • svc_scan on WS-0143: three logons in one afternoon. The service desk ticket shows a technician installing the scanner agent by hand with the scanner's credentials. Closed as benign, with a note on the ticket.
  • svc_backup on FS02: once, at 02:14 on a Sunday, over RDP from 10.10.40.77, a workstation on the finance floor. No ticket, not the jump host, and an elevated session on a file server the backup account normally reaches only over the network. This is the lead.

The questions that separated the four:

QuestionBenign answerWorth escalating
Where did the logon come from?A jump host or privileged access workstation on your allowlistA user workstation, the VPN pool, a server that administers nothing
When?Inside a change window, with a ticketOut of hours, no ticket
Is it the account's usual host?The host it runs its service onA host it only reaches over the network, or has never touched
What ran in the session?The vendor console, the backup agentDiscovery commands, a new remote access tool, archivers, copies to a staging folder
Did the source touch other hosts?NoThe same IP logged on elsewhere with other accounts

Query 2: what did the session do? Event 4688 (a new process has been created) carries the Logon ID of the session that started the process, the same value 4624 records for the new logon, so the two join on it. The command line is there only if the Include command line in process creation events policy is on; by default the field is empty.

let session = SecurityEvent
| where TimeGenerated > ago(30d) and EventID == 4624 and LogonType in (2, 10, 11)
| where TargetUserName =~ "svc_backup" and Computer =~ "FS02.corp.example"
| project Computer, SubjectLogonId = TargetLogonId, LogonTime = TimeGenerated, SessionIp = IpAddress;
SecurityEvent
| where TimeGenerated > ago(30d) and EventID == 4688
| join kind=inner session on Computer, SubjectLogonId
| project TimeGenerated, Computer, LogonTime, SessionIp, ParentProcessName, NewProcessName, CommandLine
| sort by TimeGenerated asc
02:14:37  4624  svc_backup  LogonType 10  IpAddress 10.10.40.77  ElevatedToken Yes  TargetLogonId 0x8d3a41f
02:15:02  4688  explorer.exe -> cmd.exe
02:15:09  4688  cmd.exe -> whoami.exe      whoami /groups
02:15:31  4688  cmd.exe -> net.exe         net group "Domain Admins" /domain
02:16:04  4688  cmd.exe -> nltest.exe      nltest /dclist:corp.example
02:18:47  4688  cmd.exe -> robocopy.exe    robocopy D:\Shares\Finance C:\ProgramData\fsync /E

The session lists the domain's admins and controllers, then copies the finance share into a folder under C:\ProgramData. A backup job needs none of that.

Pivot: where did the password come from? On the domain controllers, look for event 4769 service ticket requests for svc_backup's service principal name with encryption type 0x17 (RC4) in the days before the logon. ATT&CK's detection for Kerberoasting (T1558.003) looks for exactly that, and an RC4 request from 10.10.40.77 would close the loop. Then check what else 10.10.40.77 logged on to, which gives incident response its scope.

Outcome. The lead went to incident response with both queries, the timeline and the open pivot. The hunt itself closed with two permanent changes.

A detection rule. The hunt query becomes a scheduled rule, scoped by what the stack showed to be legitimate. Console logons (type 2, 127.0.0.1) still alert on purpose: after this hunt, nobody should be signing in at a service account's console.

let JumpHosts = dynamic(["10.10.5.20", "10.10.5.21"]);
SecurityEvent
| where EventID == 4624 and LogonType in (2, 10, 11)
| where TargetUserName startswith "svc_"
| where not(IpAddress in (JumpHosts))
| project TimeGenerated, Computer, TargetUserName, LogonType, IpAddress, WorkstationName, ElevatedToken

A hardening change. Microsoft's guidance is to assign the Deny log on through Remote Desktop Services user right to all service accounts. Its service account guidance lists "deny sign-in locally or interactive sign-in" as a mitigation and recommends group managed service accounts (gMSA) over user accounts where the service supports them. With the deny rights in place, a type 10 logon by a service account means someone changed the policy, which deserves an alert of its own.

Had the stack held only the jump host rows, the hunt would have closed as a null result: the hypothesis, 30 days of data, the hosts that forward their Security log and, just as useful, the ones that don't.

Which platform runs these queries matters less than collecting 4624 from every host. For a comparison of platforms, see threat hunting tools.

Hunting, incident response and detection engineering

Incident response reacts to a confirmed or suspected incident; a hunt looks for incidents nobody has flagged. Alert triage judges what an automated rule found; a hunt builds and tests its own question. Detection engineering is where a successful hunt ends up: the rule above is a detection engineer's work product, written from what the hunt learned about normal behavior in one environment.

A hunting program needs:

  • Telemetry with retention. You cannot hunt in data that was never collected or was deleted after a week. The hunt above depends on Security logs from every workstation, and many environments don't forward them.
  • Analysts who know the environment. A rare row in a stack means nothing to someone who doesn't know which address is the jump host.
  • Fast query tooling, so a pivot takes seconds rather than minutes.
  • Time protected from the alert queue, for work whose most common honest result is "nothing found".

In larger SOCs hunting is a dedicated role. The threat hunter career path puts the usual starting point at three to five years of security operations experience and covers the skills and pay range.

Threat Hunting in SOC Operations

Most hunts start from something an analyst noticed during triage: a service account signing in somewhere new, a parent process that looked wrong, a benign alert that keeps coming back. Writing that down as a testable hypothesis, instead of closing the ticket and moving on, is the first hunting skill, and a tier 1 analyst can practice it long before anyone hands over the job title. The habit the worked hunt depends on comes next: before asking what would explain a strange row if it were malicious, ask what would explain it if it were benign, then check the jump host list, the change calendar and the ticket queue. Most rare rows have dull explanations, and the hunter's job is finding the one that doesn't. Close every hunt with a rule, a hardening ticket or a written null result, so the SOC sees the behavior faster next time. SOCSimulator's training builds the same groundwork: constructing queries, reading raw log output and deciding whether an anomaly is an environment quirk or an intrusion.

Free

Practice Threat Hunting in a Real SOC

SOCSimulator provides hands-on training with realistic SIEM, XDR, and Firewall interfaces. Build real analyst skills investigating threat hunting scenarios with zero consequences, free.

Frequently Asked Questions

What is threat hunting?
Threat hunting is a proactive search for attackers that security tools did not flag. A hunter writes a testable hypothesis, such as a service account being used to log on over RDP, queries logs and endpoint telemetry for evidence, and ends with a finding for incident response, a documented null result or a new detection rule.
What is the primary objective of threat hunting?
To find and disrupt attackers that existing controls missed, as early in the attack as possible. NIST SP 800-53 control RA-10 describes the capability as detecting, tracking and disrupting threats that evade existing controls, with the aim of measurably improving the speed and accuracy of the response. Each hunt should also leave a new detection or a closed visibility gap behind.
What are tactics in threat hunting?
Tactics are the attacker's goals, the reason behind an action, as MITRE ATT&CK defines them. ATT&CK v20 lists 15 Enterprise tactics, from Reconnaissance to Impact, including Stealth and Defense Impairment. Hunters use them to scope a hunt: pick a tactic, choose a technique under it, such as Valid Accounts (T1078), and write a hypothesis about how it would show up in your logs.

Sources

More Processes Terms

Event ID

Event ID 1102: Audit Log Cleared & How to Detect It

Event ID 1102 fires whenever the Windows Security log is cleared. Learn who cleared it, why it demands investigation, an…

Read more
Event ID

Event ID 4103: PowerShell Module Logging & the 4104 Visibility Gap

Event ID 4103 captures every PowerShell cmdlet and its parameters. Learn the 4103 vs 4104 distinction and how to catch h…

Read more
Technique

Remote System Discovery (T1018): Detection Training

Remote System Discovery is the adversary mapping other hosts, by IP, hostname, or directory identifier, to choose latera…

Read more
Career Path

SOC Analyst (Tier 1) Career Guide: Salary & Skills

Tier 1 SOC Analysts are the front line. You monitor alert queues, triage incoming detections, classify them as true or f…

Read more
Career Path

Incident Responder Career Guide: Salary & Skills

Incident Responders lead the technical response when confirmed breaches happen. You coordinate containment, run forensic…

Read more
Career Path

DFIR Analyst Career Guide: Salary & Skills

DFIR Analysts combine forensic investigation with incident response. You collect and analyze digital evidence from compr…

Read more
Comparison

SOCSimulator vs LetsDefend: Comparison

SOCSimulator wins on operational realism. You get multi-tool shift simulation with SLA pressure, noise injection, and al…

Read more
Comparison

SOCSimulator vs Security Blue Team: Comparison

SOCSimulator provides continuous operational training that keeps your skills sharp between shifts. Security Blue Team pr…

Read more
Tool

SIEM Training Console: SOCSimulator

The SIEM console in SOCSimulator replicates the workflow of enterprise platforms like Splunk Enterprise Security, Micros…

Read more
Tool

XDR Training Console: SOCSimulator

The XDR console in SOCSimulator replicates the investigation workflow of platforms like CrowdStrike Falcon, Microsoft De…

Read more
Technique

MITRE ATT&CK® Techniques: Detection Training Library

Browse all MITRE ATT&CK® techniques with detection strategies and example alerts.

Read more
Career Path

Cybersecurity Career Paths: 2026 Guide

Explore SOC analyst career paths with salary data, required skills, and certification roadmaps.

Read more