如何利用sdclt.exe绕过UAC?

3gstudent 技术 2017年4月12日发布

导语:Matt Nelson‏ @enigma0x3在最近的文章中公开了一个绕过Win10 UAC的技巧,通过修改HKCU下的注册表键值实现对UAC的绕过。

0x00 前言

Matt Nelson‏ @enigma0x3在最近的文章中公开了一个绕过Win10 UAC的技巧,通过修改HKCU下的注册表键值实现对UAC的绕过,文章地址如下:

https://enigma0x3.net/2017/03/14/bypassing-uac-using-app-paths/

https://enigma0x3.net/2017/03/17/fileless-uac-bypass-using-sdclt-exe/

0x01 简介

本文将对其进行测试,分享测试心得,整理该方法的攻防技巧

0x02 原理

Sigcheck

可用来查看exe文件的清单(manifest)

下载地址:

https://technet.microsoft.com/en-us/sysinternals/bb897441.aspx

在Win10环境下,cmd下运行:

sigcheck.exe -m c:windowssystem32sdclt.exe

如图

1491883466874795.png

level=”requireAdministrator”

true代表可自动提示权限

在Win7环境下,同样使用Sigcheck查看sdclt.exe

如图

1491883511114667.png

level=”asInvoker”表示不会提升权限,这也就是不支持Win7的原因

接下来,使用ProcessMonitor监控sdclt.exe的启动过程,查找是否会调用其他程序

0x03 实际测试

测试环境: Win 10 x64

注:该方法只在Win10下测试成功

cmd下输入:sdclt.exe

正常启动,如图

1491883572327996.png

使用ProcessMonitor查看启动过程

如图

1491883612908356.png

启动sdclt.exe的过程中会以High权限查找注册表键值

HKCU:SoftwareMicrosoftWindowsCurrentVersionApp Pathscontrol.exe

如果手动修改该注册表键值,填入参数,那么就能够实现UAC的绕过

绕过方法如下:

新建注册表键值:

HKCU:SoftwareMicrosoftWindowsCurrentVersionApp Pathscontrol.exe

并将默认值设置为cmd.exe

如图

1491883682795377.png

再次启动sdclt.exe,发现转而去执行cmd.exe,并且实现了对UAC的绕过,如图

1491883736662009.png

注:启动的exe不能加参数,否则失败

例如填入C:WindowsSystem32cmd.exe /c calc.exe,无法实现利用

如图

1491883842221045.png

在实际利用的过程中,如果需要加参数,可通过先将参数写入脚本,再加载脚本的方式进行利用

为了更好的隐蔽,实现“无文件”利用,可以尝试寻找sdclt.exe是否存在支持传入参数的命令

Matt Nelson‏ @enigma0x3的第二篇文章就是解决了这个问题,文章地址如下:

https://enigma0x3.net/2017/03/17/fileless-uac-bypass-using-sdclt-exe/

修改注册表,劫持/kickoffelev传入的参数,实现“无文件”利用

具体方法如下:

新建注册表键值:

HKCU:SoftwareClassesexefileshellrunascommand

新建项isolatedCommand,类型REG_SZ,内容作为启动参数,可设置为notepad.exe

如图

1491883895237231.png

接着在cmd下输入:

sdclt.exe /KickOffElev

成功执行参数,启动notetad.exe,如图

1491883936101599.png

参数换成regedit.exe,启动过程并未被UAC拦截,成功绕过

如图

1491883982377361.png

但是通过创建注册表键值exefileshellrunascommand会影响其他正常exe程序的启动,所以在利用上需要先创建键值,执行sdclt.exe,之后再删除该键值

整个过程通过powershell实现,完整POC可参考:

https://github.com/enigma0x3/Misc-PowerShell-Stuff/blob/master/Invoke-SDCLTBypass.ps1

0x04 防御和检测

防御:UAC权限设置为“Always Notify”,那么该方法将会失效

检测:

监控注册表键值:

HKCU:SoftwareMicrosoftWindowsCurrentVersionApp Pathscontrol.exe
HKCU:SoftwareClassesexefileshellrunascommand
本文为 3gstudent 原创稿件,嘶吼独家发布,未经许可禁止转载,如若转载,请联系嘶吼编辑: http://www.4hou.com/technology/4221.html
点赞 0
UAC
  • 分享至
取消

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

扫码支持

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

发表评论

    沙拉拉卡 2017-04-12 14:40

    感谢分享~嘶吼有你更精彩(