Board logo

标题: [交流] 全面思考杀毒软件的误报 [打印本页]

作者: jibimily    时间: 2007-5-20 18:10     标题: 全面思考杀毒软件的误报

发这个东西之前,要先说明,我仅是断断续续地自学了3个月的C语言,没有学过汇编语言,其他关于破解,反汇编等等也只是看过几次资料,都不能算学习过,杀毒引擎研究更谈不上。只是从记住的这一点点知识发散自己的思维,谈一点看法。当然也只是给许多电脑初级爱好者看(也包括我自己),对杀毒软件的误报问题,一起深入的讨论。当然没有专业性,也肯定缺乏准确性,定会有很多错误。技术高手勿见笑,指出错误才是助人。

请允许为朋友的菜鸟学习论坛做个宣传,此文首发位置:
http://cfan1.ttsite.com/read.php ... page=1&toread=1
论坛公共测试帐号:ceshi,密码:456123
----------------------------------------------------------------------------

病毒特征码技术的误报

      杀毒软件对某文件判断为病毒,不管是用病毒码技术,还是启发技术等等方式,都是要有一个标准来作为依据来衡量,也会用一定的百分比做衡量的尺度。打比方一个杀软的病毒库收录了某病毒,那么这个病毒的变种,虽然会有一定的变化(程序代码),但它的核心代码还是一样的。所以,当这个病毒变种的代码跟病毒库收录的病毒特征码有一定相同,杀软就会报病毒处理。那么相同率是多少,是75%,还是60%?或者更高或者更低?这样说你肯定会明白了,假设杀毒引擎设计为50%相同,就按照病毒处理的话,那肯定要比75%的相同率的误报更高。

      到这里,再说下我所知道仅有的一点点关于编程代码、汇编和反汇编的一点知识。机器语言就是CPU指令,而汇编语言是接近机器语言的,与及其语言之间不需要“翻译”。而其他编程语言,比如什么VB,C,Delphi等等,它们编译的程序,在机器内部运行时,其实都是“翻译”转化为机器语言才能执行。所以,用任何编程语言写的程序,都能对它进行反汇编,也就是用汇编语言代码表示出来。

      说这些,目的就是为了说程序与反汇编的关系。知道了这点,就可以联想到了吧:杀毒软件的工程师,收到某个病毒样本,就要把他进行反汇编,还原这个病毒程序的代码,越是准确当然越好了。然后还要处理成病毒库发布出去。怎样写入病毒库我不知道。但是这些工程师的水平会有差别。有的杀毒软件,他的病毒库更新相对很慢,但是他们添加了某病毒到病毒库,便能处理这个病毒90%的变种;有的更新很快,但那么快的更新,能够做到相对的完善么?反汇编病毒程序分析,和添加病毒库做的不准确的话,那么就是处理病毒的依据不准确,误报几率高那就是肯定的了。更重要的是处理变种能力,应该也不会强。

      还有一点,就是要说清毒能力了。一个优秀的杀毒引擎,不只是判断病毒那么简单,更重要的是清毒能力。如果是重要的文件感染病毒,那很重要的能力,就是清毒,而不是让你简单的发现并删除。这点上,不得提DrWeb,他的很有名的一个方面,就是处理感染Word病毒的能力是世界第一的。试想一个非常重要的文档,价值可能远远超过1台电脑的价值,如果感染便只能删除,就可笑了。尽管我们可以说,现在大多都是木马,感染文件类病毒并不多,而且我没有重要的文件,删除就可以了。即使是这样,我们也应该支持这方面技术出众的杀软,如果杀毒技术都那样功利的发展下去,可以说是技术的倒退,假设当你需要有这样能力的杀软却没有时,那多么悲哀啊。

----------------------------------------------------------------------------

启发式+虚拟技术杀软的误报

      我写的《理解杀毒软件的意义》中,引用了一些关于启发式技术和虚拟技术的知识。那么稍有点破解知识的人就应该知道:反汇编一个加壳程序,是必须要先脱壳的。否则,反汇编工具读出来的代码,是不准确的,没有任何意义。那么说到这里,就应该知道启发式技术是不能缺少虚拟技术的支持的。因为启发式技术“实际上就是以特定方式实现的动态高度器或反编译器,通过对有关指令序列的反编译逐步理解和确定其蕴藏的真正动机。”(其实就是启发技术代替了工程师的反汇编分析过程)

      用这点知识发散思维去分析,假设某病毒程序,对真实动机的那部分代码进行加密、加壳隐藏的话。当用了启发技术的杀毒软件,没有足够强大的虚拟技术完全还原它的真实动机,那杀软的启发式技术的反汇编就失败了,无法更准确判断这个程序的可疑性。

      启发式技术本身就有相对病毒码技术要高的误报机率,毕竟启发式技术还不完善,不能完全代病毒分析工程师。再如果虚拟技术不够强大,只还原出部分代码,又会增加了误报的机率。而有的杀毒软件,在其启发式技术的应用中,也存在一个判断标准,和怎样的可疑几率判断病的问题。有的杀软,把启发技术的应用过度,把非常低的可以率就报病毒,那么,他的病毒侦测率不必说会非常高,但误报也非常高。也因此很多加壳的正常程序被误报病毒木马。

      虚拟技术,是反病毒技术中非常重要的一个环节。即使是现在热炒的hips主动防御技术,也非常依赖强大的虚拟技术。(我个人不看好hips,抛却实用主义的角度,人机对话的防御,代表不了反病毒技术的最高水平;而即使是实用角度,hips防御体系也不能肯定的说高于传统病毒码和启发式技术。但这跟杀毒无关,不多说)。

      杀毒软件中应用的虚拟技术,是让病毒程序在“虚拟环境”中脱壳,并且“虚拟环境”和计算机隔离。但就我所体验过的一些杀毒软件,他们的“虚拟环境”并不封闭。在我的电脑里,是用McAfee2006个人版本,在我实验其他杀毒软件的时候,时常出现这样的现象,用某绿色版杀毒软件扫描器,测试病毒winrar压缩样本。这个杀软没有报病毒,但是后台监控的McAfee却弹出对话框报病毒(我设置的McAfee不监控wirar压缩文件)。而这样的现象不只一个,这就要再次说DrWeb,除了DrWeb其他我试用过的杀毒软件都出过这个现象。

      很多人应都听过DrWeb是脱壳能力最强的杀毒引擎的说法。我一直这样对别人说,而且就我的体验,和目前的反病毒技术发展来说,启发式+虚拟技术应用得相对最完善的就是DrWeb。(强烈鄙视那些看不懂就说我是DrWeb枪手的人)

----------------------------------------------------------------------------

不属于误报病毒的类型

      我个人认为:注册机,破解补丁,汉化补丁之类的,都不能属于误报范畴。当然你知道这个东西不是病毒就行了。鄙视某些人看到杀软报毒,不动脑子就说误报!

      毕竟这些工具补丁的目的,是为了修改某软件,甚至是系统的某个文件。那杀毒软件判断为破坏程序,那是理所当然的。比如卡巴斯基的破解补丁本身就是为了破坏卡巴,如果不报病毒才叫可笑。

      有些程序修改浏览器主页,被报流氓软件等等,都是可以从对话框看出来的。杀软是有一定的误报率,但是有的不是。稍动脑筋思考,稍仔细看一下就知道了。

      不管怎样,随着技术的发展,杀软会越来越“聪明”,这就是我们所希望的。

[ 本帖最后由 jibimily 于 2007-5-20 07:19 PM 编辑 ]
作者: 179649371    时间: 2007-5-20 19:49

杀毒软件     管他误报不误报     将就着用吧




欢迎光临 SiS001! Board - [第一会所 关闭注册] (https://666.1huisuo.net/bbs1/) Powered by Discuz! 7.2