本文探讨了攻击者是内网渗透时会如何利用内置的Active Directory管理功能——组策略,以及如何缓解潜在的安全问题。
组策略概述
Active Directory的主要优点之一是其强大管理功能,并且此功能的核心就是组策略。组策略有几个部分,可以在没有第三方管理工具的大型企业内网中进行具有挑战性的管理工作。
组策略可以使管理员对Active Directory中的计算机和用户进行管理。组策略保存为组策略对象(GPO),然后与Active Directory对象(如站点,域或组织单位(OU))相关联。组策略可以包括安全选项,注册表项,软件安装以及启动和关闭脚本,域成员默认情况下每隔90分钟刷新一次组策略设置(域控制器为5分钟)。这意味着组策略会强制在目标计算机上配置相关的设置。
在大多数Active Directory的设置中,在域内配置了至少一个GPO,定义了强制密码,Kerberos和域范围的策略; 为域控制器OU配置了至少一个GPO; 以及为服务器和工作站OU配置了至少一个GPO。这些GPO定义了特定环境的安全设置,通常配置管理组,包括启动/关闭脚本等。GPO可以配置为在每个级别设置组织定义的安全要求,并可用于安装软件和设置文件,注册表权限 。GPO仅适用于用户和计算机,并且可以使用“组”过滤或使用“首选项”组件来更具体地进行针对性的配置。“无覆盖”选项确保组策略中的设置即使应用了更接近资源且具有矛盾的GPO设置。
有两个组策略组件:
1.“ 组策略容器 ”存储在Active Directory中(<DOMAIN>,系统,策略)
2.实际包含策略设置的文件(统称为“ 组策略模板 ”)存储在SYSVOL中。
所有域的组策略都存储在以下域的共享中:<DOMAIN>SYSVOL<DOMAIN>Policies
Active Directory中的每个组策略对象具有以下属性(在AD中的策略对象上):
· displayName:这是创建者为GPO指定的名称。
· gPCFileSysPath:它指向SYSVOL中关联的GPO文件(也称为“组策略模板”)所在的位置。
· gPCMachineExtensionNames:此属性列出了客户端处理机器特定组策略设置所需的GPO客户端扩展(CSE)。
· gPCUserExtensionNames:此属性列出了客户端处理用户特定组策略设置所需的GPO客户端扩展(CSE)。
使用PowerShell Active Directory模块 cmdlet“ Get-ADObject ”,我们可以检索GPO的关键特定属性。
PowerShell Active Directory模块可以通过在管理员PowerShell控制台中运行以下命令就能轻松安装在Windows Server 2008 R2(及更高版本)上:
Import-module servermanager ; add-windowsfeature rsat-ad-PowerShell
此外,每个组策略都有一个用于连接GPO组件的GPO GUID:
· GPO策略文件以GPO GUID作为名称存储在GPO对象中。
· SYSVOL中的组策略模板文件存储在以GPO GUID作为名称的文件夹中。
· GPO策略对象的可辨别名称被添加到GPO链接到的组织单位(OU)的属性“gPLink”中。
当创建新的GPO时,它可以在AD中创建,可以不进行链接(在这种情况下,不执行任何操作),或链接到OU,域或站点。创建后,将在组策略容器(<DOMAIN>,系统,策略)中创建新的组策略对象,并在SYSVOL结构(基于GPO GUID名称)中创建关联的文件。将组策略链接到OU时,例如,OU的“gPLink”属性将使用GPO的可辨别名称进行更新。这提供了一种计算机识别哪些组策略适用于自身以及适用于登录用户的方法。
使用PowerShell Active Directory模块 cmdlet“ Get-ADOrganizationalUnit ”,我们可以检索链接到“服务器”OU的组策略。
SYSVOL是Active Directory中的域范围内的共享,所有经过身份验证的用户对具有读访问权限。SYSVOL包含登录脚本,组策略数据以及需要在任何具有域控制器的任何地方可用的其他域范围的数据。SYSVOL共享可以自动同步并在所有域控制器之间共享。
此策略文件夹中的每个GPO文件夹的文件夹名称与GPO的GUID相同。
SYSVOL中的每个GPO文件夹具有以下内容:
· 机器 – 此文件夹包含GPO的机器特定设置。
· 用户 – 该文件夹包含GPO的用户特定设置。
· GPT.INI – 此文件包含GPO的配置设置。
请注意,GPO通过GPO GUID在AD中进行跟踪,GPO GUID具有AD对象的单独的AD对象GUID。这有一些不同的原因,其中一个主要原因是确保特定的组策略对象有可预测的GUID,而不管Active Directory实例如何。“默认域策略”GPO的GUID默认为“31B2F340-016D-11D2-945F-00C04FB984F9”,“默认域控制器策略”GPO的GUID为“6AC1786C-016F-11D2-945F-00C04FB984F9”。
在下面的图片中,ObjectGUID属性为“0115c3fa-1628-40d0-8a68-2d05530d6f76”,与GPO GUID“31B2F340-016D-11D2-945F-00C04FB984F9”显然不一样。
组策略管理
组策略管理通常在大型企业中委托使用,因此很多不同的企业组织能够创建,修改和删除组策略。然而这样带来的问题是,组策略很快就会变得无法管理,难以管理,因为原来设计的(和选定的)管理员除了拥有GPO管理员权限以外还有很多权限。这些权限通常在域级别进行委托,因此编辑(或全部)权限适用于所有域GPO,甚至适用于域(所有)和/或域控制器的域。
组策略管理控制台(GPMC)是组策略管理的主要工具,还有一个PowerShell模块(GroupPolicy),它可以用于报告和备份GPO(请使用Backup-GPO定期备份域GPO)这非常有用。
组政策持续能力
组策略旨在简化对域内资源的管理,尽管攻击者也可以通过组策略配置攻击性的恶意软件,创建/修改计划任务,降级凭证保护,向所有计算机添加新的本地帐户,并添加到本地管理员组。甚至更改现有的安全策略,实现明文密码提取。
一些可能性:
· 配置PowerShell或VBS脚本以便在域或服务器级别设置用户组成员资格
· 执行我之前描述过的其他“猥琐的域权限持久性技巧”之一。
· 在SYSTEM上每周定期运行Invoke-Mimikatz。
· 拉取KRBTGT帐户,然后计划性的使用伪造的Kerberos票证在整个林中的某些计算机上运行DCSync的同步任务。
· 在域/林中的每台计算机上安装或重新安装恶意软件。
· 通过在一个或所有域控制器上自动运行PowerShell脚本来转储所有计算机本地管理员帐户的所有Microsoft LAPS密码。一旦组策略成为其工具包的一部分,攻击者就会有多种选择。
事实上,2015年的Mandiant M-Trends 2016报告中涵盖了2015年的一些攻击活动,包括有关攻击者如何利用组策略部署恶意软件的信息:
请注意,黑客组织利用组策略作为黑客攻击的一部分:http://pastebin.com/raw/0SNSvyjJ
红军团队关于组策略的注意事项:
默认的组策略应用程序的行为是在客户端上“刷新组策略”,但实际上并不意味着GPO设置会被重新应用。默认情况下,如果GPO在刷新之前被修改,则GPO的设置才会被重新应用。这意味着可以通过计算机的注册表(通常具有管理员权限)来反转GPO强制设置,并且未经授权的设置将会一直保留,直到GPO被修改为止,然后重新应用GPO设置。
蓝军团队防御:
经过测试后,更改组策略默认设置,以便在每次刷新时重新应用GPO设置(即使组策略对象未更改也会处理)。这对客户端具有潜在的性能影响,但将确保所有GPO强制设置都被重新应用。
计算机配置,策略,管理模板,系统,组策略,配置安全策略处理:设置为已启用。
另外选中“ 即使组策略对象没有更改仍然处理 ”
还建议为以下每个配置进行相同的设置:
· 计算机配置,策略,管理模板,系统,组策略,配置注册表策略处理
· 计算机配置,策略,管理模板,系统,组策略,配置脚本策略处理
· 以及根据需要为任何其他策略进行设置。
组策略利用能力
虽然这篇文章的重点是保留域级别特权的访问(“域管”权限),但是有几种方式可以使用现有组织的组策略配置来提升访问权限。比较明显的一个方法是利用环境中现有的组策略首选项凭据,这使得攻击者能够将域用户升级到服务器/应用/ OU管理员甚至域管理员。不太明显的方法是通过自定义安全设置来查找在域或顶级OU上链接的GPO。
基于我执行的AD安全性评估,我发现企业组织经常将GPO链接到高级别权限,并为不是Active Directory管理员的帐户提供编辑权限的自定义安全设置。由于GPO可以被重新配置为运行脚本或更改安全性,因此为攻击者提供了特权提升的途径。
PowerView现在集成到PowerSploit中,通过PowerShell包含了一些有趣的组策略枚举功能。
以下示例显示了一个名为“完全审核策略”的组策略,该域策略已在域级别链接,该级别具有委派给“Han Solo”(服务器管理)帐户的“编辑设置”权限。
Han Solo是“Server Admins”组的成员,但是该用户组不是域管理组。
由于Han Solo有权限编辑此域名链接的GPO,所以我们来修改它。
编辑组策略后,此GPO现在将在域中的每台计算机上添加一个计划任务,从而实现攻击者所希望的任何类型的攻击活动。
“隐藏组策略” – 适用于站点的组策略
我们知道,组策略通常适用于组织单位(OU),我们可以在GPMC中轻松查看。
不过,许多管理员并没有意识到,尽管将组策略与站点相关联并不是最佳做法,但是没有任何办法阻止域管理员(企业管理员)这样做。
所需要的操作是选择应在组策略管理控制台中显示的AD站点,并将新的/更新的组策略链接到站点
看看GPMC,我们可以看到有两个与HQ站点相关的组策略,最近都被修改了(提示!)。
您当前的监控系统是否会会对此更改事件进行通知?
缓解措施
应将AD环境中的所有组策略配置为单一的目的,并监视未经授权的修改,特别是与域,域控制器OU和/或顶级OU(如工作站,服务器,管理员等)链接的GPO。
应定期审查授予给组策略的权限,特别是与顶级OU相关的权限。只有Active Directory管理员应该对应用于域,顶级OU以及与关键资产(域控制器,服务器,管理计算机等)链接的GPO的GPO具有修改权限。
此外,所有站点都应该查看所链接的组策略,因为这些GPO可以跨域同步,这会使得攻击者在同一AD林中进行跨域特权提升。
SYSVOL的权限非常重要,并且必须保持与默认设置相同,因为SYSYOL包含由GPO客户端应用的文件中的实际组策略设置。如果GPO配置文件具有允许某些不是Active Directory管理员的人员更改该文件的权限,从而更改GPO客户端实际执行的操作,则攻击者可能会迅速将已有的权限提升到域管理级别的权限。