通过 Kerberos Pre-Authentication 进行域用户帐户枚举和口令爆破
本文主要记录了通过 Kerberos Pre-Authentication 进行域用户帐户枚举和口令爆破.
简介
- 通过 LDAP 协议暴力破解域用户帐户口令会产生 4625 (An account failed to log on) 日志.
- 使用 kerbrute 通过 Kerberos Pre-Authentication (预身份认证) 进行暴力破解时不会产生 4625 (An account failed to log on) 日志, 但是会产生以下日志:
Kerberos Pre-Authentication 对应的端口默认为 88.
kerbrute 使用 UDP 协议实现 Kerberos Pre-Authentication, 用来进行域用户帐户枚举和口令爆破.
kerbrute 的适用场景
没有域用户帐户的口令, 且当前不在域内, 从域外对域用户帐户进行用户枚举和密码喷洒.
工具利用
用户枚举
该功能对应的参数是: userenum.
用来验证用户帐户是否存在, 结果会输出到 results.txt 文件中.
kerbrute_windows_amd64.exe userenum --dc dc.missyou.com -d missyou.com -o results.txt username.txt
这会生成一个 Windows 事件 ID: 4768.
这不会导致任何登录失败, 因此不会锁定任何帐户.
WireShark 分析
使用 WireShark 抓取 Kerbrute 用户枚举功能产生的数据包可以看到, kerbrute 发送的数据包使用的是 UDP 协议.
如果 KDC 返回 ERR_PREAUTH_REQUIRED
, 则说明该用户帐户存在, 指示客户端需要提供更多凭据来进行身份验证.
如果 KDC 返回 ERR_C_PRINCIPAL_UNKNOWN
, 则说明 KDC 无法识别给定的主体名称, 此处表示该用户帐户不存在.
密码喷洒
该功能对应的参数是: passwordspray.
在确定了哪些域用户帐户存在后, 可以使用这个功能来验证密码是否正确.
kerbrute_windows_amd64.exe passwordspray --dc dc.missyou.com -d missyou.com -o results.txt username.txt asd123!
比较实用的情景是: 当我们拥有大量域用户帐户时, 对于测试一个或两个常用密码很有用.
注意: 这会增加域用户帐户登录失败的计数, 当域用户帐户登录失败的次数达到域内 “帐户锁定策略” 中设置的失败次数上限时, 该域用户帐户会被锁定.
这将生成两个事件 ID:
- 4768 - A Kerberos authentication ticket (TGT) was requested.
- 4771 - Kerberos Pre-Authentication failed.
WireShark 分析
如果密码错误, 则 KDC 会返回错误: eRR_PREAUTH_FAILED
.
如果密码正确, 则 KDC 会返回正常的 AS_REP 响应, 其中包含 TGT.
Brute User
该功能对应的参数是: bruteuser.
kerbrute_windows_amd64.exe bruteuser --dc dc.missyou.com -d missyou.com -o results.txt passwords.txt ligang
这个功能就是传统的针对域用户帐户进行暴力破解密码.
注意: 如果域内有 “帐户锁定策略”, 爆破密码会导致对应的域用户帐户锁定, 仅当确定没有 “帐户锁定策略” 时才运行此命令!
这将生成两个事件 ID:
- 4768 - A Kerberos authentication ticket (TGT) was requested.
- 4771 - Kerberos Pre-Authentication failed.
Brute Force
该功能对应的参数是: bruteforce.
这个模式只是从文件中读取用户名和密码组合, 格式为 username:password
.
wanghong:wanghong
ligang:123456
yunwei:88888
wangwei:999999
ligang:ligang
kerbrute_windows_amd64.exe bruteforce --dc dc.missyou.com -d missyou.com -o results.txt lists.txt
这个功能将跳过任何 “空白行” 或带有空白 “用户名/密码” 的行.
这将生成两个事件 ID:
- 4768 - A Kerberos authentication ticket (TGT) was requested.
- 4771 - Kerberos Pre-Authentication failed.
注意: 如果域内有 “帐户锁定策略”, 爆破密码会导致对应的域用户帐户锁定, 仅当确定没有帐户锁定策略时才运行此命令!
总结
其实比较常用的功能就是 “用户枚举” 和 “密码喷洒”, 因为这两个功能并不会导致用户帐户被锁定.
感谢耐心阅读, 文章仅供参考, 本人学艺不精, 不足之处欢迎师傅们指点和纠正!