UAC绕过思路(未完)
---恢复内容开始---
What is UAC?
程序启动后,UAC的流程图:
如果关闭UAC,则程序会提权运行。
Privilege Contents:
如果启动了UAC,程序要求提权运行或者以管理员身份运行的时候,System会启动Consent.exe进程。
在UAC开启的情况下,即使用户选择否,也会开启UAC虚拟化:
1.UAC虚拟化后,应用程序会重定向到其他位置,用户依然可以正常使用程序,但应用程序写入的数据不会在真实系统生效,以防止病毒操作造成系统核心文件被破坏、感染等后果。
2.虚拟化能够改善程序兼容性,即上一点提到的,UAC会将文件和注册表写入操作放至特殊位置。
什么情况下会触发UAC:
1、UAC只有在程序试图影响系统操作的情况下会触发
2、申请提权的操作大多是程序员自己触发的提权的,提权的目的就在于Privilege Content提到的几种操作。
3、只有少数情况系统本身会触发UAC,例如安装服务之类的。
绕过UAC方法小结:
1、利用计划任务绕过。
2、路径欺骗。
3、白名单机制。
关键词:
“用NetUserGetInfo这个接口从这两个方面下手的:1)以高权限和其他用户身份启动进程2)获取其他用户的注册表和用户目录 具体怎么搞就不知道啦,求大神来详解”
注入explorer.exe, DLL启动自己程序
“伪造token”
WUSA.exe
参考:http://net.zol.com.cn/402/4020871_all.html#p4021155
在9月24日亚洲知名安全技术峰会SyScan上,Instruder做了《深入思考UAC背后的安全问题》演讲,据其提供的方法在当前用户权限下,绕过 UAC提示直接运行程序,并可以实现修改启动项,释放文件到系统目录等功能,而这一过程必须在用户没有任意察觉的情况下完成。作者使用的方法为利用操作系统自己的升级程序WUSA.EXE,读取释放文件,这个过程是不会触发UAC的,利用这个机制可以轻松突破UAC限制。
参考:http://blog.sina.com.cn/s/blog_454378100100xu05.html
双击运行,会显示它的使用方法:
使用WUSA.EXE把一个MSU文件释放一下,看能否成功,实验方法如下,复制一个MSU文件到D:\TEMP目录,然后在CMD下切换目录到c: \windows\syswow64,最后运行wusa.exe d:\temp\msu.msu /extract:d:\temp 这时看到一个很快 的进度一闪而过,去D:\TEMP目录看一下是什么情况。
可以看出文件以成功释放,这样很好,下一步继续实验,把释放目录修改一下,直接释放到系统目录WINDOWS下,看会如何表现,执行wusa.exe d:\temp\msu.msu /extract:c:\windows
结果很理想,成功释放而且没有触发UAC提示。
到目前为至我们可以考虑一些邪恶的事情了,比如释放一些木马病毒DLL劫持的文件到系统目录这样子,不会触发UAC程序,同时木马与病毒也会开机启动了,再继续向下实验吧目前思路上是没问题了,那么要考虑的是MSU文件了,这个文件看一下是有微软数字签名的。
这个我们可以通过破坏数字签名来验证一下,使用16进制编辑工具把MSU文件随便添加几个字节。清理之前释放的文件后,再运行一下进行释放检测,看下结果,非常理想。
白名单机制:
从用户账户控制对权限进行保护的基本过程可以看到,在用户以管理员权限运行程序的 过程中,用户账户控制在向用户进行提权询问前,将会先查询本地系统中的白名单以决定是 否直接放行,因此,白名单机制是用户账户控制中的一个重要部分。用户账户控制限制着程 序使用高级权限才能进行的操作,但是,这样的机制同样也会对系统本身的程序造成影响,微软也不希望系统程序的运行也询问用户,因为 他们本身是安全的。因此,微软则在 UAC 中添加了白名单机制,即在系统中记录有一张表单,对于表单中的系统程序,将不限 制其直接提升到管理员权限。 系统中的白名单程序有多个,其中,msconfig、taskmgr、perfmon、cleanmgr 等平时常用的程序都在其中。
直接提权:
比较常用的利用系统程序的方法是利用系统动态加载 DLL的特性,在系统中还有一份名单为 KnownDlls,当一个程序需要动态加载 DLL 的时 候,会先在这份名单之中进行查找,如果找到则加载相应路径的DLL 文件,如果没有找到则依照当前目录、 System32 目录的顺序进行查找,因此如 果能找到一个程序动态调用的 DLL 文件不在KnownDlls 中,而在 System32 下面,则可以伪造一个相应的 DLL,来实现借助其他程 序来执行需要的操作。
在所有白名单程序中,正好有这样一个程序,即 sysprep.exe,它的位置为 System32/sysprep/,而它在启动时,会动态加载一 个 CRYPTBASE.DLL,这个 DLL 在 System32 下面,因此 sysprep.exe 会在当前目录寻找的时候加载失败,继而转 到 System32 目录查找,试着临时生成一个假的 CRYPTBASE.DLL 放在 sysprep 文件夹下,在 sysprep.exe启动 时,将加载假的 CRYPTBASE.DLL,从而执行我们需要的操作。
sysprep.exe 加载假 CRYPTBASE.DLL线程注入白名单中的程序全部都在系统目录当中,因此要把生成的假 DLL 复制到程序 目录中, 将会由于权限问题而触发 UAC,这样便失效了。因此,需要特别的方法来把假 DLL 给复制到系统目录内,并且不会触发系统的权限控制。
这一步的操作也需要系统白名单的程序来实现,选用的程序为EXPLORER进程,首先使用远程线程的方法把DLL注入到EXPLORER进程,然后再通 过EXPLORER把CRYPTBASE.DLL复制到指定目录UAC不会提示。所有操作完成后启动sysprep.exe我们的DLL就会被加载,从而 绕过成功。但这个方法缺点也很明显,在注入EXPLORER进程时,杀毒软件已经开始关注了。
UAC绕过思路(未完)的更多相关文章
- 关于父进程和子进程的关系(UAC 绕过思路)
表面上看.在windows中. 假设是a进程创建了b进程,那么a进程就是b进程的父进程.反之,假设是b创建了a,那么b进程就是a的父进程,这是在windows出现以来一直是程序员们都证实的,可是在在w ...
- 关于DOM的一些总结(未完待续......)
DOM 实例1:购物车实例(数量,小计和总计的变化) 这里主要是如何获取页面元素的节点: document.getElementById("...") cocument.query ...
- 2017-2-17,c#基础,输入输出,定义变量,变量赋值,int.Parse的基础理解,在本的初学者也能看懂(未完待续)
计算机是死板的固定的,人是活跃的开放的,初学c#第一天给我的感觉就是:用人活跃开放式的思维去与呆萌的计算机沟通,摸清脾气,有利于双方深入合作,这也是今晚的教训,细心,仔细,大胆 c#基础 1.Hell ...
- GitHub 入门不完全指南(未完待续)
我一直认为 GitHub 是一座宝藏,想让更多人的知道它.加入到这个社区中.本人能力有限,如果文中出现不对的地方,欢迎指正交流. 一.前言 大家好,我是削微寒(xuē wēi hán),一个走在进阶路 ...
- Go web编程学习笔记——未完待续
1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...
- 28.【转载】挖洞技巧:APP手势密码绕过思路总结
说到APP手势密码绕过的问题,大家可能有些从来没接触过,或者接触过,但是思路也就停留在那几个点上,这里我总结了我这1年来白帽子生涯当中所挖掘的关于这方面的思路,有些是网上已经有的,有些是我自己不断摸索 ...
- c++稍微复杂桶排序(未完待续~)
由于上次的桶排序占用空间太多,这次又有了一个新的办法 直接上代码: #include <bits/stdc++.h> using namespace std; int n; void bu ...
- javascript有用小功能总结(未完待续)
1)javascript让页面标题滚动效果 代码如下: <title>您好,欢迎访问我的博客</title> <script type="text/javasc ...
- ASP.NET MVC 系列随笔汇总[未完待续……]
ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...
随机推荐
- 关于erlang的binary
引自:http://cryolite.iteye.com/blog/1547252 1. binary数据是可以在不同进程间共享的 当然这些进程都在同一Erlang节点上. 这与普通term不同,后者 ...
- BcdTool(系统启动菜单管理器) v1.0912 绿色版
软件名称: 系统启动菜单管理器(BcdTool)软件语言: 简体中文授权方式: 免费软件运行环境: Win 32位/64位软件大小: 903KB图片预览: 软件简介:BcdTool是一款windows ...
- Round Numbers(组合数学)
Round Numbers Time Limit : 4000/2000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Tota ...
- Python 常见的内置模块
datetime datetime是python处理日期和时间的标准库 获取当前日期和时间 我们先看看如何获取当前的日期和时间: >>> from datetime import d ...
- 网络传输中的三张表,MAC地址表、ARP缓存表以及路由表
一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...
- Urbanization
Urbanization time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- 在命令提示符下,怎么查看windows开启了哪些服务?
net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" /user: ...
- android网络开发之测试机连接到服务器上面
1:本人使用Tomcat作为服务器软件,首先打开Tomcat.(可以在浏览器中输入http://www.127.0.0.1:8080/查看) 2:服务器后台使用Servelt开发,这里不再讲解. 3: ...
- iOS中静态库-.a文件生成和使用
最近在使用使用一个网上的Demo的时候. 出现另一令人烦恼的问题 . 就是它里面有嵌套的工程. 如下图所示. 工程里面还嵌套有一个工程. 真的是让人煞费苦心 …其实这个问题看起来并不是很难, 如果是一 ...
- vs设计界面出现“建控件时出错 响应在此上下文中不可用”
使用VS2010设计Asp.net时出现: 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态.还请确保在应用程序配置的 \\ 节中包括 ...