简单COM恶意组件分析
什么是COM组件
COM组件是微软的一个接口标注,全称是组件对象模型(Component Obejct Model),它可以使不同的软件组件在不知道其他组件代码的接口规范时,进行相互间的调用。COM可以支持任何编程语言,因此被设计成了一个可复用的软件组件。
COM组件的基本分析
每个程序在调用COM组件之前,都需要进行一系列的初始化工作,常用的函数包括了
OleInitialize
或者CoInitializeEx
函数进行一个组件的初始化,之后才能对响应的COM组件使用。
在分析一个COM组件的样本的时候,需要清楚每个COM组件初始化的一些参数,需要关注的是
CLSID
:类型标识符
IID
接口标识符
COM通过上述两个标识来访问相关的组件。
当一个程序调用了CoCreateInstance
函数式,操作系统会使用注册表中的注册信息来判断请求中的riid
和rclsid
这两个字段的值,通常会查询如下注册表
HKLM\SOFTWARE\Classes\CLSID
HKCU\SOFTWARE\Classes\CLSID
来进行查找要使用的COM服务器的信息。
如果COM组件是一个应用程序则CLSID一个LocalService
,如果COM组价你被安装为了一个DLL用来被程序加载,则对应的CLSID是一个InprocServer