我对信息安全的兴趣也从 web 开始。从最初的兼职到如今的全职,活动目录(Active Directory)测试已成为我最喜欢的渗透测试类型。
这篇文章是关于我在今年早些时候为客户做内网测试的情景。这个客户的网络情况非常的复杂,而且之前我已做过测试,因此我有点担心我无法完成这个测试任务。而在此之前我们仅仅只是管理它。
我在内网跑的第一个工具是Responder。该工具将会为我获取本地子网上的LLMNR或NetBIOS请求中的Windows散列。但不幸的是管理员竟然禁用了LLMNR和NetBIOS请求。尽管从之前的测试中已经预料到了这种情况,但在OSCP课程中我学到一个道理 - 就是如果门是敞开的,破窗而入就没有任何意义。
运行Responder后,我捕获到了以下哈希值这是我非常震惊:
以上显示的信息均已做过特殊处理,保护客户的隐私是安全测试人员的职责。
在这里,我们可以看到主机172.16.157.133向我们发送了帐户FRONTDESK的NETNTLMv2哈希值。
使用Crack Map Exec检查此主机的NetBIOS信息(也可用其它工具),我们可以检查这是否是本地帐户哈希。 如果是的话,则“domain”部分就是用户名了:
即2-FD-87622应与主机的NetBIOS名称匹配(这种情况下)。使用CME查找IP,我们可以看到主机匹配的名称:
接下来我们来尝试破解这个散列以获取明文密码。在Hashcat的帮助下,密码很快就被破解了出来。
现在我们已经获取到了front desk机器的凭据了。我们再次使用CME扫描,但不同的是这次我们传递了已破解的凭据:
我们可以看到Pwn3d!从结果可以得知这是一个本地的管理员帐户。这意味着我们现在拥有了dump本地密码散列的权限:
注意看
这一次,我们看到的是密码的NTLM哈希值,而不是Responder之前捕获的NETNTLMv2“challenge/response”哈希值。Responder捕获的散列,与Windows在SAM中存储的格式并不同。
下一步我们开始来使用这个本地管理员哈希。这里需要特别说明的是,我们并不需要特意去破解这个哈希,可以直接通过哈希传递的方式来利用它:
我们只能使用存储的NTLM格式传递哈希值,而不是NETNTLMv2网络格式(除非你想执行“SMB中继”攻击)。
令我们惊讶的是,STEWIE机器使用的密码与本地管理员密码相同。 查询此主机的NetBIOS信息:
我们可以看到它是MACFARLANE域的成员,并且是客户端Active Directory的主要域。
也就是说,一台域外机器的本地管理员密码在内部服务器被重用。现在,我们可以通过Metasploit PsExec模块,将NTLM哈希作为密码传递给目标机器登录并控制机器:
成功执行后我们得到了一个shell:
我们可以加载Mimikatz模块,读取Windows内存查找密码:
现在我们获取到了DA(域管理员)帐户的详细信息。最后,我们使用CME在域控制器上执行命令,将自己添加为一个DA(纯粹是为测试,在实际渗透中为了更加隐蔽,我们可以使用已发现的帐户)。
请注意,以上命令中的/y参数的作用是让Windows允许我们添加的密码长度大于14个字符。
进入到域控制器远程桌面的截图,可以作为成功利用的证据写进报告:
针对这次测试中的问题,我的建议是禁用LLMNR(在策略中),这样攻击者就不会获取初始的访问权限,直至对整个域的渗透。当然除了禁用LLMNR外还有其它的防护措施,例如使用LAPS管理本地管理员密码,并设置FilterAdministratorToken防止本地RID 500帐户进行SMB登录。
领取专属 10元无门槛券
私享最新 技术干货