吉沃运营专员 发表于 2022-1-12 16:36:45

T1546.015 - COM 劫持

一、概念

攻击者可以通过执行由对 COM 对象的引用被劫持触发的恶意内容来建立持久性,COM 是 Windows 内部的一个系统,允许通过操作系统实现软件组件之间的交互,对各种 COM 对象的引用存储在注册表中。攻击者可以使用 COM 系统插入恶意代码,通过劫持 COM 引用和关系作为持久性手段来代替合法软件执行。劫持 COM 对象需要更改注册表以替换对合法系统组件的引用,这可能导致该组件在执行时无法工作。当系统组件通过正常的系统操作执行时,将执行攻击者的代码。攻击者可能会劫持使用频率足够高的对象,以保持一致的持久性级别,但不太可能破坏系统内的显着功能,以避免可能导致检测的系统不稳定。

二、涉及到的组织或恶意软件

ADVSTORESHELL、APT28、BBSRAT、ComRAT、JHUHUGIT、KONNI、Mosquito

三、案例

ADVSTORESHELL

某些 ADVSTORESHELL 变种实现持久化是通过将 Payload 注册为 Shell Icon Overlay handler COM 对象

相关报告:http://www.welivesecurity.com/wp-content/uploads/2016/10/eset-sednit-part-2.pdf

APT28

APT28 将 Payload 替换合法的 MMDeviceEnumerator 对象达到 COM 劫持以实现持久性

相关报告:

http://www.welivesecurity.com/wp-content/uploads/2016/10/eset-sednit-part1.pdf

https://www.welivesecurity.com/2019/05/22/journey-zebrocy-land/

BBSRAT

根据系统的 CPU 架构,BBSRAT 可以通过替换 COM 对象来实现持久化,例如 MruPidlList {42aedc87-2188-41fd-b9a3-0c966feabec1} 或者 Microsoft WBEM New Event Subsystem {F3130CDB-AA52-4C3A-AB32-85FFC23AF9C1}

相关报告:http://researchcenter.paloaltonetworks.com/2015/12/bbsrat-attacks-targeting-russian-organizations-linked-to-roaming-tiger/

ComRAT

ComRAT 通过替换注册表位置中 shell32.dll 路径来劫持 COM 对象以实现持久性

HKCU\Software\Classes\CLSID{42aedc87-2188-41fd-b9a3-0c966feabec1}\InprocServer32
JHUHUGIT

JHUHUGIT 通过劫持名为 MMDeviceEnumerator 的类并将 Payload 注册为 Shell Icon Overlay handler COM 对象 ({3543619C-D563-43f7-95EA-4DA7E1CC396A}) 来建立持久性

相关报告:

http://www.welivesecurity.com/wp-content/uploads/2016/10/eset-sednit-part1.pdf

https://blog.talosintelligence.com/2017/10/cyber-conflict-decoy-document.html

KONNI

KONNI 修改 ComSysApp 服务来加载恶意 DLL Payload

相关报告:https://medium.com/d-hunter/a-look-into-konni-2019-campaign-b45a0f321e9b

Mosquito

相关报告:https://medium.com/d-hunter/a-look-into-konni-2019-campaign-b45a0f321e9b

四、缓解措施

这种类型的攻击很难通过预防性控制来轻松缓解,因为它是基于对系统特性的滥用。

五、如何检测

搜索已替换的注册表引用,是检测组件对象模型劫持的有效方法。要注意,尽管一些第三方应用在 HKEY_CURRENT_USER\Software\Classes\CLSID\ 中定义自已的用户 COM 对象,但并不代表位于该路径下的所有用户 COM 对象都不是恶意的,需要对其进行检测。否则,由于此类恶意的用户 COM 对象会在系统加载,所以很难在启动过程中被系统自身发现。而且,用户 COM 对象的注册表项一般不会发生变更,只要发现已知的正常路径被替换,或某个二进制文件被替换为不常见的、指向一个未知位置的二进制文件,就表示有可疑行为,防守方应对此进行调查。同样,可以收集并分析软件 DLL 加载的情况。如果出现任何与 COM 对象注册表修改相关的异常 DLL 加载,则可能表示攻击者已经劫持了 COM 对象。

示例

攻击者可以通过劫持对 COM 对象的引用来触发恶意内容,以此建立持久化或权限提升。这可以通过替换 HKEY_CURRENT_USER\Software\Classes\CLSID\ 或 HKEY_CURRENT_MACHINE\Software\Classes\CLSID\ 键下的 COM 对象注册表项来完成。因此,我们在分析时会重点研究在这些键下是否发生了任何变化。

下面这段伪代码用来搜索 COM 对象注册表项是否发生了变更:

registry_keys = search (Registry:Create AND Registry:Remove AND Registry:Edit)
clsid_keys = filter registry_keys where (key = "*\Software\Classes\CLSID\*")
output clsid_keys
下面这段伪代码是在 Splunk 平台查找是否有已创建、删除或重命名的注册表项,以及在 Windows COM 对象注册表项下已设置或重命名的注册表项值:

index=__your_sysmon_index__ (EventCode=7 OR EventCode=13 OR EventCode=14)
TargetObject="*\\Software\\Classes\\CLSID\\*"

liuming 发表于 2022-1-13 15:39:29

{:5_176:} 很给力,不错的内容,值得学习和鼓励
页: [1]
查看完整版本: T1546.015 - COM 劫持