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