概述
反病毒技术综述
第一代反病毒技术
单纯的病毒特征代码分析,清除染毒文件中的病毒
第二代反病毒技术
静态广谱特征扫描技术,可以检测变形病毒,误报率高
第三代反病毒技术
静态扫描技术和动态仿真跟踪技术结合,查找病毒和清除病毒二合一
第四代反病毒技术
基于病毒家族体系的命名规则、基于多位校验和扫描机理、启发式智能代码分析模块、动态数据还原模块、内存解毒模块、自身免疫模块等先进的解毒技术,较好的解决了以前防毒技术顾此失彼、此消彼长的状态,能够较好地完成查毒、解毒的任务
计算机病毒防治技术的划分
- 病毒预防,防止病毒进入内存或阻止病毒对磁盘的操作
- 病毒检测,计算机病毒的判定
- 病毒消除,计算机病毒感染的逆过程,恢复被感染程序原有的结构信息
- 病毒免疫,可能并不存在通用的病毒免疫方法
病毒防治技术从被动到主动
- 传统的反病毒技术基于被动式的防御理念,这种理念最大的缺点在于将防治病毒的基础建立在病毒侵入操作系统或网络系统以后,作为上层应用软件的反病毒产品,才能借助于操作系统或网络系统所提供的功能来被动地防治病毒
- 主动内核(Active K)技术,是在操作系统和网络的内核中嵌入反病毒功能,使反病毒成为系统本身的底层模块,实现各种反毒模块与操作系统和网络无缝连接,而不是一个系统外部的应用软件。主动内核技术能够实时监控整个系统的运行,并在病毒突破计算机系统软、硬件的瞬间发生作用
病毒防范的概念
- 计算机病毒防范,是指通过建立合理的计算机病毒防范体系和制度,及时发现计算机病毒侵入,并采取有效的手段阻止计算机病毒的传播和破坏,恢复受影响的计算机系统和数据
- 计算机病毒的防范,就是要在病毒执行之前进行阻断,需要监视、跟踪系统内类似的操作,提供对系统的保护,最大限度地避免各种计算机病毒的传染破坏,往往需要基于全系统的内核级行为监控
病毒预防措施
勤备份
及时备份,即使计算机中重要数据遭到计算机病毒的破坏,也可以最大限度的恢复,减少可能的损失。病毒造成的危害有些是不可逆的,因此只能通过备份的方式予以恢复。
严防守
所谓严防守,选择公认最好的反病毒软件、及时安装补丁、在安装新软件前先检测是否含有计算机病毒、尽量不使用软盘,优盘,移动硬盘引导启动等
计算机检测技术分类
手工检测
利用Debug、PCTools、SysInfo、WinHex等工具软件进行病毒的检测
这种方法比较复杂,费时费力,如IceSword
优点:可以剖析病毒、可以检测一些自动检测工具不能识别的新病毒
自动检测
利用一些专业诊断软件来判断引导扇区、磁盘文件是否有毒的方法
自动检测比较简单,一般用户都可以进行,但需要较好的诊断软件
优点:可方便地检测大量的病毒,自动检测工具的发展总是滞后于病毒的发展
常见病毒诊断方法及原理
比较诊断法
原理:用原始的正常备份与被检测的内容(引导扇区或被检测的文件)进行比较
常见比较法:长度比较法、内容比较法、内存比较法、中断比较法
优点:比较法不需要专用的反病毒软件,且可以检测未知病毒
缺点:
- 该方法依赖与未染病毒时的原始系统的备份
- 且无法知道病毒的种类名称
- 易于误报:由于某些病毒并不会导致长度变化,则使用长度比较法会发生漏报,而一些非病毒的操作同样可能改变文件或引导区的长度、内容等
校验和诊断法
原理:根据正常文件的信息(如文件名称、大小、时间、日期及内容),计算其校验和(checksum),计算新的校验和与原来保存的校验和是否一致(校验和被广泛应用在通信领域,用来保证数据的完整性和准确性)
三种方式:
- 对被查的对象文件计算其正常状态的校验和,将校验和值写入被查文件中或检测工具中,而后进行比较
- 在应用程序中,放入校验和法自我检查功能,实现应用程序的自检测
- 将校验和检查程序常驻内存,每当应用程序开始运行时,自动比较检查应用程序内部或其他文件中预先保存的校验和
优点:校验和法既能发现已知病毒,也能发现未知病毒
缺点:不能识别病毒种类与名称,对某些对文件信息影响不大的病毒效果较差,如链式病毒;同比较法一样,病毒感染并不是文件改变的唯一原因,所以此法会产生误报
扫描诊断法
原理:扫描法是用每一种病毒体含有的特定病毒码(Virus Pattern)对被检测的对象进行扫描。如果在被检测对象内部发现了某一种特定病毒码,就表明发现了该病毒码所代表的病毒
两种方式:
- 特征代码扫描法
- 特征字扫描法
特定病毒码:当杀毒软件公司收集到新病毒中,就会从病毒程序中截取一小段独一无二且足以标记该病毒的二进制程序码(就好比犯人的指纹)
扫描法软件包括两部分:
- 病毒代码库,库中特征码数量决定了扫描程序的识别能力
- 扫描程序
扫描法是当前最普遍的病毒检测方法
特征码选择原则:
- 具有代表性:小的病毒一百多字节,长的10KB
- 不应包含数据区,数据区是可变的
- 特征码的长度:过长带来扫码时间和空间的开销过大,过短则不易具有代表性(两个相互矛盾的目标)
- 具有区分性:能区别该病毒和其他病毒,更重要的是要能区分病毒和正常程序,避免误报!
优点:
使用方便;特征码选择好则误报率低、选择不好则误报率高
不用专门查毒软件;可识别病毒名称和类别;可做扫毒处理
缺点:
特征码的生成难度很大;扫描需要开销;需要不断更新病毒特征码库
不易识别多态变形病毒、不能检测未知病毒等
行为监测诊断法
原理:利用病毒的特有行为特性监测病毒的方法,称为行为监测法(人工智能)
典型行为特征:
- 盗用截流系统中断
- 导致内存相关信息变化(如内存总量)
- 对可执行文件进行写入动作
- 写引导扇区或格式化磁盘的可以操作
- 搜索API函数地址
优点:既能发现已知病毒,也能发现未知病毒
缺点:误报,不能识别病毒名称和种类,需要病毒运行以后才能进行分析
感染实验诊断法
原理:利用病毒最基本的特征——感染特征,所有病毒都会进行感染,如果不感染,就不称其为病毒
方法:将正常的文件放入异常的系统中去运行,看这些正常文件是否会被感染,如果被感染,则文件内容会发生变化(通过校验和等检测),则断言系统中存在病毒
优点:可以发现未知病毒
缺点:实验开销大,实用性较差
软件模拟诊断法
多态病毒:多态病毒每次感染都变化其病毒代码,对付这种病毒,特征码扫描法失效,我们把使用通常特征码扫描法无法检测(或几乎很难检测)的病毒称之为多态病毒
多态病毒变换方式:
- 采用等价代码对原有代码替换
- 改变与执行次序无关的指令的次序
- 增加许多垃圾指令
- 对原有计算机病毒代码进行加密等
特征:多态病毒的病毒代码实施密码化,且每次所使用密钥不同,比较多个感染同一病毒的多个文件中的病毒代码,也难以找到相同的可以作为特征码的稳定代码,多态病毒的多态性通常表现在病毒代码和病毒行为的不固定性。但是,每一个多态病毒在执行时都需要还原,如先执行一段解密代码进行解密,再执行解密后的病毒代码。
原理:软件模拟诊断法就是针对解密后的病毒代码所提出来的一种诊断法,软件模拟(Software Emulation)诊断法又称为解密引擎、虚拟机执行技术或软件仿真技术,它的本质就是一种软件运行时的分析器
方法:它通过在一个模拟的虚拟环境下运行计算机病毒,等待计算机病毒自身进行解密完成后,再对解密后的病毒代码实施特征码的识别,识别病毒种类后再进行有相关的清除和查杀工作。
分析诊断法
目的:
- 确认被观察的引导扇区和程序中是否含有病毒
- 确认病毒的类型和种类,判定其是否是一种新病毒
- 搞清楚病毒体的大致结构,提取特征识别用的字符串或特征字,并增添到病毒代码库供病毒扫描和识别程序使
- 详细分析病毒代码,为制定相应的反病毒措施制定方案
启发式代码扫描技术
原理:启发式代码扫描技术基于给定的判断规则和定义的扫描技术,若发现被扫描程序中存在可疑的程序功能指令,则作出存在病毒的预警或判断。
病毒和正常程序区别:
- 正常程序在最初的指令是检查命令行输入有无参数项、清屏和保存原来屏幕显示等
- 病毒程序则从来不会这样做,它通常最初的指令是直接写盘操作、跳转、解码指令,或搜索某路径下的可执行程序等相关操作指令序列)
是一种概率方法:
- 可疑程序功能权值定义
- 可疑程序报警标准
- 可疑功能标志
缺点:误报
和传统扫描结合:
虚拟机查毒技术
全虚拟化技术:虚拟的操作系统,与底层的硬件完全隔离,完全由中间的Hypervisor层(VMM)完成指令转换和资源映射,典型的代表有Vmware,WorkStation,Microsoft Virtual Server等
半虚拟化技术:需要在虚拟机的操作系统中加入特定的虚拟化指令(Hypercalls),通过这些加入的指令来调用硬件资源,免除了一部分Hypervisor层转换指令的开销。典型的代表有Xen等。
原理:虚拟机查毒实际上是自动跟踪病毒入口的解密代码,当其将加密的病毒体按其解密算法进行解密后,就可以得到解密后的病毒明文
两种方法:
- 单步和断点跟踪法(易于发现)
- 虚拟执行法(不被发现)
设计方案:
自含代码虚拟机(SCCE):SCCE工作起来象一个真正的CPU,每一条取自内存的指令,都由SCCE解码,并被传送到相应的模拟这条指令的例程
缓冲代码虚拟机(BCE):BCE可以看做是SCCE的缩略版,主要进行了特殊指令和非特殊指令的区分,一条指令从内存中取得后,并和一个特殊指令表相比较,如果不是特殊指令,会被导入到一个可以通用地模拟所有非特殊指令的例程,而一小部分的特殊指令,则在特定的例程中进行模拟
有限代码虚拟机(LCE):LCE实际上并非一个虚拟机,因为它并不真正的模拟指令,它只简单地跟踪一段代码的寄存器内容,提供一个小的被改动的内存地址表,或是调用过的中断之类的东西
反虚拟执行技术:
插入特殊指令技术
原理:虚拟机是模拟CPU的执行,并不是真正的CPU,所以不可以能对整个Intel的指令集进行支持,遇到不认识的指令就会停止工作
方法:病毒插入特殊指令(如3DNoW),这些指令对病毒本身没有影响,但会干扰虚拟机的工作
应对:不需要针对每个特殊指令写专门的模拟函数,只需要构建特殊指令的指令长度表,当EIP指向特殊指令时,就跳过特殊指令长度,或者发现这些特殊指令时,交由CPU去真正执行结构化异常处理技术
原理:虚拟机仅仅模拟了CPU的工作过程,而对于异常处理等系统机制没有进行处理,虚拟机会在遇到非法指令、进入异常处理函数前停止工作
方法:将解密代码置于自己的异常处理函数,并故意引发异常处理函数
应对:为虚拟机赋予发现和记录异常的功能,并在引发异常时将控制转向异常处理函数入口点模糊技术(EPO)
原理:即便是虚拟执行,也不可能查找文件的所有代码,虚拟执行通常会在规定步数内,检查待查文件是否具有解密循环,如果没有,就会判定该文件没有携带加密变形病毒,产生漏报
方法:病毒在宿主程序执行到某个位置时再获得控制权
应对:合理的增加检查的规定步数,如果规定步数较小,极易产生漏报,但规定步数也不能盲目增加,否则会无谓增加检测时间,如何确定规定步数的大小实在是件难事
实践上,这类病毒编写技术难度较大,在没有反汇编等工具的帮助下,很难在宿主体内定位一条指令,同时保证超过规定步数,又保证一定会被执行多线程技术
虚拟对于模拟启动多线程的工作很难与真实效果一致,多线程切换需要交由下层操作系统负责管理,虚拟机只能在被执行线程独占CPU时间
方法:在解密部分入口启动额外线程,使得解密代码在该线程中工作
应对:改进虚拟机,支持这些特定的操作系统机制
病毒实时监控技术
原理:在文件打开、关闭、清除、写入等操作时检查文件是否是病毒携带者,如果是则根据用户的决定选择不同的处理方案,如清除病毒、禁止访问该文件、删除该文件或简单地忽略,从而有效地避免病毒在本地计算机上的感染传播
难点:
- 驱动程序编写难度大
- 驱动程序与Ring3下客户程序通信问题
- 驱动程序所占资源问题
病毒的清除
引导型病毒感染时常攻击计算机的如下部位:
硬盘主引导扇区
硬盘或软盘的BOOT扇区
修复:
引导型病毒如果将原主引导扇区或BOOT扇区覆盖式写入根目录区,被覆盖的根目录区完全损坏,不可能修复。
如果引导型病毒将原主引导扇区或BOOT扇区覆盖式写入第一FAT表时,第二FAT表未破坏,则可以修复,可将第FAT表复制到第一FAT表中
一般而言,引导型病毒占用的其他部分存储空间,采用“坏簇”技术和“文件结束簇”技术占用的空间也需要收回,修改文件分配表即可
清除.com文件中病毒:
- 用Debug调入需清除病毒的文件程序,查找合法程序的程序头
- 对于链接于文件头部的计算机病毒,可用合法文件移到文件偏移0100H处,设置CX后存盘的方法清除,debug –w 100会从100开始将CX中指定字节数写入文件
- 对于链接于文件尾部的计算机病毒,可以将正常的文件头写入染毒的文件头,并通过设置CX寄存器并存盘的方法去掉程序中的病毒部分
- 对内存中的病毒进行清除,病毒程序常驻内存后,一般修改中断向量,所以清除内存中的病毒可以将备份或同版本的中断向量表取代内存中的中断向量表,或直接关掉机器,用干净系统重启
- 对于交叉感染或重复感染的.COM文件,一定要找出病毒感染的先后顺序,按从后向前的顺序逐个清除病毒,否则会损坏原文件
清除.exe文件中病毒:
- 清除.EXE文件病毒的方法与清除.COM文件中病毒的方法类似,只不过更繁琐的是恢复原文件头参数
- 清除工作仍然要通过仔细分析病毒代码,找到原文件头参数,写回并丢掉病毒程序代码
- 由于Debug程序拒绝写.EXE文件,所以在清除.EXE文件中的病毒时应首先将.EXE文件改名,然后再清除
- 对于感染PE文件的病毒,可以用PEditor、LordPE等工具软件删除病毒体、恢复程序入口点(正常程序的入口一般是PE文件中的第一个节.text),从而达到清除病毒的目的。若病毒采用了EPO等技术,清除工作将变得异常繁杂
病毒免疫技术
- 针对某一种病毒进行的计算机病毒免疫
优点:是可以有效地防止某一种特定病毒的传染
缺点:
无法处理不设置感染标识或设置后不能有效判断的病毒
病毒变种不再使用这个免疫标志、或出现新病毒时,失去作用
某些病毒的免疫标志不容易仿制,若必须加上这种标志,则需对原文件做大的改动,例如大麻病毒;
由于病毒的种类较多,不可能对各种病毒都加上免疫标识
能阻止传染,却不能阻止病毒的破坏行为,对已中毒文件无能为力
基于自我完整性检查的计算机病毒免疫(只用于文件)
原理:为可执行程序增加一个免疫外壳(1~3KB),同时在免疫外壳中记录有关用于恢复自身的信息。执行具有这种免疫功能的程序时,免疫外壳首先得到运行,检查自身的程序大小、校验和、生成日期和时间等情况,没有发现异常后,再转去执行受保护的程序
优点:这种方法不只是针对病毒的,由于其他原因造成的文件变化,在大多数情况下免疫外壳程序都能使文件自身得到复原
缺点:
- 每个受到保护的文件都要增加额外的存储空间
- 现有一些校验码算法不能满足防病毒需要,无法检查某些病毒感染的文件
- 无法对抗覆盖方式的文件型病毒
- 有些类型的文件不能使用免疫外壳的防护方法,否则将不能正常执行
- 当已被病毒感染的文件也被免疫外壳包裹,妨碍反病毒软件的检测清除
结语
病毒结束啦!考试加油。