浅谈UAC ByPass

Source

浅谈UAC ByPass

本文参考Bypass UAC 提权
兄弟们好久不见,最近没有更新还不是因为忙着面试!!!
在深思的面试过程中我遇到了一道笔试题,讲讲UAC 提权的原理,我。。。。当然不会了,所以这不我抽空就学习了一下
首先看看UAC是什么
UAC这玩意儿其实还是挺烦的,每次进行敏感操作它都会跳出来,所以我直接给他干掉了,这…我的电脑岂不是有点危险!!
据传UAC是微软在windows vista后提出的一种安全机制,即User Account Control-用户访问控制,它允许应用程序在非管理员身份的安全上下文中运行,那么一些敏感的操作就会被UAC阻止,比如像安装删除软件、添加修改账户、设置家中控制、更改账户类型、讲文件移动到programa file 或者windows目录里面,安转设备驱动程序这一类的。
比如在用户安装一个应用程序,此时会自动运行一个consent.exe的进程,该进程通过系统白名单和当前用户的方式来判断是否需要创建管理员进程。请求运行的程序讲自己的cmdline与路径通过LPC发送给appinfo(一个dll文件,consent运行的时候会调用它)的RAiLuanchAdminProcess函数,该函数首先判断该进程是否在windows的进程白名单中,如果不在则讲结果发送给consent.exe由其触发UAC弹窗让用户来选择是否授予其相应的权限,然后交予CreateProcessAsUser函数以管理员的权限启动该安装程序,注意UAC是以SYSTEM权限运行的。

那我们要怎么绕过这个过程让应用程序直接运行呢?
上面提到了应用白名单,在白名单列表里的进程是不会触发UAC的,只要我们劫持了这类进程的dll文件,那么我们就可以做我们想做的事了!

这里拿C:\Windows\System32\CompMgmtLauncher.exe进行举例,可以直接运行一下该程序,发现其不会触发UAC弹窗,可以判断其为白名单进程。这里使用procmon.exe软件监控该进程的读写注册表的操作。
注意到这一行有读取注册表的动作
在这里插入图片描述
打开注册表发现,该路径其实是不存在的
在这里插入图片描述
当然我这里是有的,我已经新建好了!!!
在这里插入图片描述
按照上图这样新建注册表路径,也就是该白名单进程访问的路径
然后修改command下面的默认字段的值为我们的cmd.exe的路径做一下测试,格式见上图
然后双击运行我们的白名单进程,可以看到cmd.exe被打开了。
在这里插入图片描述
这样我们就成功得绕过了UAC的安全验证机制,我们可以将上面的cmd.exe替换为我们的木马之类的。
关于UAC的提权还有个COM接口组件,我明说看不懂!!!!