研究人员在黑帽会议上表示,虽然Windows 8为攻击者提供了一些攻击机会,但总体来说,Windows 8比之前版本的操作系统更加安全。
趋势科技高级威胁研究小组负责人Sung-ting Tsai在黑帽会议后接受采访时表示,目前在Windows 8中至少有三个攻击点,通过攻击者的一些努力,可能会发现更多可以被利用的漏洞。
其中,更具威胁性的是两种规避微软在其新操作系统中部署的安全措施的方法。
第一种方法是绕过针对Windows 8 Metro风格应用程序的限制(阻止应用程序访问互联网)。这种方法不是试图打破这个限制,而是利用一个应用程序来访问具有这样权限的应用程序。
这样,没有互联网访问权限的应用程序仍然能够通过IE或者Microsoft媒体服务器向互联网发送消息,并向IE或者MMS试图寻找的URL附加本地信息。同样,Metro应用程序访问的Word或者Excel文件可能包含连接到互联网的代码。
通过互联网访问,流氓应用程序可以从本地机器上传数据到互联网上受攻击者控制的机器中。
微软表示他们不会对此采取任何措施,这是因为访问互联网是对用户可见的,如果用户不赞成的话,谁能够阻止互联网访问。同样地,反病毒产品可以发现这种访问,一旦这种类型的活动被报告给微软,微软将会从用户电脑移除该应用程序。
Tsai并不同意这种说法。当普通用户看到一个Metro应用程序启动MMS时,他并不会怀疑该应用程序正试图访问互联网。即使用户意识到这个问题,他也很难确定这个访问时正常的还是恶意行为。杀毒软件同样也很难分辨其中的区别。
Tsai表示,另一种规避方法是使用应用程序容器沙盒内的命令提示符cmd.exe来触发其他外部的可执行文件。
微软表示,这不是一个问题,Tsai也同意他们的观点。但是他表示,当联同其他可执行文件时,攻击者可能可以利用其他漏洞。
他还分析了ClickOnce,在Windows 8上运行的安装包。攻击者可能利用ClickOnce来向文件系统启动有害文件。Tsai表示微软承认了这个问题,并将在下一版本的Windows 8中修复这个问题。
他发现的另一个潜在漏洞是dll劫持—插入伪装成应用程序试图寻找的dll的恶意代码。他表示,IE试图加载一些它不再需要的dll。如果这些dll的名称被攻击者发现,它们可能被用来伪装恶意软件。
他表示,当存在不必要的dll加载时,这个问题可能出现在任何应用程序中。微软表示在Windows 8发行预览版中没有dll劫持问题。
Tsai表示,Windows 8 Metro应用程序的一个编程功能可能被攻击者利用,这个功能允许应用程序访问它们无法访问的文件夹和文件,这可能被用来窃取数据,并将数据发送给攻击者。
根据规定,Metro应用程序只能访问文件、视频、音乐和照片文件以及文件夹,但应用程序的开发者可以提供例外,允许应用程序访问其他文件和文件夹。
恶意应用程序可能被授予访问Downloads文件夹的权限,然后,用户可能被社会工程学攻击诱骗到从互联网下载恶意文件到Downloads,从而让该应用程序可以访问恶意代码。
微软表示,这是针对开发者的功能,不是漏洞,并且在用户的控制之下,因此,这不是一个威胁。Tsai表示,微软可以控制程序员提供的特例的范围。例如,文件可以被访问,但只授予只读的权限。
Tsai还讨论了他无法利用的三个潜在攻击点:
= 内核级高级本地程序调用(ALPC)
= 组件对象模型(COM)应用程序编程接口(API)
= Windows Runtime (RT) API
在内核级攻击ALPC消息是非常困难的,但如果攻击成功实施的话,攻击者将能够获得丰富的应用程序调用信息流。Tsai已经开发了四个脚本来拦截这些消息,他计划将这些脚本公之于众。
到目前为止,他还没能够使用这些针对ALPC的脚本开发出一个针对Windows 8的漏洞利用,或者发现一个漏洞,但这些脚本提供了自动寻找漏洞的方法。
他检查的第二个攻击点是针对COM服务器的,这是向客户端提供服务的对象。在Windows 8中,Metro应用程序在容器、安全沙箱中运行,这限制了应用程序的访问权限,让应用程序只能访问它绝对需要的资源。对这些资源的请求都会通过RT代理,这个代理作为限制资源访问的中间人。
但是,如果应用程序能够获得对COM服务器的直接访问权限,攻击者将可以绕过这个沙箱。这个COM访问必须通过使用汇编语言编写的基本脚本手动完成。如果具有高权限的COM可以被访问的话,攻击者理论上可以攻入系统,Tsai表示:“这并不容易,但这是可能实现的。”
Windows RT API是第三个攻击点。Tsai表示,他通过模糊攻击来攻击它,向其发送随机命令,看是否会造成API故障和创建一个漏洞。这需要花很多时间,还需要运气,攻击者才可能成功。
他在Windows 8的消费者预览版中发现一个内存破坏漏洞,并向微软报告了这个漏洞,微软在windows 8发行预览版中修复了这个漏洞。