随着近年来Windows系统持续更新以及良好的维护,即使从内部测试的角度来看,从Windows环境中枚举有效的操作系统级的用户名变得越来越不可能,也不会再有RID循环从未经认证的角度向我们提供了完整的域用户列表的情况发生。
但是呢,正所谓车到山前必有路,就内部评估而言,Kerberos服务(88 / tcp)仍然为我们提供了一个与枚举域帐户名称相关的快乐狩猎场所。
本质上,用户名枚举通过以下Kerberos错误代码来加以利用:
有一些已经开发出来有一段时间但仍然十分好用工具,它使我们能够利用这些Kerberos响应来识别有效或无效的域帐户。
到目前为止,我所使用的两种工具都由Patrik Karlsson提供,第一种是独立Java工具Krbguess,第二种是nmap的krb5-enum-users NSE脚本。
Krbguess
用法:
Java –jar kerbguess.jar –r [domain] –d [user list] –s [DC IP]
Nmap krb5-enum-users NSE Script
用法:
Nmap –p 88 –script-args krb5-enum-users.realm=’[domain]’,userdb=[user list] [DC IP]
Metasploit Module: auxiliary/gather/kerberos_enumusers
像大多数渗透测试人员一样,我是Metasploit框架的重度用户。多年来我一直希望能在框架内利用此功能。但是不知出于何种原因,它似乎从未实现过,所以我打算尝试一下实现这个功能。
在很大程度上依赖其他Metasploit贡献者提供的Kerberos支持,并使用ms14_068_kerberos_checksum的辅助模块作为模板,该过程的实现,实际上比我预期的要简单得多。
新的Metasploit辅助模块可以在以下位置找到:
auxiliary/gather/kerberos_enumusers
与前面讨论的Kerberos枚举工具一样,需要提供3个值:
域名(DOMAIN)
域控制器IP(RHOST)
用户列表(USER_FILE)
现在可以运行该模块以通过Kerberos服务枚举有效(和禁用/锁定)的域帐户:
最后,由于在rapid7中增加了bwatter-r7,任何有效的枚举用户名都存储在Metasploit数据库中,并且可以通过creds命令检索:
参考文献:
http://www.cqure.net/wp/tools/password-recovery/krbguess/
https://nmap.org/nsedoc/scripts/krb5-enum-users.html
https://www.rapid7.com/db/modules/auxiliary/admin/kerberos/ms14_068_kerberos_checksum
领取专属 10元无门槛券
私享最新 技术干货