CHAPTER 04 30 MIN READ INTERMEDIATE

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.

logs EDR Sysmon

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.

Warning: A hypothesis you cannot test because the logs do not exist is not a hunt gap. It is a security control gap. Document it as such. The finding from a failed hunt (data gap discovered) goes to the security engineering team as a control deficiency, not back into the hunt backlog as a lower-priority task.

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
Warning: Event 4688 without CommandLine auditing enabled is nearly useless for process hunting. You see that a process was created, but not what it did. Enabling CommandLine in process creation events requires a specific GPO setting: Computer Configuration > Administrative Templates > System > Audit Process Creation > "Include command line in process creation events" = Enabled. Verify this is in place before planning any execution-based hunt.

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:

XML
<!-- 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.
KQL
// 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)
Tip: If you can enable one network log source today, enable DNS. The ratio of hunt value to implementation effort is better for DNS than any other network log type. DNS is lightweight, already traverses your DNS servers or resolvers, and covers C2 detection patterns that endpoint logs alone cannot surface.

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
Warning: Kerberoasting leaves no failed logon events. An attacker can request service tickets for every service account in the domain without producing a single 4625 (logon failure). If you rely only on failed login monitoring to detect credential attacks, you will miss Kerberoasting entirely. You need Event 4769 with EncryptionType 0x17 (RC4-HMAC) from your Domain Controllers. Confirm this event is being collected from ALL DCs: partial DC coverage creates blind spots where an attacker can route their requests through the uncovered DC.
KQL
// 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.

KQL
// 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
Note: False positive rate for impossible travel is higher than it appears. VPN endpoints, split-tunnel configurations, and Microsoft's location data (which is IP-based and can be wrong) all produce legitimate-looking impossible travel events. Tune by adding an allowlist for known VPN exit node IP ranges and verifying location data accuracy before escalating.

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.

Example Mapping:

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.

Note: Use the ATT&CK Navigator to create a heat map of your data source coverage. Load your confirmed log sources and map them to ATT&CK data sources. The techniques with no coverage are your hunt blind spots and your security control gaps. Prioritize closing the ones that correspond to high-frequency techniques (PowerShell, WMI, Process Injection, Credential Dumping) first.

Gap Analysis Process

  1. List every confirmed log source you collect and forward to your SIEM.
  2. Map each log source to its ATT&CK Data Source and Data Component (reference the ATT&CK Data Sources page).
  3. In ATT&CK Navigator, create a layer marking covered Data Components in cyan and uncovered ones unmarked.
  4. The uncovered techniques are your gap list. Prioritize them by technique frequency (Red Canary top 10 from Chapter 2) and business impact.
  5. 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:

CHECKLIST
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:

KQL
// 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.
Tip: Run quality checks before scheduling hunts, not after. A broken log source is worse than no log source: it gives you false confidence in your detection coverage. Zero results from a hunt may mean "no threat found" or "the data was never there." Only a pre-hunt quality check tells you which it is.
Warning: Do not treat data quality as a one-time project. Log pipeline changes, EDR agent updates, Sysmon config drift, and GPO inheritance breaks all silently degrade data quality over time. Schedule a monthly quality sweep using the checklist above. Assign it to a specific analyst and track results in your hunt backlog.

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?

  • A. Sysmon Event 1 (Process Create)
  • B. Sysmon Event 3 (Network Connection)
  • C. Sysmon Event 10 (Process Access)
  • D. Sysmon Event 22 (DNS Query)

Q2. What TicketEncryptionType value in Event 4769 indicates potential Kerberoasting activity?

  • A. 0x11 (AES128-CTS-HMAC-SHA1)
  • B. 0x12 (AES256-CTS-HMAC-SHA1)
  • C. 0x17 (RC4-HMAC)
  • D. 0x18 (RC4-HMAC-EXP)

Q3. What characteristic of DNS queries is the primary indicator of DNS tunneling exfiltration?

  • A. High-frequency queries to well-known domains like google.com
  • B. NXDOMAIN (non-existent domain) responses in high volume
  • C. Abnormally long subdomain labels (over 45-50 characters) encoding data
  • D. DNS queries using UDP port 53 instead of TCP

Q4. Which three data sources combined provide approximately 60% coverage of MITRE ATT&CK techniques?

  • A. Windows Security Events, PowerShell Logs, and Proxy Logs
  • B. NetFlow, Full PCAP, and Web Application Firewall Logs
  • C. Process Creation, Network Connection Creation, and DNS Query
  • D. Registry Modification, File Creation, and Logon Session Creation

Q5. Event 4688 is collected from all endpoints, but hunt queries for encoded PowerShell return zero results. What is the most likely cause?

  • A. PowerShell has been removed from those endpoints by the security team
  • B. The ATT&CK technique T1059.001 does not appear in Event 4688
  • C. The GPO setting "Include command line in process creation events" is not enabled, so the CommandLine field is empty
  • D. Encoded PowerShell commands are encrypted and cannot appear in logs
VISITORS
VISITORS