使用应用程序路径绕过UAC

在过去几个月里,我对Windows 中的Microsoft用户帐户控制(UAC)功能感兴趣。虽然Microsoft没有将UAC定义为边界安全,但绕过此保护仍然是攻击者经常需要做的事情。最近的Vault7泄漏证实,即便是对于美国,绕过UAC在操作上也是比较重要的,通过检查UACME项目,我了解了大量现有技术。

微软似乎对UAC再次感兴趣,最终修复了公开披露绕过UAC的许多问题。虽然这些修复补丁只在较新版本的Windows,Microsoft的主动响应让我想要继续寻找UAC bypasses。我之前已经介绍了两种不同的旁路技术,这篇文章将重点介绍一种不依赖于IFileOperation/DLL劫持方法的替代方法。此技术适用于Windows 10 build 15031,其中绝大多数公开的bypasses已修补。

你可能知道,有一些微软签名的二进制文件,由于它们会自动升级。你可以在这里阅读更多关于这些二进制文件和它们的列表。当使用SysInternals工具“ sigcheck ” 搜索更多的这些自动升级二进制文件时,我遇到了“sdclt.exe”,并验证它根据列表完成自动升级:

img1

*注意:这只适用于Windows 10.

当观察sdclt.exe的执行流程时,很明显,这个二进制文件启动control.exe打开一个控制面板项:

img2

我很好奇如何sdclt.exe获取control.exe的路径。再次查看执行流程,sdclt.exe在HKEY_CURRENT_USER配置单元中查询control.exe的App Path密钥

img3

从high integrity process调用HKEY_CURRENT_USER(或HKCU)特别有趣。这通常意味着提升的进程与medium integrity process可能篡改的注册表位置。在这种情况下,我看到“sdclt.exe”查询HKCU:\Software\Microsoft\Windows\CurrentVersion\App Paths\control.exe。如果您不熟悉Windows中的应用程序路径,可以在这里阅读有关主题的更多信息。

因为sdclt.exe寻找HKCU配置单元中control.exe的应用程序路径。本质上,这个二进制文件要求“control.exe的完整路径是什么?如果找不到该路径,它将继续按照Windows搜索顺序来找。由于它在可以修改的地方进行搜索,因此我们可以直接替换cmd的路径到注册表中control.exe的路径值。

img4

你猜一旦sdclt.exe再次启动会发生什么?没错,sdclt.exe查询到了我们替换的control.exe在App Paths中的路径,直接返回cmd.exe

img5

看看Process Explorer(或whoami/roups),我能够确认cmd.exe确实是高权限的:

img6

重要的是这种技术不允许参数,这意味这它需要你的payload被放在磁盘上的某个位置。如果你试图给二进制任何参数(例如,C:\Windows\System32\cmd.exe /c calc.exe),它将把整个字符串解释为ShellExecuteInfo结构的lpFile值,然后传递到ShellExecuteEx。由于该值不存在,它将不会执行。

您可以在这里下载用于演示的脚本:https://raw.githubusercontent.com/enigma0x3/Misc-PowerShell-Stuff/master/Invoke-AppPathBypass.ps1

 

*来源:ENIGMA0X3,MottoIN小编编译发布,转载请注明来自MottoIN

原创文章,作者:Jarry,如若转载,请注明出处:http://www.mottoin.com/article/system/98554.html

发表评论

登录后才能评论

联系我们

021-62666911

在线咨询:点击这里给我发消息

邮件:root@mottoin.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code