UAC绕过如何做?聊聊我踩过的那些坑和实测有效的思路
说实话,第一次听到“UAC绕过”这个词的时候,我整个人是懵的,那会儿刚接触渗透测试没多久,Windows那一套权限机制把我搞得头大,UAC,也就是用户账户控制,微软从Vista开始搞出来的东西,表面上看是保护用户,…嗯,怎么说呢,它确实有用,但对搞安全研究的人来说,有时候真的挺烦人的。

先给不太了解的朋友简单说一下,UAC是啥,就是你打开某些程序的时候,屏幕会突然变暗,弹出一个框问你“是否允许此应用对你的设备进行更改”,对吧?那个就是UAC在干活,它的初衷是好的,防止恶意软件悄咪咪地拿到管理员权限,但问题在于,微软为了实现这个功能,搞了一堆复杂的机制,而这些机制里面,多多少少存在一些可以“绕过去”的路子。
为什么会有UAC绕过这回事?
你想啊,如果一个程序每次需要管理员权限都得弹窗,那用户体验得多糟糕?所以微软设计了一些“自动提权”的场景——某些系统自带的、微软签名的程序,它们运行时不需要弹窗就能拿到高权限,这本来是为了方便,但坏就坏在,如果这些程序可以被劫持或者被滥用,那攻击者就能借助它们来实现“曲线救国”,不触发UAC弹窗,照样拿到管理员权限。
这就是UAC绕过的核心逻辑,不是去“破解”UAC本身,而是找那些已经被信任的、可以自动提权的程序,让它们替我们干活。
我实测过的一些思路
先声明啊,这些东西仅限用于合法的安全测试和学习研究,别拿去干坏事,后果自负。
我印象比较深的是fodhelper.exe这个玩意儿,它是Windows自带的一个程序,用来管理可选功能的,关键点在于,它有个特性:会自动以高权限运行,而且在运行过程中会去查询注册表里的某些键值,如果你能提前在注册表里埋好一个键值,指向你自己的程序,那fodhelper.exe启动的时候就会顺手把你的程序也给拉起来,而且是以管理员权限。
具体怎么操作呢?就是通过reg add命令往HKCU\Software\Classes\ms-settings\Shell\Open\command这个路径下面写东西,因为是在当前用户的注册表分支下,普通权限就能写,不需要管理员,写完之后再运行fodhelper.exe,嘿,你的程序就起来了,UAC弹窗?不存在的。
还有一个是computerdefaults.exe,思路类似,也是利用注册表劫持,另外像sdclt.exe、eventvwr.exe这些,在特定条件下也能被利用,不过我得说,微软这些年一直在修补,很多老方法在最新的Windows版本上已经不好使了,所以搞这个东西,版本很重要,Win7、Win10早期版本和现在的Win11,能用的手法差别挺大的。
绕过UAC之后能干嘛?
拿到高权限之后,能做的事情就多了,比如关闭杀软、修改系统配置、安装后门、提取敏感信息等等,但这里要强调一点,UAC绕过通常是在你已经拿到了一个普通用户权限的shell之后才进行的操作,属于“提权”环节的一部分,不是说你啥都没有就能直接绕过,那是不现实的。
防御层面唠两句
如果你是企业管理员,想防住这类攻击,其实有几个方向,一是禁用那些不必要的自动提权程序,二是监控注册表关键路径的异常写入,三是开启UAC的最高级别——虽然烦,但确实安全一些,还有就是及时打补丁,微软每个月都在修这些东西,别偷懒。
说到底,UAC绕过如何做,本质上是一个“理解Windows信任链”的过程,你得知道哪些程序被信任了,信任的边界在哪里,然后看看能不能在这个边界上找到裂缝,技术本身没有善恶,关键看用的人。
好了,今天就唠到这儿,如果你对某个具体方法感兴趣,欢迎在评论区留言,我看到会尽量回复,记得点个赞再走哈,码字不易!