PowerShell-Suite:不使用DLL注入技术绕过UAC的powershell框架【转】

项目主页

https://github.com/FuzzySecurity/PowerShell-Suite/tree/master/Bypass-UAC

简介

Bypass UAC相关拓展:

Bypass-UAC提供了一个框架来执行基于自动提升IFileOperation COM对象调用的USA(用户帐户控制)绕过。但这并不是一个新技术,在传统上是通过将DLL注入到”explorer.exe”中实现的。这是不可取的,因为由于注入到资源管理器可能会触发安全警报,并且与非托管的DLL工作将会造成一个不灵活的工作流程。

为了解决这个问题,Bypass-UAC实现重写PowerShell的PEB,并给它”explorer.exe”的外观。这提供了相同的效果,因为COM对象完全依赖Windows的进程状态API(PSAPI)来读取进程PEB.

使用

Bypass-UAC是独立的并且没有任何依赖关系,但有一个要求是目标有PowerShell v2。

方法

  • UacMethodSysprep:由Leo Davidson提供的原始技术(sysprep -> cryptbase.dll)

目标:Win7/Win8 x32/x64

  • ucmDismMethod:混合法(PkgMgr -> DISM -> dismcore.dll)

目标:Win7 x64 +(目前未打补丁)

示例

Win 7 Pro

win7-32

Win 8 Enterprise

win8-1-64

组件

  • PSReflect

由@mattifestation提供,允许你轻松的自定义in-memory枚举、结构以及Win32函数。这个组件是必须的,因为在运行过程中它允许PowerShell无需编译C #就可以使用Windows API。这样做在大多数情况下是可以的,但它需要写临时文件到磁盘中,如果被列入黑名单将不能工作。

  • Masquerade-PEB

Masquerade-PEB修改后的版本改为使用psreflect。这个函数改写PowerShell的PEB来冒充“Explorer .exe”。

  • Invoke-IFileOperation

加载一个.NET DLL到内存中,这公开了一个IFileOperation COM对象接口到PowerShell。这个是基于Stephen Toub完成的,发表在2007年12月的MSDN杂志(我在图片文件夹中添加了页面以供参考)。在文件操作文件夹提供进一步的细节。

  • Emit-Yamabiko

自举函数将X32 / x64位代理DLL写入到磁盘中(Yamabiko)。这个DLL是基于hfiref0x UACME项目的fubuki。主要是我去掉了冗余的功能和做了一些轻微的重命名,在Yamabiko目录下描述进一步的细节。

贡献

目前绕过UAC有两种方法,我会逐渐添加,如果人们贡献自己的力量这将是非常好的。添加一个新方法是很容易的,如果您需要一个高层文件复制/移动/重命名或创建文件夹,下面提供一个示例方法以供参考:

同样,使用EXPORTSTOC++可以很容易的复制/粘贴到Yamabiko形成新的二进制文件。

免责声明

这个项目只供授权使用,不用说,我不为愚蠢的人做的坏事负责!

保护你自己

  • 不要为用户提供本地管理员权限。
  • 更改默认UAC设置为“始终通知我,等待我的回应”,要求用户输入他们的密码。
  • 微软的官方立场是UAC不是一个安全特征。

参考

此条目发表在未分类, 经验技术分类目录。将固定链接加入收藏夹。