Master all four Microsoft Defender Antivirus operating modes - Active, Passive, EDR in Block Mode, and Disabled. Understand exactly which MDE capabilities survive when CrowdStrike (or another third-party AV) is the primary engine. Map what works and what breaks for Defender for Cloud Apps unsanctioned app enforcement, custom indicators (IP/URL/domain/file), network protection, web content filtering, and endpoint DLP across every AV mode.
Microsoft Defender Antivirus operates in one of four modes - Active, Passive, EDR in Block Mode, or Disabled - depending on whether a third-party antivirus product is installed and how MDE is configured. Most organizations running CrowdStrike, SentinelOne, or another third-party AV alongside MDE do not fully understand which MDE capabilities survive in passive mode and which silently stop working. This lab systematically maps every MDE feature across all four AV modes, with a focus on the network-dependent features (MDA unsanctioned app blocking, custom URL/IP/domain indicators, web content filtering, network protection) that require Defender AV to be the active engine. You will learn to identify the enforcement gap, build compensating controls, and validate your architecture with KQL queries.
Scenario: Contoso Ltd runs CrowdStrike Falcon as their primary endpoint AV across 8,000 devices. They also have MDE Plan 2 for EDR, vulnerability management, and threat analytics. The security team recently deployed Defender for Cloud Apps and marked several shadow IT applications (Dropbox, WeTransfer, Mega) as "Unsanctioned." They also created custom URL/IP indicators to block known phishing infrastructure. After two weeks, the SOC discovers that users on CrowdStrike endpoints can still freely access all unsanctioned apps and blocked URLs - the indicators show as "Active" in the portal but enforcement never reaches the endpoints.
Root cause: Defender AV is in passive mode on all CrowdStrike devices. The network protection driver (WdNisDrv.sys) only loads when Defender is the active AV engine. All network-dependent MDE features - MDA blocking, custom URL/IP indicators, web content filtering, and network protection - silently fail. Meanwhile, file hash indicators and endpoint DLP continue to work because they use the MDE sensor, not the AV engine.
Success criteria: correctly identify all affected features, enable EDR in block mode for post-breach remediation, implement proxy/DNS-based alternatives for URL/IP enforcement, and deploy a KQL detection rule that alerts when devices in passive mode access blocked resources.
The gap between "indicator created in the portal" and "indicator enforced on the endpoint" is where organizations get breached. When security teams create URL/IP block indicators or mark apps as unsanctioned, they expect enforcement across all endpoints. But with a third-party AV in place, these controls silently fail on every device - with no error, no warning, and no log entry. The Defender portal still shows the indicator as "Active" and the app as "Unsanctioned." This creates a false sense of security that persists until a real incident exposes the gap. Understanding AV mode dependencies is essential for any organization running dual AV/EDR stacks.
ForceDefenderPassiveMode via registry or Intune to put Defender into passive mode. Without this, Defender AV and the third-party AV may both run in active mode on servers, which can cause conflicts. See Defender AV on Windows Server.Microsoft Defender Antivirus operates in one of four modes depending on whether a third-party antivirus product is installed and how MDE is configured. Getting this wrong is the single most common reason MDE features silently stop working.
| Mode | When It Happens | Real-Time Protection | Engine Updates | EDR Telemetry |
|---|---|---|---|---|
| Active | No third-party AV, or third-party AV removed | ✅ Full | ✅ Automatic | ✅ Full |
| Passive | Windows client: automatic when third-party AV detected + onboarded to MDE. Windows Server: requires ForceDefenderPassiveMode registry key. | ❌ Off | ✅ Automatic | ✅ Full |
| EDR in Block Mode | Passive mode + EDR block enabled in MDE settings | ❌ Off (EDR remediates post-breach) | ✅ Automatic | ✅ Full + remediation |
| Disabled | Third-party AV + NOT onboarded to MDE, or force-disabled via GPO | ❌ Off | ❌ No updates | ❌ None |
Run this PowerShell command on any endpoint to check the current Defender AV state:
# Check Defender Antivirus mode
Get-MpComputerStatus | Select-Object AMRunningMode, AMServiceEnabled,
AntispywareEnabled, AntivirusEnabled, RealTimeProtectionEnabled,
IsTamperProtected, IsVirtualMachine
# Expected outputs:
# Active mode: AMRunningMode = Normal, AntivirusEnabled = True
# Passive mode: AMRunningMode = Passive, AntivirusEnabled = True (but RTP = False)
# EDR Block: AMRunningMode = EDR Block Mode (same as passive + post-breach remediation)
# Disabled: AMRunningMode = Not Running OR AMServiceEnabled = False
The following queries use Advanced Hunting tables. Column names and available fields may vary by MDE agent version and tenant configuration. Test in your environment and adjust as needed.
// Advanced Hunting: Find devices and their AV mode
DeviceTvmInfoGathering
| where AdditionalFields has "AvMode"
| extend AvMode = parse_json(AdditionalFields).AvMode
| summarize arg_max(Timestamp, *) by DeviceId
| project DeviceName, AvMode, Timestamp
| summarize DeviceCount = count() by tostring(AvMode)
// Find devices where Defender AV is completely disabled
DeviceInfo
| where Timestamp > ago(1d)
| where OnboardingStatus == "Onboarded"
| join kind=leftanti (
DeviceTvmInfoGathering
| where AdditionalFields has "AntivirusEnabled"
| where parse_json(AdditionalFields).AntivirusEnabled == true
| distinct DeviceId
) on DeviceId
| project DeviceName, OSPlatform, OnboardingStatus
The behavior when a third-party AV is present differs between Windows client and Windows Server:
ForceDefenderPassiveMode = 1 in the registry to put Defender into passive mode. Without this, both Defender and the third-party AV may run in active mode simultaneously, which can cause performance issues and conflicts.ForceDefenderPassiveMode = 1 on Windows Server when running a third-party AV. Unlike Windows 10/11 client, servers do not automatically switch to passive mode. Without this registry setting, both AV engines run in active mode, which can cause conflicts and performance degradation. See Microsoft documentation.
On Windows Server, you must set this registry key to put Defender AV into passive mode when a third-party AV is installed. On Windows client (10/11), this is optional since passive mode is automatic, but can be set as an explicit safeguard:
# Force Defender AV into passive mode (requires reboot)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Advanced Threat Protection" `
-Name "ForceDefenderPassiveMode" -Value 1 -Type DWord
# Verify after reboot
Get-MpComputerStatus | Select-Object AMRunningMode
# Should show: Passive or EDR Block Mode
# Via Intune: Endpoint Security > Antivirus > Microsoft Defender Antivirus
# Set "Allow antivirus service running alongside third-party AV" = Allowed
EDR in block mode is a safety net. When CrowdStrike misses a threat (no AV is 100%), Defender's EDR engine detects it post-execution and remediates using its own engine - even though Defender AV real-time protection is off.
The table below maps MDE features to AV modes. Feature availability can change between Windows and MDE agent versions. Always verify against the official Microsoft Defender Antivirus compatibility documentation for your specific environment.
| MDE Feature | Active | Passive | EDR Block | Disabled |
|---|---|---|---|---|
| Real-time AV protection | ✅ | ❌ | ❌ | ❌ |
| EDR telemetry & alerts | ✅ | ✅ | ✅ | ❌ |
| EDR post-breach remediation | ✅ | ❌ | ✅ | ❌ |
| Network protection | ✅ | ❌ | ❌ | ❌ |
| Web content filtering | ✅ | ❌ | ❌ | ❌ |
| Custom indicators - URL/Domain block | ✅ | ❌ | ❌ | ❌ |
| Custom indicators - IP block | ✅ | ❌ | ❌ | ❌ |
| Custom indicators - File hash (block/allow) | ✅ | ✅ | ✅ | ❌ |
| Custom indicators - Certificate block | ✅ | ✅ | ✅ | ❌ |
| MDA unsanctioned app blocking | ✅ | ❌ | ❌ | ❌ |
| Attack Surface Reduction (ASR) rules | ✅ | ❌ | ❌ | ❌ |
| Controlled folder access | ✅ | ❌ | ❌ | ❌ |
| Tamper protection | ✅ | ✅ | ✅ | ❌ |
| Live response | ✅ | ✅ | ✅ | ❌ |
| Advanced hunting (KQL) | ✅ | ✅ | ✅ | ❌ |
| Endpoint DLP (Microsoft Purview) | ✅ | ✅ | ✅ | ❌ |
| Device control (USB policies) | ✅ | ✅ | ✅ | ❌ |
| Vulnerability management (TVM) | ✅ | ✅ | ✅ | ❌ |
When you tag an app as "Unsanctioned" in Defender for Cloud Apps, the enforcement path goes through MDE's network protection on the endpoint:
If you run CrowdStrike as primary AV, you need alternative enforcement for unsanctioned apps:
// Find devices accessing unsanctioned apps despite "block" policy
// This query exposes the passive mode enforcement gap
DeviceNetworkEvents
| where Timestamp > ago(7d)
| where RemoteUrl has_any ("dropbox.com", "wetransfer.com", "mega.nz") // your unsanctioned apps
| where ActionType == "ConnectionSuccess" // should be "ConnectionBlocked" if enforcement works
| summarize AccessCount = count(), LastAccess = max(Timestamp) by DeviceName, RemoteUrl
| sort by AccessCount desc
// Cross-reference with AV mode to confirm the gap
DeviceNetworkEvents
| where Timestamp > ago(7d)
| where RemoteUrl has_any ("dropbox.com", "wetransfer.com")
| where ActionType == "ConnectionSuccess"
| join kind=inner (
DeviceTvmInfoGathering
| extend AvMode = tostring(parse_json(AdditionalFields).AvMode)
| where AvMode == "Passive" or AvMode == "SxS Passive"
| summarize arg_max(Timestamp, *) by DeviceId
) on DeviceId
| project DeviceName, RemoteUrl, AvMode, Timestamp
Not all custom indicators are equal when CrowdStrike is present:
| Indicator Type | Enforcement Mechanism | Active Mode | Passive / EDR Block | Alternative with CrowdStrike |
|---|---|---|---|---|
| URL/Domain | Network protection driver | ✅ Block | ❌ Silently fails | CrowdStrike URL filtering, proxy, or DNS block |
| IP Address | Network protection driver | ✅ Block | ❌ Silently fails | Firewall rules (Windows Firewall, NSG, third-party) |
| File hash (SHA-256) | Defender AV engine (cloud + local) | ✅ Block | ✅ Block (via EDR) | Both CrowdStrike and MDE enforce |
| Certificate | Defender AV engine | ✅ Block | ✅ Block (via EDR) | Both enforce |
Root cause: CrowdStrike is the primary AV. Defender is in passive mode. Network protection driver is unloaded. MDA enforcement path to the endpoint is broken.
How to diagnose:
# On the endpoint
Get-MpComputerStatus | Select-Object AMRunningMode
# If "Passive" or "EDR Block Mode" - network protection is NOT active
# Check if network protection is reporting
Get-MpPreference | Select-Object EnableNetworkProtection
# 0 = Disabled, 1 = Enabled (block), 2 = Audit
# Even if set to 1, it is ignored in passive mode
# Verify SmartScreen / network filter driver
sc query WdNisDrv
# If STATE is STOPPED - no network-level enforcement is possible
Root cause: Same as above. The indicator is stored in the MDE cloud and synced to the device, but the network protection driver that enforces it is not loaded.
What makes it worse: The Defender portal shows the indicator as "Active" with a green status. There is NO warning that enforcement depends on active AV mode. Admins assume it is working until an incident proves otherwise.
Root cause: Web content filtering uses the same network protection stack. Passive mode = no filtering.
Alternative: Use CrowdStrike Falcon's URL filtering categories, or deploy a dedicated web proxy (Zscaler, Netskope) that works independently of the endpoint AV engine.
Root cause: Defender AV is not running (service disabled or not installed). The MDE sensor may also be missing if the device was never onboarded. Verify with Get-Service Sense - if the SENSE service is not present, the device needs to be onboarded to MDE.
// Find onboarded devices with no recent telemetry (likely disabled mode)
DeviceInfo
| where Timestamp > ago(1d)
| where OnboardingStatus == "Onboarded"
| join kind=leftanti (
DeviceEvents
| where Timestamp > ago(1d)
| distinct DeviceId
) on DeviceId
| project DeviceName, OSPlatform, LastSeen = Timestamp
| sort by LastSeen asc
| Architecture | MDA Enforcement | URL/IP Indicators | Web Filtering | Endpoint DLP | EDR |
|---|---|---|---|---|---|
| MDE only (no CrowdStrike) | ✅ Full | ✅ Full | ✅ Full | ✅ Full | ✅ Full |
| CrowdStrike + MDE passive | ❌ Broken | ❌ URL/IP broken, file/cert OK | ❌ Broken | ✅ Works | ✅ Full |
| CrowdStrike + MDE passive + proxy/DNS | ✅ Via proxy/DNS | ✅ Via proxy/DNS + file/cert via MDE | ✅ Via proxy | ✅ Works | ✅ Full |
AMRunningMode = Passive (not Disabled)Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Advanced Threat Protection" -Name "ForceDefenderPassiveMode"| Resource | Description |
|---|---|
| Defender Antivirus compatibility with other security products | Official guide to AV mode behavior with third-party products |
| EDR in block mode | How EDR remediation works when Defender AV is in passive mode |
| Network protection | Architecture and prerequisites for network-level enforcement |
| Manage indicators | Create and manage custom indicators for IPs, URLs, domains, files, and certificates |
| MDA integration with MDE | How Defender for Cloud Apps uses MDE for endpoint enforcement |
| Defender AV on Windows Server | Server-specific considerations for AV mode and coexistence |