引言
我们的AI专家中心同事最近开发了一个用于检测DLL劫持攻击的机器学习模型。该模型随后被集成到卡巴斯基统一监控分析平台(SIEM)系统中。在另一篇文章中,同事们分享了模型的创建过程及在实验室环境中取得的成果。本文将重点介绍它在卡巴斯基SIEM中的运行方式、发布前所做的准备工作,以及它已经帮助我们发现的一些真实世界事件。
模型在卡巴斯基SIEM中的工作原理
该模型的运行通常可归结为对系统中进程加载的所有DLL库进行逐步检查,然后在卡巴斯基安全网络(KSN)云中进行验证。这种方法可以将本地属性(路径、进程名称和文件哈希)与全球知识库和行为指标相结合,从而显著提高检测质量并降低误报概率。
该模型可以在两种模式之一运行:在关联器上或在收集器上。关联器是SIEM的一个组件,基于预定义规则或算法执行事件分析和关联。如果在关联器上配置检测,模型会检查已触发规则的事件。这减少了KSN查询量和模型的响应时间。
运行流程如下:
收集器是SIEM平台的软件或硬件组件,用于从各种源收集和规范化事件,然后将这些事件传递到平台核心。如果在收集器上配置检测,模型会处理与各种进程加载库相关的所有事件,前提是这些事件满足以下条件:
- 进程文件的路径已知
- 库的路径已知
- 文件和库的哈希可用
这种方法消耗更多资源,且模型的响应时间比在关联器上更长。然而,它对于回顾性威胁狩猎非常有用,因为它允许您检查卡巴斯基SIEM记录的所有事件。模型在收集器上的工作流程如下:
需要重点注意的是,模型不仅限于二元的"恶意/非恶意"评估;它会按置信度对响应进行排名。这使其可以作为SOC实践中的灵活工具。可能的判定示例:
- 0:数据正在处理中
- 1:恶意性未确认。这意味着模型当前不认为该库是恶意的
- 2:可疑库
- 3:恶意性已确认
卡巴斯基SIEM中检测DLL劫持的规则如下所示:
|
|
将模型嵌入卡巴斯基SIEM关联器自动化了查找DLL劫持攻击的过程,使其能够大规模检测,而无需手动分析数百或数千个已加载的库。此外,当与关联规则和遥测源结合使用时,该模型不仅可以作为独立模块使用,还可以作为全面防御基础设施攻击的一部分。
MDR服务试点测试期间检测到的事件
在发布之前,该模型(作为卡巴斯基SIEM平台的一部分)在MDR服务中进行了测试,在那里它被训练用于在我们的遥测提供的大型数据集上识别攻击。此步骤对于确保检测不仅在实验室设置中有效,而且在真实客户基础设施中也有效是必要的。
在试点测试期间,我们验证了模型对误报的恢复能力,以及即使在非典型的DLL加载场景中也能正确分类行为的能力。结果,成功检测到几个真实世界事件,其中攻击者使用一种DLL劫持类型——DLL侧加载技术——来获得持久性并在系统中执行其代码。
让我们仔细看看其中三个最有趣的事件。
事件1:ToddyCat试图启动伪装成系统库的Cobalt Strike
在一个事件中,攻击者成功利用漏洞CVE-2021-27076攻击了使用IIS作为Web服务器的SharePoint服务。他们运行了以下命令:
|
|
利用后,IIS进程创建了文件,这些文件后来用于通过DLL侧加载技术(T1574.001 劫持执行流:DLL)运行恶意代码:
|
|
SystemSettings.dll是与Windows设置应用程序(SystemSettings.exe)关联的库的名称。原始库包含设置应用程序用于管理和配置各种系统参数的代码和数据。然而,攻击者创建的库具有恶意功能,并且仅伪装成系统库。
后来,为了在系统中建立持久性并启动DLL侧加载攻击,创建了一个计划任务,伪装成Microsoft Edge浏览器更新。它启动一个SystemSettings.exe文件,该文件与恶意库位于同一目录:
|
|
该任务设置为每日运行。
当SystemSettings.exe进程启动时,它会加载恶意DLL。在此过程中,进程和库数据被发送到我们的模型进行分析和潜在攻击检测。
结果数据帮助我们的分析师突出显示了一个可疑的DLL并对其进行了详细分析。发现该库是一个Cobalt Strike植入程序。加载后,SystemSettings.exe进程尝试连接到攻击者的命令与控制服务器。
|
|
建立连接后,攻击者开始进行主机侦察,收集各种数据以发展其攻击。
|
|
基于攻击者的TTP,例如将Cobalt Strike作为DLL加载、使用DLL侧加载技术(1,2)以及利用SharePoint,我们可以高度自信地说ToddyCat APT组织是此次攻击的幕后黑手。由于我们模型的快速响应,我们能够及时响应并阻止此活动,防止攻击者对组织造成损害。
事件2:伪装成策略管理器的信息窃取器
另一个例子是在客户连接到MDR监控后由模型发现的:位于应用程序文件夹中的合法系统文件尝试加载存储在其旁边的可疑库。
|
|
SettingSyncHost.exe文件是用于在用户不同设备之间同步设置的系统主机进程。其32位和64位版本通常分别位于C:\Windows\System32\和C:\Windows\SysWOW64\。在此事件中,文件位置与正常位置不同。
对此进程加载的库文件的分析表明,它是旨在从浏览器窃取信息的恶意软件。
该文件直接访问包含用户数据的浏览器文件。
|
|
该库文件在HijackLibs项目发布的用于DLL劫持的文件列表中。该项目包含在DLL劫持攻击中使用的常见进程和库列表,可用于检测这些攻击。
事件3:伪装成安全解决方案的恶意加载器
我们的模型发现的另一个事件发生在用户连接可移动USB驱动器时:
连接的驱动器的目录中包含隐藏文件夹,每个文件夹都有一个同名的快捷方式。这些快捷方式具有通常用于文件夹的图标。由于驱动器上默认不显示文件扩展名,用户可能误将快捷方式当作文件夹并启动它。反过来,该快捷方式打开相应的隐藏文件夹并使用以下命令运行可执行文件:
|
|
CEFHelper.exe是合法的Avast Antivirus可执行文件,通过DLL侧加载加载wsc.dll库,这是一个恶意加载器。
加载器打开名为AvastAuth.dat的文件,其中包含加密的后门。该库将数据从文件读入内存,解密并执行它。此后,后门尝试连接到远程命令与控制服务器。
包含恶意加载器的库文件在HijackLibs项目网站上呈现的用于DLL侧加载的已知库列表中。
结论
将模型集成到产品中提供了早期准确检测DLL劫持尝试的手段,这些尝试以前可能未被注意到。即使在试点测试期间,该模型也通过识别几个使用此技术的事件证明了其有效性。展望未来,随着数据积累和KSN中算法的更新,其准确性将只会提高,使该机制成为企业系统主动保护的可靠元素。
IoC
用于DLL劫持的合法文件
- E0E092D4EFC15F25FD9C0923C52C33D6 加载 SystemSettings.dll
- 09CD396C8F4B4989A83ED7A1F33F5503 加载 policymanager.dll
- A72036F635CECF0DCB1E9C6F49A8FA5B 加载 wsc.dll
恶意文件
- EA2882B05F8C11A285426F90859F23C6 SystemSettings.dll
- E83F331BD1EC115524EBFF7043795BBE policymanager.dll
- 831252E7FA9BD6FA174715647EBCE516 wsc.dll
路径
- C:\ProgramData\SystemSettings.exe
- C:\ProgramData\SystemSettings.dll
- C:\Program Files\Chiniks\SettingSyncHost.exe
- C:\Program Files\Chiniks\policymanager.dll
- D:\RECYCLER.BIN\1\CEFHelper.exe
- D:\RECYCLER.BIN\1\wsc.dll