在域渗透过程中,我们会尝试一系列的信息收集手段,其中用户枚举可以帮助我们识别有效用户账户,为后续攻击提供关键信息。
比如,收集用户名后,可尝试利用弱密码,默认密码或已泄露的凭证进行横向渗透。
再比如,获取真实用户名后,可伪造内部邮件或登录页面,诱骗用户提交凭证或敏感信息。
那么用户枚举的原理是什么呢?
一、用户枚举
1.原理
用户枚举的原理是通过比对目标系统在验证用户身份时的不同响应,来判断用户名是否存在。
在kerberos协议下的用户枚举:
AS-REQ请求:
攻击工具(如kerbrute)向域控的KDC发送kerberos认证请求(AS-REQ)其中包含待验证的用户名,而KDC的响应中,对于存在的用户和不存在的用户有着不同的响应。对于有效用户KDC返回错误代码 KRB5KDC_ERR_PREAUTH_REQUIRED(需要预认证),表明用户存在但未提供预认证信息(如密码哈希);对于无效用户KDC返回错误代码 KRB5KDC_ERR_PRINCIPAL_UNKNOWN(用户不存在)
我们借用wireshark来看一下该过程
1.首先我们在已拿下的跳板机win7下植入我们的kerbrute工具,用于用户枚举
然后在此打开cmd,运行:
kerbrute.exe --dc 192.168.52.138 -d god.org TOP10000.txt
# --dc 指定域控IP
# -d 指定域名
2.打开wireshark,由于我的跳板机同时含有适配器VMnet1和VMnet8
但我的域控在Vmnet1下,要想检测到这段流量,应该在wireshark中捕获VMnet1的流量,如果显示没有VMnet1的选项,需要进入虚拟网络配置,勾选
然后开始捕获,使用过滤器,只看kerberos协议的流量
可以看到这里有两种状态,按照我们之前说的,第一个就是存在的用户,后面的都是不存在的用户
kerbrute就是利用该原理进行用户枚举的
二、密码喷洒
密码喷洒是一种针对多个用户账户尝试少量通用密码的攻击技术。为什么是少量?为了避免只针对一个用户进行密码爆破而造成账户锁定,密码喷洒攻击是对所有用户进行爆破,可以避免用户被锁定。可以理解为:密码喷洒就是固定密码对多用户名的爆破
密码喷洒的原理是什么?
就像我们正常登录账号一样,通过模拟合法用户的认证流程,分析认证的响应结果,从而判断密码是否有效。
同样,也使用kerbrute工具进行模拟攻击,根据响应状态判断密码是否正确
首先在文件夹下准备好我们之前通过用户枚举得到的存在账户
然后执行
kerbrute.exe passwordpray --dc 192.168.52.138 -d god.org users.txt <password>
发现密码喷洒成功!再看wireshark中的抓包结果
根据我们之前学习的kerberos的认证过程,当出现AS-REP和TGS的时候,说明已经进入了正常的身份认证过程,此时的密码值应该是正确的。说明密码喷洒成功了。