导语:Rohan在他的文章中提到的,BloodHound 1.5代表了BloodHound项目的一个非常重要的里程碑。通过添加GPO和OU结构,我们大大增加了Active Directory攻击面的范围,你可以使用BloodHound来轻松映射。

用BloodHound分析

首先,确保你至少运行了BloodHound 1.5.1。其次,你需要拥有标准的SharpHound集合,但是这次你要选择执行“All”或“Containers”以及“ACL”收集方法,这将为你收集GPO ACL和OU结构:

C:\> SharpHound.exe -c All

然后,像平时那样通过BloodHound接口导入得到的acls.csv,container_gplinks.csv和container_structure.csv。现在你已准备好开始针对对象来分析出站和入站的GPO控制。

例如,让我们看看我们的“Alice Admin”用户。如果我们搜索此用户,然后单击用户节点,你将在用户选项卡中看到一些新的信息,其中包括“有效入站GPO”:

image.png

上图:两个GPO适用于Alice Admin。

产生这个数字的Cypher查询会为你执行强制GpLink和OU阻止继承逻辑,因此你无需担心自己需要自行解决这个问题。在这种情况下,只需点击数字“2”,即可查看适用于“Alice Admin”的GPO:

image.png

上图展示了两个GPO是如何应用于Alice Admin的。

请注意,将“默认域策略”连接到“Contoso.Local”域的边缘是虚线。这意味着这个GPO没有执行; 然而,所有“Contains”边都是固定的,这意味着这些容器都不会阻止继承。回想一下,未强制的GpLinks只会受到阻止继承的OU的影响,因此在这种情况下,默认域策略仍然适用于Alice Admin。

另外请注意,将“客户密码策略”连接到“Contoso.Local”域的边缘是可靠的。这意味着此GPO 已执行,因此将应用于所有子对象,而不管后续容器是否阻止继承。

我们也可以看到这一点的另一面 – 任何给定的GPO能够有效地适用于哪些对象?首先,我们来看看自定义密码策略GPO:

image.png

上图:自定义密码策略GPO适用于3台计算机和5个用户。

提醒:GPO只能应用于用户和计算机,而不能应用于安全组。

通过单击数字,你可以看到受此GPO影响的对象以及GPO如何应用于这些对象。如果我们点击“用户对象”旁边的“5”,我们得到这个图表:

image.png

上图展示了客户密码策略GPO是如何应用于用户对象的。

这里需要指出两点:重新将“自定义密码策略”GPO连接到“Contoso.Local”域对象的边缘是可靠的,这意味着此GPO已强制执行。其次,注意连接“Account”OU和“Bob User”用户的边被虚线连接,表示“Account”OU 是继承的。但是,由于“自定义密码策略”GPO被强制执行,OU阻止继承无关紧要,因此将无论如何会应用于“Bob User”用户。

如果我们对“默认域策略”执行相同操作,请将上述图形与我们得到的图形进行比较:

image.png

上图:受“默认域策略”GPO影响的用户。

注意“Bob User”用户为何不在那里?这是因为“默认域策略”GPO未被强制执行。因为“Account” OU是继承的,该GPO将不适用于“Bob User”用户。

好吧,让我们把它放在一起,看看我们能否找到从“Bob User”到“Alice Admin”的攻击路径。在BloodHound搜索栏中,单击路径查找图标,然后选择你的源节点和目标节点。点击回车,BloodHound会找到并呈现一条攻击路径,如果存在的话:

image.png

上图:从“Bob User”到“Alice Admin”的攻击路径。

从左至右阅读此图,我们可以看到“Bob User”位于名为“Accounting”的组中,该组是“Group Policy Admins”组的一部分(当我说疯狂的事情发生在野外时,请相信我,并记住这是一个人为的例子:)。如你所想,“组策略管理员”组具有完全控制“自定义密码策略”GPO的权限。该GPO然后链接到“Contoso.Local”域。从这里我们有几个选项 – 将恶意策略推送给“管理员”用户,并使用基于ACL的攻击接管“Alice Admin”,或直接将恶意策略直接推送给“Alice Admin”用户。

滥用GPO控制

最后,这是整个话题中最重要的部分:如何实际接管计算机和用户,以控制影响这些用户的GPO。想了解一些背景知识和灵感,请阅读Will发表的一篇关于滥用GPO权限好文章,其中包含有关我了解的第一个概念验证GPO滥用cmdlet的信息,即New-GPOImmediateTask。

你可以用GPO做任何事情。Will和我将这些滥用电脑的名单放在一起,包括策略定位和滥用,只是为了给你一些想法:

· 策略位置:计算机配置\首选项\控制面板设置\文件夹选项

· 滥用:创建/更改文件类型关联,使用这些关联注册DDE操作。

 

· 策略位置:计算机配置\首选项\控制面板设置\本地用户和组

· 滥用:添加新的本地管理员帐户。

 

· 策略位置:计算机配置\首选项\控制面板设置\计划任务

· 滥用:部署一个新的恶意的计划任务(即:PowerShell下载)。

 

· 策略位置:计算机配置\首选项\控制面板设置\服务

· 滥用:创建并配置新的恶意服务。

· 策略位置:计算机配置\首选项\ Windows设置\文件

· 滥用:受影响的计算机将从域控制器下载文件。

 

· 策略位置:计算机配置\首选项\Windows设置\INI文件

· 滥用:更新现有的INI文件。

 

· 策略位置:计算机配置\首选项\Windows设置\注册表

· 滥用:更新特定的注册表项。对于禁用安全机制或以多种方式触发代码执行非常有用。

 

· 策略位置:计算机配置\首选项\Windows设置\快捷方式

· 滥用:部署新的恶意快捷方式。

 

· 策略位置:计算机配置\策略\软件设置\软件安装

· 滥用:部署一个恶意的MSI。MSI必须通过网络共享提供给GP客户端。

 

· 策略位置:计算机配置\策略\Windows设置\脚本(启动/关闭)

· 滥用:配置和部署恶意的启动脚本。可以从GPO目录运行脚本,也可以使用参数运行PowerShell命令

 

· 策略位置:计算机配置\策略\Windows设置\安全设置\本地策略\审核策略

· 滥用:修改本地审计设置。用于逃避检测。

 

· 策略位置:计算机配置\策略\Windows设置\安全设置\本地策略\用户权限分配\

· 滥用:授予用户通过RDP登录的权利,授予用户SeDebugPrivilege,授予用户加载设备驱动程序的权利,授予用户seTakeOwnershipPrivilege。基本上,接管远程计算机而不需要管理员。

 

· 策略位置:计算机配置\策略\Windows设置\安全设置\注册表

· 滥用:改变注册表项上的DACL,这样可以让管理员(包括你自己)难以在系统上找到后门。

 

· 策略位置:计算机配置\策略\Windows设置\安全设置\ Windows防火墙

· 滥用:管理Windows防火墙。如果端口被阻塞,请打开端口。

 

· 策略位置:计算机配置\首选项\Windows设置\环境

· 滥用:为DLL加载添加UNC路径。

 

· 策略位置:计算机配置\首选项\Windows设置\文件

· 滥用:从远程UNC路径复制文件。

所以,这一切都很好,但我们如何才能真正采取这些行动呢?目前,你有两种选择:下载并安装组策略管理控制台,并使用GPMC GUI修改相关的GPO或手动制作相关策略文件并正确修改GPO和gpt.ini文件。

接下来的描述将作为一个例子,假设你要将新的即时计划任务推送到计算机或用户。基于测试和Microsoft组策略首选项功能规范,我目前的理解(肯定会予以更正)如下:

只要组策略客户端(用户或计算机)检查更新的组策略,他们就会经历几个步骤来收集和应用组策略。客户端将检查远程版本的GPO是否大于该GPO的本地缓存版本(除非使用gpupdate /force)。远程版本的GPO存储在两个位置:

1.作为组策略对象本身的versionNumber属性的整数值。

2.与位于\\<domain.com>\Policies\<gpo name>\GPT.ini中的GPT.INI文件中的整数相同。请注意,GPO的“名称”不是显示名称。例如,默认域策略的“名称”是{6AC1786C-016F-11D2-945F-00C04fB984F9}。

如果远程GPO版本号大于本地缓存版本,则组策略客户端将继续分析相关的SYSVOL目录中需要搜索的策略或首选项。对于组策略首选项(那些会被取消的任务),组策略客户端将检查哪些客户端扩展(CSE)将作为“gPCMachineExtensionNames”和“gPCUserExtensionNames”属性的一部分。根据Microsoft组策略首选项功能规范,CSE GUID“使组策略客户端上的特定客户端扩展与存储在组策略对象(GPO)的逻辑和物理组件中的策略数据相关联组策略服务器,用于该特定扩展。“立即计划任务的CSE GUID,

[{00000000-0000-0000-0000-000000000000} {79F92669-4224-476C-9C5C-6EFB4D87DF4A} {CAB54552-DEEA-4691-817E-ED4A4D1AFC72}] [{AADCED64-746C-4633-A97C-D61349046527} {CAB54552- DEEA-4691-817E-ED4A4D1AFC72}]

并且以更易读的格式显示:

[
    {00000000-0000-0000-0000-000000000000}
    {79F92669-4224-476C-9C5C-6EFB4D87DF4A}
    {CAB54552-DEEA-4691-817E-ED4A4D1AFC72}
]
[
    {AADCED64-746C-4633-A97C-D61349046527}
    {CAB54552-DEEA-4691-817E-ED4A4D1AFC72}
]

这转化为以下内容:

[
    {Core GPO Engine}
    {Preference Tool CSE GUID Local users and groups}
    {Preference Tool CSE GUID Scheduled Tasks}
]
[
    {Preference CSE GUID Scheduled Tasks}
    {Preference Tool CSE GUID Scheduled Tasks}
]

一旦组策略客户端了解到有一些适用于该策略的计划任务,它将搜索名为ScheduledTasks.xml的GP目录中的文件。该文件存在于可预测的位置:

\\<domain.com>\sysvol\<domain.com>\Policies\<gpo-name>\Machine\Preferences\ScheduledTasks.xml

最后,组策略客户端将解析ScheduledTasks.xml并在本地注册任务。

据我了解,这就是过程的运作方式。在制作脚本来自动执行GPO滥用流程方面还有很多工作要做,因为在红色团队评估中安装GPMC是一个很好的选择。如果曾经有过对武器的召唤,那大概就是这样:我们将继续致力于创建能够可靠地自动化GPO控制滥用的脚本,但同样也很高兴看到社区中的人们也可以提出相同的思路。

结论

正如Rohan在他的文章中提到的,BloodHound 1.5代表了BloodHound项目的一个非常重要的里程碑。通过添加GPO和OU结构,我们大大增加了Active Directory攻击面的范围,你可以使用BloodHound来轻松映射。在未来的博客文章中,我将更多地关注事物的防御方面,展示我们正在跟踪GPO和OU结构时,防御者该如何使用BloodHound分析和减少AD中的攻击面。

BloodHound在GitHub上是免费和开源的,网址为https://github.com/BloodHoundAD/BloodHound

你可以加入Slack的官方BloodHound Gang Slack:https://bloodhoundgang.herokuapp.com/

源链接

Hacking more

...