大家好,今天,我们将浅析用户帐户控制(简称 UAC)。我们还将了解它如何保护你免受恶意软件的入侵,如若忽略 UAC 提示,可能会对你的系统造成不良影响。
目录
· UAC 简介
· UAC 是什么
· UAC 工作原理
5 种绕过 UAC 的方法
1.Windows 升级 UAC 保护绕过
2.Windows 升级 UAC 保护绕过(内存注入绕过)
3.Windows UAC 保护绕过(FodHelper 注册表键值绕过)
4.Windows 升级 UAC 保护绕过(Eventvwr 注册表键值绕过)
5.Windows 升级 UAC 保护绕过(COM Handler 劫持绕过)
用户账户控制(UAC)介绍
什么是用户账户控制?
在 Microsoft Windows Vista 和 Windows Server 2008 操作系统中引入了结构良好的用户帐户控制,因为不必要的系统范围的更改是难以避免的,而 UAC 策略可以防止这种更改,并且只需要很少的工作量。
换句话说,它是 Windows 的一项安全功能,它可以让我来防止对操作系统进行未经授权的修改。UAC 确保某些修改只能在 administrator 授权下才能进行。如果 administrator 不允许更改,则不会执行这些更改,Windows 保持不变。
UAC 工作原理?
UAC 阻止程序执行涉及系统更改 / 特定任务的任何任务。除非尝试执行它们的进程以管理员权限运行,否则这些操作将无法运行。如果以管理员身份运行程序,它会具有更多权限,因为与未以管理员身份运行的程序相比,它的权限得到了提升。
没有管理员权限就无法完成的一些事情:
· 注册表修改(如果注册表项在 HKEY_LOCAL_MACHINE 下(因为它影响多个用户),它将是只读的)
· 加载设备驱动程序
· DLL 注入
· 修改系统时间(时钟)
· 修改用户帐户控制设置(通过注册表,可以启用 / 禁用它,但你需要正确的权限才能执行此操作)
· 修改受保护的目录(例如 Windows 文件夹,Program Files)
· 计划任务(例如,以管理员权限自动启动)
UAC 不会自动阻止恶意软件,目的并不是判断程序是否是恶意软件。是不是恶意软件还是得取决于用户。如果要以管理员权限执行程序,UAC 将提醒用户并且需要用户进行确认。
另请阅读:UAC 的重要性及如何保护你的安全
绕过 UAC 的 5 中方法
首先对目标机器进行漏洞利用以获取 meterpreter 会话。获得 meterpreter 会话 1 后,输入以下命令以检查系统权限和特权。
getsystem getuid
如果你没有系统 / 管理员权限,那么你就需要绕过目标系统的 UAC 保护。
Windows 升级 UAC 保护绕过
此模块将通过进程注入利用受信任的发布者证书绕过 Windows UAC。这将产生第二个 shell,而且 UAC 保护已经关闭。
msf > use exploit/windows/local/bypassuac msf exploit windows/local/bypassuac ) > set session 1 msf exploit ( windows/local/bypassuac ) > exploit
从下图可以看到,又建立了一个 meterpreter 会话 2 连接,现在输入 getsystem 和 getuid 两条命令来查看系统权限:
太好了,我们获得了 NT AUTHORITYSYSTEM 权限。现在你只要输入 shell 命令,你就会进入一个具有管理员权限的命令行窗口。
Windows 升级 UAC 保护绕过(内存注入)
此模块将通过进程注入利用受信任的发布者证书绕过 Windows UAC。这将产生第二个 shell,而且 UAC 保护已经关闭。此模块使用反射 DLL 注入技术仅删除 DLLpayload 二进制文件而不是删除标准技术中的三个单独的二进制文件。但是,它需要选择正确的体系结构(对于 SYSWOW64 系统也使用 x64)。如果指定 EXE :: Custom,你的 DLL 应该在单独的进程中启动 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 会话 2 已经成功打开,现在输入 getsystem 和 getuid 两条命令来查看权限。
最终,你也会拿到 NT AUTHORITYSYSTEM 权限,现在只需要输入 shell 命令,就可以进入一个具有管理员权限的命令行窗口。
Windows 升级 UAC 保护绕过(FodHelper 注册表键值绕过)
此模块将通过在当前用户配置单元下劫持注册表中的特殊键并插入将在启动 Windows fodhelper.exe 应用程序时调用的自定义命令来绕过 Windows 10 UAC。这将产生第二个 shell,而且 UAC 保护已经关闭。此模块修改注册表项,但在调用 payload 后清除该项。该模块不要求 payload 的结构与 OS 匹配。如果指定 EXE :: Custom,你的 DLL 应该在单独的进程中启动 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
从下图中,可以看到,meterpreter 会话 2 已经成功打开,输入 getsystem 和 getuid 两条命令来查看权限
非常不错,我们获得了 NT AUTHORITYSYSTEM 权限,输入 shell 命令,就能拿到管理员的命令行窗口了。
Windows 升级 UAC 保护绕过(Eventvwr 注册表键值绕过)
此模块将通过在当前用户配置单元下劫持注册表中的特殊键并插入自定义命令,这个命令将在启动 Windows fodhelper.exe 应用程序时调用来绕过 Windows 10 UAC。这将产生第二个 shell,而且 UAC 保护已经关闭。此模块修改注册表项,但在调用 payload 后清除该项。该模块不要求 payload 的结构与 OS 匹配。如果指定 EXE :: Custom,你的 DLL 应该在单独的进程中启动 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 会话 2 已经上线,输入 getsystem 和 getuid 两条命令来查看是否是 system 权限。
再一次,我们获取了 NT AUTHORITYSYSTEM 权限。
Windows 升级 UAC 保护绕过(COM Handler 劫持绕过)
此模块将通过在 HKCU 配置单元中创建 COM 处理程序注册表项来绕过 Windows UAC。加载某些高完整性进程时,会引用这些注册表项,从而导致进程加载用户控制的 DLL。这些 DLL 包含导致会话升级的 payload。在 payload 调用后清除注册表项修改。此模块要求 payload 的体系结构与 OS 匹配,但当前的低权限 Meterpreter 会话的体系结构并不相同。如果指定 EXE :: Custom,你的 DLL 应该在单独的进程中启动 payload 后调用 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 会话 2 已经建立连接,输入 getsystem 和 getuid 两条命令来查看是否是 system 权限。
最终,还是得到了 NT AUTHORITYSYSTEM 权限,同理,输入 shell 获取管理员权限的命令窗口。如此一来,我们便借助了 metasploit 后渗透漏洞利用来绕过 UAC 保护了。
留言与评论(共有 0 条评论) |