李丹
计算机病毒与反病毒检测系统技术分析
李丹
针对计算机被病毒感染和破坏造成严重损失,在分析了计算机病毒的特征和反病毒检测系统技术的基础上,提出了一种高效的病毒特征检测机制。首先,例举先进的反病毒技术有实时扫描技术,启发式代码扫描技术,虚拟机技术和主动内核技术等;然后,分析了二进制可执行病毒脚本病毒和宏病毒的特征提取技术,设计出一个简单蜜罐系统来获取病毒样本;其次,为了解决特征代码不能检测未知病毒的问题,对引擎做了改进,提出了一种融合AC自动机匹配算法和BM算法的ACBM多模式匹配算法。算法在匹配病毒特征时,具有效率高,速度快和准确度高的特点,以特征代码法为基础杀毒软件是病毒检测系统是下一步研究目标。
病毒探测机;字符码;PE文件;匹配法则
计算机及网络技术的快速发展给人们的工作和生活带来了前所未有的便利和效率,成为现代社会不可缺少的一部分。然而计算机系统并不安全,不安全因素有计算机信息系统自身的,也有人为的,计算机病毒就是最不安全的因素之一。因此研究计算机病毒机理和反病毒技术具有重要意义[1-2]。
计算机病毒的出现也促使了计算机反病毒技术的进步,反病毒技术已发展到了现在的虚拟机和实时监测等技术。
杀毒引擎目前主流有以下一些实现方式:虚拟机技术,实时监控技术,智能码标识技术,行为拦截技术等[3]。目前国内外杀毒软件公司采用的新技术如表1所示:
表 1 2011 年八款杀毒软件特色对比
虽然目前的杀病毒技术和产品已经完全能够杀除已知病毒,但是还缺乏对付未知新病毒的有效手段[4],技术上不能一劳永逸地解决病毒问题。
2.1 计算机病毒定义
Fred Cohen定义:计算机病毒是一种程序,它用修改其它程序的方法将自身的精确拷贝或者演化版本植入其它程序,从而感染其它程序。由于这种感染特性,病毒可以在信息流的过渡途径中传播,从而破坏信息的完整性。
在《中华人民共和国计算机信息系统安全保护条例 》中,计算机病毒(Computer Virus)被明确定义为:“计算机病毒”是指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码。
2.2 计算机病毒的主要特点
计算机病毒的主要特点为:
(1)传染性
传染性是计算机病毒的基本特征,计算机病毒代码进入计算机并执行后,它会寻找其他符合条件的程序或存储介质,确定目标后再将自身代码插入其中 实现了自我复制和传染的目的。
(2)隐蔽性
绝大部分病毒是一段小巧的代码,通常是插入在程序文件中或存储介质较隐蔽的地方,也有少量以隐含文件形式存在。
(3)可触发性
病毒因某个事件或数值的出现,诱使病毒实施感染或进行攻击的特性称为可触发性。
(4)破坏性
系统感染病毒后,都会对系统及应用程序产生不同程度的影响。轻的占用系统资源,降低系统效率;重的破坏系统数据,造成系统崩溃。
2.3 计算机病毒的基本结构模式和工作机理
尽管目前出现的计算机病毒数量种类繁杂多样,但是通过对病毒程序代码的分析、比较和归纳可以发现,绝大多数病毒程序都是由引导区模块、传染域模块和破坏表现模块三部分组成。三部分组成的计算机病毒程序结构大致如图1所示:
图 1 计算机病毒结构的基本模式
引导模块完成病毒加载的功能,当使用带病毒的软盘或者硬盘启动系统时,引导型病毒就被加载。传染模块是传染病毒的动作部分,计算机病毒在此过程中寻找对应的对象文件,判断传染条件是否成立,如果传染条件成立就进行传染。发作模块完成病毒对计算机系统的破坏。同样发作模块也是先判断病毒发作的条件是否符合,如果满足所有发作条件,病毒就实施破坏功能。
计算机病毒的工作机理可分为:
(1)加载和引导机理
病毒程序的加载主要分成两个部分:其一是系统装载过程,其二是病毒附加的加载过程。
计算机病毒的传播是指计算机病毒在从一个计算机系统传播到另外一个计算机系统的过程。主要有以下四种途径:通过不可移动的硬件设备传播,通过移动存储设备来传播,通过计算机网络进行传播,通过点对点通信系统和无线通道传播。
(2)破坏表现机理
病毒程序的引导模块和传染模块是为破坏表现模块服务的。破坏表现模块可以在第一次病毒代码加载时运行,也可能在第一次病毒代码加载时只有引导模块引入内存,然后再通过触发某些中断机制而运行。
有些病毒修改操作系统使病毒代码成为操作系统的一部分功能模块,只要计算机系统工作,病毒就处于随时可能被触发的状态。
2.4 几种新型的计算机反病毒技术[5-6]
(1)实时反病毒技术
由于新病毒的不断涌现,用户感觉传统的病毒检测方法已无法全面应付病毒的蔓延。在这种情况下,计算机专家提出可将重要的系统文件和DOS引导文件固化到PC机的BIOS中(类似于网络无盘工作站),防止这些重要文件被计算机病毒感染。这应该就是实时反病毒概念的雏形。
实时反病毒技术被认为是比较彻底的反病毒解决方案。但是它的发展一直受到制约,一方面,是由于它需要占用一部分系统资源使得系统的性能降低;另一方面,是因为它与操作系统以及其他软件的兼容性问题。综上所述,实时反病毒技术是信息技术发展的必然结果。
(2)启发式代码扫描技术
启发式指的就是自我发现的能力或运用某种方式或方法去判定事物的知识和技能。一个运用启发式扫描技术的病毒检测软件,实际上就是以特定方式实现的动态解释器或反编译器,通过对有关病毒指令的反编译,逐步理解和确定其包含的真正动机。
启发式代码扫描技术,是一种应用了人工智能原理的反病毒技术。它向我们展示了一种通用的,不需升级(较少升级或不依赖于升级)的病毒检测技术和产品的可能性。由于其具有的巨大优势,是其他反病毒技术无法比拟的,所以,启发式代码扫描技术必然会得到快速发展和广泛应用。
(3)虚拟机技术
虚拟机技术是反病毒领域的领先技术。这种技术类似于人工分析,具有很高的智能化程度,查毒的准确性也达到了很高的水平,这种技术多用于检测复杂病毒。
虚拟机中可以反映程序的任何动态。将病毒放到虚拟机中,执行病毒的传染动作一定可以反映出来。这样一来,将大大提高未知病毒的查出概率。但是,因为虚拟机大约会比正常的程序执行的速度慢几十倍甚至更多,所以,事实上我们无法完全虚拟执行程序的所有代码。目前个别反病毒软件只是选择了虚拟执行样本代码段的前几 K个字节的代码,其查出概率就已经高达95%。
(4)主动内核技术
主动内核技术用通俗的说法是:从操作系统内核这一深度给操作系统和网络系统打了一个补丁,而且是一个“主动”的补丁。在文件进入系统之前,作为主动内核的反病毒模块都将首先使用各种手段对文件进行检测处理,计算机病毒检测问题实际上被转化为了算法理论的问题。
(5)病毒清除技术
绝大部分计算机病毒都是文件型病毒。所谓文件型病毒是指此类病毒寄生在可执行文件上,传播的途径也是靠可执行文件。从数学角度而言,消除病毒的过程,实际上就是感染病毒的逆过程。
引导型病毒占据软盘或硬盘的第一个扇区,在开机后比操作系统先得到对计算机的控制。减慢系统的I/O存取速度,干扰系统的正常运行。引导型病毒可用地址法、相对法、逻辑法、覆盖法、特殊法予以清除。
新的内存解毒技术是找到病毒在内存中的位置,重构其中部分代码,使其传播功能失效。因为内存中的活病毒体会干扰反病毒软件的检测结果,所以几乎所有反病毒软件设计者都要考虑到内存解毒。
扫描引擎的设计是提高病毒扫描速度的关键技术。对于已知的病毒也就意味着已经拥有其特征代码,在有了一个病毒特征代码的情况下,只需要有一种匹配算法就可以完成既定的功能。模式匹配算法的性能直接影响检测引擎的检测效率,所以研究一种高效的多模式匹配算法是很有必要的。模式匹配可以分为单模式匹配算法和多模式匹配算法,两者的区别在于单模式匹配算法在对文本的一次扫描中仅搜索一个模式,而多模式匹配算法在对文本的一次扫描中搜索一个给定的模式集合。
3.1 字符串单模式匹配算法
字符串单模式匹配算法中,最著名的两个是KMP算法和BM算法。两个算法在最坏情况下均具有线性的搜索时间。但实用上,KMP算法并不比最简单的 C库函数strstr()快多少,而 BM算法则往往比 KMP算法快3-5倍。这还不是BM算法最快的算法,还有很多改进的 BM算法存在,比如 BMH算法。
模式匹配是指在给定长度为n的文本串T=T[1]T[2] … T[n]中查找长度为m的模式串P=P[1]P[2] … P[m]的第一次出现的过程。若在T中能找到P的出现,则称匹配成功否则称匹配失败。简单的模式匹配算法BF算法中,P的第一个字符和T的第一个字符对齐,然后从左至右一个一个地比较字符,直到发现了一个不匹配。
对上面的3种单模式匹配算法进行匹配次数和比较的字符个数实验,用不同情况的测试得到如下4个表的数据(表中的数据是匹配次数比较的字符个数)如表2~表5所示:
1.学校往往把工作重心放在智育上,忽视了学生的道德品质教育。近些年来,在国际大环境与国内教育改革的形势下,我们国家已开展了一些有关情感教育的理论和实践的探索,但实际情况是,包括感恩教育在内的情感教育还没有引起社会各方面的重视,实践中一些手段与方法还很不够,使感恩教育的目标与现实之间还存在很大的差距。传统的德育主要以教师为中心,注重道德知识的传授,忽视学生在感情上的需求,没有充分尊重他们的积极性和创造性。
表 2 匹配失败
表3 文本头部匹配成功
表4 文本中间匹配成功
表5 文本尾部匹配成功
其中4个表中长度相同的主串中的字符是一样的,而且如果匹配的话也只有一次匹配。从以上4个表可以看出,无论是否匹配成功,模式串在正文串的任何位置,BF、KMP和BM这 3种单模式匹配算法中BM算法最快。
3.2 基于AC自动机的多模式匹配算法
字符串多模式匹配算法中最为典型的是AC算法。在病毒检测系统中对特征码进行匹配时,主要是扫描文件或内存中是否有可能匹配或部分匹配的多个病毒的特征,如果存在则我们判定为可疑病毒,但在匹配过程中,这样逐条匹配每条病毒特征需要重新运行匹配算法,逐条匹配的效率当然也比较低。如何实现和提高扫描,尤其是病毒库中的病毒特征记录成倍增加时,简单的提高单模式匹配算法的效率,很难满足病毒检测系统的要求。因此提出一种多模式匹配算法,只需对文本串扫描一次就可以找出模式串集合中与其匹配的全部模式串,从而大大提高匹配效率。
在扫描阶段,按照预处理阶段构造的有限自动机逐一地查看文本T的每个字符,对T中的每个字符仅有一个状态转移函数,扫描阶段所需要的时间是O(n)。所以AC算法模式匹配的时间复杂度是O(n),而且与模式集中模式串的个数和每个模式串的长度无关。无论模式串P是否出现在T中,T中的每个字符都必须输入状态机中。所以无论是最好情况还是最坏情况,AC算法模式匹配的时间复杂度都是O(n)。
AC自动机匹配算法包括预处理时间在内的时间复杂度是O(m+n)。AC匹配算法具有如下几个特点:1、算法简明性(原理和算法比较简单);2、匹配高效性(对文本一次扫描);3、内容无关性(与模式及文本内容无关);4、通用性(可适合于任何类型字符的检索)。
3.3 AC-BM 算法
AC-BM算法思想:将待匹配的字符串集合转换为一个类似于 AC算法的树状有限状态自动机,但构建时不是基于字符串的后缀而是前缀。匹配时,采取自后向前的搜索方法。并借用 BM算法的坏字符跳转和好前缀跳转技术,即根据一种前缀关键字树来计算劣势移动表和优势跳转表。从而可以跳跃式地并行搜索模式集合,因此,在速度方面具有较高的优越性。
对用 BF实现多模式匹配和AC、AC-BM两种多模式匹配算法进行匹配次数和比较的字符个数实验,得到如下数据(表中的数据是匹配次数比较的字符个数)如表6所示:
表 6 多模式匹配算法比较
其中,主串字符是随机的,给定3个模式串并且 P1和 P3在主串中。从上表可以看出AC、AC-BM两种多模式匹配算法中 AC-BM算法最快。
本文重点论述了病毒检测系统的设计与实现技术,主要讨论了以下几个部分:
(1)分析了当前计算机病毒的主要特点以及预防查杀病毒的技术,并总结了其优缺点。
(2)采用面向对象的程序方法设计和实现了病毒检测系统,对检测系统的体系结构,系统实现的关键技术,基本的功能模块,各模块之间的关系以及各模块的流程等进行了详细的设计。
(3)针对二进制可执行病毒,脚本病毒和宏病毒提出了相应的特征提取方案,设计了一个简单蜜罐系统来获取病毒样本,并利用反汇编工具W32Dasm对PE格式的病毒样本进行了特征提取实验。
(4)详细分析了 PE文件格式,总结了一系列与 PE文件头节表有关的染毒标志性行为,并针对 PE 文件的行为特征对引擎进行了改进。
(5)通过扫描计算机病毒攻击的关键位置以及使用高效的模式匹配方法加快引擎的扫描速度。
(6)对系统已实现的功能模块进行了测试,通过测试实验证明本系统的设计与实现方案是可行的,有效的。
本课题在很多方面还存在不足和值得改进的地方,在今后的研究中还需要进一步完善。
[1] 郑羽,杨春生,于江加密与解密实战入门.北京:电子工业出版社,2006.10,1~78.
[2] 郑伟.网络环境中的信息安全技术[J].信息安全与技术,2011,(11).
[3] 何爽.浅谈计算机病毒及其防范[J].才智,2010,(13).
[4] 张基温.信息系统安全原理.北京:中国水利水电出版社,2005.1,135~138.
[5] 邓平,钟新松,赵祖应. 基于Windows环境的木马手工查杀通用方法[J]. 办公自动化, 2010,(20).
[6] 黄茜.基于行为分析的代码危害性评估技术研究[D].解放军信息工程大学,2010.
Research of the Computer Virus and Anti-Virus Detecting System
Li Dan
(Shaanxi Xueqian Normal University, Xi’an710100,China)
The characteristics of computer viruses and anti-virus techniques are analyzed thoroughly in this thesis. Nowadays there are some advanced anti-virus techniques, such as real-time scanning, heuristic code scanning, virtual machine and active kernel technique etc. But now the anti-virus software mostly based on character code method, so this thesis gives a detailed description of detection idea and how to construct the virus detection system based on character code method. For binary executables files, to speed up virus detection by scanning only the common location of computer viruses (such as entry-point jump and call instructions etc.) of a file, rather than the entire file. First, the technique of character code from binary executables virus script and macro viruses are analyzed in this thesis. Then design a simple honey pot system to obtain the computer virus sample, and do characters distill experiment for PE format virus sample using W32Dasm which is a tool of disassembly. Second, this thesis makes some improvement in the engine to resolve the problem that unknown viruses can not be detected by character code. By analyzing PE file format, a series of making conducts which are correlative to the header of PE files and the tables of sections have been designed, and the detection efficiency enhanced when it combines the two methods.
Virus Detecting Machine; Character Code; PE File; Matching Principle
TP311
A
2014.06.18)
李 丹(1971-),女,陕西学前师范学院,工程师,研究方向:多媒体技术及其应用,西安,710100
1007-757X(2014)08-0052-04