微点交流论坛
» 游客:  注册 | 登录 | 帮助

 

 11  1/2  1  2  > 
作者:
标题: 守株待兔过UAC 骗过微软却骗不过微点
点饭的百度空间
银牌会员




积分 2315
发帖 2236
注册 2007-11-30
#1  守株待兔过UAC 骗过微软却骗不过微点

  


许多用户习惯于在管理员帐户下进行日常操作。这种不够安全的使用习惯,又助长了软件厂商基于“用户在管理员帐户下操作”的假定来开发和测试软件。如果在非管理员帐户下打开这些软件,软件就不能正常工作——这就是所谓的LUA bug。反过来,这些软件厂商的客服人员不断告诉用户“请使用Administrator”,也就使更多用户养成了在管理员帐户下进行日常操作的“不良”习惯。天天使用Administrator的用户,更容易遭到恶意软件的攻击;受到影响的用户只会认为“Windows不安全”,而不会想到软件厂商的那种不正确的假定造成了什么。

Microsoft决定采取一些措施,推动软件厂商开发能在Non-Admin下运行的软件,而使得用户不再依赖于Administrator。于是,UAC诞生了!

User Account Control (UAC)是Windows Vista操作系统引入的一项安全基础架构技术。应用程序只拥有标准帐户权限,除非管理员明确授予其更高的权限。这样,只有用户信任的程序才能获得高权限,而恶意软件则没有对系统造成破坏所需的权限。

UAC的工作方式

当用户登录Windows Vista时,操作系统会为用户创建一个会话,同时为用户创建令牌。如果是普通用户帐户,只有一个“普通令牌”;如果是管理员用户(属于Administrators组的用户),内核就将“买一送一”创建两个令牌——一个拥有完整权限的“特权令牌”,另一个“普通令牌”只有相当于普通用户的权限。然后,系统使用普通令牌创建桌面进程(explorer.exe)。用户总是在桌面进程中启动程序(包括桌面、开始菜单、资源管理器等都属于桌面进程),因此用户启动的程序也就只拥有普通用户的权限。

当用户需要执行系统管理任务的时候,例如安装一个新的软件、调整Windows防火墙配置,普通令牌的权限就不够用了,怎么办呢?默认情况下,管理员用户会看到一个变暗的桌面、只有一个对话框询问是否允许该程序用另一个特权令牌来启动,而普通用户则需要输入管理员的用户名、密码才能继续。

假设,某人发给你一封邮件“我的照片”,附件是photo.jpg;于是你下载了这个附件,然后双击……而你并没有看到photo.jpg.exe后面的可执行扩展名。这是一个恶意软件,它试图创建一个系统服务木马。在Windows XP中,你的机器瞬间就沦为肉鸡——黑市价0.5元,而你的损失则远远不止这个数了。在Windows Vista中,photo.jpg.exe获得的普通令牌并没有创建系统服务的权限,于是你就看到了那个变暗的桌面和询问窗口,你应当知道图片浏览不应该有这样的现象,因此也就不会为它授予特权令牌。

UAC的目标,就是让普通用户、普通令牌成为Windows软件的标准,而特权令牌则只用于管理操作、决不是家常便饭。

脚本与UAC

几天前,我在写一个通过修改C:\windows\system32\drivers\etc\hosts文件来自定义域名解析的VBScript脚本。hosts文件位于C:\windows目录以内,因此必然需要经过UAC提升权限后使用特权令牌来执行这个操作。exe程序可以通过manifest要求使用特权令牌,而文本格式的VBScript脚本是无法嵌入manifest的。Ramesh Srinivasan给出了一段脚本:



通过带有runas的ShellExecute函数,显式要求特权令牌。

这段脚本产生的UAC授权窗口如下:

UAC授权窗口有四种不同的颜色,蓝、灰、黄、红分别表示不同的信任级别;这个授权窗口的标题栏颜色是蓝色,这表示该进程(wscript.exe)是Windows Vista的一个组件。请注意,窗口上仅仅给出了wscript.exe的程序描述Microsoft® Windows Based Script Host,而没有显示将要执行vbs脚本文件名。

守株待兔骗过UAC

User Account Control是Windows Vista最重要的安全特性之一,而就是信息系统中最脆弱的环节。社会工程学是很有用的攻击手段:photo.jpg.exe、电影Firewall讲述的故事……都是社会工程学的攻击实例。现在,我们就用社会工程学突破UAC

UAC的骗术

从上面的UAC授权窗口可以看出,授权窗口的颜色和文字提示是根据进程的可执行文件确定的,而与调用可执行文件的参数无关。虽然点击Details按钮可以看到可执行文件的完整路径及全部参数,但是大部分用户看到蓝色的“Windows Vista组件”要求授权时,只是简单的点击确定了事;尤其是用户在开始菜单中右击某个快捷方式然后选择“Run as Administrator”时,更不会去点击Details按钮看个究竟。

iPhone不允许软件未经许可执行第三方代码,而Windows作为一个开放平台显然不会这么做。Windows Vista有许多内置组件可以通过命令行参数执行其他代码,例如:

wscript.exe
cscript.exe
cmd.exe
rundll32.exe
powershell.exe
iexplore.exe
mmc.exe
试想:替换掉一个快捷方式,当用户选择Run as Administrator并通过了UAC授权后……你就获得了最高权限!

UAC的设计目的是让UAC授权窗口不要天天出现、而只用于管理任务。大部分管理任务是在控制面板中完成的,而另一些管理任务则必须通过命令提示符完成。命令提示符(cmd.exe)可以直接点击快捷方式在普通令牌下打开,也可以用Run as Administrator命令在特权令牌下打开。cmd.exe可能是最常获得特权令牌的Windows Vista组件。

下面,我将使用Windows PowerShell语言对上述方法进行演示。

偷梁换柱

Windows Vista开始菜单中的命令提示符Command Prompt快捷方式,就是当前帐户的开始菜单目录内Programs\Accessories\Command Prompt.lnk文件。Programs目录究竟在磁盘上的哪个位置,不但与用户名有关、而且与用户配置文件(profile)的类型有关。可以基本肯定的是,用户能够用普通令牌写入这个目录。

   

借助.Net的强大威力,用$accessories=Join-Path ([System.Environment]::GetFolderPath("Programs")) "Accessories"就可以取得Accessories目录的路径。注意:在Windows Vista的本地化版本中,“Accessories”这个名称可能会有变化;因此目前这个演示脚本只能适用于英文版本的Windows Vista。

找到Accessories目录后,只要其中存在Command Prompt.lnk文件,就重新建立一个含有特殊参数的新快捷方式。


cmd.exe后面加上了参数/k powershell path\to\cmd.ps1,而cmd.ps1已经被复制到当前用户profile的AppData目录。这样,每次用这个快捷方式打开命令提示符,都会先调用powershell执行cmd.ps1脚本(此脚本内容后面介绍),执行完毕后保留命令提示符窗口、而不退出。

install.ps1的完整代码如下:



为了更方便执行install.ps1,再写一个install.cmd调用它,一双击就能运行:

@ECHO OFF
powershell .\install.ps1

接下来还可以进一步发挥,比如:与游戏一起打包成WinRAR自解压档案、然后换成Flash图标……总之是让受害者运行install.ps1,完成对Command Prompt快捷方式的“偷梁换柱”。受害者需要安装有Windows PowerShell 1.0;聪明的你当然也可以用VBScript写出相同功能的代码。

守株待兔

经过“偷梁换柱”,打开命令提示符时可以运行一个自定义的PowerShell脚本,也就是cmd.ps1。不过,这时候还没有获得特权令牌,只能等待用户在一次次运行命令提示符中,“发发善心”点击Run as Administrator——这就是“守株待兔”的含义。

几天以来,可怜的受害者都是以普通令牌打开命令提示符。什么也没有发生,不过我要严肃的指出四点:

1. 启动PowerShell,在1.8GHz CPU的计算机上有0.3秒的时延,并不明显。用VBScript写,可能会快一点儿。
2. 在那0.3秒载入PowerShell的时间内,窗口的标题栏不正常:

很容易打草惊蛇啊,没有办法解决(即使换成VBScript也不能解决),祈祷吧。
3. 如果过于聪明的受害者对原来的Command Prompt.lnk定义了键盘快捷键(我就习惯于按下CTRL+ALT+SHIFT+C打开命令提示符),快捷键将会失效(不过在成功获得特权令牌后能恢复)。聪明人不上当~
4. install.ps1脚本会在AppData目录写入cmd.ps1文件、及备份Command Prompt.lnk,容易被有心的用户发现、然后随手删除(即使他不知道这些文件有什么用处),此时将导致今后打开命令提示符时出现错误信息。

聪明的你,可以把这些文件藏在深深的目录里,只要是普通令牌有写入权限的地方都可以。

然后,命令提示符正常打开,就像什么也没有发生过似的:

cmd.exe的/k参数会造成Microsoft Windows……那两行字不显示,这两行字实际上是PowerShell输出的;Windows Vista的每个Service Pack都会改变版本号,而这里不会改变,但是没人会注意到的。

终于有一天——
   

受害者仍然毫无感觉:

而且,cmd.ps1文件被删除,原来的Command Prompt.lnk被恢复。

而攻击已经成功了:


cmd.ps1的完整代码如下,其中的Get-AdminStatus函数来自Aaron Margosis' "Non-Admin" WebLog:



原形毕露

如果不是天天检查快捷方式指向的目标,受害者只有唯一的机会让这种攻击原形毕露——在每一个UAC授权窗口中点击Details并检查命令行参数


很容易发现,要运行的程序,后面跟着一大串参数,显然有问题!马上点击Cancel,然后顺藤摸瓜/清理痕迹/全盘杀毒/求助高手……

顺便提一句,两张UAC授权窗口的图片特别模糊,是因为显示授权窗口的时候根本无法截图!我是用照相机对着屏幕拍摄的。默认情况下,UAC授权窗口将显示在安全桌面上,应用程序无法访问它,PrintScreen键也不起作用;此时,应用程序无法通过控制鼠标或者发送键盘/鼠标消息来点击Continue按钮。不过,这个安全桌面的选项可以在组策略中关闭,但是那样很不安全。

UAC的下一代

User Account Control是Vista为了促使“普通帐户”成为默认权限而作的努力,但是频繁的UAC授权窗口影响了用户体验。在组策略中可以设置无交互自动授权,相当于没有UAC,这种配置只适合于自动化测试环境。Norton User Account Control Tool在改善用户体验方面作了有益的尝试,它会自动学习用户的操作、逐步建立黑白名单,然后根据黑白名单自动应答一部分UAC授权窗口,减少了用户需要手动应答的UAC授权窗口数量。

UAC是桌面计算机安全性提升的一种解决方案,然而信息系统正逐步走向B/S、云计算。B/S、云计算应用是运行在浏览器中、存储于服务器上的,无法直接应用现有的UAC技术。同时,它们却又变得越来越重要,以至于攻击者对它们的兴趣与日俱增。UAC需要改进,以便用于B/S、云计算应用:例如,结合RSA SecureID完成授权。

桌面安全、信息系统安全还有很长的路要走,UAC只是其中的一小步,仅此而已。

※ ※ ※ 本文纯属【点饭的百度空间】个人意见,与【 微点交流论坛 】立场无关※ ※ ※

你的微笑 is 微点的骄傲!
http://hi.baidu.com/new/micropoint
2009-3-25 21:43
查看资料  发送邮件  访问主页  发短消息   编辑帖子
zhuqilh
注册用户





积分 185
发帖 219
注册 2009-3-3
#2  

也许是太专业了 有点迷糊

※ ※ ※ 本文纯属【zhuqilh】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
2009-3-26 08:55
查看资料  发送邮件  发短消息  QQ   编辑帖子
mamsds
银牌会员




积分 1373
发帖 1360
注册 2008-3-15
来自 乌克兰
#3  

貌似很复杂...........

※ ※ ※ 本文纯属【mamsds】个人意见,与【 微点交流论坛 】立场无关※ ※ ※

Vi Veri Veniversum Vivus Vici.
2009-3-26 16:56
查看资料  发送邮件  发短消息  QQ   编辑帖子
HomeSGerMine
银牌会员

■■微点护卫队队长■■


积分 4888
发帖 4785
注册 2009-3-8
来自 哪里有微点,哪里就有我
#4  

以前用过一下vista,感觉不怎么样,UAC的窗口太多了,在前些时候就听说用迅雷来过UAC验证的,用迅雷下的东西直接在迅雷里面运行就可以过UAC验证了。貌似现在还没解决呢!

※ ※ ※ 本文纯属【HomeSGerMine】个人意见,与【 微点交流论坛 】立场无关※ ※ ※

东方之荣耀,  中华之微点!---Micropint
2009-3-26 21:34
查看资料  发送邮件  发短消息  QQ   编辑帖子
sgsrun
注册用户





积分 82
发帖 84
注册 2008-4-25
#5  

坚持学习中

※ ※ ※ 本文纯属【sgsrun】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
2009-3-26 21:57
查看资料  发送邮件  发短消息   编辑帖子
lixuelin1015
注册用户




积分 117
发帖 119
注册 2009-3-12
#6  

英文的 晕

※ ※ ※ 本文纯属【lixuelin1015】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
2009-3-27 07:48
查看资料  发送邮件  发短消息  QQ   编辑帖子
坐照
银牌会员

正式版用户


积分 1426
发帖 1422
注册 2009-3-24
来自 湖北宜都
#7  

不太懂。

※ ※ ※ 本文纯属【坐照】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
2009-3-27 08:29
查看资料  发短消息  QQ   编辑帖子
lsj301
银牌会员




积分 1388
发帖 1382
注册 2009-3-16
来自 甘肃兰州
#8  

不懂

※ ※ ※ 本文纯属【lsj301】个人意见,与【 微点交流论坛 】立场无关※ ※ ※

我们一直在默默支持微点!
2009-3-27 17:50
查看资料  发送邮件  发短消息  QQ   编辑帖子
神盾2009
新手上路





积分 28
发帖 28
注册 2009-3-14
#9  

有点复杂。

※ ※ ※ 本文纯属【神盾2009】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
2009-3-27 18:33
查看资料  发送邮件  发短消息   编辑帖子
786314476
注册用户





积分 61
发帖 61
注册 2009-3-16
#10  

啥东西啊?!

※ ※ ※ 本文纯属【786314476】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
2009-3-27 19:47
查看资料  发送邮件  发短消息   编辑帖子
 11  1/2  1  2  > 



论坛跳转:

可打印版本 | 推荐 | 订阅 | 收藏


[ 联系我们 - 东方微点 ]


北京东方微点信息技术有限责任公司 福建东方微点信息安全有限责任公司

闽ICP备05030815号