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启动的特权)的更多相关文章

  1. vista下开机启动 简单绕过UAC的方法(自己使用runas参数重新启动自己,有点意思)

    背景      vista下,如果不开启UAC,那就没有我下面要说的问题了,呵呵.下面说的都是在vista开启UAC的前提下说的,win7也适用.      在vista下,系统开启了UAC,如果你的 ...

  2. 微软BI SSIS 2012 ETL 控件与案例精讲面试 200 问(SSIS 面试题,ETL 面试题)

    开篇介绍 本自测与面试题出自 微软BI SSIS 2012 ETL 控件与案例精讲 (http://www.hellobi.com/course/21) 课程,对于学完本课程的每一课时和阅读完相关辅助 ...

  3. 微软BI SSIS 2012 ETL 控件与案例精讲课程学习方式与面试准备详解

    开篇介绍 微软BI SSIS 2012 ETL 控件与案例精讲 (http://www.hellobi.com/course/21) 课程从2014年9月开始准备,到2014年12月在 天善BI学院  ...

  4. 使用Metasploit绕过UAC的多种方法

      一.用户帐户控制(UAC)简介 在本文中,我们将简要介绍一下用户帐户控制,即UAC.我们还将研究它如何潜在地保护免受恶意软件的攻击并忽略UAC提示可能给系统带来的一些问题. 1.什么是用户帐户控制 ...

  5. 绕过UAC以管理员身份启动程序

    写这篇文章主要是看到了:http://www.7tutorials.com/use-task-scheduler-launch-programs-without-uac-prompts文章中所用到的方 ...

  6. 问题-[DelphiXE2]提示第三控件不存在

    问题情况:在DelphiXE2启动时界面显示加载了控件,并且控件的路径也放在了环境变量中,但打开程序报第三控件不存在. 问题原因:是没有选择要加载的控件. 问题处理:点击Component->I ...

  7. 作业三:LINUX内核的启动过程

    作业三:LINUX内核的启动过程 一.使用GDB跟踪内核从start_kernel到init进程启动(附实验截图) (一)使用自己的Linux系统环境搭建MenuOS的过程 下载内核源代码编译内核 c ...

  8. Win7下nginx默认80端口被System占用,造成nginx启动报错的解决方案

    Win7下nginx默认80端口被System占用,造成nginx启动报错的解决方案   在win7 32位旗舰版下,启动1.0.8版本nginx,显示如下错误:  [plain] 2012/04/0 ...

  9. Windows Azure 微软公有云体验(三) IIS中文编码解决方案

    Windows Azure 微软公有云已经登陆中国有一段时间了,现在是处于试用阶段,Windows Azure的使用将会给管理信息系统的开发.运行.维护带来什么样的新体验呢? Windows Azur ...

随机推荐

  1. springboot集成shiro 实现权限控制(转)

    shiro apache shiro 是一个轻量级的身份验证与授权框架,与spring security 相比较,简单易用,灵活性高,springboot本身是提供了对security的支持,毕竟是自 ...

  2. android开发-获取wifi列表

    近期博主在学frangment框架,因此想着想着就想通过listfragment完毕对wifi列表的获取. 好! 如今就不说废话了. 一.wifi的基础知识 在Android的官方文档中定义了例如以下 ...

  3. 清除浮动.md

    清除浮动的三种方法 1 加空div层(.clear) 2 overflow属性设置(.clearo) 3 :after伪元素(.clearfix) <!DOCTYPE html> < ...

  4. POJ 1595 Prime Cuts (ZOJ 1312) 素数打表

    ZOJ:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=312 POJ:http://poj.org/problem?id=159 ...

  5. Spring Boot系列二 Spring @Async异步线程池用法总结

    1. TaskExecutor Spring异步线程池的接口类,其实质是java.util.concurrent.Executor Spring 已经实现的异常线程池: 1. SimpleAsyncT ...

  6. [Algorithms] Binary Search Algorithm using TypeScript

    (binary search trees) which form the basis of modern databases and immutable data structures. Binary ...

  7. Activex调试以及m_hWnd为空 解决办法

    1. 点击[开始]->[运行] 命令:regedit.2. 定位到HKEY_LOCALMACHINE -> SOFTWARE -> Microsoft -> Internet ...

  8. chain rule 到 Markov chain

    1. 联合概率(joint distribution)的链式法则 基于链式法则的 explicit formula: p(x1:n)===p(x)p(x1)∏i=2np(xi|x1,-,xi−1)∏i ...

  9. LDAP Browser/Editor v2.8.2

    https://www.netiq.com/communities/cool-solutions/wp-content/uploads/sites/2/2009/07/Gawor_ldapbrowse ...

  10. ASCII,Unicode和UTF-8终于找到一个能完全搞清楚的文章了

    前言 平时喜欢写东西,看博客,一直对编码有些懵,今天下午也不知道看到了什么,突然想了解下,就找到了这个文章,看完真的豁然开朗,这个必须留下来做纪念. 点击打开链接 1.ASCII 我们知道,计算机内部 ...