陆立新:计算机病毒沙箱分析的优势和挑战

陆立新:首先感谢大家能一起跟我分享我在反病毒工作当中的经验,谢谢主办单位的邀请。今天我跟大家分享的主要是沙箱方面的,我尽量讲得容易一点,沙箱的技术含量确实比较大,在座很多都是年轻人,肯定理解起来也不会有问题。最后我会留出一点时间来我们互动,大家可以问一些问题,多深的问题都可以。

2   陆立新

我先介绍一下,我跟病毒还是有一点缘分的。记得在1992年的时候,我参加的第一份工作是在一个大学里面管计算机的实验室,大概有100多台机器,还有几个教授的机器。在北美找到一份工作不容易。可是没有工作两周那个计算机就中毒了,当时是中的是Stone病毒。当时我就开始着急了,在那里修复那个病毒,结果越修复那个感染越多,原因就是因为我当时没有注意到那个小的传染,最后忙了一天以后,发现开始感染的是两台机器,最后是20多机器。结果没办法,把整个实验室关闭了三天,向学校的计算机中心,请求他们来帮忙。

那个时候我就觉得病毒这个玩意儿挺厉害的,为什么可以有这么大的影响呢?我觉得应该搞清楚。后来我就找了一本书,可能大家也知道那本书,Little Black Book of Computer Virus,好像翻译成中文了,是一个比较权威的书,教人们怎么写病毒,病毒到底是怎么回事。那个时候的机器是286、386,操作系统是Dos。但是病毒的理念很清楚,而且病毒写得体积很小,很强。从那个时候,如果你们有兴趣的话,我建议你们找那本书看看,现在在网上可以下载,不用花钱了,有PDF文档,是很好的一个启蒙的一本书。当然不是鼓励大家去写病毒,但是对于病毒的入门了解,我觉得是很有用的一本书。那个时候我就开始对病毒特别感兴趣,就想把它搞清楚,这个东西很厉害。

1998年的时候我有个机会在美国硅谷创立第一个创业公司,做病毒分析。那个时候我就在想,病毒越来越多,每年都在增加,那个时候的病毒大概是6万到8万,所以抽取病毒的特征码进行扫描是足够的。但是我那个时候想病毒的发展速度来看,将来的特征码肯定是不够的。我想了一个办法,就是利用在终端的行为分析建一个程序,注册到系统里面。观察每一个调出来的程序,看他的行为,如果行为不好,马上把它中断。那个时候我做的行为分析程序也可以说是全球比较前沿的,属于一种实验性的。后来那个公司2003年的时候卖给了微软。之后我又到了硅谷的另外一家公司,就是我在做行为分析程序的时候发现会产生大量的误报,就是你在监测另外一个程序运转的时候,你要在他破坏你的系统之前终止他,在他破坏之前那个行为又没有足够的证据,所以就会经常产生一些误判。后来我就想如果我让一个程序在一个封闭的环境下完全的执行,那么我可以得到充分的证据去判断他就不会误报。所以我就想到了一个沙盒的方法,那个时候我做沙盒的时候,可能全球还没有几个做沙盒的,我是2003年开始做的。到2009年的时候就卖给了一家公司,又创建了另外一个公司,叫做ValidEDGE,就是把终端的沙盒在微软的VC上面做,后来就做到Hypervisor上面去,有很多好处,可以同时执行,增加Performance。可以加速crash,就是病毒分析完了以后要还原,通过Hypervisor的方式很快,那个公司做了三年,卖给英特尔McAfee,后来我又专门领导一个团队做ATD。现在看来沙箱也有很多问题,每个反病毒公司都有沙箱,中国的反病毒公司也有。但是现在看来沙箱也有很多弱点,今天我要讲的就是沙箱的好处和不足的地方,我下一步还要创办公司,因为没有办法,这个问题还没有解决。

什么叫做病毒沙箱?实际上很简单,就是把病毒放在一个比较安全的地方,放到一个分割的地方让它来执行,执行完了以后看它的行为,它到底做了一些什么事情。凡是属于病毒的沙箱都有一个目的,就是要得到他的行为,得到他的行为一定要监控那个系统的执行,做一个记录,所以一定要有一个模块。而且沙箱一定要有一个保护层,就是保护病毒执行的时候不会损坏其他的东西,这些都是起码的。所以一个沙箱,作为病毒的沙箱最起码要有这一条,要有一个封闭的系统,要能够保护他。要有一个模块能够监控他,记录他执行做了一些什么操作。拿到这个行为以后进行一种分析,看看到底是不是一个病毒。

这是世界上的各种沙箱结构,下面有一个虚拟层,虚拟层上面有很多的VN,一个VN就可以装一个OS,装一个操作系统。对于病毒来说,这个操作系统跟终端的操作系统一模一样,病毒在里面执行。执行的过程当中,你有一个记录他行为的模块在里面,最后产生一个行为报告,那个报告经过分析以后再做出决定,这是不是一个病毒,为什么是一个病毒,是根据什么判断的,就是这么简单。

说起来简单,要做起来也不是很容易。监控器怎么样协调,沙箱怎么样做成跟终端一模一样,都有很多技术含量在里面。沙箱有什么好处呢?刚才我说了,你要是这个病毒用特征码扫描的话,一定要预先得到那个特征码,要是得不到那个特征码的话肯定没办法,但是沙箱就不需要这个。另外一个就是如果你用模拟性的特征码的话,有可能会漏报,但是沙箱不会,会增加检测力。从行为分析上来说,沙箱的好处就是能够得到所有程序执行的过程,所以分析起来比较方便。还有一个就是沙箱可以战胜一些病毒,像加密、打包,那个沙箱可以战胜这个技术,没关系,它都可以做。还有沙箱可以帮助实验室的人,实验室的人要是手工做反测试病毒的话是很困难的,但是用沙箱很快就可以得到。

沙箱有什么不足的地方?现在看来沙箱有很多不足的地方。第一个不足的地方就是沙箱比较慢,因为你总要等到那个病毒执行完了以后,他执行完了以后你才能够得到结果,才能够分析是不是一个病毒,这个过程一般比特征码扫描要慢得多。第二个就是沙箱需要一个监控仪,那个监控的东西要加到系统的底层去,你要改变系统的话,就很容易被病毒检测到,这是一个很不足的地方。第三个沙箱不管你怎么做,环境资源总是有限。比如说沙箱在模拟一个硬盘的时候,你可能会把它模拟成20G或者40G,你模拟太大了的话,整个就容不了。在市场上面要买一个新机器的话,现在买一个40G的硬盘都买不到。那就是说,病毒完全可以检测到你这个是不是在沙箱里面,如果病毒检测是在沙箱里面运行的话,他完全可以不运行或者假运行,提供一些假情报给你,那你沙箱就完蛋了,所以监控和环境那一块是很容易被病毒监测到的。

还有一个病毒可以检测到时差,一个真正的机器在没有虚拟化之前,它的时间曲线是比较平滑的,但是你看看虚拟层上面支持了十几个、二十个或者六十个虚拟机的话,它的时间是一种跳跃性的,这个没办法避免得了。那种跳跃性的时间就可以被病毒利用来检测,这个也是沙箱的一个很致命的弱点。还有一个致命的弱点就是,有一个沙箱你要病毒的文件传进来,然后你在运行。但是现在我们发现,很多病毒为了抵御沙箱的分析,他根本就没有文件,他从来不以文件的形式存在。那你没有文件的话,比如说他在内存里面执行完了就完了,什么也留不下来,那你怎么办?你没有什么东西送到沙箱里面去,当然也没办法去激活他,也没办法运行,这是沙箱一个没有办法解决的问题。

还有我们发现有些新的病毒,它本来是一个病毒,把它分成好几块。第一块是一个很小的一块,叫做头块,头块什么都不干,等到尾块,后来的三四块到了一个地方,才把它拼凑起来执行,这个沙箱也没办法。弄到第一块以后,一检测什么行为都没有,第二块、第三块、第四块、第五块在什么地方呢?可以加嵌到图片、Video、电影的文件里面,这样的文件单独要测试什么也没有,所以你也不知道后面那块什么时候来,这个沙箱也没办法。

总体来说,我们发现沙箱的能力还是有限,而且攻击沙箱的那种技术病毒越来越多。我们今年就看到很多,像这种根本没办法出现文件的,还有分成好几块的,我估计明年、后年你可能可以看到大量的病毒沙箱对它就没有办法了,所以沙箱存在一个很大的挑战。现在厂家也做了很多努力,比如说一个努力就是把沙箱弄到云端去,在云端里面就没有什么资源的限制,有些机器根本就不需要在虚拟方面,也可以跟其他的产品结合起来,这是一个方向,我们现在可以看到很多沙箱移到云端去了。还有一个就是把那种监控的程序不做在OS,做在底层,做在虚拟层里面。对于VN的OS里面什么也没有改变,病毒也没有办法检测,从那个角度上是没有办法检测的。这两个方向目前都有公司已经在做,而且也可以说是他们的主流,做得不错。还有一个就是在应用方面,沙箱现在很多用在安全操作团队里面,或者是沙箱跟其他的产品绑在一起,像下一代的防火墙,下一代的IPS,还有就是沙箱的分析和大数据的分析结合起来。沙箱的分析是比较细的,是比较具体的,大数据是宏观的,是网络方面的。把这两个方面结合起来,这也是一个很大的方向,这是在运用方面。所以我们现在可以看到,沙箱在很多应用方面也在往前推。但是不管怎么说,我们刚才说到沙箱挑战性的东西还是没有办法解决,所以将来一两年之内我估计这是面临的很大的问题。

下面我留了一些时间我们可以互动一下。

 

潘柱廷:您刚才说的那本书是什么书?

 

陆立新:Little Black Book of Computer Virus,小黑本。那本书教你怎么样写启动盘里面的病毒,还有一些原始的Dos病毒,实际上这些病毒都是很强的,特征特别强的,到现在还有用。当然我不是鼓励大家去写病毒,但是你要是作为一个反病毒的工作者,你不知道怎么写病毒的话,你的知识是不够的。我也写过病毒,但是我从来没有去释放,你要是说你从来没写过病毒,你说你是一个很棒的反病毒的有时候很难说得过去。我觉得你要了解对方,你才能够战胜对方,两方面的知识都需要。当然现在来说,你不一定要写那种病毒,但是其他的病毒,那个原理都差不多。我们说为什么一个小程序可以叫做病毒呢?因为从本质上来说,你写一个病毒和写一个小的App是差不多的,什么语言都可以。但是病毒有一个特点,这是病毒最起码的一个特点,没有这个特点就不叫病毒,就是它一定要有传播引擎,要能够自动传播。就跟人体病毒一样的,人体病毒你从来不说谁想得病去注入一个病毒,不会的。计算机病毒就是模拟了人体病毒可以自动传播,所以每一个病毒都有一个传播引擎在里面。那本小书很厚,但是道理讲得很清楚。

 

提问:陆老师您好,您今天主要讲沙箱这个方向,正好我也是以前的工作经历当中有4年的从事沙箱开发的工作,我遇到一个比较苦恼的问题,就是沙箱的应用领域比较少,尤其在我们互联网企业里,你做的这个产品能够为你整个大产品带来多大的价值,这个东西很难体现。我想问的就是沙箱在以后的发展过程当中还有什么领域可以应用的?

 

陆立新:谢谢你的提问,沙箱这个东西当时出来的时候,主要是帮助解决一些特征码扫描没办法鉴定的一些新病毒。过去我们做特征码的话,总是要通过逆向反馈,别人去检测才能够抽取特征码,才能够确定这个程序是不是病毒。但是那种方法是手动的,很慢,而且要求技术含量,人的经验要很多才能做得了。但是如果通过沙箱的话,你就可以让它放在那里执行一下,三秒钟、五秒钟或者五分钟出来以后,你一看他的行为,基本上就可以判断这是一个病毒。所以当时是帮助这种搞研究,搞后台工作的人的。但是说它的应用方面,除了帮助检测以外,因为现在的病毒,像英特尔Lab每天能够得到的大概是25万到50多万的病毒新样本。这样的话,你要去抽取特征码检测他的话,这个简直不可能。那你就要采取一些办法,像沙箱这样的。但是沙箱作为单独的使用,确实是很有它的局限性。像英特尔他们做的,就是把这个沙箱绑在防火墙、IPS、Web Gateway这些产品一起,当这些产品你看到了一些下载的文件,比如说Web Gateway,就是监测APP流程的,如果发现有可执行程序,用扫描又没办法确定,就把它扔给沙箱,三五分钟已经回来的结果证明是坏的,他就自动的抽取特征值,就可以自动的防止,所以它的应用是综合捆绑在其他的产品一起,是这种应用。

 

提问:刚才您提到了沙箱扔进去三五分钟,是不是意味着沙箱的Performance是很难支持这个检测的?适合于做特征提取的这样一个工具吗?

 

陆立新:现在的特征值跟过去的有点不一样。过去的特征值就是通过手工研究以后取出的,那个特征值取的速度比较慢,现在的特征值计算整个Value,那个计算的速度很快。沙箱在这个方面主要是起一个鉴定作用,决定这个是不是,每一个程序在执行的过程当中一般都要几秒钟,你要把它放在那里执行,得出来结果。得出来那个行为以后你要进行分析,所以这个还要花时间,一般都要最少五分钟,有些厂家说我们不需要五分钟,只要一分钟,那个实际上是不太现实的,一般都要三五分钟,有的时候要更长。属于那个病毒有一点故意的拖长的话,你还得要等长一点时间。所以沙箱做在线的还是很有困难的,那个没办法做到。

上一篇:滴滴顾孔希:企业安全检测能力建设实践

下一篇:对话腾讯马斌 解读互联网+安全战略