Hacking Team(一家臭名昭著的意大利间谍软件公司)的数据泄漏事件也许是2015年最热门的讨论话题之一了。
可能有些人并不了解这件事情的具体信息,在此我先给大家简要介绍一下。Hacking Team成立于2013年,该公司专门向政府以及执法机构销售间谍软件和监视工具。2015年7月5日,该公司中存储的大量数据被曝光在了互联网上,而声称对此次数据泄漏事件负责的人是一位名为“Phineas Fisher”的黑客。在此之前,“Phineas Fisher”曾对Gamma国际(另一家专门出售间谍软件和间谍工具的英国公司)进行过类似的攻击。
媒体机构曾从很多不同的角度对Hacking Team的入侵事件进行过分析和报道,例如向敌对国政府出售间谍软件,以及监视工具的质量问题等。
其中有一件事情吸引了我们的注意力:有一名俄罗斯黑客将一个Flash 0 day漏洞出售给了Hacking Team,并得到了四万五千美元的“奖励”。
2015年7月10日,Cyrus Farivar曾为Ars Technica撰写过一篇非常有意思的文章,建议广大读者阅读这篇文章。这篇文章讲述的是Vitaliy Toropov的故事,Vitaliy Toropov今年33岁,是一名来自俄罗斯莫斯科的漏洞开发人员,他的工作就是向类似Hacking Team的公司出售0 day漏洞,并以此谋生。
在Ars Technica发表的这篇文章中,Cyrus写了下列这段话,这也给大家展示了漏洞开发者是如何出售这些0 day漏洞的:
对于Hacking Team这类公司而言,0 day漏洞是他们的“面包和黄油”,如果不能有效地利用目标系统中的0 day漏洞,那么他们的软件就无法感染目标系统。尤其是那些能够绕过现代防御技术(例如ASLR和DEP)的漏洞,这些漏洞的需求量非常的高。
这两者之间的交涉一直在进行之中,直到双方同意了这个Adobe Flash Player 0 day漏洞的相关购买条款,而Vitaliy Toropov在该漏洞失效之前成功收到了两万美元的预付款。
在此之后,Vitaliy Toropov又迅速向该公司表示,可以在其下次购买漏洞时提供打折,他真是一个非常棒的“推销者”。正如Cyrus在他写给Ars Technica的文章中描述的那样:
这段故事立即引起了我们的注意。微软Silverlight的一个漏洞于两年前开发了出来,还有可能在将来继续利用吗?如果可能的话,这绝对是一个非常严重的设计漏洞,攻击者将能够利用这一漏洞成功地对大量目标系统进行攻击。比如说,当你安装了Silverlight之后,它不仅会自动在IE浏览器中进行注册,而且还会在Mozilla的火狐浏览器中进行配置,所以攻击者所能利用的攻击面非常的广。
搜索Silverlight 0 day漏洞
在过去,我们成功发现并修复了几个0 day漏洞,包括CVE-2014-0515和CVE-2014-0546(这两个漏洞曾被Animal Farm APT组织利用过),CVE-2014-0497(DarkHotel APT组织曾利用过)以及CVE-2015-2360(Duqu APT组织曾利用过)。除了上述漏洞之外,我们还发现了CVE-2013-0633,Hacking Team和其他未知的黑客组织都曾利用过这一FlashPlayer的0 day漏洞。
我们坚定地认为,发现这些漏洞并将它们免费报告给受影响的软件制造商,能够使这个世界变的更加的安全,这对所有人来说都是一件百利而无一害的事情。
所以当我在阅读Ars Technica所发表的文章时,我脑海中就诞生了找到Vitaliy Toropov所提到的那个Silverlight漏洞的想法。
如何才能找到这个0 day漏洞呢?在我们的操作过程中,使用到了几款精心编写的工具,技术,以及我们的智慧。我们的内部工具有KSN(卡巴斯基安全网络)和AEP(自动化漏洞防御系统)。
为了找到这个Silverlight漏洞,我们首先对Vitaliy Toropov所描述的其他漏洞进行了分析。幸运的是,Vitaliy Toropov还在PacketStorm上发布过漏洞信息:
这一信息吸引了我们的注意力,主要是因为:
| 这是一个Silverlight漏洞;
| 这是由Vitaliy自己编写的漏洞概念验证实例;
读者们可以自己从网站中获取到这个概念验证实例:
我们从网站中下载了所有的相关资料。在我们所得到的文档中包含有一个非常详细的readme帮助文档,这个文档对漏洞信息进行了详细的描述,并提供了概念验证实例的源代码。
在这个概念验证实例中,漏洞利用代码会对目标系统的calc.exe直接进行“攻击”。文档中还包含有一个作者编译的调试版本,这对我们来说非常的有用。因为我们可以利用它来识别特定的编程技术。
在这些文件中,最有趣的一个文件信息如下所示:
SilverApp1.dll:
文件大小: 17920 个字节
md5: df990a98eef1d6c15360e70d3c1ce05e
这是Vitaliy Toropov所编写的一个利用Silverlight漏洞的DLL文件。
现在,我们拿到了这个文件,所以我们打算对其进行几项特殊的检测。我们专门为这个文件编写了一套YARA规则,并对文件中的某些特殊字符串进行了特殊处理。下图显示的是我们在YARA规则下的检测信息:
挺简单的,不是吗?
实际上,我们在对所有重大事件的检测过程中,都会编写YARA规则,因为我们认为这是一种能够有效抵御网络攻击的方法。
漫长的等待….
在进行了检测之后,我们等待了一段时间,并希望有APT组织能够利用这一漏洞。由于Vitaliy Toropov已经将这一漏洞的信息提供给了Hacking Team,我们也希望他能够将这一漏洞的信息出售给其他的买家,这个漏洞的价值这么高,肯定会有人去利用这个漏洞。
但不幸的是,在几个月之后,什么事也没有发生。我们甚至都把这件事情给忘了,直到2015年11月的月底。
在11月25日,我们的检测装置检测到了有关这一漏洞的利用行为。在几个小时之后,一个漏洞利用样本被上传至了我们的扫描设备中。
这个文件于2015年7月21日编译完成,也就是在Hacking Team数据发生泄漏的两周之后。这也让我们以为这是一个新的漏洞,而不是2013年的那个旧的漏洞。
漏洞的技术细节分析:
漏洞存在于BinaryReader类中。当你在创建这个类的实例对象时,你可以自己实现具体的编码过程:
除此之外,你还可以在编码过程中使用你自己的解码类:
从BinaryReader.Read()的代码中,你可以看到:
实际上,函数在调用“index”的值之前,会对其正确性进行检测:
但是,如果你仔细看看InternalReadChars函数,你将会发现下列代码:
问题就在于,GetChars函数可以由用户自定义实现,比如说:
接下来,让我们来进行调试测试。
这是一个Test.buf变量,其中05为数组长度:
在调用了BinaryRead.Read方法之后,我们对InternalReadChars方法进行分析:
在我们修改了解码方法之后,得到了Test.buf对象:
对我们来说,目前最大的问题就是这个漏洞是否是Vitaliy Toropov出售给Hacking Team的那一个,或者说这是一个之前从未发现过的全新漏洞?
如果你想要学习如何编写高效的YARA规则并学习如何发现APT活动和0 day漏洞,请赶紧报名参加我们的培训课程吧!课程名额有限,报名请从速!
还没有评论,来说两句吧...