Fundamentals

T1059, T1003, T1055, T1204, T1562

EDR Basics

A comprehensive guide to endpoint detection and response — what telemetry EDR collects, how to triage alerts, vendor capabilities, detection queries, EDR bypass techniques, and hardening best practices for SOC analysts.

View on Graph

What EDR Actually Does

  • Endpoint detection and response is security software focused on endpoint visibility, detection, investigation, and response.
  • Instead of only checking whether a file is known malware (traditional antivirus), EDR watches behavior at the OS and kernel level — process creation, command-line activity, file changes, logons, network connections, registry modifications, and suspicious parent-child process relationships.
  • Good EDR alerts should be near real time, actionable, and connected to enough evidence for an analyst to understand scope without chasing a dozen different log sources.
  • EDR differs from antivirus in its response capability: isolate a host, kill a process, quarantine a file, collect a memory dump, run a script — all from the console without needing hands on the keyboard.

EDR Telemetry Sources — What Your EDR Collects

The value of EDR depends entirely on the breadth and depth of its telemetry. A sensor that only records process creation is blind to half the attack surface.

Telemetry TypeWhat It CapturesWindows Event IDAnalyst Use
Process creationParent PID, child PID, command line, user, image path4688 (EventID 1 in Sysmon)Core of every investigation. Identify suspicious parent-child relationships (e.g., winword.exe spawning powershell.exe)
Network connectionsSource IP, dest IP, port, protocol, process that initiated the connection5156 (Windows Filtering Platform), Sysmon EventID 3Identify C2 beaconing, data exfiltration, lateral movement traffic
File creation / modificationFile path, user, process that created the file, old vs. new hashes4663, Sysmon EventID 11Detect malware drops, script files, renamed executables
Registry changesKey path, value name, old data, new data, process4657, Sysmon EventID 12-14Detect persistence mechanisms (Run keys), defense evasion (tampering with security settings)
Script executionPowerShell, WMI, JScript, VBScript execution with full command line4104 (PowerShell ScriptBlock Logging), 4688Detect in-memory execution, encoded commands, LOLBins
Scheduled task creationTask name, trigger, action, user4698, Sysmon EventID 1 (via taskeng.exe spawn)Detect persistence via scheduled tasks
Service creation / modificationService name, image path, start type, user7045 (Service Install), Sysmon EventID 1Detect persistence via services, service binary hijacking
Driver loadDriver name, image path, hash, signatureSysmon EventID 6Detect kernel-mode rootkits, vulnerable driver abuse (Bring Your Own Vulnerable Driver)
DNS queryQuery domain, process, resultSysmon EventID 22 (must be enabled)Detect DGA, DNS tunneling, C2 callbacks
Logon / logoffLogon type (2=interactive, 3=network, 10=remote), source IP, account4624, 4625, 4648Detect lateral movement, brute-force attempts, anomalous logon patterns
Process accessWhich process opened a handle to another process (e.g., LSASS access)Sysmon EventID 10Detect credential dumping (lsass.exe access by procdump.exe or mimikatz.exe)
Named pipe creation / connectionPipe name, process creating and connecting to pipeSysmon EventID 17, 18Detect Cobalt Strike named pipe communication, lateral movement

Critical Telemetry Gaps to Check

GapWhy It MattersHow to Verify
PowerShell ScriptBlock Logging disabledBlocks visibility into obfuscated PowerShell commandsCheck HKLM\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
Sysmon not installedMissing EventID 1 (detailed process tree), EventID 10 (process access), EventID 3 (network), EventID 22 (DNS)Check services.msc or Get-Service Sysmon*
Command-line logging disabledProcess creation events with no command line = uselessCheck HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableCommandLineToEventLog
DNS query logging not enabledEDR cannot detect DNS tunneling or DGAEnable Sysmon EventID 22 or DNS query logging at the EDR sensor level
4688 process auditing not configuredEDR relies on OS audit policies — disablement = blindCheck secpol.msc → Advanced Audit Policy → Detailed Tracking → Audit Process Creation

Detection — EDR Alert Triage

Step-by-Step Triage Workflow

When an EDR alert fires, do not click “resolve” until you have answered every question in this workflow:

Alert received


Step 1: Determine the alert type
   ├─ Malware detection (file hash match, AMSI trigger, signature match)
   ├─ Behavioral detection (suspicious process tree, anomalous network connection)
   ├─ Indicator match (IOC match from threat intel)
   └─ Custom rule trigger (detection rule written by your team)


Step 2: Examine the process tree
   ├─ What process spawned the alerting process?
   ├─ What did the alerting process spawn?
   ├─ What command line arguments were passed?
   ├─ Is the process running from a normal location? (C:\Windows\System32 vs C:\Users\Public\Downloads)
   └─ Is the process signed? (Microsoft signed? Signed by an unknown publisher?)


Step 3: Scope the host
   ├─ What network connections did it make in the last 24 hours?
   ├─ What file system changes preceded the alert? (script files dropped? DLLs written?)
   ├─ What registry persistence mechanisms were created?
   ├─ What other processes ran under the same user account?
   └─ Is the host domain-joined? (enables lateral movement analysis)


Step 4: Scope the environment
   ├─ Does the same indicator appear on other endpoints?
   ├─ Is this a known attacker behavior pattern? (common TTP mapping)
   ├─ Does the parent process correlate with a known campaign?
   └─ Have any other alerts fired in the same time window?


Step 5: Determine response
   ├─ Isolate the host (immediately if high confidence / active C2)
   ├─ Kill the process
   ├─ Quarantine the file
   ├─ Collect a full memory dump
   └─ Initiate formal incident response process if evidence suggests hands-on-keyboard activity

Critical Indicators by EDR Telemetry Type

Process tree anomalies (always investigate):

Parent ProcessChild ProcessLikely TTP
winword.exe / excel.exepowershell.exe / cmd.exeMalicious macro — T1204 (User Execution), T1059 (Command and Scripting Interpreter)
outlook.exepowershell.exe / wscript.exeEmail-based initial access with script execution
wmiprvse.exepowershell.exe / cmd.exeWMI lateral movement — T1047 (Windows Management Instrumentation)
svchost.exeregsvr32.exeDLL execution via COM or service — T1218.010 (Regsvr32)
explorer.exepowershell.exe with -EncodedCommandUser double-clicked a malicious script — T1204.002
services.exebinary in non-standard path (C:\Users\Public\)Service persistence with suspicious binary — T1543.003
taskeng.exepowershell.exe / cmd.exeScheduled task persistence or execution — T1053.005

Memory / handle access anomalies:

Target ProcessSource ProcessSuspicious?
lsass.exeany process other than Lsaiso.exe, TrustedInstaller.exe, or Csrss.exeYES — possible credential dumping (T1003.001)
winlogon.exeany non-system processYES — possible credential dumping (T1003)
svchost.exe (LSASS-related)non-system processInvestigate — possible credential or token manipulation

SPL Query — Find LSASS Handle Events

index=endpoint sourcetype=process_access
| search target_process="lsass.exe"
| where source_process!="Lsaiso.exe" AND source_process!="TrustedInstaller.exe" AND source_process!="Csrss.exe"
| eval alert = if(source_process IN ("procdump*", "mimikatz*", "powershell*"), "HIGH — known credential dumping tool accessing LSASS", "MEDIUM — unknown process accessing LSASS — investigate")
| eval alert_severity = if(alert LIKE "HIGH%", "high", "medium")
| stats values(access_mask) as AccessMask, count by host, source_process, source_process_id, user, alert, alert_severity
| sort - count
| table host, source_process, user, AccessMask, count, alert

SPL Query — Find Suspicious Process Trees (Office → Script Host)

index=endpoint sourcetype=process_creation
| search parent_process IN ("winword.exe", "excel.exe", "powerpnt.exe", "outlook.exe")
| search child_process IN ("powershell.exe", "cmd.exe", "wscript.exe", "cscript.exe", "mshta.exe", "regsvr32.exe")
| eval alert = "HIGH — " . parent_process . " spawned " . child_process . " — malicious macro or document exploit"
| table _time, host, user, parent_process, parent_command_line, child_process, child_command_line, alert
| sort _time desc

EDR Vendor Comparison

No EDR is perfect. Each has strengths, blind spots, and operational trade-offs. The table below reflects common analyst experience as of early 2026.

VendorCore StrengthsKnown Blind SpotsBest For
Microsoft Defender for EndpointDeep Windows integration (kernel-level), excellent process tree visualization, built-in incident graph, strong for Azure/M365 environmentsLinux and macOS coverage is weaker than Windows; Linux agent can be resource-heavy; alert tuning requires ongoing effortMicrosoft-first shops; Windows-heavy environments; Azure customers
CrowdStrike FalconLightweight agent, strong cloud-native architecture, excellent threat intelligence overlay, fast detection triageNo on-premises management option; Linux/container coverage is good but less mature than Windows; higher per-endpoint costCloud-native environments; MSSPs; orgs with heavy container or Linux workloads
SentinelOne SingularityStrong autonomous response (automatic rollback), cross-platform (Windows, macOS, Linux), good ransomware protection via behavioral AIAlert details can be less granular than competitors; custom detection rules (STAR rules) are more limited than custom Sigma/Splunk rules; false positive tuning takes timeOrgs that want automated response; ransomware-focused environments; small SOC teams
Carbon Black (VMware/Broadcom)Deep process-level telemetry recording, strong for post-breach forensics with full event replay, earlier to market so mature detection librariesUI can feel dated compared to modern EDRs; Broadcom acquisition introduced pricing and support uncertainty; response capabilities less automatedOrgs with existing VMware investment; forensics-heavy workflows; mature SOC teams that want full telemetry
Cortex XDR (Palo Alto)Network + endpoint telemetry correlation (combines firewall, EDR, and cloud data), strong analytics, XQL query language for deep threat huntingHeavy agent; complex deployment; steep learning curve for custom queriesPalo Alto customers; orgs that want network + endpoint convergence; large enterprise
CybereasonGood process tree visualization (MalOp graph), strong correlation across telemetry types, intuitive UISmaller market share → fewer community detection rules; alert customization less flexible than CrowdStrike or SentinelOneOrgs that prioritize visual investigation flows; mid-market

Critical Evaluation Questions for Any EDR

  1. Can the agent survive a kernel-level attack? Does the sensor run in kernel mode? Can an attacker kill the agent with a simple taskkill?
  2. How does your EDR handle offline detection? If the host is disconnected from the network for 8 hours, does it replay telemetry on reconnect?
  3. What is the storage retention period? How far back can you search telemetry? 30 days? 90 days? 365 days?
  4. Can you write custom detection rules? Natively? Via Sigma? Via YARA? The flexibility to write custom rules directly matters more than the pre-built rule count.
  5. How does it handle macOS and Linux? If your environment is 50% Windows and 50% Linux, an EDR with weak Linux coverage leaves half your footprint unprotected.
  6. API maturity: Can you ingest alerts into your SIEM via API? Can you trigger response actions via API for SOAR integration?
  7. Agent resource consumption: CPU, memory, disk usage during baseline and during heavy scan. High overhead = user complaints = agents disabled.

EDR Bypass Techniques — How Attackers Evade Endpoint Sensors

Understanding EDR bypass is critical for analysts. When an EDR fails to detect an attack, it is often because the attacker used a known bypass technique — not because the EDR is broken.

TechniqueHow It WorksDetection Signal
DLL sideloadingPlace a malicious DLL in the search path of a legitimate signed executableDLL load events from non-standard paths; unsigned DLL loaded by signed executable (Sysmon EventID 7)
Process hollowingCreate a legitimate process in a suspended state, unmaps its original code, injects malicious code into the process memory, resumes the threadUnusual parent-child relationships; process creation followed by unexpected memory allocation (Sysmon EventID 8 — CreateRemoteThread)
Reflective DLL injectionLoad a DLL directly from memory without touching disk — no file to scanProcess access events (Sysmon EventID 10); memory region creation with RWX permissions (Sysmon EventID 7); no corresponding file creation for the loaded module
Living off the land (LOLBins)Use built-in Windows tools (PowerShell, WMI, certutil, bitsadmin, mshta) for malicious purposesCommand-line anomalies (PowerShell with -EncodedCommand); WMI process creation; BITS job creation for download)
ETW tamperingDisable or patch Event Tracing for Windows (ETW) providers that the EDR relies onETW session termination events; EtwEventWrite function patching; service or driver tampering that affects NtTraceEvent
Userland API hooking evasionUnhook or bypass EDR DLL hooks by loading clean ntdll.dll or using direct syscallsSuspicious memory allocation patterns; syscall instruction sequence detection; unexpected ntdll.dll loading patterns
EDR agent process terminationKill the EDR sensor process or serviceService stop events (EventID 7036); process termination events; gap in telemetry from a host
Driver blocklisting (BYOVD)Load a legitimate but vulnerable driver to disable or bypass kernel-mode EDR componentsDriver load events (Sysmon EventID 6); known vulnerable driver hash matches (check Microsoft’s vulnerable driver blocklist)
Certificate impersonationSign malware with a stolen or forged code signing certificateTelemetry gap during certificate validation; process runs signed with unexpected publisher name
Indirect syscallsExecute syscalls by hijacking the return address of a legitimate syscall in ntdll.dllHard to detect without kernel-mode EDR; call stack analysis in memory; behavioral detection (what the process does, not how it does it)

SPL Query — Detect Potential Process Injection (CreateRemoteThread)

index=endpoint sourcetype=process_access
| search access_mask="0x1FFFFF" (full access) OR access_mask="0x43A" (thread creation)
| eval alert = if(source_process="svchost.exe" OR source_process="wmiprvse.exe", "MEDIUM — unexpected CreateRemoteThread from " . source_process, "HIGH — CreateRemoteThread detected from " . source_process . " to " . target_process)
| table _time, host, source_process, source_process_id, target_process, target_process_id, access_mask, alert
| sort _time desc

EDR Triage Decision Matrix

When multiple alerts fire simultaneously, prioritize by this matrix:

Alert TypePriorityTriage Steps
LSASS access by non-system processCriticalImmediately isolate the host. Credential dumping is an active attack with lateral movement risk.
C2 beaconing (regular callbacks to unknown IP)CriticalIdentify C2 IP, block at firewall. Isolate host. Collect full memory dump before containment.
Ransomware behavior (mass file encryption)CriticalIsolate immediately. Identify patient zero. Check for lateral movement before containment.
Malicious macro execution (Office → PowerShell)HighKill the process chain. Quarantine the document. Check email logs for same attachment to other users.
Suspicious scheduled task creationHighExamine the task action and trigger. Check if the binary is known-good. Correlate with any preceding alerts.
Unknown service creationMediumExamine the service binary path, hash, signature. Check VirusTotal. Determine if admins were aware.
Beacon to known-bad domainHighBlock DNS query at resolver. Isolate host. Determine infection vector.
USB device connection (first time / new device)LowCheck if the device was expected. If not, escalate. USB-based attacks are rare but high impact.
PowerShell with -EncodedCommandHighDecode and inspect the command. Check the parent process. Most legitimate admin scripts do not use encoded commands.
Anomalous outbound SMB trafficCriticalSMB over the internet is almost never legitimate. Isolate the host and investigate immediately.

Prevention and Hardening — EDR Configuration Best Practices

Deployment-Level Controls

ControlImplementation
Agent coverage100% of endpoints must have an active EDR agent. No exclusions without documented justification and SOC approval.
Agent health monitoringDashboard showing agent version, last check-in time, telemetry health. Alert on any host with check-in > 30 minutes stale.
Tamper protectionEnable tamper protection on all endpoints. Prevents users (even admins) from stopping the EDR service.
Real-time protectionEnable real-time scanning and behavior monitoring. Do not rely on scheduled scans only.
Cloud-delivered protectionEnable cloud-based ML and reputation lookups. Offline-only detection misses new variants.
Attack surface reduction (ASR) rulesEnable ASR rules (Windows Defender): block Office apps from creating child processes, block script execution, block persistence via WMI.
Network protectionEnable network protection to block outbound connections to known-bad IPs and domains at the endpoint level.

Rule-Level Controls

Best PracticeWhy
Start with block mode for critical families (ransomware, credential dumping)Fewer false positives than strict block mode on everything. Tune alert rules first, then switch to block.
Create custom detection rules for high-value assetsDomain controllers, certificate servers, file servers, SQL servers — each needs behavioral rules tailored to its normal baseline.
Use exclusions sparingly and always log themEvery exclusion is a blind spot. Document the business reason, approve via change control, and audit monthly.
Integrate EDR alerts with SIEMEDR telemetry alone is insufficient. Correlating with email logs (exchange), DNS logs, and network flow data gives the full picture.
Enable automatic response for high-confidence alertsFor known ransomware patterns or LSASS access by unknown tools, auto-isolate the host. Speed matters — minutes can mean the difference between containment and encryption.

Analyst Workflow Integration

PracticeHow
Daily EDR alert triageReview all unacknowledged alerts within 2 hours. Document findings in the case management system.
Weekly threat huntingRun 3-5 hunting queries weekly (process tree anomalies, logon anomalies, LoLBins execution). Document findings even if negative.
Monthly rule tuningReview false positives and missed detections. Adjust detection rules. Retire rules that produce 100% noise.
Quarterly agent health reviewCheck agent versions, patch levels, and telemetry completeness. Update stale agents. Fill deployment gaps.

Sources