如何利用注册表修改技术绕过UAC限制

luochicun Web安全 2018年5月31日发布

导语:用户帐户控制(UAC)是一项Windows功能,有助于防止对系统进行未经授权的更改。不过本文将给我们详细展示,攻击者是如何在绕过此安全控制的情况下悄悄执行修改系统的特权操作。

360截图16360801236164.jpg

用户帐户控制(UAC)是一项Windows功能,有助于防止对系统进行未经授权的更改。不过本文将给我们详细展示,攻击者是如何在绕过此安全控制的情况下悄悄执行修改系统的特权操作。UAC自Windows Vista和Windows Server 2008以来就开始出现,其目标是在触发相关系统更改时,引起用户的注意。它的工作方式是显示一个弹出窗口,要求用户进行交互以接受某些请求的系统更改,指定试图执行这些更改的程序名称和发布者。另外,屏幕的其他部分通常会变暗,以使用户更加意识到这个弹出窗口非常重要,应该格外注意。

1.png

此功能对用户非常有用,用户既可以利用此功能识别他们执行的系统所进行的更改,也可以帮助检测另一个应用程序或恶意软件何时尝试修改系统。因此,绕过UAC是一种最理想的攻击技术,它在MITRE ATT&CK matrix上被归类为防御逃避和特权升级技术。

技术细节

由于UAC是一种安全措施,可以防止恶意软件、不受欢迎的用户或应用程序改变相关的系统配置,因此攻击者一直在寻找绕过UAC的新方法,从而在不提示用户的情况下,以实现特权系统更改。目前有很多种不同的方法绕过UAC,但是本文主要关注如何利用注册表修改技术绕过UAC。

所选择的技术依赖于修改特定系统实用程序应用程序的注册表键值,这些权限是通过设计自动提升的,并且能够执行其他应用程序并赋予它们特权。执行这项技术需要三个参数。其中两个与绕过技术直接相关,最后一个是绕过UAC时使用权限执行的目标命令:

1.将触发目标应用程序的特权应用程序;

2.此特权应用程序读取的注册表键值,应该是将要尝试执行的二进制文件的路径;

3.将通过使用UAC绕过技术,悄悄执行二进制程序的程序路径;

例如,我们将在Windows 7中利用eventvwr.exe应用程序绕过UAC,此特权应用程序的作用类似于微软管理控制台(Microsoft Management Console,MMC)的快捷方式。

当eventvwr.exe启动时,它将检查是否使用特定的二进制文件为事件查看器提供MMC管理单元的功能。为此,它在注册表键值“HKEY_CURRENT_USER\Software\Classes\mscfile\shell\open\command”中查找特定的二进制位置。如果它存在,它将在此路径上执行二进制文件。否则,将加载Windows事件查看器的默认MMC管理单元,此注册表键值的内容是可绕过UAC而用于执行二进制文件的。

由于Windows更新和安全修复程序的关系,对于不同的Windows版本,特权应用程序和注册表键值可能会有所不同。由于在撰写本文时没有一种共享相同特权应用程序和注册表键值的绕过技术,因此我们将只列出对Windows 7有效的参数,这些参数对于Windows 10也有效。现在,让我来演示一下这些技术是如何同时工作的?

Windows 7技术是基于以下参数:

1.自动提升的特权应用程序:eventvwr.exe;

2.具有要执行的路径的注册表键值:HKEY_CURRENT_USER\Software\Classes\mscfile\shell\open\command;

要利用这种技术,第一步就是修改注册表键值,来执行目标应用程序。在这种情况下,我选择的是“C:\Windows\System32\cmd.exe”。

2.png

现在注册表键值已设置完成,可以通过eventvwr.exe,执行此注册表键值的内容,而不是对其直接进行加载。

3.png

最后,可以检查新生成的进程是否正在运行高完整性,以允许新进程访问多个特权和受保护的系统资源。

4.png

另外,Windows 10环境下的绕过技术,也具有相同的参数类型,但具有不同的值:

1.自动提升的特权应用程序:sdclt.exe;

2.进行路径执行的注册表键值:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\control.exe;

这样,第一步和Windows 7环境下的绕过技术一样,具有相同的修改注册表键值。现在,我会再次选择“C:\Windows\System32\cmd.exe” 作为目标应用程序。

5.png

一旦注册表键值设置完成,下一步就是执行“sdclt.exe”。该过程将启动命令行应用程序,而不是直接对其进行加载,这与Windows 7技术中看到的加载方式相同。

6.png

最后,就像预期的那样,你可以检查新产生的进程的完整性级别非常高。

7.png

缓解措施

目前,我正在研究是否有能够测试此类绕过技术的工具,以及采取何种安全控制措施来防止此类攻击。例如本文这种情况,或者可以根据需要修改用户提供的注册表键值来入手。总结这些通用场景,就可以开发出基于注册表修改的任何类型的攻击的测试技术。还有许多其他通用场景,例如执行系统命令、修改文件、扫描文件、盗窃网络隐私信息、使用不同的持久性攻击技术等。

由于这两种技术都依赖于相同的原理,所以对它们的缓解措施也是一样的。这与将UAC级别设置为Always Notify属性一样简单。

对于不希望将UAC级别设置为Always Notify的系统环境,可以使用其他的保护方法,但是,从系统的安全角度来讲不建议使用。这些方法包括监控并防止以下注册表键值的注册表更改:

1.HKEY_CURRENT_USER\Software\Classes\mscfile\shell\open\command;

2.HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\control.exe;

除这些缓解措施外,还建议在可能的情况下使用非特权帐户。

本文翻译自:https://attackiq.com/blog/2018/05/14/bypassing-uac-using-registry-keys/如若转载,请注明原文地址: http://www.4hou.com/web/11849.html
点赞 3
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

    js0huang 2018-06-04 15:27

    这两个注册表项,分别对应了哪个具体的Windows版本呢,子版本,我没有在win10系统找到control.exe这个表项