BypassUAC
BypassUAC
本篇主要介绍如何以ICMLuaUtil
方式BypassUAC
,主要内容如下:
- 过掉
UAC
提示框的方法总结 UACME
项目- 什么类型的
COM interface
可以利用? - 如何快速找到系统中的所有可利用的
COM
组件? - 定位
ICMLuaUtil
的虚函数表vftable
- 如何调用
ICMLuaUtil.ShellExec
执行命令?- C++ version
- CSharp version
- 两个注意点
DLL
形式- C++ dll导出函数方式
- C# dll导出函数方式
- 一个坑
- 值得研究的
C2
推荐
过掉UAC
提示框的方法总结
这里主要说的是dll
的形式,通过上面的实操,可以发现有两种方法:
- 基于白名单程序绕过
UAC
- 伪装进程
PEB
绕过UAC
- 无文件技术
伪装进程的方式其实也可以算做借助了白名单,但是没有直接调用白名单进程,所以单独列出来了。
基于白名单程序绕过UAC
有些系统程序是直接获取管理员权限,而不会触发UAC弹框,这类程序称为白名单程序,例如:slui.exe
、wusa.exe
、taskmgr.exe
、msra.exe
、eudcedit.exe
、eventvwr.exe
、CompMgmtLauncher.exe
,rundll32.exe
,explorer.exe
等等。
常见的利用方式有:
DLL
注入(RDI
技术),一般注入到常驻内存的可信进程,如:explorer
DLL
劫持,常和注册表配合使用达到劫持目的
伪装进程PEB
绕过UAC
上面在利用COM
接口的ShellExec
执行命令的时候,因为执行该操作的进程身份是不可信的,所以会触发UAC
弹窗。为了能够迷惑系统,通过修改PEB
结构,让系统误认为这是一个可信进程,伪装的可信进程可以是calc.exe
、rundll32.exe
、explorer.exe
等。
利用火绒剑查看进程信息,可以看到已经识别为可信进程了:
关于PEB
的结构,可以参照这里。
无文件技术
“无文件攻击”是一种攻击策略,其出发点就是避免将恶意文件放在磁盘上,以逃避安全检测。无文件四种攻击形式:
恶意文档
比如:在
word
中加入恶意的宏代码实现命令执行,又或者邮件中。恶意脚本
常用的脚本引擎:powershell.exe,cscript.exe,cmd.exe 和 mshta.exe,同样不生成恶意二进制文件。
恶意本地程序交互
例如:
rundll32.exe
、wmi
等,详细参考这里。恶意内存代码
直接生成纯
shellcode
,通过其他方式加载到内存执行。
UACME项目
项目总结了50多种绕过UAC
的方式,并且列出具备auto-elevate
能力的UAC
白名单程序或接口。
利用方式主要可以分为两大类:
- 各类
UAC
白名单程序的DLL劫持(Dll Hijack
) - 各类提升权限的
COM
接口利用(Elevated COM interface
)
项目的主程序为Akagi
,其中包含了所有的method
,使用vs2019
本地编译后可以使用akagi32 41
或者akagi64 41
启动程序,41
这个指的是README
中描述的方法索引,运行后可以直接得到管理员权限的cmd
窗口。
项目的Source
目录存储的是所有子项目的源码,其中Source/Shared
存放的是被所有子项目共同引用的一些函数,本篇主要利用Akagi
和Yuubari
这两个Project
来探究一下如何利用COM
接口提升权限。
什么类型的COM interface
可以利用?
以项目中索引为41
的方法为例:
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
最新文章
- 使用 Composer 为 ThinkPHP(3.2.3)框架添加和管理组件
- PIC32MZ tutorial -- Blinky LED
- Java band [Cite]
- arcgis ERROR:000824 该工具未获得许可
- 深入学习netty系列(1)
- PHP超级全局变量——Session 变量
- 判断是否是iOS8
- [Hibernate] - many to many
- iOS开发,让数据更安全的几个加密方式
- Android设计模式之命令模式、策略模式、模板方法模式
- oracle 定位热块和热链的方法
- How To Read a Paper.md
- 老李分享:robotium3.6与4.0 later 的区别 1
- MySQL数据库入门(建库和建表)--陈远波
- 使用Spring Session实现Spring Boot水平扩展
- java之servlet入门操作教程一续
- 只有try和finally,没有catch
- Day14作业及默写
- 自定义WPF窗体形状
- CSS 引入方式 选择器
热门文章
- Jmeter 中 Bean Shell 之全局变量
- AQS源码解析
- Salesforce LWC学习(十五) Async 以及 Picklist 公用方法的实现
- Dockerfile极简入门与实践
- 分享一款一直在维护的【网络开发运维|通用调试工具】: http请求, websocket,cmd, RSA,DES, 参数签名工具,脚本批量生成工具,google动态口令,端口检测,组件注册,js混淆...
- 四、【Docker笔记】Docker容器
- 【线段树基础】NKOJ 1321 数列操作
- Unity 游戏框架搭建 2019 (二十五) 类的第一个作用 与 Obselete 属性
- html 中video标签视频不自动播放的问题
- rest_framework-序列化-1