什么是COM对象
有什么用
在WIN+R的输入框中,输入::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
,可以直接打开我的电脑
第一种
那么,有什么用那?前面说了,每一个ID可以理解为一个实例,它有各种各样的方法,实现各种各样的功能。所以,可以用来代替一些渗透中的操作或功能,来绕过杀软的拦截。比如利用系统原生命令下载木马,可能被杀软拦截,这时候就可以找一个有下载功能的方法的CLSID
来代替了。
第二种
就是常听说的COM劫持
。如前所述,在Windows上,一个应用和CLSID
是互相对应的,对应关系记录在注册表中。还可以给其设置其他的key
,详见 CLSID 密钥
打开一个应用的过程,其实就是去注册表中找到CLSID
,然后加载对应的DLL文件。那么,所谓的劫持,就是修改注册表中dll文件的路径,修改为自己生成的恶意dll文件路径即可。当然,也可以修改为其他类型的文件路径,只要Windows中的对应即可。比如:文件路径、exe可执行程序路径、Windows API等等。
怎么用
先介绍一个工具:OleViewDotNet允许查找COM对象许多不同的视角(CLSID、ProgID、服务器可执行文件),枚举对象上的接口,然后创建一个实例并调用方法。
先按照ProgIDs查看所有的
然后根据一些关键字搜索,比如shell
、exec
、execute
、exec
、spawn
、launch
和 run
等等搜索shell,然后随便找一个,右键,选择View Type Library
,查看所有的接口、方法、属性
搜索exec关键字
并不是所有接口都可以用,如下,Yes
的才可以用
选择第一个方法Run
进行测试,先复制GUID
powershell命令,这个方法没有返回结果。
$handle = [activator]::CreateInstance([type]::GetTypeFromCLSID("72C24DD5-D70A-438B-8A42-98424B88AFB8"))
$handle.run("calc")
下面尝试找一个可以下载文件的方法,搜索关键字http
,直接查看第一个
查看对象信息
查看方法参数
直接在工具调用,填写方法和url
调用send
方法,并查看结果
参考
https://payloads.online/archivers/2018-12-22/1/
https://www.mandiant.com/resources/hunting-com-objects
原文始发于微信公众号(云智信安云窟实验室):COM对象在红队中的作用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论