基于CimCmdlets的横向移动攻击检测研究与实现*
2019-12-11曹国江
李 杰,滕 斌,曹国江
(中国电子科技网络信息安全有限公司,四川 成都 610041)
0 引 言
近些年来,横向移动在网络攻击活动的使用频率越来越高,比如在熟知的APT(高级可持续攻击)中就占据重要的位置[1][2]。但在安全防护侧,更多的重心还放在安全边界上,对攻击者在内部网络的攻击活动特别是横向移动的关注要少得多。但一次又一次的安全事件表明,一旦攻击者攻破了脆弱的外部防护,内部网络的安全措施就变得微不足道,攻击者利用横向移动攻击能轻易攻陷整个内部网络。另外,横向移动攻击的隐蔽性也不断增强,潜伏的周期也越来越长,因此对此类攻击行为检测技术的研究具有迫切的现实需求[3]。
本文首先介绍了常用的横向移动攻击手法,对其技术原理进行剖析,重点研究其为规避常规检测而使用的Windows自带工作机制[4]。在对横向移动攻击充分了解的基础上,深入探索对应检测方法,提出基于CimCmdlets实现对横向移动攻击的检测,准确高效的查找出隐蔽性强和高持续性的恶意痕迹,提升网络环境的整体安全防护水平。
1 横向移动攻击
1.1 横向移动攻击概述
横向移动是达到攻击目的的一种有效的手段,在网络中识别、搜集和过滤核心信息,在攻击链中的位置如图1所示。攻击者在攻破系统的外部防护后,传送不同的恶意工具来获取更高的访问权限,通过命令和控制服务器寻求外部网络的访问,这就为横向移动攻击创造了条件,便于攻击者找到在内部网络中的立足点,将内部网络映射到外部,通过横向移动不断发现用户主机和敏感信息,最终到达内部网络的核心[5][6]。横向移动攻击能够通过对证书的窃取和后门安装,提升权限并持续驻留,其网络流量由于伪装成正常流程而较难发觉,安全防护设备难以检测。
图1 横向移动处于攻击链的位置
1.2 横向移动攻击常用技术
攻击者在进行横向移动时通常借助于计算机系统自带的WMI (Windows基础设施管理)技术。WMI是WBEM和CIM标准在Windows操作系统上的实现,它的一个非常重要特性是能够通过DCOM(分布式组件对象模型)或WinRM协议与远程主机的WMI模型进行交互,这允许攻击者操控远程主机的WMI类,而不需要预先在其上运行任何代码,做到很好的无文件隐藏。
WMI作为横向移动攻击中的有力武器,主要包括以下三大部分.
(1)组件管理。管理的组件被表示为WMI对象,是高度结构化的操作系统类实例,其提供了大量如Win32_Process、Win32_Registry、Win32_ProcessStartup等跟通信和操作系统相关的对象。
(2)数据调用。利用WMI可通过代码实现类、实例和方法,并且微软为使用WMI数据和执行WMI方法提供了几种方法,比如利用PowerShell就能与WMI进行交互。
(3)数据查询。WMI存储库包含类定义和需要持久性的对象实例,使用类似于SQL的语言WMI Query language (WQL)进行查询,且可以对WMI对象的返回数据根据需要进行过滤。
2 横向移动攻击检测
2.1 技术路线
外部攻击者对企业内部网络的高级攻击之所以能够成功,往往是由于企业内部缺乏对横向移动攻击的检测能力。如果能在攻击者的横向移动路径上设置障碍,就能有效防止高级可持续的攻击或者让攻击者为达目的需付出成倍的投入[7]。要防止横向攻击在内部网络的肆虐,相应的检测手段是必不可少的[8]。目前针对横向移动的检测手段仍停留在单时间节点,完全不能适应攻击活动日益复杂多变的状态。
CimCmdlets是检测横向移动攻击的利器,特别是对于WMI类横向移动攻击能构建高效的检测模型。CimCmdlets是微软发布的一组基于通用CIM操作建模工具,负责WsMan的远程管理,使管理任何实现WsMan和CIM标准的服务器或设备成为可能。
2.2 横向移动攻击检测方法
本文提出的横向移动攻击检测方法主要包括四部分,对应的模块为:信息搜集模块、事件异常检测模块、隐藏数据检测模块、凭据使用分析模块。安全团队利用该检测方法对横向移动攻击的活动路径进行追踪,判断影响的范围和造成的损失,即使遏制攻击扩大及进行恢复[9]。横向移动攻击检测方法总体架构如图2所示。
图2 横向移动攻击检测方法
2.3 横向移动攻击检测模块
2.3.1 信息搜集模块
信息搜集的对象主要包括:主机信息、磁盘卷情况列表、运行的进程、服务清单、共享文件列表、补丁安装情况、杀毒软件安装情况。该模块主要代码实现如图3所示。
图3 信息搜集模块主要代码段
2.3.2 异常事件检测模块
一旦进入网络,攻击者更倾向于使用本地工具(如WMI)来避免被EDR(端点检测和响应工具)和杀毒软件检测。由于WMI事件几乎可以用于响应任何操作系统动作,攻击者往往通过注册WMI事件来触发攻击行为。
本模块的实现是通过CimCmdlets实现事件查询功能,查询注册的永久事件,进而获取攻击者恶意注册的事件,判断攻击的触发点。事件查询能获取攻击者创建、修改和删除的对象实例。对异常事件的检测主要包括对以下几个类实例的查询:
__FilterToConsumerBinding。该类是一个系统关联类,在注册永久事件使用者时,使用该类来将_eventconsumer的实例与_eventfilter的实例关联起来。
__EventFilter。永久事件使用者的注册需要一个_eventfilter系统类的实例。
__EventConsumer 。事件消费者系统类是一个抽象基类,用于注册永久事件消费者。
2.3.3 隐藏数据检测模块
WMI存储库本身可以作为存储数据的隐蔽手段。攻击者能够动态创建WMI类,并将任意数据存储为该类的静态属性值来实现。该模块的功能就是通过CimCmdlets对静态WMI类属性的值Properties进行抽取和分析。
2.3.4 凭据使用分析模块
攻击者在横向移动阶段,通常会窃取用户账户,并利用它们获得特权和探索内部网络。因此,通过分析凭证的使用情况可以帮助安全团队发现异常行为。此外,对授权和身份验证日志的分析也可以了解每个经过身份验证的用户与多少设备交互,协助安全团队识别凭证滥用。
在模块的实现上,通过CimCmdlets的-LogName参数对日志内容进行分类,凭证使用日志位于security类别下,可按特定的格式导出需要的日志信息。
3 效果评估
在搭建完成横向移动攻击检测模块后,通过WMI后门测试程序来检验该模型的有效性。由该WMI后门测试程序的源码可大致了解其具备信息搜集、数据隐藏等功能,代码片段如图4所示。
图4 WMI后门程序主要代码段
3.1 测试环境搭建
利用三台windows主机构建封闭的网络环境,主机通过交换机相连,模拟内网环境。主机信息如下:
A主机:win10 X64,计算机名LAPTOP-LMKQUJBK,powershell版本Major.5
B主机:win7 X64,计算机名John-PC,powershell版本Major.4
C主机:win7 X86,计算机名HelloTest,powershell版本Major.4
3.2 测试与结果
在A主机中运行WMI后门测试程序,理论上该后门程序能够实现在A、B、C组成的网络环境中进行横向移动攻击。利用本文实现的横向移动攻击检测模型对三台主机进行检测,运行结果如图5所示。
图5 横向移动攻击检测运行结果
通过对运行结果的分析可知:
(1)在A主机中检测到名为 Win32_hackClass的静态类,其属性项”hackProperty”值为"you can't find me";
(2)在A、B、C主机均发现恶意的永久事件注册,该事件采用轮询的方式每100秒运行一次hackTest.exe;
(3)在B和C主机发现恶意账户远程登录痕迹;
综上所述,通过CimCmdlets实现的横向移动攻击检测模块运行稳定,能较好发现网络中的横向移动攻击行为和活动路径,达到预期的设计目标。
4 结 语
新形势下的网络空间攻防对抗呈持续高压状态,针对网络空间的开放性和复杂性,攻击方式也日益多变,横向移动攻击被越来越多的高级攻击者所采用,且在不断的升级演变。对横向移动攻击的研究应给予高度的重视,关键的环节是能够检测发现已知与未知的类似活动。另外,对横向移动攻击的防御体系构建、主动感知能力、应急处置机制等方面的研究也是值得关注的方向。