前言
首先我们来看一下域用户枚举,域用户枚举通常发生在AS_REQ阶段,当我们去访问域内某个服务的时候,需要向KDC的AS服务发送AS_REQ请求,请求包中包含了用户名,域名,加密时间戳以及预认证等信息,预认证是通过用户的Hash去加密的时间戳,然后AS服务会去活动目录中查找对应用户Hash进行比对,如果比对成功的话,那么预认证就成功了。用户存在或不存在,以及密码错误和正确的响应包是不一样的。域控服务器以下简称“DC”,客户机简称为“win10”。
首先我们在DC的活动目录中创建了如下3个账户。
如果你使用的是kali,那么需要将dns设置为DC的地址。
重启网卡让它生效
具体操作:
一:msfconsole
1.使用auxiliary/gather/kerberos_enumusers模块进行枚举。
♾️ text 代码:set rhost dc的ip地址
set user_file 要使用的用户字典
set domain yunmengsec.com
exploit
可以看到用户已经枚举出来了,zhangsan,lisi,wangwu 。
二:kerbrute
下载地址如下:
https://github.com/ropnop/kerbrute/releases
使用命令:
♾️ text 代码:./kerbrute_linux_amd64 userenum --dc 10.10.211.130(dc的ip) -d relaysec.com(域) user.txt(爆破的字典)
三:python版本的枚举工具
下载地址如下:https://github.com/3gstudent/pyKerbrute
♾️ text 代码:python2 EnumADUser.py 10.10.211.130 yunmengysec.com ../user.txt udp
python2 EnumADUser.py 10.10.211.130 yunmengsec.com ../user.txt tcp
Wireshark语句:“kerberos”
♾️ text 代码:可以看到当用户存在的时候返回包会报错为KRB6KDC_ERR_PREAUTH_REQUITED。
如果用户不存在的时候会报错为KRBTKDCERRPRINCIPALUNKNOWN