欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

[排序题]以下哪种形式最安全?

发表在远景论坛上,原帖的URL如下:
http://bbs.pcbeta.com/thread-177456-1-1.html

盆盆
假设操作系统是Windows Vista,假设启用UAC,希望执行某个管理员任务。现在的问题是,从Windows安全的角度出发,你觉得以下几种方法,安全性由高到低的排列顺序(举个例子,假设是5 3 2 1 4 ,代表安全性最高的是5,其次是3,以此类推)?并且给出科学的理由。
1. 以内置的Administrator登录系统,然后直接执行管理员任务。
2. 以管理员组成员身份登录系统,双击该管理员任务,在弹出的UAC对话框上单击“继续”。
3. 以标准用户身份登录系统,双击该管理员任务,在弹出的UAC对话框上选择某个管理员帐户,并输入密码,然后继续。
4. 以标准用户身份登录系统,用runas命令以某个管理员身份运行该任务,并在弹出的UAC对话框上单击“继续”。
5. 以标准用户身份登录系统,用快速用户切换的方法,切换到某个管理员帐户,然后执行该任务,在弹出的UAC对话框上单击“继续”。

TonyXiang

5 2 4 3 1
5是最安全的,不同帐户间的进程是被绝对隔离的,所以在执行平常任务时使用标准帐户,需要执行管理任务时才切换进入管理员帐户。这个是最安全的,即使外界恶意入侵了标准帐户桌面,也无法调用管理员帐户的进程。

其次是2,有些人可能认为使用3或者4好更好一些。其实以前我也这么认为,但自从看了微软官方的technet那篇关于uac的文章以后就不这么想了。3和4都存在一个共同的问题,就是有可能恶意软件假造这么一个权限提升请求的东西出来,诱骗用户输入管理员帐户和密码,威胁到系统安全。而2模式下,采用的是aam(管理员批准提升模式),就算恶意软件假造这么一个东西,也是没有用的。因为一个假造“继续”按钮是不能让恶意软件得到管理员权限的。而真正的“继续”按钮会被隔离在安全桌面进行,是其他软件不容易侵入的。

剩下的3和4哪个更安全,其实我也说不太清楚。只是感觉4要更安全一些,因为4是自己主动去选择run as某个管理员帐户运行,所以也许被恶意软件假造出这么一个请求提升权限的界面要相对困难一些。而直接电击管理员任务,更加容易被恶意软件截获。先于系统的提升请求对话框,假造一个来诱骗管理员帐户和密码。所以我认为4比3要安全一些

1就不用说了,谁都知道用内置的Administrator登录系统是最不安全的。

盆盆
解释到位,非常佩服!

为了帮助兄弟们更好地理解,这里补充几句,权作狗尾续貂哈:

Mark Russinovich说过,可以把窗口站和桌面看成是安全边界。而不同会话中的桌面,则可以实现最高级别的安全隔离。这就是为什么方法5最安全的原因。因为在方法5里,低、高级别的进程隔离在不同的会话中,非常安全。

而传统的认识,runas似乎和快速用户切换一样,其实不然。从安全角度来说,两者区别很大。这时候低、高级别的进程都运行在同一个桌面上,安全隔离的程度并不是最高。

UAC对话框运行在安全桌面上,和其他用户程序运行在不同的桌面,安全隔离的程度比较高。

TonyXiang朋友说得很对,确实标准用户的提升,有可能招致恶意软件的“社会工程学”攻击,解决方法是设置安全策略,强制用户必须按Ctrl+Alt+Del才能触发UAC凭据录入界面。

需要指出的是,Windows Vista的低、高级别的进程虽然还是运行在同一个桌面上,但是由于MIC、UIPI的功能,不同级别的进程之间可以实现一定程度的隔离,这比Windows 2000/XP要安全很多。

只是Mark Russinovich也说了,UAC/MIC/UIPI代替不了安全边界。

不过,非常重要的是,据微软产品组Robert的指导,合理的排序应该是5 3 (24) 1,以标准用户登录,比以管理员登录更加安全。

我以上的理解并一定完全正确,可能随着学习的深入,会改变看法,我会及时更新这个帖子,以尽可能反应正确的结论。

TonyXiang
不过我们所讨论的一个假定的前提是
计算机周围的物理环境是安全的,也就是不会有不法分子物理接触计算机

如果你开着计算机又走开了,其他人跑过来捣乱,那么2反而又变成相当不安全的了。本地安全策略里可以更改两条来防止这种问题,一个是盆盆所说的,强制使用Ctrl+Alt+Del才能触发UAC凭据录入界面,第二条是设置在aam模式下的权限提升仍然需要输入管理员密码。

盆盆
非常感谢你的回复!
一般来说,离开工作站时,应该按WIN+L锁定机器,让Windows进入安全桌面,实现桌面的隔离。
不过如果不能确保物理安全,这5个方法都可以说不够安全,任何一个稍微懂IT的攻击者,最乐观的情况下,不超过5分钟即可攻破帐户安全体系。

TonyXiang
这个到是,计算机都被物理接触了,还有什么安全可言。。。
偶在学校宿舍里就是去其他寝室转转,一般也会把计算机锁定。。。

盆盆
安全永远是相对的。要实现安全,一定要把某些部件当作可信的部分,例如物理环境、Winlogn进程等等,微软把这些可信部分叫做TCB(可信计算基础)。
我个人的理解,TCB好比是数学里面的公理,是没有道理可言的。例如“直线是两点间的最短距离”,本身就是公理,没有办法进一步切分证明。
 
编后
询问微软安全工程师Robert对于该问题的看法。他给出的答案是5 3 (24) 1。很显然用标准用户登录系统,要比用管理员帐户登录系统更加安全(哪怕由于UAC的原因,管理员组成员实际拿到标准用户权限)。Robert认为,2和4的安全程度很难做出区别,就要看UAC和Runas,哪个可能具有重大的安全漏洞。
已发表 2007年8月3日 13:18 作者 ahpeng

评论通知

如果您想在帖子更新时接到邮件通知,请先登录。这里

订阅帖子评论使用 RSS

评论

2007年8月3日 13:48 by ghjconan

# re: [选择题]以下哪种形式最安全?

itecn一恢复,老大就带来了这么好的一篇文章啊~

学习了~

2007年8月3日 15:20 by clippit

# re: [选择题]以下哪种形式最安全?

这里恢复正常了~好像已经很多天了……

弱弱地问一句:如果某个程序能够截获runas命令,那么它不就也获得了密码?那3和4貌似差不多啊……

顺便提一下,这个貌似不算[选择题],应该是[排序题],呵呵~~刚才回复居然该页无法显示了,气得我重新写一遍!

2007年8月3日 15:39 by yewind

# re: [选择题]以下哪种形式最安全?

等了好长一段时间了,终于打开了,这篇文章看了后,对安全又有了新的认识

2007年8月3日 15:48 by Lee

# re: [选择题]以下哪种形式最安全?

不要小看Microsoft产品组的Dev。

自己测试一把怎么把密码传递到runas再说吧。

2007年8月3日 17:20 by ahpeng

# re: [选择题]以下哪种形式最安全?

To Clippit:

理论上确实如此。

可以看Robert的排序(参见编后),53(24)1

2007年8月4日 18:51 by Asuka Zhang

# re: [排序题]以下哪种形式最安全?

我依稀记得在win2000时代有一个可以读取管理员密码的工具叫做“findpass”,当然到了xp就没有类似工具,更不要提及Vista。

不过如果还有类似工具存在,那么第5种方法切换到管理员的帐号上去就是正中下怀了。

2007年8月5日 10:48 by ahpeng

# re: [排序题]以下哪种形式最安全?

To Asuka:

实际上没有那么简单。Findpass的机制是读取登录会话里缓存的凭据,这些Secrete实际上是TCB进程保护(Winlogon、Lsass等)的。在Win2K下,至少要有管理员权限,才可能访问这些Secrete。

问题在于,如果进程拿到管理员权限,它已经可以控制一切了。

在Windows Vista,就算管理员进程,都不一定可以读取这些机密。

当然安全不是绝对的。

2007年8月21日 1:17 by suyao

# re: [排序题]以下哪种形式最安全?

2和4都存在一个问题,就是在user中所作的一切都将应用到admin帐户的配置文件中,也就是说,如果所需要进行的管理操作是涉及到对本帐户的配置文件修改的,那么这两个方法将会把相应的设置应用到UAC对话框中选取的admin帐户上。

也就是说,虽然安全顺序是53(24)1,但却不能当作实际使用中的Best Practice。比较均衡的一种操作是方法2,或者如果需要更高的安全级别的话应该:使用标准用户身份登录系统,在需要的时候,首先将自己的帐户等级提升,在进行管理任务之后再降级回来。

说说您的看法?

(必填) 
必填 
(必填)