2011年,病毒技术发生重大变化。现有技术架构的杀毒软件捉襟现肘,应对渐感乏力。
病毒绕过主动防御
当前,杀毒软件依赖文件鉴定开发了传统的文件鉴定引擎,当文件被访问、运行时,调用反病毒引擎对文件进行安全扫描,如果是黑文件(危险程序)就杀掉,白文件(安全程序)就放行。当类似主动防御的应用面临大量的白文件时,包括白文件的后续动作,比如加载dll文件等,也被不再检查直接放行了。因为若不放行,就面临一个问题:连续的询问严重打扰用户,系统变得无法使用。
魔高一尺,道高一丈,病毒和反病毒之间的斗争处于持续的此消彼涨中。病毒为绕过杀毒软件的主动防御,很快找到新招:将病毒代码植入dll文件中,利用被鉴定安全的第三方软件加载dll文件不校验的漏洞,间接运行。而可以被病毒利用的软件数以千计,连Windows自己的组件都不可避免。
病毒这种绕过方式在2011年得到非常广泛的应用,杀毒软件再次落到必须和病毒拼响应速度的地步。
正常文件为什么也危险
还是拿实例来说明,如下图,这是一个典型的网购木马。
病毒程序是StormUpdate.dll,如果病毒作者直接编译一个.exe可执行文件,他会发现杀毒软件判断这个未知程序有异常行为而被建议阻止运行。于是病毒作者随便找了一个正常的应用软件,如暴风影音程序,这是一个合法的有数字签名的商业软件,所有杀毒软件都判定这是一个正常程序。
当这个程序执行时,杀毒软件主动防御放行,于是含有病毒代码的StormUpdate.dll(假冒的)被加载,接着含有主要病毒执行代码的Version.dat被加载执行。最终,病毒绕过了杀毒软件的拦截完全启动。
还有更经典的例子:在下面一包8个文件中,只有1个是病毒,其它全是正常文件,病毒的运行如同多米诺骨牌之间的接力。最终对用户造成伤害的结果,由一系列看起来完全正常的软件制造。
安全厂商的无奈
杀毒软件拦截不了病毒程序,正常的文件变得异常危险。这到底是为什么?简单来说,就是病毒对杀毒软件的工作机制了解得非常透彻,直接利用其体系漏洞。可悲的是,安全厂商明知道存在此问题,却也无可奈何。
因为白文件数以万计,而且被亿万网民频繁使用,没有一个安全厂商有这个计算能力对白文件的后续执行动作一一校验。即便资源和能力,网民不堪其扰也不会答应。
目前杀毒软件应对这种绕过方式能够做的,就是发现一例记录一例。但治标不治本。病毒作者随意更换下加载文件和路径,杀毒软件又会被轻松绕过。
杀毒体系多年未有实质性变化
事实上,杀毒软件的基本理念已经有许多年未曾改变,一直采用的基本思路就是基于文件的扫描、鉴定,这也是病毒摸透并攻破的根本原因。
最初,杀毒软件只有一个文件扫描引擎,在对付文件不多的年代,够用,速度也快,误报率也低。随着病毒的进展,大量病毒开始加壳,使用稀有的EXE压缩工具打包。随之杀毒软件推出脱壳引擎,将文件解包后再调用文件引擎检查。
新病毒出现的速度越来越快,文件引擎开始显得有点手忙脚乱。杀毒软件开始设计启发式分析引擎,用代码统计的方法,去检查病毒常用的非法操作,从中发现病毒的普遍规律。
虚拟机引擎和启发式类似,在虚拟空间模拟程序执行,分析有害行为。这种做法的结果是消耗大量系统资源,扫描速度降低。但它也能发现新病毒。这些都是文件扫描引擎。
此后,部分杀毒软件开始尝试行为查杀,主动防御技术逐步普及。主动防御捕捉程序的动态执行过程,而不是对文件进行静态的检查。执行中一旦发现异常行为,立刻阻止危险程序的进一步动作,防止中毒事件发生。这个模型很理想,似乎不必再担心新病毒问题了。
事实上,病毒程序和行为动作和正常程序没有本质差异,很多动作,正常软件都有。于是频繁的拦截提醒需要对正常软件放行,不然就会严重打扰用户操作。如今,如上面所述,病毒作者再次找到可以绕过的方法:利用正常软件来启动危险程序。
贯穿杀毒软件和病毒木马之间的对抗史就可以发现,虽然杀毒软件进行了多次改变,但基于文件的鉴定体系一直以来从未改变。如果杀毒技术体系持续没有实质创新,未来的安全形势堪忧。
用户系统信息:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11