win7 UAC bypass(微软已经给予了三组组件绕过UAC启动的特权)
fireworm同学的翻译:
原文在http://www.pretentiousname.com/misc/win7_uac_whitelist2.html我只翻译了其中关于原理的一小部分,有兴趣的可以自己去看看。
Win7的UAC与Vista不同,鉴于前作糟糕的设计,为了减少UAC提示的次数,微软已经给予了三组组件绕过UAC启动的特权:
1、某些其他进程可以自动运行并获得高权限,UAC不会提示
这些进程的列表可以在这里找到,如果这些进程被运行,他会直接被赋予高权限而不会出现UAC提示。
Notable missing entries (good thing) are rundll32.exe and mmc.exe.
· 由于这一点,有人发明了rundll32注入提升权限从而绕过UAC的方法,你可以让rundll32通过加载dll来执行你的代码,这样做不会出现UAC提示,也正因为如此,微软把rundll32从进程列表中抹去了,不过,列表中还有大量的进程可以利用,如果你能向windows目录下复制文件,其中几个进程也可以利用。
2、可以创建特定COM对象的进程,运行时不会要求UAC确认。
这里列举的程序可以创建特定的COM对象,并不需要UAC确认,尽管他们自身没有提升特权。只要这些对象被创建了,进程就可以让他们去做某些需要admin权限的事情。比如向System32 或者 Program Files目录下面丢东西。
这些进程看起来是上面列表的一个超集,实际上它包括了windows7所有的可执行文件,并且有微软认证证书。
很让人无语的是,就build7000(甚至包括build7100,也就是RC1)来说,不仅仅是explorer.exe程序可以利用这一特性(愿意的话,你也可以称之为安全漏洞),连Calc.exe,notepad.exe这类程序都可以利用这个特性。微软似乎并没有做什么去最小化攻击,他只是武断地给予了这个特权,不管这个特权会不会被用到,举个例子,你可以打开一个画图软件,把他的“文件”-“打开”对话框当做一个微型的文件管理器来使用,你可以在Program Files里面胡闹(建立一个文件夹,或者重命名)通过这一招,本来会被提示的非微软官方的程序也会被放行,不会出现UAC提示。
3、一些需要权限才能创建的COM对象。
这部分列表的枚举还尚未完成,我们只知道其中包括IFileOperation接口,当然,也有可能所有微软官方的COM对象都难逃此劫。
不过,第三方的COM对象没有办法绕过UAC,就算他被微软的进程启动。
为此,可以利用这个程序来证明,这个程序运行后会以普通未提升权限的进程启动,他直接把自己的部分代码注入到其他程序的内存空间当中,并且让指定的程序去运行它,这个过程利用了普通的API,比如WriteProcessMemory和CreateRemoteThread。
如果目标进程在列表2上,我们的程序可以创建并且控制提升的列表3上的COM对象,没有UAC提示,并且不会让用户得知任何消息。
一般情况下,我们选择explorer作为目标,因为这个程序运行提供windows的任务栏和桌面,但是,其他无关的程序,比如画图和计算器也可以被利用,如果需要,先运行他们,就像这个示例程序一样,目标进程并未提升权限(必须通过代码注入来起作用)。
目标进程可以控制ASLR的关闭,可以是32位或者64位的(不过,ASLR意味着直接代码注入攻击很难,只能考虑远程代码执行漏洞,利用这个漏洞必须写出一个单独的EXE并执行)
现在的潜在问题是静默提升特性,在win7beta版本就默认启用的一个特性,这个特性并不检测需要提权的代码的出处他只检测这段代码运行在哪个进程内而不是特定代码的出处,就像这样,你可以把代码注入explorer或者让explorer去加载你的dll,之后你就可以创建提升后的COM对象并且不为用户所知。
在同一安全级别上,有很多办法让你的代码注入到其他正在运行的进程中,这通常情况下不是个问题,在其它进程中你几乎不能做什么事情,不过静默提升特性改变了这一切。
把你的代码注入到其他进程当中有很多方式,你可以用缓存区溢出漏洞(尽管ASLR做了很多去阻止这一切)或者你可以把自身安装成一个DLL插件,让其他程序加载,就像explorer外壳扩展,示例程序使用了一个众所周知的技术,那就是代码注入,代码注入有一个好处,你不用欺骗其他程序,让他加载你的代码,你只需要把代码压到其他进程当中,并告诉他执行这段代码就够了,这也不是hack行为,所有的一切都是利用文档化的,被支持的API完成的(合法的API包括调试和跨进程通信,这些API无需提权即可使用)
http://blog.csdn.net/jimoyangguang/article/details/7181769
win7 UAC bypass(微软已经给予了三组组件绕过UAC启动的特权)的更多相关文章
- vista下开机启动 简单绕过UAC的方法(自己使用runas参数重新启动自己,有点意思)
背景 vista下,如果不开启UAC,那就没有我下面要说的问题了,呵呵.下面说的都是在vista开启UAC的前提下说的,win7也适用. 在vista下,系统开启了UAC,如果你的 ...
- 微软BI SSIS 2012 ETL 控件与案例精讲面试 200 问(SSIS 面试题,ETL 面试题)
开篇介绍 本自测与面试题出自 微软BI SSIS 2012 ETL 控件与案例精讲 (http://www.hellobi.com/course/21) 课程,对于学完本课程的每一课时和阅读完相关辅助 ...
- 微软BI SSIS 2012 ETL 控件与案例精讲课程学习方式与面试准备详解
开篇介绍 微软BI SSIS 2012 ETL 控件与案例精讲 (http://www.hellobi.com/course/21) 课程从2014年9月开始准备,到2014年12月在 天善BI学院 ...
- 使用Metasploit绕过UAC的多种方法
一.用户帐户控制(UAC)简介 在本文中,我们将简要介绍一下用户帐户控制,即UAC.我们还将研究它如何潜在地保护免受恶意软件的攻击并忽略UAC提示可能给系统带来的一些问题. 1.什么是用户帐户控制 ...
- 绕过UAC以管理员身份启动程序
写这篇文章主要是看到了:http://www.7tutorials.com/use-task-scheduler-launch-programs-without-uac-prompts文章中所用到的方 ...
- 问题-[DelphiXE2]提示第三控件不存在
问题情况:在DelphiXE2启动时界面显示加载了控件,并且控件的路径也放在了环境变量中,但打开程序报第三控件不存在. 问题原因:是没有选择要加载的控件. 问题处理:点击Component->I ...
- 作业三:LINUX内核的启动过程
作业三:LINUX内核的启动过程 一.使用GDB跟踪内核从start_kernel到init进程启动(附实验截图) (一)使用自己的Linux系统环境搭建MenuOS的过程 下载内核源代码编译内核 c ...
- Win7下nginx默认80端口被System占用,造成nginx启动报错的解决方案
Win7下nginx默认80端口被System占用,造成nginx启动报错的解决方案 在win7 32位旗舰版下,启动1.0.8版本nginx,显示如下错误: [plain] 2012/04/0 ...
- Windows Azure 微软公有云体验(三) IIS中文编码解决方案
Windows Azure 微软公有云已经登陆中国有一段时间了,现在是处于试用阶段,Windows Azure的使用将会给管理信息系统的开发.运行.维护带来什么样的新体验呢? Windows Azur ...
随机推荐
- js实现科学计算机
js实现科学计算机 一.总结 1.算法:这个科学计算机是用普通基础算法实习的,没有用栈,用栈要简单很多, 2.发现规律,编程分类:编程的时候,运算符分两种,一元运算符和二元运算符,分类了就好写很多了. ...
- 【BZOJ 3675】[Apio2014]序列分割
[链接] 链接 [题意] 在这里输入题意 [题解] 模拟一下样例. 会发现.切的顺序不影响最后的答案. 只要切点确定了. 答案就确定了. 则设f[i][j]表示前i段,第i段保留到j的最大值. \(f ...
- 【u251】心灵的抚慰
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 病毒问题解决后,神牛们的心灵久久不能平静.他可以从一个程序联想到一些相似的程序.比如从程序1联想到2, ...
- 分类算法简介 分类: B10_计算机基础 2015-03-09 11:08 257人阅读 评论(0) 收藏
一.决策树 决策树是用于分类和预测的主要技术之一,决策树学习是以实例为基础的归纳学习算法,它着眼于从一组无次序.无规则的实例中 推理出以决策树表示的分类规则.构造决策树的目的是找出属性和类别间的关系, ...
- angular模块详解
原文: https://www.jianshu.com/p/819421ff955a 大纲 1.angular应用是模块化的 2.对模块(Module)的认识 3.模块的分类:根模块和特性模块 4.N ...
- Cocos2d中的Menu使用
学习cocos2d-x中的菜单主要须要了解:菜单(CCMenu)和菜单项(CCMenuItem)以及CCMenuItem的详细子类. a. 以下来学习一下相关的类. 1. CCMenu 菜单,是CCL ...
- Java的面向AOP编程
一. 引言 AOP(Aspect-Oriented Programming,面向切面的编程),是一种新型的编程范式,主张关注软件流程中的一个切面,将相同功能的代码整合打包在一起,减少系统的耦合性,增强 ...
- #ifdef 的使用
1. _DEBUG #ifdef DEBUG的理解 首先需要注意的是,只有当前项目工作在 Debug(调试模式)(而不是Release(发布))设置下时编译器提供的宏定义.对于 visual stud ...
- Dubbo服务框架解析(二)
本节介绍dubbo-common,dubbo-common是公共逻辑模块,包含Util类.通用模型,是其他模块的基础. 扩展机制 SPI SPI是扩展点的注解.标注在类型上.全部的扩展点须要通过SPI ...
- Android与IOS的UUID的区别
UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OS ...