← Back to Feed CACHED · 2026-09-18 06:43:25 · CACHE_KEY CVE-2020-1472
CVE-2020-1472 · CWE-330 · Disclosed 2020-08-17

An elevation of privilege vulnerability exists when an attacker establishes a vulnerable Netlogon secure…

ASSESSED — NOISGATE
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

Someone left the master key to your kingdom under a doormat made entirely of zeroes

CVE-2020-1472 — universally known as Zerologon — is a cryptographic flaw in Microsoft's Netlogon Remote Protocol (MS-NRPC). The AES-CFB8 implementation uses a fixed, all-zero initialization vector (IV), which means an unauthenticated attacker on the network can send ~256 specially crafted Netlogon authentication attempts to a domain controller and, on average within seconds, reset that DC's machine account password to a known empty value. From there, the attacker performs a DCSync to harvest every credential in the domain — including krbtgt. Affected: every supported Windows Server version running the DC role — Server 2008 R2, 2012, 2012 R2, 2016, 2019, and their Server Core variants. Patched in the August 2020 Patch Tuesday with enforcement mode enabled by default in February 2021.

The user-supplied metadata for this CVE is incorrect. The provided vector (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N, 5.5 MEDIUM) belongs to a different vulnerability. Microsoft and NVD both scored Zerologon at 10.0 CRITICAL with vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H. That score is completely justified: the attack is network-based, requires no authentication, no user interaction, has low complexity, and the blast radius crosses every security boundary in an AD environment. Six years post-disclosure, this CVE still appears in ransomware kill chains (Ryuk, Conti, Cuba, LockBit playbooks) and APT campaigns (Mercury/MuddyWater, TA505). CISA issued Emergency Directive 20-04 specifically for this vulnerability — one of the few CVEs to ever receive that treatment. The EPSS score of 0.97+ (97th+ percentile) confirms that exploitation probability remains among the highest of any CVE in the catalog.

"Zerologon remains the gold standard for instant domain takeover — unauthenticated, one-click, game over."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Network access to a domain controller

The attacker needs TCP connectivity to port 135 (RPC endpoint mapper) and the dynamically assigned Netlogon RPC port on a domain controller. In most enterprise networks, DCs are reachable from every VLAN — segmentation rarely blocks RPC to DCs because domain-joined hosts need it for authentication, group policy, and DNS. An attacker who has compromised any single host on the internal network, or who is on a flat network, satisfies this prerequisite.
Conditions required:
  • TCP network path to the target DC on RPC ports (135 + dynamic high ports)
Where this breaks in practice:
  • DCs should never be exposed to the internet — Shodan/Censys data shows <0.1% of DCs have port 445/135 externally reachable
  • Requires internal network position, implying post-initial-access in most scenarios
Detection/coverage: Shodan/Censys scans for exposed RPC; internal vulnerability scanners (Qualys, Tenable, Rapid7) flag unpatched DCs; GreyNoise tags for Zerologon probes from the internet.
STEP 02

Zerologon authentication bypass via MS-NRPC

The attacker runs the Zerologon exploit (e.g., dirkjanm/CVE-2020-1472, risksense/zerologon, or built into Mimikatz lsadump::zerologon and Impacket zerologon_tester.py). The tool sends Netlogon authentication requests with an all-zero client credential. Due to the broken AES-CFB8 IV, roughly 1 in 256 attempts succeeds, typically within 2–3 seconds. On success, the DC's machine account password is set to an empty string.
Conditions required:
  • Unpatched domain controller (missing KB4565349 / KB4571694 or equivalent, AND enforcement mode not enabled)
Where this breaks in practice:
  • Patch has been available for over 6 years
  • February 2021 enforcement mode update blocks non-secure RPC by default — even partially patched DCs are protected
Detection/coverage: IDS signatures (Snort SID 55703, Suricata ET rules), Microsoft Defender for Identity alert 'Suspected Netlogon privilege elevation attempt (CVE-2020-1472)', Sysmon Event ID 5145 for anomalous DCERPC traffic patterns.
STEP 03

DCSync to harvest all domain credentials

With the DC machine account password now empty, the attacker authenticates to the DC using the known credentials and performs a DCSync attack via Impacket's secretsdump.py or Mimikatz lsadump::dcsync. This replicates the entire Active Directory database (NTDS.dit), yielding every user hash including krbtgt, Domain Admin accounts, and service accounts.
Conditions required:
  • Successful Zerologon exploitation from Step 2
Where this breaks in practice:
  • None — this step is deterministic once Step 2 succeeds
Detection/coverage: Windows Security Event ID 4662 (DS-Replication-Get-Changes, DS-Replication-Get-Changes-All) from a non-DC source, Microsoft Defender for Identity 'Suspected DCSync attack' alert.
STEP 04

Golden Ticket and full domain compromise

With the krbtgt hash, the attacker forges a Golden Ticket granting Domain Admin or Enterprise Admin access to every resource in the AD forest. The attacker now controls all domain-joined systems, can access any file share, deploy ransomware via Group Policy, extract secrets from DPAPI, and persist indefinitely until krbtgt is rotated twice.
Conditions required:
  • krbtgt NTLM hash from Step 3
Where this breaks in practice:
  • None — standard post-exploitation, fully automated in tools like Cobalt Strike, Impacket, Rubeus
Detection/coverage: Kerberos anomaly detection (ticket lifetime, encryption downgrade), Event ID 4769 with anomalous parameters, EDR behavioral detection of pass-the-ticket.
STEP 05

Lateral movement and ransomware deployment

With domain-level credentials, the attacker moves laterally to every host, deploys ransomware or exfiltrates data. Real-world campaigns (Ryuk, Conti, LockBit, Cuba) have used Zerologon as the privilege-escalation pivot between initial access (phishing, VPN exploit) and domain-wide encryption. Time from initial exploitation to full domain compromise: under 5 minutes in documented cases.
Conditions required:
  • Domain Admin or equivalent from Step 4
Where this breaks in practice:
  • Endpoint Detection and Response (EDR) may catch lateral movement tools
  • Network segmentation may slow propagation but cannot prevent it once DA is achieved
Detection/coverage: EDR alerting on PsExec/WMI/WinRM lateral movement, Windows Event ID 4624 Type 3 from anomalous sources, SIEM correlation of mass authentication events.
03 · Intelligence Metadata

The supporting signals.

In-the-Wild StatusMassively exploited. Used in Ryuk, Conti, Cuba, LockBit ransomware campaigns. APT groups including Mercury/MuddyWater (Iran) and TA505 have deployed it. CISA issued Emergency Directive 20-04 — one of very few CVEs to receive this treatment.
PoC / Exploit AvailabilityWeaponized exploits are public and trivial to use: dirkjanm/CVE-2020-1472, risksense/zerologon, VoidSec/CVE-2020-1472. Also built into Mimikatz (lsadump::zerologon) and Impacket (zerologon_tester.py). Metasploit module available.
EPSS Score0.97+ (97th+ percentile) — among the highest exploitation probability scores in the entire CVE catalog.
CISA KEV StatusListed. Added to the Known Exploited Vulnerabilities catalog. Due date for federal agencies was set in 2020. Flagged as used in ransomware campaigns.
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H10.0 CRITICAL. Network attack vector, no privileges, no interaction, scope change (compromise crosses AD trust boundaries). Note: the user-supplied vector (5.5/MEDIUM) is *incorrect* for this CVE.
Affected VersionsAll Windows Server versions running the Domain Controller role: Server 2008 R2 SP1, 2012, 2012 R2, 2016, 2019 (including Server Core). Windows Server 2003 and 2008 non-R2 are also vulnerable but received no patch (EOL).
Fixed VersionsPhase 1: August 11, 2020 Patch Tuesday (KB4565349 for Server 2019, KB4571694 for Server 2016, etc.). Phase 2: February 9, 2021 — enforcement mode enabled by default. Both phases required for full protection.
Scanning / Exposure DataShodan and Censys show <0.1% of DCs with Netlogon/RPC directly internet-exposed. However, internal exposure is near-universal — every domain-joined host can reach its DC. Qualys, Tenable, and Rapid7 all have authenticated checks for the missing patch and enforcement mode registry key.
Disclosure Date2020-08-11 (patch), 2020-09-11 (Secura whitepaper by Tom Tervoort detailing the cryptographic flaw and exploitation method).
ResearcherTom Tervoort, Secura (Netherlands). Published the whitepaper *'Zerologon: Unauthenticated domain controller compromise by subverting Netlogon cryptography'*.
04 · The Call

noisgate verdict.

Final Verdict
UPGRADED to CRITICAL (10.0/10)

The single most decisive factor is role identity — the vulnerable component IS the domain controller, and a successful exploit yields unauthenticated domain takeover in seconds with publicly weaponized tools. No friction point — including the 'requires internal network access' prerequisite — can override a floor set by a vulnerability that exists exclusively in the identity-plane component controlling every host in the fleet.

HIGH Vulnerability severity and exploitability assessment
HIGH Active exploitation and threat actor usage
HIGH Patch availability and remediation path

Why this verdict

  • Role multiplier: The affected component is *by definition* a domain controller — 100% of vulnerable installs occupy the highest-value identity role. A successful chain ends in full AD forest compromise (DA → Golden Ticket → every host). This sets a CRITICAL floor that no friction analysis can breach.
  • Weaponization saturation: Public, reliable, one-click exploits exist in Mimikatz, Impacket, Metasploit, and dozens of standalone GitHub repos. The attack completes in under 5 seconds with zero authentication. There is no skill barrier.
  • Confirmed mass exploitation: KEV-listed, CISA Emergency Directive, documented use in Ryuk, Conti, Cuba, LockBit ransomware campaigns and nation-state APT operations (Mercury, TA505). EPSS 97th+ percentile confirms ongoing exploitation probability.
  • Scope change in CVSS is literal: Compromise of one DC cascades to every domain-joined host, every user credential, every Group Policy object, and every trust relationship in the forest. The blast radius is fleet-scale by design.
  • Internal network prerequisite is not meaningful friction: Every domain-joined workstation, server, and VPN client has network access to at least one DC. An attacker who lands anywhere on the internal network (phishing, VPN compromise, supply chain) can immediately pivot to Zerologon. This prerequisite filters out only pure external attackers with zero foothold — a population that already has cheaper targets.

Why not higher?

This is already the maximum score of 10.0 CRITICAL. There is no higher severity bucket. The vulnerability represents the theoretical ceiling of impact: unauthenticated, low-complexity, scope-changing, full-confidentiality/integrity/availability destruction of the enterprise identity plane.

Why not lower?

Downgrading below CRITICAL would require evidence that the domain controller role is somehow low-value or that the attack chain has meaningful friction. Neither is true. The DC is the canonical high-value target in every Windows enterprise, the exploit is trivially reliable, and the blast radius is every host in the domain. The 'requires internal network' prerequisite does not constitute meaningful friction because internal network access to DCs is the *default state* for every domain-joined machine. Additionally, active KEV listing and confirmed ransomware campaign usage independently mandate maximum urgency.

05 · Compensating Control

What to do — in priority order.

  1. Verify enforcement mode is active on ALL domain controllers immediately — Check the registry key HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\FullSecureChannelProtection is set to 1 on every DC. The February 2021 update enables this by default, but manual overrides or GPO misconfigurations can disable it. This is the single most important compensating control — deploy within 3 days per noisgate mitigation SLA for CRITICAL.
  2. Block Netlogon RPC from non-DC and non-domain-member sources — Use Windows Firewall or network ACLs to restrict inbound Netlogon/RPC (TCP 135 + dynamic range) on DCs to only known domain controllers and legitimate domain members. This limits the attacker population that can reach the vulnerable service. Deploy within 3 days.
  3. Enable Microsoft Defender for Identity Zerologon detection — MDI has a specific alert for 'Suspected Netlogon privilege elevation attempt (CVE-2020-1472)'. Ensure this is enabled and routed to your SOC with HIGH priority. If you don't run MDI, deploy IDS signatures (Snort SID 55703, Suricata ET rules) on DC network segments.
  4. Monitor for DCSync from non-DC sources — Alert on Windows Security Event ID 4662 with properties DS-Replication-Get-Changes and DS-Replication-Get-Changes-All where the source is not a domain controller. This catches the post-exploitation step even if the initial exploit is missed.
  5. Audit for EOL domain controllers — Windows Server 2003 and 2008 (non-R2) are vulnerable and will never receive a patch. If any of these are still running as DCs, decommission them immediately — they are permanent Zerologon targets.
What doesn't work
  • Network segmentation alone — while it may slow an attacker, every domain-joined host needs RPC access to DCs by design. You cannot firewall DCs away from their own members without breaking Active Directory functionality.
  • Disabling the Netlogon service — this will break domain authentication, group policy processing, and DNS registration for all domain members. It is not a viable mitigation.
  • Certificate-based authentication only — Zerologon attacks the machine account channel, not user authentication. Smart cards and certificate-based user logon do not protect the Netlogon protocol.
  • Monitoring alone without patching — detection gives you a chance to respond, but the exploit completes in seconds. By the time an alert fires and a human triages it, the attacker may already have performed DCSync and obtained the krbtgt hash.
06 · Verification

Crowdsourced verification payload.

Run this script on each domain controller with Domain Admin or local admin privileges. It checks both the patch level (August 2020 KB) and the enforcement mode registry key. Example: powershell -ExecutionPolicy Bypass -File .\Check-Zerologon.ps1

noisgate-verify.ps1
POWERSHELLREAD-ONLYSAFE
#Requires -RunAsAdministrator
<#
  Check-Zerologon.ps1
  Checks whether this domain controller is protected against CVE-2020-1472 (Zerologon).
  Outputs: VULNERABLE / PATCHED / UNKNOWN
  Exit codes: 1 = VULNERABLE, 0 = PATCHED, 2 = UNKNOWN
#>

$ErrorActionPreference = 'Stop'
$status = 'UNKNOWN'
$exitCode = 2
$findings = @()

try {
    # Check 1: Is this even a domain controller?
    $os = Get-WmiObject Win32_OperatingSystem
    $isDC = (Get-WmiObject Win32_ComputerSystem).DomainRole -ge 4
    if (-not $isDC) {
        Write-Host "INFO: This host is NOT a domain controller. Zerologon is only exploitable on DCs."
        Write-Host "PATCHED"
        exit 0
    }
    $findings += "Host is a Domain Controller: YES"

    # Check 2: Look for August 2020+ cumulative update
    $hotfixes = Get-HotFix | Sort-Object InstalledOn -Descending -ErrorAction SilentlyContinue
    # Key KBs for Zerologon Phase 1 (August 2020)
    $phase1KBs = @('KB4565349','KB4571694','KB4571702','KB4571703','KB4571723','KB4571729','KB4571736')
    $foundPhase1 = $false
    foreach ($kb in $phase1KBs) {
        if ($hotfixes.HotFixID -contains $kb) {
            $foundPhase1 = $true
            $findings += "Phase 1 patch found: $kb"
            break
        }
    }
    # Also check if any cumulative update post-August 2020 is present
    $recentPatches = $hotfixes | Where-Object { $_.InstalledOn -gt [datetime]'2020-08-11' }
    if ($recentPatches.Count -gt 0 -and -not $foundPhase1) {
        $findings += "Post-August-2020 updates found ($(($recentPatches | Select-Object -First 3).HotFixID -join ', '))"
        $foundPhase1 = $true
    }

    # Check 3: Enforcement mode registry key
    $regPath = 'HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters'
    $enforcementValue = $null
    try {
        $enforcementValue = (Get-ItemProperty -Path $regPath -Name 'FullSecureChannelProtection' -ErrorAction Stop).FullSecureChannelProtection
    } catch {
        $findings += "FullSecureChannelProtection registry key: NOT FOUND (may rely on Feb 2021 default)"
    }

    if ($enforcementValue -eq 1) {
        $findings += "FullSecureChannelProtection: ENABLED (enforcement mode ON)"
    } elseif ($enforcementValue -eq 0) {
        $findings += "FullSecureChannelProtection: DISABLED (enforcement mode OFF - DANGEROUS)"
    }

    # Check 4: Determine verdict
    if ($enforcementValue -eq 0) {
        # Enforcement explicitly disabled - vulnerable even if patched
        $status = 'VULNERABLE'
        $exitCode = 1
        $findings += 'REASON: Enforcement mode is explicitly DISABLED via registry. This DC is exploitable.'
    } elseif ($foundPhase1 -and ($enforcementValue -eq 1 -or $enforcementValue -eq $null)) {
        # Patched and enforcement not explicitly disabled (Feb 2021 default applies)
        $status = 'PATCHED'
        $exitCode = 0
    } elseif (-not $foundPhase1) {
        $status = 'VULNERABLE'
        $exitCode = 1
        $findings += 'REASON: No August 2020 or later cumulative update detected.'
    } else {
        $status = 'UNKNOWN'
        $exitCode = 2
    }

} catch {
    $findings += "Error during check: $($_.Exception.Message)"
    $status = 'UNKNOWN'
    $exitCode = 2
}

Write-Host ''
Write-Host '=== CVE-2020-1472 (Zerologon) Check ===' -ForegroundColor Cyan
foreach ($f in $findings) { Write-Host "  $f" }
Write-Host ''
Write-Host $status -ForegroundColor $(if ($status -eq 'VULNERABLE') {'Red'} elseif ($status -eq 'PATCHED') {'Green'} else {'Yellow'})
exit $exitCode
07 · Bottom Line

If you remember one thing.

TL;DR
If you still have any unpatched domain controller in 2026, treat this as an active emergency. Zerologon has been weaponized in every major ransomware family and APT toolkit for six years. Per the noisgate mitigation SLA for CRITICAL, you have 3 days to verify enforcement mode is active on every DC and block unnecessary Netlogon RPC sources. Per the noisgate remediation SLA, the actual vendor patch should have been applied within 90 days of disclosure — meaning you are five years overdue. Monday morning: run the verification script on every DC, confirm FullSecureChannelProtection = 1 in the registry, and decommission any Server 2003/2008 DCs that cannot be patched. If any DC returns VULNERABLE, escalate to your CISO immediately — you are one phishing email away from full domain compromise.

Sources

  1. NVD - CVE-2020-1472
  2. CISA Emergency Directive 20-04
  3. Secura Zerologon Whitepaper
  4. CrowdStrike - Zerologon Overview and Prevention
  5. Rapid7 Analysis - CVE-2020-1472
  6. dirkjanm Zerologon PoC (GitHub)
  7. Tenable - Zerologon Enforcement Mode
  8. CISA KEV Catalog Entry
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.