配色: 字号:
草色青青
2013-09-27 | 阅:  转:  |  分享 
  
1.UAC技术解析:UAC的全称为:UserAccountControl,其中文翻译为用户帐户控制,是微软在WindowsVista和Win7中引用的新技术,主要功能是进行一些会影响系统安全的操作时,会自动触发UAC,用户确认后才能执行。因为大部分的恶意软件、木马病毒、广告插件在进入计算机时都会有如:将文件复制到Windows或ProgramFiles等目录、安装驱动、安装ActiveX等操作,而这些操作都会触发UAC,UAC会拦截它们,帮询问用户是否执行。

能够触发UAC的操作包括:

1.修改WindowsUpdate配置

2.增加或删除用户帐户

3.改变用户的帐户类型

4.改变UAC设置

5.安装ActiveX

6.安装或卸载程序

7.安装设备驱动程序

8.修改和设置家长控制

9.增加或修改注册表

10.将文件移动或复制到ProgramFiles或Windows目录

UAC级别介绍:

微软在Win7中的UAC更加完善,加入了UAC的等级设置功能,分别对应如下4个级别:

1.默认级别:

在默认级别下,只有在应用程序试图改变计算机设置时才会提示用户,而用户主动对Windows进行更改设置则不会提示。同时,在该模式下将启用安全桌面,以防绕过UAC更改系统设置。默认级别可以既不干扰用户的正常操作,又可以有效防范恶意程序在用户不知情的情况下修改系统设置,一般的用户都可以采用该级别设置。

2.稍低的级别:

与默认级别稍有不同的是该级别将不启用安全桌面,也就是说有可能产生绕过UAC更改系统设置的情况。不过一般情况下,如果使用户启动某些程序而需要对系统进行修改,可以直接运行,不会产生安全问题。但如果用户没有运行任何程序却弹出提示窗口,则有可能是恶意程序在试图修改系统设置,此时应果断选择阻止,该级别适用于有一定系统经验的用户。?

3.最低的级别:

最低的级别则是关闭UAC功能,必须重新启动后才能生效。在该级别下,如果是以管理员登录,则所有操作都将直接运行而不会有任何通知,包括病毒或木马对系统进行的修改。在此级别下,病毒或木马可以任意连接访问网络中的其他电脑、甚至与互联网上的电脑进行通信或数据传输。可见如果完全关闭UAC并以管理员身份登录,将严重降低系统安全性。此外,如果是以标准用户登录,那么安装、升级软件或对系统进行修改和设置,将直接被拒绝而不弹出任何提示,用户只有获得管理员权限才能进行。可见完全关闭UAC并以标准用户登录,各种操作和设置也非常不方便,因此建议不要选择该级别。

Win7获取管理员权限方法:?

在安装win7系统时,你会建立了一个自己的帐号,这个帐号也计算机管理员帐号。但是呢,可能有些人会遇到这样的问题,但你下载东西的时候,你只能下载到c盘,而不能下载到别的盘里。其实这是系统的权限问题。在WIN7系统,其实有这样一个帐号Administrator,这个在xp系统里,大家都很熟悉的。Administrator帐号,也是一个计算机管理员帐号,而且这个帐号是具有最高级别的权限的帐号。但你遇到一些关系权限的问题时,在这个帐号里都会得到解决。如何使用这个帐号,很简单。

首先,你要激活administrator这个账户。右键我的计算机,管理,本地用户和组,用户,选择Administrator用户,右键属性,把用户已禁用前面的勾去掉。这样,Administrator用户就激活了。以后登陆系统时,在欢迎页面上,就可以选择这个用户进入系统。

?

下面是网上搜集的一些方法:

你把代码复制到文本,另存为1.reg然后双击1.reg运行。这样你以后会在右键任何盘符或是文件夹的时候,出现“管理员取得所有权”。可以然你单独提高某个文件夹的权限!代码内容是:

WindowsRegistryEditorVersion5.00

[HKEY_CLASSES_ROOT\\shell\runas]

@="管理员取得所有权"

"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\\shell\runas\command]

@="cmd.exe/ctakeown/f\"%1\"&&icacls\"%1\"/grantadministrators:F"

"IsolatedCommand"="cmd.exe/ctakeown/f\"%1\"&&icacls\"%1\"/grantadministrators:F"

[HKEY_CLASSES_ROOT\exefile\shell\runas2]

@="管理员取得所有权"

"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\exefile\shell\runas2\command]

@="cmd.exe/ctakeown/f\"%1\"&&icacls\"%1\"/grantadministrators:F"

"IsolatedCommand"="cmd.exe/ctakeown/f\"%1\"&&icacls\"%1\"/grantadministrators:F"

[HKEY_CLASSES_ROOT\Directory\shell\runas]

@="管理员取得所有权"

"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]

@="cmd.exe/ctakeown/f\"%1\"/r/dy&&icacls\"%1\"/grantadministrators:F/t""IsolatedCommand"="cmd.exe/ctakeown/f\"%1\"/r/dy&&icacls\"%1\"/grantadministrators:F/t"

//////////////////////////////////////////////////////////////////////////////

从Vista到Win7用户帐户控制功能变化在Windows7中,微软改变了用户帐户控制功能的工作方式,根据来自安全专家的观点,这将会降低操作系统的安全性。可信赖计算技术是否会因此受到影响,而变得无关紧要?

2002年1月,比尔·盖茨发布了可信赖计算技术,从根本上将微软的工作重点从创建功能丰富的操作系统,转移到保障用户的安全和隐私。盖茨先生在备忘录中解释说:

过去,我们致力于让软件变得拥有更多新功能和特色,让整个平台具有丰富的可扩展性,以便为用户提供更多服务。在这一领域,我们已经作出了出色的工作,但除非用户信赖我们的软件,否则,所有的伟大功能都将变成无关紧要的。

为了强调这一点,盖茨先生继续说:

因此,当需要在新功能和安全之间进行选择时,现在我们必须选择安全。我们的产品必须可以立即使用,随着安全形式的发展变化,还必须不断地进行完善和改进。

大多数人认为这种持续的努力获得了成功,特别是随着用户帐户控制(UAC)功能的到来。

什么是用户帐户控制

微软意识到,如果要建立可信赖计算技术,容许用户在所有时间都拥有系统管理员权限(安全方面的主要风险来源)是不可接受的。因此,从Vista操作系统开始,微软开始了调整。这些调整最终成为用户帐户控制功能,包含了如下所示的内容:

-在可行的情况下,进行操作的权限将从系统管理员调整为标准用户。在这方面,最明显的一个例子就是给予标准用户调整时区设置的权限。

-利用虚拟化技术在没有获得系统管理员权限的情况下协助程序运行。

-对程序进行再处理,这样用户帐户控制功能就可以知道在什么情况下需要系统管理员权限。

-确保在系统管理员权限下运行的程序和在标准用户权限下运行的程序是分离的。

用户帐户控制功能的工作原理

用户帐户控制功能是相当复杂的。因此,我推荐大家阅读微软公司的马克·鲁西诺伟奇发表在TechNet上的文章《深入了解WindowsVista的用户帐户控制功能》,在文中他对用户帐户控制功能的工作原理进行了详细的介绍。

在默认设置下,用户帐户控制功能会授予用户标准权限。如果一个程序需要系统管理员权限才能运行的话,用户帐户控制功能将询问用户是否提高该任务的权限。这样的调整可以防止恶意软件在自动安装的时间获取系统管理员权限。

系统管理员批准模式

用户帐户控制功能利用系统管理员批准模式(AAM)来处理权限的调整。AAM在用户的登陆日志中创建了两个配置文件,一个用来处理标准的用户权限,一个用来提供系统管理员权限。正如我前面提到的,UAC可以提升用户的权限。我并不知道这里存在两种类型的调整方式。一种叫作即时权限提升(OTS)型,另一种则是同意型。

用户使用的权限调整类型,取决于他是否属于本地系统管理员组。如果不属于的话,UAC将使用OTS型,这时请求需要获得属于本地系统管理员组的用户批准。如果用户属于本地系统管理员组的话,UAC将使用同意型的权限调整方式,请求当前用户许可。

看起来UAC是一个非常好的创意。它模仿自Linux的超级用户,同时操作起来更加便利。正如我所想的。进一步的深入研究发现了一些问题。

便利与安全

马克·鲁西诺伟奇和吉姆·阿尔钦(原微软成员)都承认,AAM模式的关注重点是方便,而不是安全。在关于AAM模式的文章中,阿尔钦先生提到:

该功能(AAM)仅仅是为了方便系统管理员的操作而设计的。系统管理员可以利用该模式在不同的进程之间建立安全边界。在这种情况下,处在隔离中的进程是有可能被干扰的。

阿尔钦先生进一步解释道:

如果系统管理员在同一桌面上运行多个任务的话,那恶意软件就有可能从一个非提高进程中攻击或者干预权限提高的进程。

这是我对此逻辑的理解。如果用户需要在配置文件中进行切换以获得系统管理员权限的话,我相信大多数用户只会切换一次,并永远不会再返回到使用标准用户权限的状态。不过,对于UAC来说,运行权限和程序分离是一条重要的原则。因此,这是否属于可信赖计算技术的一个缺陷。

鲁西诺伟奇先生在另一篇文章《深入了解Windows7用户帐户控制功能》中解释了微软放弃使用进程隔离技术的原因:

尽管这属于WindowsVista的一个早期设计目标,利用安全桌面系统的权限调整,Windows诚信机制和用户界面特权隔离来建立安全边界,对标准权限下的进程和系统管理员权限下的进程进行隔离,但有两个原因阻止了该目标的实现,它们是:可用性和应用程序兼容性。

对于微软来说,公平地讲UAC是聊胜于无的。鲁西诺伟奇先生指出,UAC可以提供哪些帮助:

因为恶意软件编写者的目标是拥有系统管理员权限的用户,在某种程度上恶意软件的目标是控制整个系统,因此,大多数恶意软件将无法正常使用。

UAC和Windows7

在Windows7中,微软对UAC的工作方式进行了调整。在Windows7中,用户获得了更多的自主权。如果你需要更改用户帐户控制设置,选择用户帐户,进入控制面板,就会发现新选项。这里有四项设置:

-最高安全权限:就是总是提示,等同于Vista的默认模式。

-次级安全权限:是Windows7的默认设置,在非Windows可执行文件要求权限提升的时间,会提示用户。

-三级安全权限:类似次级安全权限。不同之处在于是在用户的桌面上进行提示,而不是安全桌面。

-最低安全权限:在该设置下,UAC提供的所有保护功能都被关闭。



除了在UAC处理过程中,更多得听取来自用户的建议外,微软也开始使用自动权限调整技术,企图减少提交给用户的提示数量。限于自动权限调整的本质,微软非常重视那些可以利用权限升级的程序。他们在以下方面放宽了限制:

-该可执行文件必须由Windows数字出版商签署。

-该可执行文件必须位于一个Windows安全目录中。

方便更多,安全更少

看起来,微软并没有给予足够的重视,这引起了安全专家的关注。特别是在研究人员拉斐尔·里韦拉和郑龙开发出两种概念证明程序后,其中的一种可以禁用UAC,而另一种可以利用UAC的自动权限提升将攻击者所选择恶意软件的权限予以提升。

真相是什么

在研究UAC发生的变化时,我感觉到发生了一些变化。微软和安全分析师对UAC应该提供什么样的功能有着截然不同的看法。分析师希望微软的UAC应该象Linux一样控制管理权限。

微软并不这样认为。我让鲁西诺伟奇先生阐明了微软目前的观点:

对于Windows7默认的UAC模式来说,底线是保证用户的体验,减少提示的数量,让他们可以控制修改系统的合法软件。UAC的目标是鼓励更多软件在运行的时间不需要获取系统管理员权限,广大软件开发人员选择在标准用户权限下开发软件。

真的会是这么简单吗?UAC的真正目的是迫使软件开发人员在标准用户权限下编写代码。http://wenwen.soso.com/z/q165144321.htm

Win7UAC如何设置



Manifest指明程序运行权限

既然微软的启发式安装程序检测这么弱智,那么我们只好自己麻烦一下,简单地为应用程序添加一个Manifest文件,告诉操作系统我们到底是不是安装程序,是否需要请求管理员权限。如果应用程序的源代码无法获得,我们只需要在应用程序的同一目录下为应用程序添加一个外部Manifest文件。这个Manifest文件的名字应该是应用程序文件名加上“.manifest”后缀。例如,StockUpdater.exe的Manifest文件的文件名应该是StockUpdater.exe.manifest。这个Manifest文件应该指明此应用程序在运行的时候是否需要申请管理员权限,或者是否在普通用户权限下就可以正常运行。



一个典型的外部Manifest文件如下所示:

CodehighlightingproducedbyActiproCodeHighlighter(freeware)

http://www.CodeHighlighter.com/

































其中,requestedExecutionLevel属性就表示我们的应用程序正确执行所需要的权限。它有这样几个可选值:



?asInvoker–它表示应用程序需要跟创建者相同的权限运行。也就是跟WindowsExplorer相同的权限运行,通常就是普通用户权限。这个应用程序不是安装程序并且不会被启发式安装程序检测错误地标记。



?requireAdministrator–它表示这个应用程序需要管理员权限才能正常运行。(它可能是一个安装程序。)



?highestAvailable–它表示这个应用程序应该以尽可能高的权限运行。如果当前用户是一个管理员用户,那么它就等同于requireAdministrator。如果当前用户是普通用户,那么它会在运行的时候请求管理员权限。



当我们为应用程序添加外部Manifest文件后,操作系统会根据Manifest文件中的定义为应用程序制定相应的UAC规则。例如,我们可以通过外部Manifest文件,为一个自定义的安装程序在执行时请求管理员权限。



嵌入式Manifest

如果我们可以获得应用程序的源代码,我们可以在VisualStudio2010/2008中为应用程序添加嵌入式的Manifest来完成相同的工作。在项目属性中,我们设置“Linker->ManifestFile->UACExecutionLevel”,就可以指定应用程序执行所需要的权限。

























献花(0)
+1
(本文系文理绿纱首藏)