启发式杀毒,虚拟机技术,主动防御技术
启发式杀毒,虚拟机技术,主动防御技术启发杀毒
启发式扫描是通过分析指令出现的顺序,或组合情况来决定文件是否感染,每个对象都要检查,这种方式查毒效果是最
高的,但也最可能出现误报。
其实就是分析对象文件与病毒特征库中的病毒原码进行比较,当二者匹配率大于某一值时(通常这一值较小,所以容易
误报),杀毒软件就会将其列为可疑文件以进行下一步的处理。这就是所谓启发式杀毒。
病毒和正常程序的区别可以体现在许多方面,比较常见的如:通常一个应用程序在最初的指令,是检查命令行输入有无
参数项、清屏和保存原来屏幕显示等,而病毒程序则没有会这样做的,通常它最初的指令是直接写盘操作、解码指令,
或搜索某路径下的可执行程序等相关操作指令序列。这些显著的不同之处,一个熟练的程序员在调试状态下只需一瞥便
可一目了然。启发式代码扫描技术实际上就是把这种经验和知识移植到一个查病毒软件中的具体程序体现。
启发式指的“自我发现的能力”或“运用某种方式或方法去判定事物的知识和技能。”一个运用启发式扫描技术的
病毒检测软件,实际上就是以特定方式实现的动态高度器或反编译器,通过对有关指令序列的反编译逐步理解和确定其
蕴藏的真正动机。例如,如果一段程序以如下序列开始:MOV AH ,5/INT,13h,即调用格式化盘操作的BIOS指令功能,
那么这段程序就高度可疑值得引起警觉,尤其是假如这段指令之前不存在取得命令行关于执行的参数选项,又没有要求
用户交互性输入继续进行的操作指令时,就可以有把握地认为这是一个病毒或恶意破坏的程序。
启发式杀毒代表着未来反病毒技术发展的必然趋势,具备某种人工智能特点的反毒技术,向我们展示了一种通用的
、不需升级(较省需要升级或不依赖于升级)的病毒检测技术和产品的可能性。由于诸多传统技术无法企及的强大优势,
必将得到普遍的应用和迅速的发展。纯粹的启发式代码分析技术的应用(不借助任何事先的对于被测目标病毒样本的研
究和了解),已能达到80%以上的病毒检出率, 而其误报率极易控制在0.1%之下,这对于仅仅使用传统的基于对已知病
毒的研究而抽取“特征字串”的特征扫描技术的查毒软件来说,是不可想象的,一次质的飞跃。在新病毒,新变种层出
不穷,病毒数量不断激增的今天,这种新技术的产生和应用更具有特殊的重要意义。
虚拟机杀毒
虚拟机技术并不是新生事物,杀毒软件提供的启发式查毒技术,其本质就是虚拟机技术。两款最常见的虚拟机软件
VMWare和VirtualPC可以虚拟出完整的计算机系统,对于已经面世的64位Windows操作系统,也使用了WOW64作为平台,
以兼容模式运行32位应用程序。2005年Intel和AMD都推出了具备虚拟化技术的CPU虚拟化可以帮您将一台物理服务器变
成多个“虚拟”系统或分区,以支持多个操作系统和应用在单个平台内部独立运行。
杀毒软件厂商对虚拟机技术的研究也从没停止过,“虚拟机杀毒技术”即是在内存中虚拟一个程序运行环境,将被检测
程序在虚拟环境中执行,根据其行为或释放出的已知病毒特征码,来判断是否是病毒程序。日前被某杀毒软件大肆鼓吹
的“虚拟机杀毒技术”,其核心只是脱壳技术。
大家知道病毒程序加壳可以逃避杀毒软件检测,而杀毒软件要能检测到已经被加壳的程序,可以采取脱壳,或者增加新
的病毒特征码来解决。金山毒霸就是采用这样的代码脱壳技术,目前金山毒霸引擎已经支持UPX、FSG、LZH、RAR、
ASPack、ZIP、PETite、PEX、PECompact、WWWPack32、EXE32Pack、7zip等10多种加壳工具数10个不同版本的代码脱壳
杀毒。
简单说来,代码脱壳是引擎自己分析加壳算法,杀毒引擎完成脱壳。虚拟机脱壳相当于执行加壳代码,然后暴露真实代
码。二者各有优劣,代码脱壳因为分析了加壳工具的算法,处理速度更快,缺点在于,对新的加壳工具,需要重新分析
算法。虚拟机执行壳代码,不需要分析算法,但虚拟机环境会对系统资源要求更高,执行速度逊色于代码脱壳。目前,
杀毒软件厂商都看好虚拟机技术,但基于病毒特征码比对检测的杀毒技术仍是反病毒软件采取的主流技术,虚拟机技术
在相当长的时期内仍将是病毒检测的辅助手段。
主动防御
目前,很多安全厂商在推出新产品时,总是强调该产品具有“主动防御”技术,可以防御未知病毒、未知威胁、ZeroDay攻击等。根据安全专家的分析,所谓“主动防御”其实是针对传统的“特征码技术”而言的。
一般意义上的“主动防御”,就是全程监视进程的行为,一但发现“违规”行为,就通知用户,或者直接终止进程。它类似于警察判断潜在罪犯的技术,在成为一个罪犯之前,大多数的人都有一些异常行为,比如“性格孤僻,有暴力倾向,自私自利,对现实不满”等先兆,但是并不是说有这些先兆的人就都会发展为罪犯,或者罪犯都有这些先兆。
因此“主动防御”并不能100%发现病毒或者攻击,它的成功率大概在60%--80%之间。如果再加上传统的“特征码技术”,则有可能发现100%的恶意程序与攻击行为了。从国外的情况看,诺顿、Kaspersky、McAfee等主流安全厂商,都已经向“主动防御”+“特征码技术”过渡了,可以说这是安全系统的必然发展趋势。
此外,防火墙也是一个运用“主动防御”技术的典型例子。目前的企业都在使用防火墙,很多用户对于防火墙经常询问是否放行一个进程访问网络,或者有不明连接进入本机而发出警告印象深刻。
其实防火墙就是在全程监视进程的网络行为,一但发现违反规则的行为就发出警告,或者直接根据用户设定拒绝进程访问网络。当然,现在的防火墙一般都把系统网络进程,如Services.exe、Svchost.exe、Lsass.exe记在“受信名单”里,这些进程是默认允许访问网络的,如果禁止的话,操作系统就不正常了,这也是现在很多病毒和木马都喜欢远程注入这些系统进程,以求突破防火墙而访问网络的原因。
“主动防御”的技术实现
在“主动防御”技术的的实现上,主要是通过函数来进行控制。因为一个程序如果要实现自己的功能,就必须要通过接口调用操作系统提供的功能函数。以前在DOS里几乎所有的系统功能或第三方插件都是通过中断提供的,在Windows里一般是通过DLL里的API提供,也有少数通过INT 2E或SYSENTER提供。一个进程有怎么样的行为,通过看它调用了什么样的API就大概清楚了,比如它要读写文件就必然要调用CreateFile(),OpenFile(),NtOpenFile(),ZwOpenFile()等函数,要访问网络就必然要使用Socket函数。因此只要挂接系统API(尽量挂接RING0层的API,如果挂接RING3层的API将有可能被绕过),就可以知道一个进程将有什么动作,如果有危害系统的动作该怎么样处理等等。例如瑞星反病毒系统,用户可以在它的安装目录里找到几个驱动文件,其实这些驱动就是挂接了ntoskrnl.exe,ndis.sys等系统关键模块里的API,从而对进程的普通行为,网络行为,注册表行为进行监视的。
在此基础上,用户可以自己设想一下一个“主动防御”型安全系统的一般操作流程:通过挂接系统建立进程的API,系统就在一个进程建立前对进程的代码进行扫描,如果发现SGDT,SIDT,自定位指令(一般正常软件不会有这些指令),就进行提示,如果用户放行,就让进程继续运行;接下来监视进程调用API的情况,如果发现以读写方式打开一个EXE文件,可能进程的线程想感染PE文件,就发出警告;如果收发数据违反了规则,发出提示;如果进程调用了CreateRemoteThread(),则发出警告(因为CreateRemoteThread()是一个非常危险的API,正常进程很少用到,倒是被病毒、木马用得最多)。
可以想象,未来企业用户在运行程序时可能会被提示多次,访问网络也可能被提示多次,各种各样的提示有可能将大多数人搞的昏头转向。不过这就是安全,也是主动防御的魅力,一句话,企业想安全就要管严,放松就不安全了!