跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

通过COM组件IFileOperation未经授权复制文件


CHQ1d

推荐的帖子

0x00 前言

在之前的文章《Empire中的Invoke-WScriptBypassUAC利用分析》中,介绍了一种超越权限复制文件的方法。在普通用户权限下,wusa可以将cab文件释放到具有管理员权限的文件夹中,可以进一步实现文件名劫持和UAC绕过。

但是Win10下取消了这个功能,那么有没有更通用的方法呢?

本文将介绍一种适用于Win7-Win10的方法——。它使用COM组件IFileOperation。

0x01 简介

利用原则

三种实现理念

实例代码

实物试验

利用率分析

0x02 利用原理

注:

这种方法是从Defcon 25的车间学来的,Ruben Boonen 《UAC 0day, all day!》。

ppt下载地址:

https://github . com/fuzzy security/defcon 25/blob/master/defcon 25 _ UAC-0日-全天_v1.2.pdf

使用IFileOperation这种COM组件超越权限复制文件的前提;

Win7之后的系统

可信路径下的可信文件(例如explorer.exe、powershell.exe)

所以有以下三种实现方式:

1、dll劫持或是dll注入

因为可信路径下的可信文件一般都在需要管理员权限的路径下,所以在普通用户权限下基本不可能实现dll劫持。

可行的方法是dll注入。

例如,explorer.exe可以在普通用户权限下被注入dll。

2、修改PEB结构,欺骗PSAPI,调用COM组件IFileOperation

COM组件通过进程状态API (PSAPI)读取进程PEB结构中的命令行,以标识它们正在运行的进程。

如果把进程的路径改成可信文件(比如explorer.exe),就可以欺骗PSAPI,调用COM组件IFileOperation实现非授权复制。

3、通过可信文件直接调用COM组件IFileOperation

例如,powershell.exe是一个可信文件,可以直接调用COM组件IFileOperation。

0x03 实现方法1:dll注入explorer.exe

实施分为以下两个部分:

将dll注入进程explorer.exe

Dll实现调用COM组件IFileOperation来复制文件

Github已经有了完整的实现代码,可以参考这个项目进行分析。项目地址为:

https://github.com/hjc4869/UacBypass

(1)工程UacBypassTest实现dll注入进程explorer.exe。

去掉不必要的函数,只保留向process explorer.exe注入UacBypass.dll的函数:

删除第58行。

(2)工程UacBypass实现调用COM组件IFileOperation复制文件。

项目编译完成后,生成文件UacBypass.dll,将同一目录下的ntwdblib.dll复制到C:\windows\System32。

实际测试:

运行UacBypassTest.exe,将UacBypass.dll注入进程explorer.exe,并成功复制未经授权的文件。

0x04 实现方法2:修改PEB结构,欺骗PSAPI,调用COM组件IFileOperation

参考工程UacBypass,把dll变成exe,添加头文件,修复bug,完成代码供参考:

https://github . COM/3g student/Use-COM-objects-to-bypass-UAC/blob/master/ifile operation . CPP

已实现将c:\ 6 \ ntwdlib.dll复制到c:\windows\system32。

代码分析:

成功的前提是指定了该COM组件的属性(需要提升权限)。

官方文件地址:

https://msdn.microsoft.com/en-us/library/bb775799.aspx

代码位置:

https://github . COM/3g student/Use-COM-objects-to-bypass-UAC/blob/master/ifileoperation . CPP # L14

属性描述:

FOF_NOCONFIRMATION:不会弹出确认框。

FOF _无声:不要弹盒子。

FOFX_SHOWELEVATIONPROMPT:需要提升的权限。

FOFX_NOCOPYHOOKS:不要使用复制挂钩

FOFX_REQUIREELEVATION:默认情况下,需要特权提升。

F _ no error UI:报错不要弹出框。

实际测试:

直接运行exe,会弹出UAC的确认框,提示权限不够。如果选择允许,您可以复制文件。

接下来,您需要添加修改PEB结构的功能。为了欺骗PSAPI,需要修改以下位置:

RTL用户流程参数中的图像路径名

LDR数据表格条目中的完整名称

LDR数据表格条目中的基本名称

注:

不需要修改_ RTL _用户_流程_参数中的命令行。这个属性可以通过Process Explorer查看,你也可以选择修改它,进行更多的欺骗。

我参考的是UACME中supMasqueradeProcess()的实现代码,地址如下:

https://github . com/hfiref0x/UAC me/blob/143 EAD 4 db 6b 57 a 84478 c 9883023 FBE 5d 64 AC 277 b/Source/Akagi/sup . c # L947

我做了以下更改:

不要使用ntdll.lib文件(安装DDK后包含),而是通过ntdll获取NTAPI。

提取关键代码

修复bug

通过调用COM组件的IFileOperation增加复制文件的功能。

有关更多详细信息,请参考位于以下地址的开放源代码:

https://github . COM/3g student/Use-COM-objects-to-bypass-UAC/blob/master/masqueradepeb . CPP

代码修改当前进程的PEB结构,欺骗PSAPI,将其识别为explorer.exe,然后调用COM组件IFileOperation复制文件。

实际测试:

当前流程修改为explorer.exe,如下图所示。

2-1.png

文件复制成功,UAC的确认框没有弹出,实现了文件的非授权复制。

0x05 实现方法3:通过powershell.exe调用COM组件IFileOperation

首先用c#编译一个COM组件,调用COM组件IFileOperation复制文件,然后用powershell调用COM组件。

1、编写COM组件

代码参考地址:

https://github . com/fuzzy security/PowerShell-Suite/tree/master/Bypass-UAC/文件操作/文件操作

编译成功后生成FileOperation.dll。

注:

Ruben Boonen(b33f@FuzzySecurity)引用源项目:

https://github.com/mlaily/MSDNMagazine2007-.NET-Matters-ifileo-in-Windows-Vista

在此基础上,他做了一些修改(修改类名等。)这样powershell就可以直接调用COM组件了,这是一个很棒的功能。

2、通过powershell来调用这个COM组件

有两种方法:

(1)[系统。reflection . Assembly]:LoadFile($ Path)

直接加载文件

(2)[反思。程序集]:加载(字节)

将文件压缩成一个字符串,并保存在一个数组中。请参考马修格雷伯的方法。地址如下:

http://www . exploit-Monday . com/2012/12/in-memory-dll-loading . html

可以直接输出可用的powershell代码。

注:

前一篇文章《利用Assembly Load LoadFile绕过Applocker的分析总结》中介绍了这两种方法的比较。

3该方法的完整实现代码可以参考:

https://github . com/fuzzy security/PowerShell-Suite/blob/ebbb 8991 A8 a 051 b 48 c 05 ce 676524 a1 ba 787 dbf0c/Bypass-UAC/Bypass-UAC . PS1 # l 1082

实际测试:

执行powershell脚本并加载IFileOperation,一个COM组件。因为powershell.exe是可信进程,所以UAC的确认框不会弹出,成功实现了文件的非授权拷贝。

0x06 利用分析

COM IFileOperation适用于Win7-Win10,所以也有未授权复制的方法。

对于explorer.exe,加载高权限的COM组件不会弹出UAC的对话框。

本文实现了模拟explorer.exe的方法,那么还有其他可用的COM组件吗?可以完成哪些「提功操作」?

0x07 小结

本文介绍了三种超越COM组件IFileOperation权限复制文件的方法,并编译开发了实现代码,可用于直接测试。

最后,感谢Ruben Boonen(b33f@FuzzySecurity)对我研究的帮助。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...