本篇主要介绍如何以`ICMLuaUtil`方式`BypassUAC`,主要内容如下:
– 过掉`UAC`提示框的方法总结
– `UACME`项目
– 什么类型的`COM interface`可以利用?
– 如何快速找到系统中的所有可利用的`COM`组件?
– 定位`ICMLuaUtil`的虚函数表`vftable`
– 如何调用`ICMLuaUtil.ShellExec`执行命令?
– C++ version
– CSharp version
– 两个注意点
– `DLL`形式
– C++ dll导出函数方式
– C# dll导出函数方式
– 一个坑
– 值得研究的`C2`推荐

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.exewusa.exetaskmgr.exemsra.exeeudcedit.exeeventvwr.exeCompMgmtLauncher.exerundll32.exeexplorer.exe等等。

常见的利用方式有:

  • DLL注入(RDI技术),一般注入到常驻内存的可信进程,如:explorer
  • DLL劫持,常和注册表配合使用达到劫持目的

伪装进程PEB绕过UAC

上面在利用COM接口的ShellExec执行命令的时候,因为执行该操作的进程身份是不可信的,所以会触发UAC弹窗。为了能够迷惑系统,通过修改PEB结构,让系统误认为这是一个可信进程,伪装的可信进程可以是calc.exerundll32.exeexplorer.exe等。

利用火绒剑查看进程信息,可以看到已经识别为可信进程了:

关于PEB的结构,可以参照这里

无文件技术

“无文件攻击”是一种攻击策略,其出发点就是避免将恶意文件放在磁盘上,以逃避安全检测。无文件四种攻击形式:

  1. 恶意文档

    比如:在word中加入恶意的宏代码实现命令执行,又或者邮件中。

  2. 恶意脚本

    常用的脚本引擎:powershell.exe,cscript.exe,cmd.exe 和 mshta.exe,同样不生成恶意二进制文件。

  3. 恶意本地程序交互

    例如:rundll32.exewmi等,详细参考这里

  4. 恶意内存代码

    直接生成纯shellcode,通过其他方式加载到内存执行。

UACME项目

项目地址:https://github.com/hfiref0x/UACME

项目总结了50多种绕过UAC的方式,并且列出具备auto-elevate能力的UAC白名单程序或接口。

利用方式主要可以分为两大类:

  1. 各类UAC白名单程序的DLL劫持(Dll Hijack
  2. 各类提升权限的COM接口利用(Elevated COM interface

项目的主程序为Akagi,其中包含了所有的method,使用vs2019本地编译后可以使用akagi32 41或者akagi64 41启动程序,41这个指的是README中描述的方法索引,运行后可以直接得到管理员权限的cmd窗口。

项目的Source目录存储的是所有子项目的源码,其中Source/Shared存放的是被所有子项目共同引用的一些函数库,本篇主要利用AkagiYuubari这两个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 
版权声明:本文为lxmwb原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lxmwb/p/12732976.html