第一章 与病毒奋战20年的杀毒引擎和特征库
很多人都把杀毒技术看得很神秘,其实无论杀毒软件的版本怎么升级、概念如何变化,基本的原理就是“杀毒引擎+特征码匹配”,杀毒引擎是枪,特征码是子弹,子弹越多,能杀的病毒就越多。很多人用盗版的杀软,不能升级特征库也就对付不了新的病毒。
特征库是由杀毒厂商收集到的病毒样本的特征码组成,而特征码则是病毒分析工程师从病毒程序中找到和正当软件的不同之处,截取一段类似于“搜索关键词”的程序代码。
当用杀毒引擎扫描硬盘、或者监控一个文件的动作时(比如下载、修改注册表等等),它会读取文件并且与特征库中的所有特征码“关键词”进行匹配,如果发现文件程序代码被“关键词”命中,就把那个文件判定为病毒——就像搜索引擎用关键词去精确匹配网页,定义足够多的关键词才能找到需要的结果。
总体来说,杀毒软件的工作流程是:采集样本(用户举报、杀毒厂商共享)—>病毒分析工程师截取特征码—>特征码加入特征库—>用户升级特征库。
特征库匹配是查杀已知病毒很有效的一项技术,也是杀毒引擎赖以工作的基础(扫描、监控都需要调用特征库),一直被杀毒软件沿用下来,国内外无数反病毒工作者为截取病毒特征码付出了巨大努力,所有特征码都需要严格的测试和比对,否则极易造成误伤。
在杀毒软件走过20年历史、互联网高速普及的今天,杀毒引擎和特征库匹配技术也受到越来越多质疑:木马数量急剧增加,人工截取特征码的效率有限。即使假设所有样本都能及时处理,特征库变大也会带来资源占用过大的问题,特别是杀毒引擎随系统启动时都要把特征库写入内存,这是杀毒软件遭到诟病的一大原因。
从杀毒软件的演变来看,杀毒软件为网络安全行业积累了宝贵的经验,也面临着不少问题:
1、1989年,第一款杀毒软件Mcafee诞生,开启杀毒软件的特征库时代
要了解Mcafee的工作原理,需要先看看人类最早的计算机病毒,是由美国一个著名黑客莫里斯编写的“虫子”,其实本来只是一个游戏产物,却爬出实验室弄瘫了几千台连网的电脑。
早期的病毒相对简单、技术含量现在来看完全小儿科,Mcafee等杀毒先驱使用了特征码匹配的方法,也就是分析病毒程序代码的“与众不同”,通过利用特征字符串(又称特征码)查出病毒。当时可能谁都没想到,这个思路会一直沿用到20年后的今天。
2、上世纪90年代,防毒卡昙花一现,病毒的多样化催化广谱特征码
国内有记载的计算机病毒出现在1988年,就是一个小球不停地在屏幕上转悠。当时国内还没有杀毒软件,在1990年深圳一家公司做出了最早的防毒卡,随后瑞星跟进,并因此声名大噪,不过由于防毒卡不能解决新的病毒,很快就退出了市场。
到90年代中后期,Windows视窗操作系统一统天下,病毒也开始进化,呈现出多样化发展的趋势,比如多形幽灵、生成器、变体机、网络蠕虫等等,简单提取特征码已经没法应付花样繁多的病毒,一种更复杂的广谱特征码就此出现了。从本质上说,广谱特征码是一类病毒程序中通用的特征字符串。
比如,有10种病毒都使用了一段相同的破坏硬盘的程序,那么把这段程序代码提取出来作特征码,就能达到用一个特征码查10个病毒的功效。一些厂商把这种做法称为“广谱特征码”,是为了增加杀毒技术的神秘色彩。病毒分析工程师的技术和经验成为杀毒软件表现的决定性因素。
3、加壳技术兴起,特征库迎来第一道难关
9 7 3 1 2 3 4 8 :