Data Sources and Telemetry
A well-formed hypothesis and a solid framework are worth nothing if the data you need does not exist. Most organizations have collection gaps, retention gaps, and quality gaps they are unaware of until they try to run a hunt and get zero results. Before you schedule your first hunt sprint, you need to know exactly what telemetry you have, what is missing, and what each gap costs you in ATT&CK coverage.
The Visibility Gap
Most organizations log something. Almost none log everything they need for effective hunting. And even organizations that collect the right sources often have quality problems that silently break queries without producing obvious errors. A query that returns zero results could mean "no threat found" or it could mean "this log source is broken." Without a data quality baseline, you cannot tell the difference.
Three distinct types of gaps affect hunt capability:
| Gap Type | What It Means | Example | How to Detect It |
|---|---|---|---|
| Collection Gap | The log source exists on the endpoint or network device but is not forwarded to the SIEM | Sysmon is deployed but the Windows Event Forwarding rule does not include the Sysmon channel | Query the SIEM for recent Sysmon events from a known host. If nothing returns, the collection is broken. |
| Retention Gap | Logs are collected but deleted before they are useful for hunting | Security events retained for 7 days. Attacker persisted for 14 days. Hunt cannot reach the initial access event. | Query for the oldest event in the log source. If it is less than 30 days old, retention is insufficient for most hunts. |
| Quality Gap | Logs are forwarded but missing critical fields, truncated, or missing required audit configuration | Event 4688 collected but CommandLine field is empty because GPO "Include command line in process creation events" is not enabled | Sample recent events and inspect critical fields. A 4688 without CommandLine is useless for process hunting. |
Adversaries know about visibility gaps. They operate in them deliberately. An attacker who understands that most organizations do not monitor WMI activity will use WMI for lateral movement exclusively. An actor who knows DNS logs are rarely parsed will use DNS tunneling for C2. Closing gaps eliminates their advantage in those specific areas.
The practical goal of this chapter: build a complete map of what you have, what you are missing, and what each gap costs in ATT&CK technique coverage. That map becomes the foundation for both your hunt prioritization and your telemetry improvement roadmap.
Endpoint Telemetry
Endpoint telemetry is the highest-value data source category for threat hunting. Adversaries spend most of their time on endpoints: executing code, reading credentials, modifying registry keys, moving files, making network connections. Everything they do leaves a trace in endpoint logs.
Windows Event Logs: The Minimum Viable Set
Windows Event Logs are available on every Windows system without additional software. They require specific audit policy configuration to be useful. The default audit policy is insufficient for hunting.
| Event ID | Description | Critical Fields | Hunt Use Case |
|---|---|---|---|
| 4624 | Successful logon | LogonType (2=interactive, 3=network, 10=remote interactive), SubjectUserName, WorkstationName | Lateral movement (Type 3), pass-the-hash (Type 3 from unusual source), RDP (Type 10) |
| 4625 | Failed logon | FailureReason, SubjectUserName, WorkstationName, IpAddress | Password spray (many accounts, few attempts each), brute force (many attempts, one account) |
| 4648 | Logon using explicit credentials | SubjectUserName, TargetUserName, TargetServerName | Pass-the-hash, runas execution, credential relay attacks |
| 4688 | Process creation | NewProcessName, CommandLine (requires GPO), ParentProcessName, SubjectUserName | Execution hunting, LOLBin abuse, encoded commands, unusual process parents |
| 4698 / 4702 | Scheduled task created / modified | TaskName, TaskContent (XML with command details) | Persistence detection, scheduled task abuse for execution |
| 4768 / 4769 | Kerberos TGT / TGS request | AccountName, ServiceName, ClientAddress, TicketEncryptionType, TicketOptions | Kerberoasting (4769 with RC4 EncType 0x17), AS-REP roasting (4768 without pre-auth) |
| 4776 | NTLM credential validation | TargetName, Workstation, Status | Pass-the-hash patterns, NTLM relay indicators |
| 5140 / 5145 | Network share accessed / share object access check | SubjectUserName, ShareName, ShareLocalPath, IpAddress | Lateral movement via SMB (5140 ADMIN$ or C$), data collection via share access |
| 7045 | New service installed (System channel) | ServiceName, ImagePath, ServiceType, StartType, AccountName | Persistence via malicious service, many implants use service installation |
| 4103 / 4104 | PowerShell Module Logging / Script Block Logging | ScriptBlockText (4104: full decoded script), MessageNumber, Path | PowerShell-based execution, obfuscated commands decoded, download cradles, C2 communication |
Sysmon: The Threat Hunter's Primary Source
System Monitor (Sysmon) is a Windows system service and device driver that logs detailed process and network activity to the Windows Event Log. It provides data that Windows native logging cannot: full process hash, parent command line in process creation events, DLL load events, process access events (critical for LSASS detection), and DNS query logs from individual processes.
Sysmon must be deployed with a thoughtful configuration. The default minimal config captures everything and produces enormous volumes. The hunt-optimized config captures signal-rich events while filtering known-good noise.
| Event ID | Name | What It Logs | Primary Hunt Value |
|---|---|---|---|
| Sysmon 1 | Process Create | Full process details: hash, parent, full CommandLine, ParentCommandLine, working directory, user | Best execution visibility. Includes parent command line, which Windows 4688 lacks. |
| Sysmon 3 | Network Connection | Source/dest IP and port, protocol, process that made the connection, DNS resolution result | C2 detection, lateral movement network traces, unusual outbound from LOLBins |
| Sysmon 7 | Image Load | DLL loaded into a process: image path, hash, signed status, process that loaded it | DLL injection detection, hijacking, unsigned DLLs in signed processes |
| Sysmon 10 | Process Access | Process opening another process with specific access rights (GrantedAccess) | LSASS credential theft (GrantedAccess 0x1FFFFF or 0x1010 on lsass.exe), process injection |
| Sysmon 11 | File Create | File written to disk: full path, hash, creating process | Payload staging, dropper activity, suspicious file creation in temp directories |
| Sysmon 13 | Registry Value Set | Registry key write: path, value name, data, writing process | Registry persistence (Run keys), malware configuration storage, defense evasion |
| Sysmon 22 | DNS Query | DNS lookup performed by a process: query name, query results, querying process | C2 domain resolution, DGA detection, DNS tunneling, process-level DNS visibility |
| Sysmon 25 | Process Tampering | Process image replaced, hollowed, or herpaderped | Process hollowing (T1055.012), herpaderping, indirect command execution via spoofed image |
A minimal Sysmon configuration optimized for hunting credential theft, execution, network C2, and persistence:
<!-- Minimal Sysmon hunting configuration -->
<!-- Focus: credential theft, execution, network C2, persistence -->
<Sysmon schemaversion="4.90">
<EventFiltering>
<!-- Event 1: Process Create - capture all, exclude common noise -->
<RuleGroup name="" groupRelation="or">
<ProcessCreate onmatch="exclude">
<Image condition="is">C:\Windows\System32\conhost.exe</Image>
</ProcessCreate>
</RuleGroup>
<!-- Event 3: Network connections - exclude high-volume known-good -->
<RuleGroup name="" groupRelation="or">
<NetworkConnect onmatch="exclude">
<!-- Exclude svchost to port 443 (Windows Update noise) -->
<Image condition="is">C:\Windows\System32\svchost.exe</Image>
</NetworkConnect>
</RuleGroup>
<!-- Event 7: Image Load - only capture unsigned or suspicious -->
<RuleGroup name="" groupRelation="or">
<ImageLoad onmatch="include">
<Signed condition="is">false</Signed>
</ImageLoad>
</RuleGroup>
<!-- Event 10: Process Access - capture LSASS reads (critical) -->
<RuleGroup name="" groupRelation="or">
<ProcessAccess onmatch="include">
<TargetImage condition="end with">lsass.exe</TargetImage>
</ProcessAccess>
</RuleGroup>
<!-- Event 11: File Create - capture drops in suspicious locations -->
<RuleGroup name="" groupRelation="or">
<FileCreate onmatch="include">
<TargetFilename condition="contains">\Temp\</TargetFilename>
<TargetFilename condition="contains">\AppData\Roaming\</TargetFilename>
<TargetFilename condition="end with">.exe</TargetFilename>
<TargetFilename condition="end with">.dll</TargetFilename>
<TargetFilename condition="end with">.ps1</TargetFilename>
</FileCreate>
</RuleGroup>
<!-- Event 13: Registry Value Set - capture persistence-relevant keys -->
<RuleGroup name="" groupRelation="or">
<RegistryEvent onmatch="include">
<TargetObject condition="contains">Run</TargetObject>
<TargetObject condition="contains">RunOnce</TargetObject>
<TargetObject condition="contains">CurrentVersion\Image File Execution</TargetObject>
</RegistryEvent>
</RuleGroup>
<!-- Event 22: DNS Query - capture all (high value, low volume) -->
<RuleGroup name="" groupRelation="or">
<DnsQuery onmatch="exclude">
<!-- Optionally exclude known-good Windows domains -->
<QueryName condition="end with">.microsoft.com</QueryName>
</DnsQuery>
</RuleGroup>
</EventFiltering>
</Sysmon>
| Source | Coverage Depth | Deployment Complexity | Cost | Key Gap Filled |
|---|---|---|---|---|
| Windows Event Logs | Medium (config-dependent) | Low (built-in, GPO-configurable) | None | Authentication, process creation baseline, Kerberos, service installs |
| Sysmon | High | Medium (config management required) | None (free from Microsoft) | LSASS access, DLL loads, DNS per-process, network per-process, hash values |
| EDR | Very High | Medium (agent deployment) | Significant license cost | Memory analysis, behavioral analytics, process trees, response actions |
Network Telemetry
Network telemetry is the second pillar of hunt visibility. It covers what endpoint logs miss: traffic between hosts that have no EDR agent, east-west movement within segments, and command-and-control communication patterns that are invisible in process logs but obvious in flow data.
DNS Logs: Highest Return on Investment
DNS logs are the most underused hunt data source in most environments. Every C2 beacon performs a DNS resolution. Every DGA domain gets queried. DNS tunneling encodes data directly in query names. And yet most SIEMs have DNS logs disabled or unforwarded.
| DNS Indicator | What It Looks Like | Hunt Query Approach |
|---|---|---|
| DGA domain | High-entropy labels, random-looking strings (e.g., xk3m9p2.example.com), unusual TLDs | Frequency analysis on query label entropy. Filter for labels with Shannon entropy above 3.5. |
| DNS tunneling | Query labels longer than 45-50 characters. Very high query frequency to one domain. TXT record requests. | Measure label length. Count queries per domain per host per hour. Threshold on both volume and length. |
| C2 resolution | Recently registered domain (less than 30 days old), resolves to cloud/CDN IP, queried only by one or two hosts | Enrich DNS results with domain age and registrar data. Flag low-prevalence domains. |
| Long TTL C2 | C2 domain resolved once and cached with high TTL, subsequent DNS traffic absent but C2 continues | Correlate DNS resolution events with subsequent network connections to same IP. Gap between DNS and connection is suspicious. |
// Hunt for DNS tunneling: abnormally long query labels (T1071.004)
// DNS tunneling encodes data in subdomains, producing long and often
// encoded label strings. Normal DNS labels rarely exceed 30 characters.
DnsEvents
| where SubType == "LookupQuery"
| extend LabelLength = strlen(extract(@"^([^.]+)", 1, Name))
| where LabelLength > 45
| summarize
TotalQueries = count(),
UniqueLabels = dcount(Name),
SampleLabels = make_set(Name, 5)
by Computer, bin(TimeGenerated, 1h)
| where TotalQueries > 20 or UniqueLabels > 10
| order by TotalQueries desc
Web Proxy Logs
Proxy logs capture HTTP metadata: method, full URL, user agent, response code, request and response bytes, referrer. This data is essential for detecting staged payload downloads, suspicious user agents, large outbound POST requests (exfil), and C2 traffic patterns.
- Staged downloads: GET requests from processes that should not browse the web (regsvr32.exe, certutil.exe, bitsadmin.exe) to external hosts. URL often ends in .dat, .txt, .gif (disguised payload).
- Suspicious user agents: curl, python-requests, empty string, randomized or missing user agents indicate scripted access, not browser traffic.
- Exfil indicator: Large POST requests (megabytes) to external hosts not matching known SaaS destinations. Especially from servers that do not normally initiate outbound web traffic.
- HTTP C2 beaconing: Fixed-interval GET requests with small response sizes to the same URL. Jitter is common (small random variation in interval). Look at time deltas between consecutive requests from the same process to the same host.
NetFlow and IPFIX
NetFlow captures connection metadata without payload: source IP, destination IP, source port, destination port, protocol, byte count, packet count, start time, end time. It does not require proxy deployment and covers all traffic, not just HTTP.
| Log Source | Best Hunt Use Case | Minimum Retention | Priority |
|---|---|---|---|
| DNS logs | C2 domain resolution, DGA, DNS tunneling, low-prevalence domain access | 30 days | Critical |
| Web proxy logs | Payload download, user agent anomalies, HTTP C2 beaconing, exfil via HTTP | 30 days | Critical |
| NetFlow / IPFIX | East-west scanning, large data transfers, beaconing pattern analysis | 90 days | High |
| Full PCAP | Targeted deep analysis of specific connection, payload extraction | 7 days (targeted) | Medium (rarely available at scale) |
Identity and Authentication Telemetry
Active Directory is the primary target in the vast majority of enterprise intrusions. Compromising AD means compromising everything it controls: access to file servers, databases, cloud workloads, remote management systems, and backup infrastructure. Identity telemetry is where the attack chain is most visible, yet it is consistently underutilized because the relevant event IDs require specific configuration and the volume is high.
| Event ID | Description | Hunt Significance | Key Fields |
|---|---|---|---|
| 4624 Type 3 | Network logon success | Lateral movement: one host authenticating to another via network. Look for unusual source/destination pairs and unusual account types. | SubjectUserName, WorkstationName, IpAddress, LogonType |
| 4625 | Logon failure | Password spray: many different accounts with a few failures each within a short window. Brute force: many failures on one account from one source. | TargetUserName, IpAddress, FailureReason, SubStatus |
| 4769 RC4 | Kerberos service ticket (TGS) requested | Kerberoasting: attacker requests TGS with RC4 encryption (EncryptionType 0x17) for offline password cracking. Normal Kerberos uses AES. | AccountName, ServiceName, TicketEncryptionType (0x17 = RC4), ClientAddress |
| 4776 | NTLM credential validation | Pass-the-hash: NTLM auth from an unusual source, especially where Kerberos should be used. Also visible in NTLM relay attacks. | TargetName, Workstation, Status |
| 4720 / 4722 / 4728 | Account created / enabled / added to security group | Persistence via rogue account creation. An attacker who creates a new admin account has persistence that survives password resets of known accounts. | SubjectUserName, SamAccountName, GroupName |
| 4732 | Member added to security-enabled local group | Privilege escalation indicator. Adding an account to Administrators or Remote Desktop Users is a common attacker action after initial compromise. | MemberName, GroupName, SubjectUserName |
// Hunt for Kerberoasting: multiple RC4-encrypted TGS requests (T1558.003)
// Attacker requests service tickets with RC4 encryption type for offline cracking.
// Legitimate Kerberos environments prefer AES (EncType 0x12 or 0x11).
// RC4 (EncType 0x17) is a strong indicator of Kerberoasting activity.
SecurityEvent
| where EventID == 4769
| where TicketOptions == "0x40810000"
| where TicketEncryptionType == "0x17" // RC4-HMAC: weak, chosen by attackers
| where ServiceName !endswith "$" // Exclude machine account service tickets
| where AccountName !endswith "$" // Exclude machine accounts as requestors
| summarize
RequestCount = count(),
TargetAccounts = make_set(ServiceName, 20),
SourceHosts = make_set(IpAddress, 5)
by AccountName, bin(TimeGenerated, 30m)
| where RequestCount >= 3
| order by RequestCount desc
Azure AD / Entra ID adds additional identity telemetry for hybrid and cloud environments:
- Sign-in Logs: Risky sign-in flags (Microsoft's own risk engine), MFA status, conditional access result, location and IP. Essential for detecting impossible travel, token theft, and legacy protocol abuse.
- Audit Logs: Role assignment changes, group membership changes, conditional access policy modifications. An attacker who weakens a Conditional Access policy has changed your security posture without touching an endpoint.
- Identity Protection: Microsoft's ML-flagged risk events. Even if you do not block on risk, use these events as hunt seeds for the highest-risk accounts.
Cloud Telemetry
Cloud fundamentally changes the threat model. There is no network perimeter. Every action is an API call. Resources appear and disappear in minutes. Adversaries who compromise cloud environments operate entirely differently from on-premises attackers: they do not pivot across endpoints, they pivot across IAM roles and service accounts.
AWS CloudTrail
CloudTrail logs every API call made in an AWS account: who made it, from where, at what time, and with what parameters. For a threat hunter, this is the equivalent of Sysmon for the cloud. Every action an attacker takes produces a CloudTrail event.
Key patterns to hunt for:
- AssumeRole chains: One compromised role used to assume another, building toward a privileged role. Map the chain of AssumeRole events from a single external IP.
- IAM user creation + admin policy attachment: CreateUser followed by AttachUserPolicy with an admin ARN in the same short window. Classic persistence move.
- API calls from unusual regions: If your organization only operates in us-east-1 and eu-west-1, an API call from ap-southeast-2 warrants investigation.
- Mass S3 GetObject: Hundreds or thousands of GetObject calls in a short window from a single identity. Data exfiltration pattern.
Azure Activity Log and Entra ID
| Log Source | Key Hunt Patterns | ATT&CK Technique |
|---|---|---|
| Azure Activity Log | PIM role activation at unusual hours, resource group deletions, VNet peering changes, VM snapshot exports | T1078.004, T1562, T1537 |
| Entra ID Sign-in Logs | MFA bypass via legacy protocol auth, impossible travel, Conditional Access policy failure patterns, token refresh without MFA | T1078.004, T1556.006 |
| Entra ID Audit Logs | Conditional Access policy weakening, new application permissions granted, privileged role assignment | T1484.002, T1098.003 |
| Microsoft 365 Unified Audit Log | Mail forwarding rules created, OAuth apps granted broad permissions, bulk email download, eDiscovery searches by non-legal users | T1114.003, T1548.005, T1567 |
Mail forwarding rules are among the highest-yield BEC (Business Email Compromise) indicators. An attacker who gains mailbox access creates a forwarding rule to an external address. Every email the victim receives is now silently copied to the attacker. This can persist for months. The ExchangeTransportConfig event in the M365 Audit Log captures rule creation. It should be monitored for any rule that forwards to an external domain.
// Hunt for impossible travel in Microsoft 365 / Entra ID (T1078.004)
// Successful logins from two geographically distant locations within
// a timeframe that makes physical travel impossible (less than 2 hours).
// This is a strong indicator of credential theft or session token reuse.
SigninLogs
| where ResultType == "0" // Successful sign-in only
| where UserType == "Member" // Exclude guest accounts and service principals
| summarize
SigninCount = count(),
Locations = make_set(Location, 10),
IPAddresses = make_set(IPAddress, 10),
FirstSeen = min(TimeGenerated),
LastSeen = max(TimeGenerated)
by UserPrincipalName, bin(TimeGenerated, 2h)
| where array_length(Locations) > 1 // Multiple locations in 2-hour window
| extend DurationMinutes = datetime_diff('minute', LastSeen, FirstSeen)
| where DurationMinutes < 120 // Two locations within 120 minutes
| project
TimeGenerated,
UserPrincipalName,
Locations,
IPAddresses,
SigninCount,
DurationMinutes
| order by DurationMinutes asc
MITRE ATT&CK Data Sources Mapping
ATT&CK version 14 introduced a structured Data Sources taxonomy. Each technique now explicitly lists which Data Sources and Data Components are needed to detect it. This taxonomy is the bridge between "I want to hunt for T1003.001" and "which log source do I need?"
The hierarchy: Data Source contains Data Components. A Data Component represents a specific observable within a source. Each Data Component has a detection relationship with specific ATT&CK techniques.
Data Source: "Process" contains Data Component "Process Creation." Process Creation has a detection relationship with T1059.001 (PowerShell execution), T1047 (WMI execution), T1053.005 (Scheduled Task execution), and approximately 200 other techniques. Enabling Sysmon Event 1 (Process Create) or Windows Event 4688 gives you Process Creation telemetry, covering all those techniques simultaneously.
| Data Source | Key Component | ATT&CK Coverage (approx.) | Implementation |
|---|---|---|---|
| Process | Process Creation | ~200 techniques | Sysmon Event 1 or Event 4688 with CommandLine enabled |
| Network Traffic | Network Connection Creation | ~120 techniques | Sysmon Event 3, NetFlow, EDR network telemetry |
| File | File Creation | ~100 techniques | Sysmon Event 11, EDR file monitoring |
| Windows Registry | Registry Key Modification | ~80 techniques | Sysmon Event 13, Windows Event 4657 |
| Command | Command Execution | ~90 techniques | Event 4688 CommandLine, Sysmon 1, PowerShell 4104 |
| Logon Session | Logon Session Creation | ~60 techniques | Windows Security Events 4624, 4648, 4768, 4769 |
The "big three" data sources cover approximately 60% of all ATT&CK techniques: Process Creation, Network Connection Creation, and DNS Query. These three are the non-negotiable minimum. An organization with reliable data flowing in all three can hunt the majority of the ATT&CK technique catalog.
Gap Analysis Process
- List every confirmed log source you collect and forward to your SIEM.
- Map each log source to its ATT&CK Data Source and Data Component (reference the ATT&CK Data Sources page).
- In ATT&CK Navigator, create a layer marking covered Data Components in cyan and uncovered ones unmarked.
- The uncovered techniques are your gap list. Prioritize them by technique frequency (Red Canary top 10 from Chapter 2) and business impact.
- For each gap, identify the log source needed and the implementation cost. Escalate as a security control deficiency.
Data Quality Assessment
Collecting logs is necessary. Quality makes them huntable. A log source with critical fields missing or truncated provides false confidence: you believe you can detect a technique because you "have the logs," but the missing field means your query will never return a result even if the attacker is active.
| Quality Failure | Detection Impact | Fix |
|---|---|---|
| Event 4688 without CommandLine field | You see a process was created, not what it did. Process-based hunting is blind. | Enable via GPO: Audit Process Creation policy + "Include command line in process creation events" |
| Sysmon deployed with outdated config missing Event 10 | Cannot detect LSASS reads. The most common credential theft method is invisible. | Update Sysmon config to include ProcessAccess rules targeting lsass.exe |
| DNS logs with truncated query names | Long DGA or tunneling labels are cut off. Pattern detection fails silently. | Review DNS server log configuration. Windows DNS debug log defaults to 255-char limit, confirm it is not lower. |
| Proxy logs without user agent or response size | Cannot detect scripted downloads, suspicious user agents, or large exfil via HTTP POST. | Review proxy log format. Ensure extended W3C format fields are enabled: cs(User-Agent), sc-bytes, cs-bytes. |
| Kerberos events enabled on some DCs but not all | Attacker routes Kerberoasting requests through an uncovered DC. No events generated. | Confirm 4768/4769 audit policy is consistent across ALL Domain Controllers. |
Data quality checklist to run before scheduling any hunt:
TELEMETRY QUALITY CHECKLIST
Run before scheduling any hunt sprint.
Endpoint - Windows:
[ ] Event 4688 includes full CommandLine field on target hosts?
Test: query recent 4688 events and check CommandLine is populated.
[ ] Sysmon Event 1 includes ParentCommandLine field?
[ ] Sysmon Event 10 (ProcessAccess) enabled with lsass.exe rules?
Test: confirm recent events for EventID 10 targeting lsass.exe exist.
[ ] PowerShell Script Block Logging (Event 4104) enabled via GPO?
Test: run a test PowerShell command, verify 4104 event appears in SIEM.
[ ] Sysmon Event 22 (DNS Query) deployed on endpoint set?
Network:
[ ] DNS events include full query name (not truncated beyond 45 chars)?
[ ] Proxy logs include full URL, User-Agent, and response bytes?
[ ] Kerberos events (4768, 4769) collected from ALL Domain Controllers?
Verify count of DCs forwarding events matches total DC count.
Identity / Cloud:
[ ] Azure AD Sign-in logs flowing to SIEM (if hybrid/cloud)?
[ ] M365 Unified Audit Log enabled and forwarding?
[ ] CloudTrail logs covering all regions and accounts (if AWS)?
Retention:
[ ] Log retention minimum 30 days in SIEM for all sources?
[ ] High-value sources (Security events, Sysmon) retained 90 days?
Quality Validation:
[ ] Run quality test query (see below) on 4688 CommandLine coverage.
[ ] Spot-check 5 random Sysmon Event 1 records: all fields populated?
A KQL query to validate that Event 4688 is actually including the CommandLine field across your endpoints:
// Validate Event 4688 CommandLine field coverage per host
// If CoveragePct is 0: "Include command line in process creation events" GPO
// setting is not enabled on that host.
// If CoveragePct is low (under 90%): partial GPO application or mixed configs.
SecurityEvent
| where EventID == 4688
| where TimeGenerated > ago(1h)
| summarize
TotalEvents = count(),
WithCommandLine = countif(isnotempty(CommandLine)),
WithoutCommandLine = countif(isempty(CommandLine))
by Computer
| extend CoveragePct = round(100.0 * WithCommandLine / TotalEvents, 1)
| where CoveragePct < 90 // Flag any host below 90% CommandLine coverage
| order by CoveragePct asc
// Output: hosts with incomplete CommandLine auditing.
// Remediation: apply GPO to the OU containing these computers.
Key Takeaways
- Three gap types affect hunt capability: collection (logs not forwarded), retention (logs deleted too soon), and quality (logs forwarded with missing fields). All three must be audited before scheduling hunts.
- Sysmon Event 10 (ProcessAccess) is the primary data source for LSASS credential theft detection. Without it, the most common credential dumping method is invisible in your telemetry.
- Kerberoasting (T1558.003) produces Event 4769 with TicketEncryptionType 0x17 (RC4-HMAC). This is the only reliable indicator. Failed login monitoring (4625) will not surface Kerberoasting at all.
- DNS logs are the highest return-on-investment network telemetry for hunting. DNS tunneling detection requires measuring query label length. DGA detection requires entropy analysis. Both require the full query name field to be present.
- The three non-negotiable data sources (Process Creation, Network Connection Creation, DNS Query) cover approximately 60% of all ATT&CK techniques. These are the floor for any hunt program.
- Event 4688 without the CommandLine field enabled is nearly useless for execution hunting. Verify this GPO setting is applied across all endpoints before planning any process-based hunt.
- Use the ATT&CK Navigator to map your data sources to technique coverage. Uncovered techniques are security control gaps, not just hunt gaps. Escalate them accordingly.
Knowledge Check
Click an answer to reveal the explanation.
Q1. Which Sysmon event ID is the primary source for detecting LSASS credential theft attempts?
Q2. What TicketEncryptionType value in Event 4769 indicates potential Kerberoasting activity?
Q3. What characteristic of DNS queries is the primary indicator of DNS tunneling exfiltration?
Q4. Which three data sources combined provide approximately 60% coverage of MITRE ATT&CK techniques?
Q5. Event 4688 is collected from all endpoints, but hunt queries for encoded PowerShell return zero results. What is the most likely cause?