t014c1fe8c4dfc9f7ed.jpg

 


一、前言


组策略(Group Policy)是Windows提供的一种功能,可以为操作系统、应用以及用户设置提供集中式的管理及配置功能。对于网络中基于活动目录域服务(Active Directory Domain Service、AD DS)的计算机以及用户设置来说,组策略是访问并配置这些组件的最为简单的一种方法。企业环境中广泛使用组策略来控制客户端及服务器配置选项,如注册表设置、安全选项、脚本、文件目录、软件安装及维护等等。具体的设置信息存放于组策略对象(Group Policy Objects、GPOs)中,对于已被攻击者突破的域而言,攻击者可以滥用GPO,通过欺诈方式进一步自动化地传播恶意软件、实现持久化驻留目的。Phineas Fishers写过一篇如何搞定HackingTeam的文章,我们的灵感正是源自于此,在这篇文章中,我们会向大家介绍如何利用GPO在已被突破的企业网络中实现持久化及横向渗透,也会展示我们创建的某些Powershell Empire模块。Powershell Empire框架包含各种广泛使用的Powershell工具,攻击者经常在已突破的环境中,根据实际需求利用这一框架进一步破坏系统。Powershell Empire框架中已经内置了一些GPO功能,我们想在其他场景中进一步拓展GPO的能力。此外,我们也会在本文中讨论一些应对措施,包括检测及防护机制等。


二、具体分析


当售卖间谍软件的意大利公司被突破后,去年有人发表了一份报告介绍了整个攻击的具体过程。同样也是这个人成功搞定了一个销售木马及其他黑客工具的德国英国合资公司,这一事件也上了新闻头条。这份报告由攻击者自己发布,对攻击中用到的技术做了深度的分析。报告的结论非常吸引人,因为这类攻击属于传统意义上的高级持续威胁(Advanced Persistent Threat,APT)攻击。此类攻击者通常更为细心,以便长期潜伏在目标网络中,攻陷更多系统,收集大量数据。

分析这份报告的同时,我们注意到一下两段话:

1、远程管理(第565行)

5)GPO

在这些协议已经被防火墙禁用或者阻拦的情况下,如果你是域管理员,你可以使用GPO给用户设置登录脚本、安装msi文件、执行计划任务,或者使用GPO来启用WMI并打开防火墙。

2、持久化(第726行)

对企业目标来说,持久化不是一个必需的选择,因为企业永远不会入睡。我一贯使用方法是类似于Duqu 2的持久化技术,即在多台长时间运行的服务器的内存中运行后门程序。

在报告的第一部分中,作者将GPO作为攻击性工具的想法非常有趣。使用GPO来传播恶意软件或者部署非法配置是一种非常有效的方法,因为当恶意软件经过GPO进行传播时(这种方法类似于PowerShell的使用),这一过程利用到了Windows域管的身份以及合法的系统内置工具。恶意软件可以利用GPO穿越IDS/IPS等防火墙,最终访问到域内所有的系统。此外,GPO的另一优点就是攻击过程期间并不需要目标系统在线,一旦离线状态下的目标系统重新登录到域中,恶意的GPO载荷就会被投递到目标系统。即使首次攻击发生于几星期之前,这种持续性攻击同样能够奏效。此外,GPO经常随着时间的推进而不断增长,在微软活动目录中的存储及链接状态也会越来越混乱,并且管理员经常会忽略命名约定,很少会去删除已经失效的GPO,这些都给攻击者滥用GPO创造了良机。

报告的第二部分中比较有趣的一点,是作者将后门部署在非常稳定的服务器的内存中,以保持对目标网络的持续控制。当被注入后门的系统重启后,内存型后门马上会失效。但这一情况不会对高度稳定的多个服务器造成影响,因为这些服务器不可能在同一时间重新启动。

系统管理员会使用多种工具对公司进行管理。与此类似的是,黑客攻击者或者渗透测试人员也会在APT场景中使用多种工具来进一步渗透目标环境。这类框架提供了各种各样的功能选项,比如管理目标系统、评测更多目标、部署后门、提升权限或者窥探用户隐私等。

大约1年之前,PowerShell Empire这一强大的框架诞生了,能够满足以上提到的所有需求,并且也处于不断的发展中。模块化的PowerShell Empire最大的一个优点就是在目标系统中只会留下非常少的痕迹。反病毒软件或者端点防护软件并不会将PowerShell命令的执行识别为恶意行为,因为PowerShell是Windows系统中内置的合法工具。

此外,工具与命令控制(Comand & Control)服务器的通讯也经过加密处理,并且大多数模块能够不依托目标系统的硬盘,完全在内存中执行。由于恶意代码完全没有接触硬盘,因此反病毒软件以及端点防护软件更加难以检测此类攻击。如果攻击中需要将数据保存到硬盘中,Empire模块的开发者建议攻击者将该模块的opsec-safe属性去掉。

结合以上两部分内容提到的思想,我们开发了多个PowerShell Empire模块。这些模块利用GPO实现了自动化处理过程,能够为合法的渗透测试者提供帮助,也能为红队人员的后续渗透工作提供支持。唯一的前提条件就是使用者必须已经获得域管级别的访问权限。

我们开发完成的模块如表1所示。

http://p3.qhimg.com/t0148203841acf7f134.png

表1. 已开发的模块

为了完成不同的目标,这些模块需要以多种方式组合使用,如图1所示。 

t01e70c6ccaa0888e04.png

图1. 使用GPO攻击目标网络

2.1 场景1:内存中的模块

攻击者会在本地启动一个PowerShell Empire监听端(Listener),然后在目标域控上运行对应的启动端(Launcher),再回连到监听端。由于大多数防火墙都不会阻拦出站端口,因此连接可以顺利建立。攻击者可以使用getGPO模块,读取所有的GPO信息,记录这些GPO的UUID,并且添加恶意的设置内容(如图2所示)。通过setGpRegistryValue模块,攻击者可以在目标主机上创建run或者run once注册表键值。

 http://p3.qhimg.com/t012e2e92d1cb58448b.png

图2. PowerShell Empire中的getGPO模块

这些模块可以再次执行包含启动端的PowerShell代码,从目标系统内回连至攻击者。

2.2 场景2:操控Windows防火墙并启动服务

在另一个场景中,攻击者创建了到域控服务器的连接。攻击者在这个场景中的目标是操控Windows防火墙规则、启动WMI(Windows Management Instrumentation)服务,然后在经过安全加固的环境中执行远程发送的命令。首先,攻击者可以使用getGPO模块读取已有的组策略。找到合适的GPO之后,攻击者可以使用newGpFirewallRule模块将恶意防火墙规则添加到GPO中(如图3所示)。这个规则能够允许任意入站TCP连接连入目标系统。newGpSetServiceStatus模块可以启动目标系统上的WMI服务。默认情况下,GPO需要等待90分钟才能发挥作用,为了绕过这一限制,攻击者可以使用invokeGPUpdate模块,第一时间启用WMI服务的远程访问。

 t0158f95ab36affa844.png

图3. PowerShell Empire中的new_GPO_Firewall_Rule模块

一旦拥有多台目标主机的远程WMI访问权限,攻击者就可以执行其他操作,比如搜索本地文件等等。与在远程桌面协议(RDP)连接中手动搜索文件相比,这种搜索文件的方式显得更具可扩展性、更加快速以及更为隐蔽。

对于虚拟的Corp.com这个公司来说,一旦域内所有系统的防火墙处于无效状态,并且WMI服务器处于启用状态,那么被修改的GPO会推送到所有可达的系统中,攻击者可以向WMI服务远程发送命令。

为了远程搜索某个本地文件(如proof.txt),攻击者可以在C盘上使用如下WMI命令:

1
Get-Content <list of IPs> | ForEach-Object {Getwmiobject CIM_DataFile -filter »Drive=’c:’ AND Filename=’proof’ AND extension=’txt’ -Impersonate 3 -computername $_ | Select PSComputername, Name -Unique}

结果如图4所示。

t015afc664344260882.png

图4. 使用远程WMI搜索本地文件


三、相应的防御策略


通常情况下,被恶意利用的域管账户是一个严重的安全隐患,并且需要花费很多时间才能解决这一问题。管理员应该立刻禁用具备管理员权限的可疑账户或者重置管理员账户的密码。然而,为了确保未经授权的第三方人员访问内部系统,我们还需要具备更多的专业知识。

我们可以使用如下防御策略:

1、定期审核GPO。

2、为GPO使用定义清晰的命名约定。

3、修改入侵检测系统,覆盖如下范围:

(1)记录GPO的创建动作

(2)记录GPO的修改动作

4、限制管理员用户的权限。

5、限制运行管理工具所能获得的访问权限。

在我们的研究过程中,我们提取了域控服务器上组策略文件夹的哈希值以便后续使用。利用之前提取的哈希信息,我们能避免攻击者对GPO的恶意篡改。类似的策略已经在基于主机的入侵检测系统中使用过。

与其费尽心思修复被突破的系统,我们不如采取预防措施,使APT攻击者的攻击难以奏效。典型的APT场景通常可以分为四个阶段:准备阶段、感染阶段、部署阶段以及驻留阶段。这些阶段是一个循环过程,在最初突破目标网络后,攻击者可以不断重复这些过程拓展攻击行动。APT攻击的生命周期如图5所示。

 t0180debfa764a524c5.png

图5. APT生命周期

不幸的是,目前我们尚未掌握一体化的解决方案来预防APT攻击。根据APT攻击的不同阶段,我们建议采用不同的措施,如:

1、(Web应用)防火墙。

2、对网络进行切割。

3、使用网络访问控制(NAC)策略。

4、主动安装软件及操作系统更新包。

5、对暴露在互联网中的系统或高度机密/敏感的系统部署多因素认证机制。

6、监控安全事件。

7、定期进行渗透测试。

8、进行IT安全意识培训。

9、根据“最小权限”原则限制访问权限。

10、部署端点控制软件。

11、使用应用程序白名单。

12、与同行业的其他公司建立安全联盟。

“深度防御”原则指的是使用多层次的安全控制策略以缓解甚至阻止攻击活动,节省出来的时间可以用来检测攻击者正在进行的攻击活动。我们部署的安全策略越多,攻击者所需要付出的成本及资源也就越多。APT生命周期中每个阶段都应该包含多条防线。防御网络越紧密,攻击者可以利用的突破点就越少。




本文由 安全客 翻译,作者:興趣使然的小胃

原文链接:http://www.sicherheitsforschung-magdeburg.de/uploads/journal/MJS_052_Willi_GPO.pdf