7.3 Attack Surface Reduction (ASR) Rules
Attack Surface Reduction (ASR) Rules
By the end of this subsection, you will understand what ASR rules prevent, know which rules to enable first, operate the audit-to-block workflow, and monitor ASR events with KQL.
ASR rules are preventive controls, not detection rules. They block specific high-risk behaviors at the endpoint level before malware can execute. A blocked Office macro never generates an incident to investigate — the attack chain is broken at the first step.
ASR vs EDR — different layers, complementary
| Feature | ASR rules | EDR |
|---|---|---|
| Function | Prevents execution (blocks the behavior) | Detects and alerts during/after execution |
| Timing | Before the attack chain begins | During or after the attack chain |
| Output | Block event (logged, optional alert) | Alert, incident, investigation timeline |
| Value | Reduces the volume of incidents SOC handles | Enables investigation of incidents that bypass prevention |
| Failure mode | False positive = legitimate software blocked | False negative = attack not detected |
The 10 ASR rules ranked by impact
| Priority | ASR rule | Attack technique blocked | False positive risk |
|---|---|---|---|
| Critical | Block Office apps from creating child processes | Macro malware (winword.exe → powershell.exe chain) | Medium — Office plugins |
| Critical | Block executable content from email/webmail | Email-delivered malware | Low |
| Critical | Block credential stealing from LSASS | Mimikatz, credential dumping tools | Medium — backup agents, monitoring tools |
| Critical | Block all Office apps from creating executable content | Office apps writing .exe/.dll to disk | Low |
| High | Block process creations from WMI and PSExec | Lateral movement via remote execution | Medium — admin tools |
| High | Block JavaScript/VBScript from launching downloads | Drive-by downloads, script-based malware | Low |
| High | Block Win32 API calls from Office macros | Advanced macro techniques bypassing child process rule | Low |
| Medium | Block untrusted/unsigned processes from USB | USB-delivered malware | Low (may affect USB tools) |
| Medium | Block persistence through WMI event subscription | WMI-based persistence (advanced attacker technique) | Low |
| Medium | Block abuse of exploited vulnerable signed drivers | BYOVD attacks | Low |
ASR rules in block mode stop any software that triggers the rule pattern — legitimate or malicious. A third-party accounting plugin that launches PowerShell from Excel will break. An IT monitoring tool that reads LSASS for credential validation will fail. Audit mode logs what would have been blocked without disrupting users. Run audit for 2-4 weeks, analyze, create exclusions, then enforce.
The audit-to-block workflow
Week 1-2: Enable all ASR rules in audit mode. No user impact. Events flow to the DeviceEvents table.
Week 2-3: Analyze audit events with KQL. Identify legitimate software that triggers rules. Create path-based or hash-based exclusions.
Week 4: Switch to block mode for rules with zero or low audit hits. Keep rules with many legitimate triggers in audit while you refine exclusions.
Ongoing: Monitor block events weekly. New software installations may trigger rules — add exclusions as needed.
Monitoring ASR in audit mode
| |
| RuleName | AuditCount | BlockCount | UniqueDevices | TriggeredBy |
|---|---|---|---|---|
| AsrOfficeChildProcess | 247 | 0 | 45 | ["powershell.exe","cmd.exe"] |
| AsrLsassCredentialTheft | 12 | 0 | 3 | ["backupagent.exe"] |
| AsrExecutableEmailContent | 0 | 0 | 0 | [] |
| AsrScriptExecutableDownload | 2 | 0 | 1 | ["wscript.exe"] |
TriggeredBy field shows which processes triggered it. If it is all powershell.exe from Office, investigate whether those are legitimate macros. LSASS credential theft triggered by backupagent.exe is almost certainly a legitimate backup tool — create an exclusion for its path or hash.Block-readiness decision
| |
| RuleName | TotalAudits | UniqueDevices | Processes | ReadyToBlock |
|---|---|---|---|---|
| AsrOfficeChildProcess | 247 | 45 | ["powershell.exe","cmd.exe"] | NEEDS EXCLUSIONS |
| AsrLsassCredentialTheft | 12 | 3 | ["backupagent.exe"] | NEEDS EXCLUSIONS |
| AsrExecutableEmailContent | 0 | 0 | [] | YES |
| AsrScriptExecutableDownload | 2 | 1 | ["wscript.exe"] | YES |
Try it yourself
Yes — create the exclusion and switch to block. backupagent.exe is a known legitimate process that needs LSASS access for credential-based backup operations. Create a hash-based exclusion (more specific than path-based) for the verified backup agent binary.
Trade-off: If an attacker replaces or DLL-hijacks the backup agent, the exclusion allows credential theft via that specific binary. Mitigate with: file integrity monitoring on the backup agent, restricted permissions on the installation directory, and alert-on-change for the agent binary hash.
Risk assessment: Leaving LSASS unprotected (no block mode) exposes every device to credential dumping. The risk of a targeted backup agent compromise is far lower than the risk of unrestricted LSASS access.
Check your understanding
1. You enable "Block Office apps from creating child processes" in block mode without audit testing. What happens Monday morning?
2. AsrExecutableEmailContent shows 0 audits over 30 days. What does this mean?