他击碎了Vista系统的“防盗窗”

来源:岁月联盟 编辑:zhuzhu 时间:2007-04-21
他击碎了Vista系统的“防盗窗”内容简介:本文转自:电脑报 微软在Vista中升级了反盗版技术,期望这个达到全新高度的技术能阻止全球技术好手对Vista的破解。 然而,一条细小的缝隙反盗版技术SPL2.0中的漏洞,再次让人们找到了完美的破窗而入的途径。不过,与

本文转自:电脑报

  微软在Vista中升级了反盗版技术,期望这个“达到全新高度”的技术能阻止全球技术好手对Vista的破解。

  然而,一条细小的缝隙——反盗版技术SPL2.0中的漏洞,再次让人们找到了完美的“破窗而入”的途径。不过,与以往不同的是,此漏洞的发现者,不是那些曾经无数次在软件界扬名的破解组织,而是中国的一个普通的程序员——Binbin(网名)!

  他发现了SLP2.0的漏洞

  “Binbin”是国内某著名软件论坛中的一个账号,此前,大家除了知道这个账号的主人对许多技术问题非常痴迷之外,这个账号并没有太多特别之处。

  不过,在2007年2月5日后,这个账号注定将成为众人关注的焦点。因为在这一天,这个账号的主人,一个喜欢天天听五月天和信乐团歌曲的内向男孩,突然用这个账号在论坛里宣称:通过改BIOS可以突破Vista采用的SLP2.0加密技术的防御,成功激活Vista!

  一个普通用户,发现了Vista激活机制中的漏洞,无论这是不是炒作,都会引来极大的关注。更重要的是,此前,国人并没有在这个领域走在前列。

  然而,正当大家将信将疑地关注着事态进一步发展的时候,Binbin却又突然消失了,难道说发布突破Vista正版加密技术的消息是一场恶搞?直到大年三十这一天,Binbin再次出现,同时带来的还有最新研究的利用软件模拟BIOS的方法。经过网友验证,正如Binbin所言,Vista中的反盗版技术SLP2.0的确存在漏洞,已经有人利用这个漏洞突破了SLP2.0的防御,成功打开了激活Vista的大门。

  至此,SLP2.0被攻破成为铁板钉钉的事实。Binbin也随之声名鹊起,有人称他为中国的“officevista”(officevista是俄罗斯发明时间停止法的黑客代号)。

  究竟Binbin是如何解开微软SLP2.0之谜的呢?Binbin接受了《电脑报》的独家采访,披露了研究SLP2.0技术漏洞的过程。

  “绕过”SLP2.0验证

  很早以前,Binbin就开始研究各种加密解密技术,因为了解这些技术可以提升自己开发软件的安全效果,他认为“做这个没有什么技术难度,走对路很快就有成果”。

  他说:“很多相关的信息都可以在网上找到,比如这次的SLP2.0技术,我最开始就在微软公开的文档里看出了一些端倪,他们的文档里本身就写到了ACPI的SLIC表中储存验证数据内容。”

  也正是因为这个“小小的发现”,Binbin一开始就走上了一条正确的研究之路。

  OEM产品有自身的特殊性,“尽管Vista中的SLP技术(用于OEM产品的辅助激活技术)升级到了2.0版,得到了强化,不过它最大的弱点就是将加密的数据放置在ACPI中,而绝大多数电脑的BIOS都会将ACPI数据放置到可写入的内存区域”。因此,突破OEM版本Vista的SLP2.0防御成为最可行,也可能是最快的途径。

  虽然从Vista的OEM版入手研究没有错,不过当时Vista还只是RC2版,市面上还没有带验证的BIOS数据,所以使得通过修改BIOS验证数据来达到突破漏洞的实验无法开展。

  真正的进展是在微软1月30日发布Vista之后开始的。2月初Binbin新买了华硕笔记本电脑,这款电脑带上了验证数据的BIOS,这就为他提供了实验的环境。

  最初,Binbin选择了在VMware虚拟机的环境下来进行试验。他通过将笔记本电脑BIOS里的验证数据移植到VMware的BIOS中,发现Vista能够被顺利激活。虚拟机中的试验成功让他异常兴奋,也证明了他开始的思路是正确的。

  也就是说,只要能成功地将华硕笔记本电脑的验证数据写入其他机器的BIOS中,Vista就会认为是华硕的OEM版本,从而自动通过验证。随即,他开始着手研究在实际环境中的BIOS验证数据问题。

攻破BIOS难关

  由于虚拟机中采用的是比较通用的Phoenix的BIOS,因此在实际环境中验证可能会比较顺利。然而,当Binbin将华硕的验证数据写入到非品牌机的BIOS里后,却发现并没有像预想的那样让系统激活。

  问题出在哪里呢?通过查阅相关BIOS资料,Binbin发现,其实已经出厂的BIOS是由很多部分组成的,并没有留给用户自主添加ACPI验证数据的地方。在虚拟机中验证之所以成功,是因为使用了一款叫做Phoenix BIOS editor的工具,BIOS数据是整体压缩之后再写入的,而直接写入的话则将破坏原有的BIOS数据。

  如果要完美地写入ACPI数据,就需要知道BIOS数据加密算法,然后进行逆操作,才知道应该加在什么地方,这似乎难度不小。

  不过Binbin想到了另外一种办法,基本原理就是在BIOS的ACPI里面加入一个SLIC表,因为对于大多数BIOS来说,并不允许插入数据。他用替换的方式,换掉许多不重要的数据。

  Binbin指出,对于DIY的兼容机而言,BIOS中是不存在ACPI_SLIC表的,故无法通过SLP 2.0验证。但是,利用SLP2.0存在的漏洞,我们可以使用从OEM硬件、各种品牌机中获取的信息,将SLP2.0的各项验证数据移植到DIY的兼容机中,从而顺利通过验证。

  果然,按照这种思路操作,实验成功了!这台非品牌机中的Vista被成功激活的消息也让网络瞬间沸腾起来。

  职业理想:进入微软

  SLP2.0漏洞造就了第一个堪称完美的Vista破解方法。作为漏洞第一发现者的Binbin,也早已成为众多技术人员崇拜的对象。然而,Binbin本人却没有人们想象的那么激动。

  他对记者表示,自己仅仅是研究了一下SLP2.0的技术弱点。作为一名技术爱好者,他认为“技术是没有正邪之分的,关键看使用的人出于什么目的使用该技术。我认为我所研究的东西只适用于实验室环境,在生产环境中测试、使用这个漏洞,是很不明智的做法,我也不希望自己的研究成果被用于非法目的”。

  他告诉记者说:“我自己就是一个普通的程序员,走上计算机这条路完全是偶然。所有的课程都是自学的,从汇编到计算机体系结构,到现在都还记得1994年最早抱着《电脑报合订本》通宵达旦阅读的情景。”

  在总结微软的激活机制时,Binbin表示:“微软的产品激活(WPA)机制是很安全的,到目前都没有完美的破解。被破解的只是用于OEM厂商激活、部署操作系统的SLP2.0技术。由于OEM产品的特殊性,微软在设计SLP2.0技术时,需要考虑的事项远比用于零售版的产品激活(WPA)机制繁杂,有些方面必须作出让步。这是SLP2.0技术先天不足造成的,今后的SLP技术也很难在这方面有彻底的改善。”

  虽然微软的操作系统通过这些漏洞很容易被攻破,但Binbin仍然认为微软是他心目中最伟大的软件公司。Binbin随后对记者谈起了他的职业理想就是:进入微软公司工作。如果能够实现,这可能才是他最开心的事情。

  Binbin对SLP技术的建议

  1.不要把验证数据放在ACPI中,很多BIOS会将ACPI放置在可写入的内存区域。如果破解程序在操作系统引导前修改了这段内存区域,操作系统内置的反盗版程序很难检测出来。SLP 1.0的验证数据就是放置在只读的内存区域,很难修改。

  2.要严格地对验证数据所在的内存地址进行验证,制定规则,防止厂商将验证数据放置在不安全的内存区域。SLP 1.0会被攻破 ,就是因为有些OEM厂商将验证数据放在了DMI数据区,而DMI数据很容易被写入。

  3.SLP技术被攻破,不是因为算法被攻破,而是验证数据被移植。SLP 1.0 和 2.0 都是这种情况。更多的加入BIOS特征或硬件特征的验证,可以在一定程度上避免被移植。

  4.应当准备好SLP技术被攻破之后的补救措施,整理一份BIOS特征或硬件特征的“白名单”,进行联机验证,这是很保险的做法。

图片内容