《《计算机安全技术》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《计算机安全技术》PPT课件.ppt(207页珍藏版)》请在三一办公上搜索。
1、第4章 计算机病毒防治,4.1 计算机病毒概述 4.2 DOS环境下的病毒 4.3 宏病毒 4.4 网络病毒 4.5 现代计算机病毒流行特性,4.6 杀毒软件技术 4.7 典型病毒介绍 4.8 常用反病毒软件产品 习 题,4.1 计算机病毒概述,4.1.1 病毒的定义“计算机病毒”一词最早是由美国计算机病毒研究专家F.Cohen博士提出的。“病毒”一词是借用生物学中的病毒。通过分析研究计算机病毒,人们发现它在很多方面与生物病毒有着相似之处。计算机病毒在中华人民共和国计算机信息系统安全保护条例中的定义为:“指编制或者在计算机程序中插入的破坏计算机功能或者数据,影响计算机使用并且能够自我复制的一组
2、计算机指令或者程序代码”。,4.1.2 计算机病毒的历史随着计算机在各行各业的大量应用,计算机病毒也随之渗透到计算机世界的每个角落,常以人们意想不到的方式侵入计算机系统。计算机病毒的流行引起人们的普遍关注,成为影响计算机安全运行的一个重要因素。世界上第一例被证实的病毒是在1983年。直到1987年,病毒并没有真正在世界上传播开来,也没有引起人们的重视,更没有被充分认识到将造成多大的危害。1988年11月的一次病毒发作,造成Internet网上的6200多用户系统瘫痪,经济损失达九千多万美元,随后一系列病毒事件的发生,才引起人们对计算机病毒高度重视,并在国际计算机领域掀起了一个探讨病毒的高潮。,
3、计算机病毒的发展经历了以下几个阶段:1.DOS引导阶段1987年,计算机病毒主要是引导型病毒,具有代表性的是“小球”、“石头”、Azusa/Hong-Kong/2708病毒等。当时计算机数量较少,功能简单,一般需要通过软盘启动后使用。引导型病毒利用软盘的启动原理工作,它们修改系统引导扇区,在计算机启动时首先取得控制权,减少系统内存,修改磁盘读写中断,在系统存取操作磁盘时传播,影响系统工作效率。病毒自身代码不隐藏不加密,所以查、解都很容易。1989年引导型病毒发展为可以感染硬盘,典型的代表有“石头2”。,2.DOS可执行文件阶段1989年,可执行文件型病毒出现,一般只传染.COM和.EXE可执行
4、文件。它们利用DOS系统加载执行文件的机制工作,如“耶路撒冷”、“星期天”病毒。病毒代码在系统执行文件时取得控制权,修改DOS中断,在系统调用时进行传染,将自己附加在可执行文件中,被感染的文件长度明显变长,病毒代码没有加密。同样这类病毒容易查、解。3.混合型阶段1990年以后出现双料病毒,既感染文件同时又感染引导记录,也称混合型病毒。,常见的有Flip/Omicron Xqr invader/侵入者、Plastique/塑料炸弹、ALFA/3072-2、Ghost/One-Half/3544(幽灵)、Natas(幽灵王)、TPVO/3783等。如果只解除了感染文件上的病毒,而没有清除引导区的病
5、毒,那么在系统重新引导时病毒又将激活,会重新感染文件;如果只清除了引导区的病毒而没有清除文件上的病毒,一旦执行被感染文件,就又会感染硬盘引导区。4.伴随、批次型阶段1992年,伴随型病毒出现,它们利用DOS加载文件的优先顺序进行工作。具有代表性的是“金蝉”病毒,它感染EXE文件时生成一个和EXE同名的扩展名为COM的伴随体;,它感染COM文件时,将原来的COM文件改为同名的EXE文件,再产生一个原名的伴随体,文件扩展名为.COM,这样,在DOS加载文件时,病毒就取得控制权。这类病毒的特点是不改变原来的文件内容、日期及属性,解除病毒时只要将其伴随体删除即可。在非DOS操作系统中,一些伴随型病毒利
6、用操作系统的描述语言进行工作,较典型的代表是“海盗旗”病毒,它在得到执行时,询问用户名称和口令,然后返回一个出错信息,将自身删除。批次型病毒是工作在DOS下的和“海盗旗”病毒类似的一类病毒。,5.多形型阶段1994年,随着汇编语言编程技术的发展,实现同一功能可以用不同的方式来完成,这些方式的组合使一段看似随机的代码产生相同的运算结果。幽灵病毒就是利用这个特点,每感染一次就产生不同的代码。病毒能产生一段有上亿种可能的代码运算程序,也称多态病毒,病毒体被隐藏在解码前的加密数据中,查解这类病毒必须能对这段数据进行解码,加大了查毒的难度。多形型病毒是一种综合性病毒,它既能感染引导区又能感染程序区,多数
7、具有解码算法,一种病毒往往要两段以上的子程序方能解除。,6.生成器,变体机阶段1995年,在汇编语言中,一些数据的运算放在不同的通用寄存器中,可运算出同样的结果,随机插入一些空操作和无关指令,也不影响运算的结果,这样,一段解码算法就可以由生成器生成。当生成的是病毒时,这种复杂的病毒生成器和变体机就产生了。比较典型的代表是“病毒制造机”VCL,它可以在瞬间制造出成千上万种不同的病毒,查解时就不能使用传统的特征识别法,需要在宏观上分析指令,解码后查解病毒。变体机就是增加解码复杂程度的指令生成机。,7.网络,蠕虫阶段1995年以后,随着网络的普及,病毒大量利用网络进行传播,但只是以上几代病毒的改进。
8、在非DOS操作系统中,“蠕虫”是典型的代表,它不占用除内存以外的任何资源,不修改磁盘文件,利用网络功能搜索网络地址,将自身向下一地址进行传播,有时也在网络服务器和启动文件中存在。8.视窗阶段1996年,随着Windows 3.x和Windows95的日益普及,利用Windows传播的病毒迅速发展,它们修改(NE,PE)文件,典型的代表是DS.3873病毒,这类病毒的机制更为复杂,它们利用保护模式和API调用接口工作,解除方法也比较复杂。,近一两年流行的CIH病毒就是一种专门感染Windows95/98程序文件的病毒。这种病毒使用Windows VXD(虚拟设备驱动程序)技术,发作时不仅破坏硬盘
9、数据,而且还对一些使用Flash ROM 芯片存储BIOS程序的主板造成损坏。9.宏病毒阶段1996年,随着Windows Word功能的增强,使用Word宏语言也可以编制病毒。这种病毒使用类Basic语言,编写容易,感染Word文档文件。在Excel和AmiPro上出现的相同工作机制的病毒也归为此类。,10.互联网阶段1997年,随着因特网的发展,各种病毒也开始利用因特网进行传播。一些携带病毒的数据包和邮件越来越多,如果不小心打开了这些邮件,机器就有可能中毒。1997年,随着万维网上Java的普及,利用Java语言进行传播和获取资料的病毒开始出现。这类病毒的主要特点是:它们一般不需要宿主程序
10、,多数都能够跨平台,借助网络迅速传播,破坏系统数据;有一些能够窃取使用者的重要数据资料,如个人的数据文件、网络帐号密码、信用卡信息等。网络病毒的查杀具有更大的难度,而且容易复发。,4.1.3 计算机病毒的特点要做好反病毒技术的研究,首先要认清计算机病毒的特点和行为机理,为防范和清除计算机病毒提供充实可靠的依据。根据对计算机病毒的产生、传染和破坏行为的分析,总结出病毒的几个主要特点:1.刻意编写人为破坏计算机病毒不是偶然自发产生的,而是人为编写的有意破坏、严谨精巧的程序段,它是严格组织的程序代码,与所在环境相互适应并紧密配合。编写病毒的动机一般有以下几种情况:为了表现和证明自己;出于对上级的不满
11、;出于好奇的“恶作剧”;为了报复;为了纪念某一事件等等。也有因为政治、军事、民族、宗教、专利等方面的需要而专门编写的。有的病毒编制者为了相互交流或合作,甚至形成了专门的病毒组织。,计算机病毒的破坏性多种多样。若按破坏性粗略分类,可以分为良性病毒和恶性病毒。恶性病毒是指在代码中包含有损伤、破坏计算机系统的操作,在其传染或发作时会对系统直接造成严重损坏。它的破坏目的非常明确,如破坏数据、删除文件、格式化磁盘、破坏主板等,因此恶性病毒非常危险。良性病毒是指不包含立即直接破坏的代码,只是为了表现其存在或为说明某些事件而存在,如只显示某些信息,或播放一段音乐,或没有任何破坏动作但不停地传播。但是这类病毒
12、的潜在破坏还是有的,它使内存空间减少,占用磁盘空间,降低系统运行效率,使某些程序不能运行,它还与操作系统和应用程序争抢CPU的控制权,严重时导致系统死机、网络瘫痪。,2.自我复制能力自我复制也称“再生”或“传染”。再生机制是判断是不是计算机病毒的最重要依据。这一点与生物病毒的特点也最为相似。在一定条件下,病毒通过某种渠道从一个文件或一台计算机传染到另外没有被感染的文件或计算机,轻则造成被感染的计算机数据破坏或工作失常,重则使计算机瘫痪。病毒代码就是靠这种机制大量传播和扩散的。携带病毒代码的文件称为计算机病毒载体或带毒程序。每一台被感染了病毒的计算机,本身既是一个受害者,又是计算机病毒的传播者,
13、通过各种可能的渠道,如软盘、光盘、活动硬盘、网络去传染其它的计算机。,在染毒的计算机上曾经使用过的软盘,很有可能已被计算机病毒感染,如果拿到其它机器上使用,病毒就会通过带毒软盘传染这些机器。如果计算机已经连网,通过数据或程序共享,病毒就可以迅速传染与之相连的计算机,若不加控制,就会在很短时间内传遍整个世界。3.夺取系统控制权当计算机在正常程序控制之下运行时,系统运行是稳定的。在这台计算机上可以查看病毒文件的名字,查看或打印计算机病毒代码,甚至拷贝病毒文件,系统都不会激活并感染病毒。病毒为了完成感染、破坏系统的目的必然要取得系统的控制权,这是计算机病毒的另外一个重要特点。,计算机病毒一经在系统中
14、运行,病毒首先要做初始化工作,在内存中找到一片安身之地,随后将自身与系统软件挂起钩来执行感染程序。在这一系列的操作中,最重要的是病毒与系统挂起钩来,即取得系统控制权,系统每执行一次操作,病毒就有机会执行它预先设计的操作,完成病毒代码的传播或进行破坏活动。反病毒技术也正是抓住计算机病毒的这一特点提前与病毒取得系统控制权,阻止病毒取得系统控制权,然后识别出计算机病毒的代码和行为。4.隐蔽性不经过程序代码分析或计算机病毒代码扫描,病毒程序与正常程序不易区别开。,在没有防护措施的情况下,计算机病毒程序取得系统控制权后,可以在很短的时间里大量传染。而在受到传染后,一般计算机系统仍然能够运行,被感染的程序
15、也能执行,用户不会感到明显的异常,这便是计算机病毒的隐蔽性。正是由于这种隐蔽性,计算机病毒得以在用户没有察觉的情况下扩散传播。计算机病毒的隐蔽性还表现在病毒代码本身设计得非常短小,一般只有几百到几K字节,非常便于隐藏到其它程序中或磁盘的某一特定区域内。随着病毒编写技巧的提高,病毒代码本身还进行加密或变形,使得对计算机病毒的查找和分析更困难,容易造成漏查或错杀。,5.潜伏性大部分病毒在感染系统后一般不会马上发作,它可长期隐藏在系统中,除了传染外,不表现出破坏性,这样的状态可能保持几天,几个月甚至几年,只有在满足其特定条件后才启动其表现模块,显示发作信息或进行系统破坏。使计算机病毒发作的触发条件主
16、要有以下几种:(1)利用系统时钟提供的时间作为触发器,这种触发机制被大量病毒使用。(2)利用病毒体自带的计数器作为触发器。病毒利用计数器记录某种事件发生的次数,一旦计数器达到设定值,就执行破坏操作。,这些事件可以是计算机开机的次数,可以是病毒程序被运行的次数,还可以是从开机起被运行过的程序数量,等等。(3)利用计算机内执行的某些特定操作作为触发器。特定操作可以是用户按下某些特定键的组合,可以是执行的命令,可以是对磁盘的读写。被病毒使用的触发条件多种多样,而且往往是由多个条件的组合触发。大多数病毒的组合条件是基于时间的,再辅以读写盘操作,按键操作以及其它条件。6.不可预见性不同种类病毒的代码千差
17、万别,病毒的制作技术也在不断地提高,病毒比反病毒软件永远是超前的。,新的操作系统和应用系统的出现,软件技术的不断发展,也为计算机病毒提供了新的发展空间,对未来病毒的预测更加困难,这就要求人们不断提高对病毒的认识,增强防范意识。人为编制的病毒人类一定会战胜它。4.1.4 计算机病毒的破坏行为计算机病毒的破坏性表现为病毒的杀伤能力。病毒破坏行为的激烈程度取决于病毒作者的主观愿望和他的技术能力。数以万计、不断发展的病毒破坏行为千奇百怪,不可穷举。根据有关病毒资料可以把病毒的破坏目标和攻击部位归纳如下:1.攻击系统数据区。攻击部位包括:硬盘主引导扇区、Boot扇区、FAT表、文件目录。一般来说,攻击系
18、统数据区的病毒是恶性病毒,受损的数据不易恢复。,2.攻击文件。病毒对文件的攻击方式很多,如删除、改名、替换内容、丢失簇、对文件加密等。3.攻击内存。内存是计算机的重要资源,也是病毒攻击的重要目标。病毒额外地占用和消耗内存资源,可导致一些大程序运行受阻。病毒攻击内存的方式有大量占用、改变内存总量、禁止分配和蚕食内存。4.干扰系统运行,使运行速度下降。此类行为也是花样繁多,如不执行命令、干扰内部命令的执行、虚假报警、打不开文件、内部栈溢出、占用特殊数据区、换现行盘、时钟倒转、重启动、死机、强制游戏、扰乱串并接口等等。病毒激活时,系统时间延迟程序启动,在时钟中纳入循环计数,迫使计算机空转,运行速度明
19、显下降。,5.干扰键盘、喇叭或屏幕。病毒干扰键盘操作,如响铃、封锁键盘、换字、抹掉缓存区字符、重复、输入紊乱。许多病毒运行时,会使计算机的喇叭发出响声。病毒扰乱显示的方式很多,如字符跌落、环绕、倒置、显示前一屏、光标下跌、滚屏、抖动、乱写、吃字符等等。6.攻击CMOS。在机器的CMOS中,保存着系统的重要数据,如系统时钟、磁盘类型、内存容量等,并具有校验和。有的病毒激活时,能够对CMOS区进行写入动作,破坏CMOS中的数据。新发现的CIH病毒破坏计算机硬件,乱写某些主板BIOS芯片,损坏硬盘。7.干扰打印机。假报警、间断性打印、更换字符。,.网络病毒破坏网络系统,非法使用网络资源,破坏电子邮件
20、,发送垃圾信息,占用网络带宽等等。4.1.5 计算机病毒的命名与分类对计算机病毒命名,各个组织或公司不尽相同。有时对一种病毒,不同的软件会报出不同的名称。如“SPY”病毒,KILL起名为SPY,KV300则叫“TPVO-3783”。给病毒起名的方法不外乎以下几种:按病毒出现的地点,如“ZHENJIANG_JES”其样本最先来自镇江某用户;按病毒中出现的人名或特征字符,如“ZHANGFANG-1535”,“DISK KILLER”,“上海一号”;按病毒发作时的症状命名,如“火炬”,“蠕虫”;按病毒发作的时间,如“NOVEMBER 9”在11月9日发作;有些名称包含病毒代码的长度,如“PIXEL.
21、xxx系列,KO.xxx等。,从第一个病毒出世以来,究竟世界上有多少种病毒说法不一。无论多少种,病毒的数量仍在不断增加。据国外统计,计算机病毒以10种/周的速度递增。另据我国公安部统计,国内以4种/月的速度递增。病毒种类众多,分类如下:1.按传染方式分为引导型、文件型和混合型病毒。引导型病毒利用软盘的启动原理工作,修改系统启动扇区。在计算机启动时首先取得控制权,减少系统内存,修改磁盘读写中断,在系统存取操作时进行传播,影响系统工作效率。文件型病毒一般只传染磁盘上的可执行文件COM,EXE等。在用户调用染毒的执行文件时,病毒首先运行,然后病毒驻留内存伺机传染其他文件或直接传染其他文件。,其特点是
22、附着于正常程序文件中,成为程序文件的一个外壳或部件。这是较为常见的传染方式。混合型病毒兼有以上两种病毒的特点,既感染引导区又感染文件,因此这种病毒更易传染。2.按连接方式分为源码型、入侵型、操作系统型和外壳型病毒。源码型病毒较为少见,亦难以编写、传播。因为它要攻击高级语言编写的源程序,在源程序编译之前插入其中,并随源程序一起编译、连接成可执行文件。这样刚刚生成的可执行文件便已经带毒了。入侵型病毒可用自身代替正常程序中的部分模块或堆栈区。因此这类病毒只攻击某些特定程序,针对性强。一般情况下也难以发现和清除。,操作系统病毒可用其自身部分加入或替代操作系统的部分功能。因其直接感染操作系统,这类病毒的
23、危害性也较大。外壳病毒将自身附在正常程序的开头或结尾,相当于给正常程序加了个外壳。大部分的文件型病毒都属于这一类。3.按破坏性可分为良性病毒和恶性病毒。4.宏病毒是近几年才出现的,按方式分类属于文件型病毒。5.网络病毒指基于在网上运行和传播,影响和破坏网络系统的病毒。应该指出分类是相对的,同一种病毒按不同分类可属于不同类型。,4.1.6 计算机病毒的结构计算机病毒在结构上有着共同性,一般由引导部分、传染部分、表现部分几部分组成。1.引导部分也就是病毒的初始化部分,它随着宿主程序的执行而进入内存,为传染部分做准备。2.传染部分作用是将病毒代码复制到目标上去。一般病毒在对目标进行传染前,要判断传染
24、条件,如CIH病毒只针对Windows 95/98操作系统,判断病毒是否已经感染过该目标等。3.表现部分是病毒间差异最大的部分,前两部分是为这部分服务的。它破坏被传染系统或者在被传染系统的设备上表现出特定的现象。大部分病毒都是在一定条件下才会触发其表现部分的。,4.2 DOS环境下的病毒,4.2.1 DOS基本知识介绍1.DOS的基本结构DOS由4个相互独立又相互联系的程序模块组成,这四个模块构成了DOS的4个层次。它们是引导记录模块、基本输入输出模块、核心模块和SHELL模块。(1)引导记录模块 当FORMAT格式化磁盘时,它作为一个记录写在软盘的0面0道1扇区,或硬盘上DOS 分区的第一个
25、扇区。引导记录模块由三部分组成:软(硬)盘I/O参数表、软(硬)盘基数表、引导记录块。,(2)基本输入输出模块 又称基本输入输出管理模块。它由两部分组成:系统初始化程序、标准字符和块设备驱动程序。系统初始化程序完成确定内存容量,定位DOS核心模块的初始化程序,解释CONFIG.SYS文件并设置系统环境,加载可安装的设备驱动程序以及命令处理程序等。加载时该模块以文件名IO.SYS 装入内存,系统启动成功后该程序消失。(3)核心模块 这部分是文件管理和系统调用模块,是DOS的内核。它由内核初始化程序、系统功能调用程序组成。内核初始化程序完成DOS内部初始化工作,负责设置DOS中断向量入口,检查常驻
26、的设备驱动链。根据块设备驱动程序返回的磁盘参量,建立磁盘I/O参数表以及设置缺省的磁盘扇区缓冲区等。,系统功能调用程序主要由INT 21h构成,该程序向用户提供由0-63h子功能号组成的系统功能调用。当应用程序调用这些功能时,首先要设置寄存器为指定的参数,然后由系统调用这些功能,如,文件和记录的管理、内存管理、字符设备的输入/输出、目录管理、日期和时间管理、“假脱机”、网络管理、程序结束等。核心模块的文件名为MSDOS.SYS。(4)SHELL模块 即命令处理程序,它是用户和操作系统的接口,任务是分析执行用户命令,包括从磁盘上加载程序到内存运行。该模块由三部分组成:常驻部分CCPR、SHELL
27、初始化程序、暂驻部分CCPT。在启动时该模块以文件名COMMAND.COM装入内存并分常驻和暂驻两部分。,2.DOS启动过程PC X86系列计算机设计时,都使0FFFF0H处于ROM区中并将该地址设计为一条跳转指令,将控制权转交自检程序和ROM引导装入程序。所以计算机系统加电启动后,程序执行的首地址总是0FFFF0H,和DOS操作系统无关。系统启动有冷启动和热启动之分,冷启动有两种情况:开机或按RESET开关,都使CPU进入复位状态,并置CS:IP为FFFF:0000。热启动是按复位组合键CTRL+ALT+DEL后,键盘中断程序复位标志为1234H,使系统直接跳转到自检程序。,(1)硬件自检
28、自检程序包含对系统硬件进行测试的13个项目:处理器内部寄存器测试、ROM-BIOS芯片字节的检查、DMA控制器测试、基本RAM存储器测试、CRT视频接口测试、中断控制器测试、定时器测试、键盘测试、扩展I/O测试、附加RAM 存储器测试、早期ROM-BASIC和其他程序测试、软盘设备测试和设置打印机和串行口基本地址。在测试中,热启动则不对存储器测试。测试过程中,若前四项有故障,则为致命性错误,将会停机。其他故障均为一般性错误,会在屏幕上显示相应的错误信息供用户检测。,(2)自举程序 负责装入DOS引导记录并执行。系统没有安装硬盘时,执行该段程序。当软盘驱动器门未合上或读盘不成功时,均自动提示。当
29、有硬盘并成功地连接系统后,硬盘自举程序会取代本程序。DOS 引导记录是当格式化磁盘时记录在软盘的0面0道1扇区上的。一旦自举程序INT 19H将其读入内存的指定区域,就把控制权转交给它。其作用是检查驱动器插入的磁盘是否为系统盘。若是则引导DOS 进入内存,否则显示出错信息Non-system disk or disk error或 Disk boot failure。对于硬盘,引导记录是放在DOS分区的首部。,(3)系统初始化程序第一阶段 当DOS 引导记录执行完毕,控制转到隐含文件IO.SYS的初始化代码。该代码调用SYSINIT程序完成系统的初始化工作。SYSINIT是系统的初始化程序,是
30、DOS-BIOS模块的一个重要组成部分。它首先在内存50:70处建立磁盘基数表,表长11个字节,该表反映磁盘驱动器的工作参数。建立磁盘基数表之后,设置中断向量,其中中断向量1H、3H和4H 分别表示单步、断点和溢出中断,1BH 是处理键盘中断(CTRL+BREAK键),这些向量指示的原中断均无实质性内容,现已由初始化程序设置了新的向量入口,以便指向由DOS提供的中断例程。,同时调用BIOS中断11H和12H来确定系统硬件配置和RAM的实际容量,供以后DOS管理系统设备和分配内存空间时使用。SYSINIT初始化工作完成后,将其自身上移到内存的高端位置,原占据的空间由DOS的内核MSDOS.SYS
31、文件下移填补。(4)DOS内核初始化程序 DOS 初始化程序由SYSINIT程序调用,它包括以下初始化任务:在初始化DOS内核模块用的内部表和工作区之后,对DOS 中断使用的8个向量入口进行设置。对常驻的设备驱动程序组成的设备进行检查,并调用每个驱动程序的初始化功能。建立缺省的磁盘扇区缓冲区(2个)和缺省的文件句柄控制块(8个)。,(5)建立系统运行环境 DOS 内核初始化工作完成之后将返回SYSINIT程序执行第二阶段的初始化工作,包括以下内容:打开文件CONFIG.SYS 并依次解释每条命令,根据指定配置命令建立DOS运行系统环境,如磁盘扇区缓冲区数BUFFERS、文件句柄控制块数FILE
32、S、设备驱动程序DEVICE等。当可安装的设备驱动程序依次加载时,调用相应的初始化功能。确定设备的状态并返回所占用的内存变量,然后将其连接到设备中。处理完CONFIG.SYS文件后,关闭所有打开的文件句柄,并为常驻设备驱动程序CON、AUX和PRN分配04头5个句柄,将这些句柄号提供给标准输入、标准输出、标准错误、标准辅助和标准列表设备,以便DOS或应用程序随时使用它们而不必现打开。,SYSINIT完成所有的初始化工作之后,便释放所占空间,转到COMMAND.COM的初始化程序。(6)COMMAND初始化程序 该程序完成以下工作:对常驻的中断22H、23H、24H和27H的例程重新设置向量入口
33、供DOS系统使用。检查自动批处理文件AUTOEXEC.BAT是否存在,若存在则执行其中每条命令,执行完成后显示DOS提示符;若不存在,则显示日期和时间提示,等待用户输入指定的日期和时间,然后出现系统提示符A:或C:,表明DOS启动成功,等待用户输入DOS命令。至此DOS启动成功,完成了所有初始化任务。,3.DOS引导记录DOS 引导记录位于软盘的0面0道1扇区;硬盘在DOS分区的逻辑0扇区上。DOS引导记录由以下3部分组成:(1)软(硬)盘I/O参数表。表长19字节,从引导扇区的0字节偏移0BH处开始,分别记录每扇区字节数(2B),每簇的扇区数(1B)保留扇区数(2B),FAT表个数(1B),
34、根目录项数(2B),总扇区数(2B),介质标志(1B),每个FAT所占扇区数(2B),每道扇区数(2B),磁头数(2B),隐藏扇区数(2B)。(2)软(硬)盘基数表。表长11字节,从引导扇区的0字节偏移21H处开始。,(3)引导记录块。DOS引导记录块的功能是检查磁盘根目录下是否存在两个系统文件。存在则加载到内存指定区,并把控制权交给BIOS模块,否则显示相应的出错信息。4.DOS文件系统DOS文件管理主要通过文件目录表FDT、文件分配表FAT和磁盘参数表以及设备驱动程序来实施。(1)文件目录表DOS在固定的扇区位置设置FDT,该表具体描述文件名、子目录名和卷标以及有关信息。DOS 利用FDT
35、掌握磁盘上每个文件的路径、属性、文件分配、长度、以及建立或修改的具体日期和时间。,FDT为每个文件或子目录分配一个目录登记项,目录登记项的记录文件名(8B)、扩展名(3B)、文件属性(1B)、保留区(10B)、最后修改时间(2B)、最后修改日期(2B)、文件起始簇(2B)、文件长度(4B)。(2)文件分配表 文件目录表FDT列出了分配给文件的磁盘空间,它后续的空间地址是由文件分配表FAT提供的。文件分配表在文件的存取过程中起着关键作用。为了保险起见,DOS系统在每张磁盘上生成两个完全一样的文件分配表,FAT记录着文件所分配到的位置。磁盘上的存储空间是以扇区为单位,但是操作系统对磁盘的最小分配单
36、位是簇,每簇是一个或多个扇区。,5.DOS的程序加载过程DOS 加载程序是由系统功能中的执行功能(EXEC)来完成的。利用COMMAND.COM命令处理程序解释用户输入的命令并执行之,COMMAND.COM命令处理程序可以解释如下三种用户命令:内部命令、外部命令和批处理文件。(1)COMMAND处理命令的过程 当DOS系统启动或系统复位后,屏幕上出现DOS提示符表明COMMAND.COM已处于开工状态,等待用户输入命令。COMMAND.COM处理命令过程如下:,首先判断用户输入的命令是否正确。如果是内部命令,则转去执行COMMAND暂驻区的相应过程,执行结束返回到DOS提示符,否则判断是否为当
37、前目录;如果当前执行的命令不在当前目录下,则执行PATH命令搜索指定的目录,找到后判断要执行的是.COM类或.EXE类命令。如果是在当前目录下则不要搜索目录,直接判断是.COM还是.EXE命令。如果在搜索过程中,在指定目录下未找到.COM文件或.EXE文件,再判断是否为批文件。如果三类文件都不是时,显示提示信息:Bad Command or filename。,若找到一个批处理文件,则转入COMMAND暂驻区的批处理程序,解释执行该批文件中每条命令。当搜索到一个.COM或.EXE文件时,COMMAND便调用EXEC子功能加载该文件并予以执行。当一个外部命令执行时,它几乎控制系统的全部资源。执行
38、完毕后调用DOS结束功能,或释放所有内存,或程序驻留。然后再返回到DOS的提示符状态。(2)EXE文件的加载 由LINK连接程序生成的.EXE型文件是以特殊结构存贮在磁盘上。,当它被EXEC子功能加载时,除了要设置程序前缀PSP外,还要依据一个“文件头”指出的若干信息进行段重定位,同时,对各个内部寄存器也赋以初始化值,最后从DOS系统中接过控制权执行程序。在.EXE文件的程序终止退回到DOS时,其所占的内存空间将全部释放,除非要求驻留内存才释放部分空间。由于.EXE文件的这种特殊结构,连接程序LINK根据被连接的目标模块的不同,连接参数要相应地生成一个“重定位信息表”,并将其安装在程序的前头,
39、所以称“重定位信息表”为“文件头”。文件头的大小依程序加载的段的指令条数而变化,通常是512字节的整倍数。,文件头内的重定位表里放着所有需要重定位的地址,除此之外,文件头内还有许多信息供DOS在装入过程中使用,通过这些信息可以直接或间接得到以下内容:EXE文件标志位,文件总长度,所需内存大小,堆栈起始地址等重要信息。(3)COM文件的加载 COM文件长度被限制为64KB的一个段长,因此就不存在段重定位过程,也没有文件头,文件的结构紧凑,装入的速度快。一个.COM文件具有如下结构特点:该程序只能设置一个段,且不准建立堆栈段;该程序的长度小于64KB;该程序必须预留100H空间,且在位移100H处
40、是一条可执行指令;,该程序被加载的起始标号必须由END语句说明为开始地址;若.COM文件是由几个不同的目标模块连接生成的,则要求所有目标模块必须具有同一代码段名和类别名(CLASS),且赋予公共属性,而主模块应具有100H的入口指针并优先连接;该程序中的子程序必须具有近过程属性(NEAR)。COM文件的加载过程是这样的。通常,一个.COM文件的内存映象存于磁盘上,它不附加任何定位信息,因此,只需要在当前可用内存空间的最低端建立一个相应的程序段前缀PSP,然后紧靠PSP的上方将.COM文件装入,并把控制装到PSP+100H处,即可通过EXEC子功能加载.COM文件。这就说明了.COM文件的结构为
41、何要留100H空间并在位移100H处必须有一条可执行指令。,6.DOS的中断系统尽管病毒种类繁多、形式各异,但是它们大多数都是通过修改中断向量来达到繁殖和传染目的的。因此有必要对DOS的中断系统做一个大概的了解。中断是指计算机的CPU在执行程序的过程中,由于某种原因,暂时停止正在执行的程序,转去执行临时发生的事件,即执行中断服务程序,中断服务程序执行结束,再转回去执行正常的程序。(1)常见的中断原因有:用户希望的请求,如从某个设备上输入或输出;未预料的各种错误,如在计算过程中出现溢出等。DOS的中断可分为3种类型:来自外部硬件的外中断、来自内部硬件的内中断和来自中断指令的软中断;DOS 的软中
42、断包括几大类,这些中断可供系统和应用程序调用。它们是:,程序结束中断+中止中断 严重错误处理中断 绝对磁盘读写中断 系统功能调用 假脱机打印处理(2)中断向量表 为了提高响应中断的速度,PC机采用向量中断的处理形式,即对应每一中断类型在特定位置上放置一个中断向量,该向量是中断服务程序的入口地址。这样,所有的中断就组成了一张中断向量表。,在PC机中,最多允许有256级中断,由于中断调用通常都是段间的调用,因此一个中断向量包括4个字节(段地址:偏移量)。这样,256级中断占用了1KB空间,位置在内存的最低端,即03FFH。中断向量表是中断类型号和相应的中断处理子程序入口地址之间的连接表。中断向量表
43、占用内存的0000:0000H到0000:03FFH之间的1KB地址空间。中断向量共有256个。在这些中断中,系统规定:04号中断是CPU专用中断;80FH是8级硬中断;5号中断和10H1AH中断是基本外部设备的I/O驱动程序和BIOS中调用的有关程序;1BH、1CH中断由用户设定;1DH1FH是三个数据区;20H3FH中断由DOS系统调用;40H以后的中断类型由用户程序使用,其中一些中断号被操作系统保留使用。,(3)中断响应过程 CPU在取得中断信息后,通常要做几项工作:保护断点现场以便处理完中断程序后准确地返回到被中断处,继续执行原来的程序;根据中断类型号由中断向量表中取得中断处理程序入口
44、地址;运行中断处理程序;处理完中断子程序后,恢复中断时的现场环境,继续执行原来被中断的程序。(4)计算机病毒经常使用的中断 多数病毒经常使用磁盘服务中断和时钟中断。INT 13H是ROMBIOS软中断。该中断的向量地址为0000:004CH0000:004FH。在中断处理程序的入口处测试DL。若DL值小于80H,则对软盘操作,若大于或等于80H,则对硬盘操作,具体功能号放置在AH中。病毒常利用的功能是与此相关的几个参数:,AH:功能号,AH=02时读磁盘;AH=03时写磁盘;AH:读/写扇区数(软盘=8,硬盘=128);DH:磁头号(软盘01,硬盘07);DL:驱动器号(软盘01,硬盘8081
45、H);CH:扇区号;(软盘19,硬盘117);ES:BX:读/写缓冲区地址。INT 25H、INT 26H磁盘逻辑扇区读/写中断,是专门用来对磁盘扇区进行绝对读/写操作的两个中断。,INT 1CH间隔时钟中断是一个伪中断,其服务程序仅有IRET(中断返回)一条指令。该中断由定时器在修正、日历计数后,每55ms调用一次。利用INT 1CH这个特性,可以修改其中断向量指向用户进程而使用户进程每55ms被调用一次。INT 8H时钟中断是ROMBIOS硬中断,其向量地址为0000:0020H0000:0023H。该中断处理来自系统时钟8253通道0的中断。每秒钟发出18.2次中断,每次间隔时间约55m
46、s。每中断一次,日历计数低位加1。中断65535次正好是1小时,当计满24小时后,时钟数据被置0重新计数。计算机病毒程序经常利用INT 8H每隔55ms中断一次的特点将病毒程序的表现部分引入到INT 8H服务程序之前,使之在满足条件时连续执行。,INT 10H屏幕显示中断,向量地址为0000:0040H0000:0043H。该中断提供有关屏幕显示方式选择、光标控制、图形滚动和设置字符属性等20个子程序。这些子程序通过设置AH调用号来调用。许多病毒程序都是通过INT 10H来达到显示的目的。如“雨点”病毒,大量调用INT 10H,使屏幕上的ASCII字符像雨点样纷纷下落,形成“雨点”。INT 2
47、0H程序正常结束中断是DOS软中断,其向量地址为0000:00800000:0083。病毒程序通过修改INT 24H中断向量设置新的错误程序:如“黑色星期五”等病毒在向可执行文件传染病毒时,首先将系统的INT 24H中断屏蔽起来,不显示此时的读写操作中的任何错误信息,以使病毒的传播过程隐蔽。,INT 21H系统功能调用中断是一个功能众多、使用方便的系统服务程序,它提供了063H共84个子功能程序,是操作系统的内核模块IBMDOS.COM的主要组成部分。其中部分功能有:字符输入输出、日期和时间、内存分配、网络功能调用、读取设置中断向量、文件操作、磁盘控制等。计算机病毒充分利用了中断程序的强大功能
48、调用,以达到其各种目的,所以对中断知识的了解和熟练掌握是分析判断病毒存在与否的重要途径。4.2.2 常见DOS病毒分析1.引导记录病毒,并不一定是只有可引导的磁盘才能传播引导记录病毒,所有软盘在格式化期间都创建了引导记录程序。如果一个磁盘有引导记录病毒,当计算机要从这个软盘或硬盘引导时,病毒就被激活。甚至计算机不能从感染的磁盘启动时,它也运行自举例程,这正是病毒激活所需要的。就像驻留程序一样,大多数引导记录病毒在内存中要安装自己,并且把自己挂到计算机的BIOS和操作系统提供的各种系统服务中。只要计算机是开着的,病毒在内存中就在活动,就可以通过感染访问计算机的软盘来不断传播。(1)软引导记录病毒
49、 寄生在软盘引导记录的病毒称为软引导记录病毒。,该病毒除了可以感染软盘引导记录外,还可以感染硬盘的主引导区或活动分区引导记录。软盘作为病毒的载体,使病毒能够从一个硬盘传播到另一个硬盘。在病毒把它自己放到硬盘上之后,又不可避免地感染其他的软盘。软引导记录病毒在系统重置期间获取计算机的控制。在启动过程中,大多数PC的BIOS 都要确定软驱中是否有软盘以及计算机是否可以从这个软盘中配置引导。如果BIOS在驱动器中找到软盘,它就认定用户想要从这个盘引导。在它定位磁盘后,BIOS就会把软引导记录装入计算机内存,并执行自举例程。,在染毒的软盘中,BIOS装入引导记录是经过病毒感染的自举例程,而不是正常的自
50、举例程。在引导期间,BIOS把对计算机的控制完全给予病毒程序而不是正常的自举程序。当控制传给病毒之后,它就会得到对计算机上所有资源独有的访问权;如果在软盘上有操作系统的话,就不会被装入,也不会防止病毒的行为。大多数软引导记录病毒在引导过程中要把自己作为内存驻留程序装入,通过这种方式,病毒就可以在计算机操作期间监视所有磁盘请求,并且任意感染其他软盘。所有PC都包含一块保留的内存区域,称为BIOS数据区域(BDA)。,在控制传送给自举例程之前,BIOS引导程序会使有关配置的信息和计算机的初始状态更新BDA。DOS 依赖于存储在BDA内存中的信息正确地使用计算机的内存和外设。几乎所有的软引导记录病毒