前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用Com组件绕过UAC

利用Com组件绕过UAC

作者头像
鸿鹄实验室
发布2021-11-19 13:24:38
1.7K0
发布2021-11-19 13:24:38
举报
文章被收录于专栏:鸿鹄实验室

Com组件绕过UAC是一个很古老的话题了,这边以UACMe项目中索引为41的方法为例,看一下如何使用Com组件绕过UAC。

其中UACMe的41号概述为:

代码语言:javascript
复制
Author: Oddvar Moe
Type: Elevated COM interface
Method: ICMLuaUtil
Target(s): Attacker defined
Component(s): Attacker defined
Implementation: ucmCMLuaUtilShellExecMethod
Works from: Windows 7 (7600)
Fixed in: unfixed 
How: -

该方法的目标接口是ICMLuaUti,首先我们要知道的是,什么样的接口可以被用来做UAC绕过,简单来说有两个要求:

  1. elevation属性启用,且开启Auto Approval;
  2. COM组件中的接口存在可以命令执行的地方,例如ICMLuaUtil的ShellExec;

而这两个条件我们一般都可以使用OleViewDotNet和IDA来进行查看。首先直接用OleViewDotNet搜索你想要搜索的com组件的名字

查看属性可以看到条件1皆为true,表示这个组件可以用来绕过UAC认证

当鼠标悬停到时可以看到其调用的dll。

然后我们使用IDA打开这个dll,可以在函数列表中看到ShellExec字样的函数

其中调用了ShellExecuteExW来进行命令执行

其函数原型如下:

代码语言:javascript
复制
BOOL ShellExecuteExW(
  [in, out] SHELLEXECUTEINFOW *pExecInfo
);

该有的都有了,下面就是写代码了,这里直接选择https://github.com/0xlane/BypassUAC该项目进行开发节约时间。

但是在执行时还是触发了UAC。

这是因为:如果执行COM提升名称代码的程序身份是不可信的,还是会触发UAC弹窗;若是可信程序,则不会触发UAC弹窗。因此,必须使这段代码在WIndows可信程序中运行。可信程序有计算器、记事本、资源管理器、rundll32.exe等。但本质还是校验的PEB,把CommandLine和imagepath修改为指定进程的即可。

其代码中也有相关实现。

再次执行,即可不弹框获取shell

但由于ShellExecuteExW的问题,无法获取命令输出,我们可以借助文件重定向命令结果来实现,

即可得到一个命令交互的程序。

请严格遵守网络安全法相关条例!此分享主要用于学习,切勿走上违法犯罪的不归路,一切后果自付!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿鹄实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档