从外部获取Active Directory域管理员权限
…或为什么应确保所有Windows机器都加入域。
这是我博客上的第一篇非Web主题文章。我传统上是一名Web开发人员,这也是我对信息安全最初产生兴趣的地方。然而,自从我成功扩展到渗透测试领域后,Active Directory测试已成为我最喜欢的渗透测试类型。
这篇文章是关于我几年前进行的一次内部网络测试。该客户的网络很难攻破,我之前测试过,所以再次为他们进行测试时我有些担心,怕无法“成功入侵”。上一次我们勉强才成功。
在内部网络上我首先运行的是Responder工具。该工具可以从本地子网的LLMNR或NetBIOS请求中捕获Windows哈希。然而,该客户很明智,禁用了LLMNR和NetBIOS请求。尽管从上一次合作中我已经知道这一点,但我在OSCP课程中学到的一点是始终先尝试简单的方法——如果前门开着,就没有必要从天窗闯入。
于是我运行了Responder,惊讶地捕获到了以下哈希:
当然,我绝不会在博客中透露客户机密信息,因此您在这里看到的所有内容都是匿名的,并在实验室中重新创建,细节已更改。
这里我们可以看到主机172.16.157.133向我们发送了账户FRONTDESK的NETNTLMv2哈希。
使用Crack Map Exec(或其他可用工具)检查该主机的NetBIOS信息,我们可以确认这是否是本地账户哈希。如果是,用户名的“域”部分: [SMBv2] NTLMv2-SSP Username : 2-FD-87622\FRONTDESK
即2-FD-87622应匹配主机的NetBIOS名称。使用CME查找IP,我们可以看到主机名称匹配:
因此,下一步我们尝试破解该哈希并获取明文密码。使用Hashcat加载rockyou.txt和规则,快速破解了密码。 hashcat -m 5600 responder /usr/share/wordlists/rockyou.txt -r /usr/share/rules/d3adhob0.rule
现在我们有了前台机器的凭据。再次使用CME访问该机器,但这次传递破解的凭据: cme smb 172.16.157.133 -u FRONTDESK -p ‘Winter2018!’ –local-auth
我们可以在输出中看到Pwn3d!,表明这是一个本地管理员账户。这意味着我们拥有转储本地密码哈希所需的权限: cme smb 172.16.157.133 -u FRONTDESK -p ‘Winter2018!’ –local-auth –sam
注意我们可以看到 FRONTDESK:1002:aad3b435b51404eeaad3b435b51404ee:eb6538aa406cfad09403d3bb1f94785f::: 这次我们看到的是密码的NTLM哈希,而不是Responder之前捕获的NETNTLMv2“挑战/响应”哈希。Responder捕获的是传输中的哈希,这些与Windows在SAM中存储的格式不同。
下一步是尝试使用本地管理员哈希,并在客户的服务器范围内进行喷洒。注意,我们甚至不需要破解该管理员密码,我们可以直接“传递哈希”: cme smb 172.16.157.0/24 -u administrator -H ‘aad3b435b51404eeaad3b435b51404ee:5509de4ff0a6eed7048d9f4a61100e51’ –local-auth
我们只能使用存储的NTLM格式传递哈希,而不能使用NETNTLMv2网络格式(除非您考虑执行“SMB中继”攻击)。
令我们惊讶的是,它命中了,本地管理员密码在STEWIE机器上被重复使用。查询该主机的NetBIOS信息:
$ cme smb 172.16.157.134
SMB 172.16.157.134 445 STEWIE
[*] Windows Server 2008 R2 Foundation 7600 x64 (name:STEWIE) (domain:MACFARLANE)
(signing:False) (SMBv1:True)
我们可以看到它是MACFARLANE域的成员,该域是客户Active Directory的主域。
因此,非域机器上的本地管理员密码在内部服务器上被重复使用。我们现在可以使用Metasploit通过PsExec登录到该机器,使用NTLM作为密码,这将导致Metasploit传递哈希。
一旦运行,我们获得了shell:
我们可以加载Mimikatz模块并读取Windows内存以查找密码:
看起来我们有了DA(域管理员)账户的详细信息。最后,我们使用CME在域控制器上执行命令,将自己添加为DA(仅作为概念验证,在现实生活中或为了更隐蔽,我们可以直接使用发现的账户)。 cme smb 172.16.157.135 -u administrator -p ‘October17’ -x ’net user markitzeroda hackersPassword! /add /domain /y && net group “domain admins” markitzeroda /add’
注意使用了未记录的/y功能来抑制Windows在添加超过14个字符的密码时给出的提示。
域控制器的远程桌面截图可以作为利用证明放入报告:
因此,如果这台前台机器加入了域,LLMNR将被禁用(根据其组策略设置),我们就无法获得初始访问权限,并利用其秘密来危害整个域。当然,还有其他缓解措施,例如使用LAPS管理本地管理员密码,并设置FilterAdministratorToken以防止使用本地RID 500账户进行SMB登录(关于此有一篇很棒的文章在这里)。