计算机病毒是指编制或者在计算机程序中插入的, 破坏计算机功能或数据、影响计算机使用, 并能自我复制的一组计算机指令或者程序代码。
1.计算机病毒的特点
电脑病毒的主要特点如下。
(1)隐蔽性
电脑病毒的隐蔽性使得人们不容易发现它,例如有的病毒要等到某个月13日且是星期五才发作,平时的日子不发作。一台电脑或者一张软盘被感染上病毒一般是无法事先知道的,病毒程序是一个没有文件名的程序。
(2)潜伏性
从被感染上电脑病毒到电脑病毒开始运行,一般是需要经过一段时间的。当满足病毒发作的指定环境条件时,病毒程序才开始发作。
(3)传染性
电脑病毒程序的一个主要特点是能够将自身的程序复制给其他程序(文件型病毒),或者放入指定的位置,如引导扇区(引导型病毒)。
(4)欺骗性
每个电脑病毒都具有特洛伊木马的特点,用欺骗手段寄生在其他文件上,一旦该文件被加载,就会让病毒发作并破坏电脑的软、硬件资源,迫使电脑无法正常工作。
(5)危害性
病毒的危害性是显然的,几乎没有一个无害的病毒。它的危害性不仅体现在破坏系统,删除或者修改数据方面,而且还要占用系统资源,干扰机器的正常运行等。
2.计算机病毒的分类
2.1按传染方式分类
病毒按传染方式可分为:
1).引导区电脑病毒
2).文件型电脑病毒
3).复合型电脑病毒
4).宏病毒
5).木马
6).蠕虫
1).引导区电脑病毒:
隐藏在磁盘内,在系统文件启动以前电脑病毒已驻留在内存内。这样一来,电脑病毒就可完全控制DOS中断功能,以便进行病毒传播和破坏活动。那些设计在DOS或Windows3.1上执行的引导区病毒是不能够在新的电脑操作系统上传播。
2).文件型电脑病毒
又称寄生病毒,通常感染执行文件(.EXE),但是也有些会感染其它可执行文件,如DLL,SCR等。每次执行受感染的文件时,电脑病毒便会发作(电脑病毒会将自己复制到其他可执行文件,并且继续执行原有的程序,以免被用户所察觉)。
典型例子:CIH会感染Windows95/98的.EXE文件,并在每月的26号发作日进行严重破坏。于每月的26号当日,此电脑病毒会试图把一些随机资料覆写在系统的硬盘,令该硬盘无法读取原有资料。此外,这病毒又会试图破坏Flash BIOS内的资料。
3).复合型电脑病毒:
具有引导区病毒和文件型病毒的双重特点。
4).宏病毒:
宏病毒专门针对特定的应用软件,可感染依附于某些应用软件内的宏指令,它可以很容易透过电子邮件附件、软盘、文件下载和群组软件等多种方式进行传播如Microsoft Word和Excel。
与其他电脑病毒类型的区别是宏病毒是攻击数据文件而不是程序文件。
5).特洛伊或特洛伊木马
是一个看似正当的程序,但事实上当执行时会进行一些恶性及不正当的活动。特洛伊可用作黑客工具去窃取用户的密码资料或破坏硬盘内的程序或数据。
特洛伊木马与电脑病毒的重大区别是特洛伊木马不具传染性,它并不能像病毒那样复制自身,也并不"刻意"地去感染其他文件,它主要通过将自身伪装起来,吸引用户下载执行。
6).蠕虫:
一般认为:蠕虫是一种通过网络传播的恶性病毒,它具有病毒的一些共性,如传播性、隐蔽性、破坏性等等,同时具有自己的一些特征,如不利用文件寄生(有的只存在于内存中),对网络造成拒绝服务,以及和黑客技术相结合,等等。
根据使用者情况将蠕虫病毒分为两类:一种是面向企业用户和局域网而言;这种病毒利用系统漏洞,主动进行攻击,可以对整个互联网可造成瘫痪性的后果。另外一种是针对个人用户的,通过网络(主要是电子邮件、恶意网页形式)迅速传播的蠕虫病毒,以爱虫病毒、求职信病毒为代表。
蠕虫病毒的传染目标是互联网内的所有计算机,局域网条件下的共享文件夹、电子邮件Email、网络中的恶意网页、大量存在着漏洞的服务器等。
它跟电脑病毒有些不同,电脑病毒通常会专注感染其它程序,但蠕虫是专注于利用网络去扩散。
2.2按连接方式分类
病毒按连接方式分为源码型病毒、入侵型病毒、操作系统型病毒、外壳型病毒等四种。
(1)源码型病毒
该病毒攻击高级语言编写的程序,该病毒在高级语言所编写的程序编译前插入到原程序中,经编译成为合法程序的一部分。
(2)嵌入型病毒
这种病毒是将自身嵌入到现有程序中,把计算机病毒的主体程序与其攻击的对象以插入的方式链接。这种计算机病毒是难以编写的,一旦侵入程序体后也较难消除。如果同时采用多态性病毒技术,超级病毒技术和隐蔽性病毒技术,将给当前的反病毒技术带来严峻的挑战。
(3)外壳型病毒
外壳型病毒将其自身包围在主程序的四周,对原来的程序不作修改。这种病毒最为常见,易于编写,也易于发现,一般测试文件的大小即可知。
(4)操作系统型病毒
这种病毒用它自已的程序意图加入或取代部分操作系统进行工作,具有很强的破坏力,可以导致整个系统的瘫痪。圆点病毒和大麻病毒就是典型的操作系统型病毒。
这种病毒在运行时,用自己的逻辑部分取代操作系统的合法程序模块,根据病毒自身的特点和被替代的操作系统中合法程序模块在操作系统中运行的地位与作用以及病毒取代操作系统的取代方式等,对操作系统进行破坏。
2.3按照计算机病毒激活的时间分类
按照计算机病毒激活时间可分为定时的和随机的。定时病毒仅在某一特定时间才发作,而随机病毒一般不是由时钟来激活的。
2.4按照传播媒介分类
按照计算机病毒的传播媒介来分类,可分为单机病毒和网络病毒。
(1)单机病毒
单机病毒的载体是磁盘,常见的是病毒从软盘传入硬盘,感染系统,然后再传染其他软盘,软盘又传染其他系统。
(2)网络病毒
网络病毒的传播媒介不再是移动式载体,而是网络通道,这种病毒的传染能力更强,破坏力更大。
2.5按照寄生方式和传染途径分类
计算机病毒按其寄生方式大致可分为两类,一是引导型病毒,二是文件型病毒;它们再按其传染途径又可分为驻留内存型和不驻留内存型,驻留内存型按其驻留内存方式又可细分。混合型病毒集引导型和文件型病毒特性于一体。
引导型病毒会去改写(即一般所说的“感染”)磁盘上的引导扇区(BOOT SECTOR)的内容,软盘或硬盘都有可能感染病毒。再不然就是改写硬盘上的分区表(FAT)。如果用已感染病毒的软盘来启动的话,则会感染硬盘。
文件型病毒主要以感染文件扩展名为.com、.exe和.ovl等可执行程序为主。它的安装必须借助于病毒的载体程序,即要运行病毒的载体程序,方能把文件型病毒引入内存。已感染病毒的文件执行速度会减缓,甚至完全无法执行。有些文件遭感染后,一执行就会遭到删除。大多数的文件型病毒都会把它们自己的代码复制到其宿主的开头或结尾处。这会造成已感染病毒文件的长度变长,但用户不一定能用DIR命令列出其感染病毒前的长度。也有部分病毒是直接改写“受害文件”的程序码,因此感染病毒后文件的长度仍然维持不变。
混合型病毒综合系统型和文件型病毒的特性,它的“性情”也就比系统型和文件型病毒更为“凶残”。这种病毒透过这两种方式来感染,更增加了病毒的传染性以及存活率。不管以哪种方式传染,只要中毒就会经开机或执行程序而感染其他的磁盘或文件,此种病毒也是最难杀灭的。
2.6按病毒的特性分类
Trojan–特洛伊木马,有这个前缀的就是木马了,在此类病毒名中有PSW或者什么PWD之类的一般都表示这个病毒有盗取密码的功能。比如 Trojuan.qqpass.a。
Win32 PE Win95 W32 W95–系统病毒,特性是可以感染windows操作系统的 *.exe 和 *.dll 文件。
Worm–蠕虫病毒,通过网络或者系统漏洞进行传播。比较著名的有冲击波。
Script–脚本病毒 一般来说,脚本病毒还会有如下前缀:VBS JS(表明是何种脚本编写的)比如欢乐时光。
Backdoor–后门病毒,特性是通过网络传播,给系统开后门,最著名的就是灰鸽子为代表。
Dropper–种植程序病毒,特性是运行时会从体内释放出一个或几个新的病毒到系统目录下,代表就是落雪了。
Joke–玩笑病毒 ,只是吓吓人而已,没什么危害。
HackTool–黑客工具。
Downloader–木马下载者,以体积小的下载者下载体积大的木马,方便隐藏。
AdWare–广告病毒,监视你在上网时的一举一动,然后把信息反馈到用它的公司。
2.7常见的病毒
ARP中毒:arp协议是TCP/IP协议组的一个协议,能够把网络地址翻译成物理地址(又称MAC地址)。通常此类攻击的手段有两种:路由欺骗和网关欺骗。是一种入侵电脑的木马病毒。
DNS中毒:DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。 原理:如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。
Rootkit:是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。
3.计算机病毒程序结构
3.1引导模块
病毒引导模块的主要作用是将静态病毒激活,使之成为动态病毒(加载)。
病毒程序的加载分为两个步骤:一是系统加载过程;二是病毒附加的加载过程。病毒程序选择的加载点、目标多是计算机的固有弱点或软件系统的输入节点。
病毒程序的加载受到操作系统的制约。DOS系统下,病毒程序的加载有3种方式:①参与系统启动过程②依附正常文件加载③直接运行病毒程序
DOS系统下,病毒的加载过程,主要由3个步骤组成:
(1)开辟内存空间;
(2)病毒体定位和驻留;
其中驻留内存的方法有以下几种:
① 减少DOS系统可分配空间
② 利用系统模块间的空隙和DOS间隙
③利用功能调用驻留内存
④占用系统程序使用空间(又称程序覆盖方法)
一般Windows环境下的病毒有3种方法驻留内存: 一是将病毒作为一个Windows环境下的应用程序,拥有自己的窗口(隐藏的)和消息处理函数;二是使用DPMI申请一块系统内存,将病毒代码放入其中;三是将病毒作为一个VXD(WIN 9X下的设备驱动程序)或VDD(WIN 2000/NT下的设备驱动程序)加载到内存中运行。
(3)恢复系统功能
3.2感染模块
感染模块主要完成病毒的动态感染,是各种病毒必不可少的模块。病毒在取得对系统的控制权后,先执行它的感染操作中的条件判断模块,判断感染条件是否满足,如果满足感染条件,进行感染,将病毒代码放入宿主程序;然后再执行其他的操作(如执行病毒的表现(破坏)模块),最后再执行系统正确的处理,这是病毒感染经常采取的手段之一。
病毒的感染标记
感染标记又称病毒签名,表明了某种病毒的存在特性,往往是病毒的一个重要的感染条件。感染标记是一些具有唯一不变性的数字或字符串,它们以ASCII码方式存放在程序里的特定位置。感染标记可以存在于病毒程序的任何一点,也有可能是组合在程序中的代码。感染标记是由病毒制造者有意设置的,但也可以不设置标记。不同病毒的感染标记位置不同、内容不同 。病毒程序感染宿主程序时,要把感染标记写入宿主程序,作为该程序已被感染的标记。
病毒在感染健康程序以前,先要对感染对象进行搜索,查看它是否带有感染标记。如果有,说明它已被感染过,就不会再被感染;如果没有,病毒就会感染该程序。
病毒的感染目标和感染方式
就目前出现的各种计算机病毒来看,其寄生目标有两种:
一种是寄生在磁盘(主)引导扇区(利用转储或直接存取扇区的方法,此方法还可将病毒驻入磁盘的文件分配表、文件目录区和数据存储区等,常利用INT 13H中断);
另一种是寄生在可执行文件(如.EXE,.COM, .BAT, .SYS, .OVL, .DLL, .VXD文件等)中 。
而近来常被感染的一些数据文件(主要是微软的办公软件系统,Word文档、数据表格、数据库、演示文档等等)其实也是可以看作一种特殊的可执行文件(宏) 。
文件型病毒常利用INT 21H中断来感染可执行文件,病毒的感染通常采用替代法、链接法和独立存在法
病毒的感染机制
病毒在不同的载体上感染的机制不同。网络上或系统上的感染是利用网络间或系统间的通信或数据共享机制实现的。存储介质(软盘、硬盘或磁带等)或文件间的感染一般利用内存作为中间媒介,病毒先由带毒介质或文件进入内存,再由内存侵入无毒介质或文件。
病毒从内存侵入无毒介质,经常利用操作系统的读写磁盘中断向量入口地址或修改加载机制(例如INT l3H或INT 21H),使该中断向量指向病毒程序感染模块。内存中的病毒时刻监视着操作系统的每一个操作,这样,一旦系统执行磁盘读写操作或系统功能调用,病毒感染模块就会被激活,感染模块在判断感染条件满足的条件下,把病毒自身感染给被读写的磁盘或被加载的程序,实施病毒的感染,病毒被按照病毒的磁盘储存结构存放在磁盘上,然后再转移到原中断服务程序执行原有的操作。另外还有被动感染。
3.3表现(破坏)模块
表现(破坏)模块主要完成病毒的表现或破坏功能。
它的发作部分应具备两个特征:程序要有一定的隐蔽性及潜伏性,病毒发作的条件性和多样性。
计算机病毒的破坏和表现模块一般分为两个部分:一个是破坏模块的触发条件的判断部分;一个是破坏功能的实施部分。
和病毒的感染模块一样,破坏模块可能在病毒程序第一次加载时就运行,也可能在第一次加载时只将引导模块引入内存,以后再通过某些中断机制触发才运行。破坏机制在设计原则上也与感染机制基本相同。
4.DOS基本系统知识
DOS系统基本程序模块由以下几个部分组成(以MS-DOS为例):
(1)引导程序(BOOT)。它驻留在系统盘的0面0道1扇区,在启动计算机时,它首先被自动读入内存,然后由它负责把DOS的其他程序调入内存。
(2)BOM中的ROMBIOS。它提供对计算机输入/输出设备进行管理的程序,被固化在主机板上的ROM中,是计算机硬件与软件的最低层的接口。
(3)输入输出管理IO.SYS模块。其功能是初始化操作系统,并提供DOS系统与ROM BIOS之间的接口。
(4)核心MSDOS.SYS模块。它主要提供设备管理、内存管理、磁盘文件及目录管理的功能,这些功能可以通过所谓的系统功能调用INT 21H来使用,它是用户程序与计算机硬件之间的高层软件接口。
(5)命令处理COMMAND.COM模块。它是DOS调入内存的最后一个模块,它的任务是负责接收和解释用户输入的命令,可以执行DOS的所有内、外部命令和批命令。它主要由3部分组成:常驻部分、初始化部分和暂驻部分。
DOS的启动过程主要有以下一些步骤:
(1)在系统复位或加电时,计算机程序的指令指针自动从内存地址0FFFF:0000H外开始执行,该处含有一条无条件转移指令,使控制转移到系统的ROM板上,执行ROM BIOS中的系统自检和最初的初始化工作程序,以及建立INT 1FH以前的中断向量表。如果自检正常,则把系统盘上存于0面0道1扇区的系统引导记录读入内存地址0000:7000H,并把控制权交给引导程序中的第一条指令。
(2)引导记录用于检查系统所规定的两个文件IO.SYS和MSDOS.SYS是否按规定的位置存于启动盘中,如符合要求就把它们读入内存地址0060:0000H,否则启动盘被认为不合法,启动失败。
(3)IO.SYS与MSDOS.SYS被装入内存以后,引导记录的使命即完成,控制权交给IO.SYS,该程序完成初始化系统、定位MSDOS.SYS以及装入COMMAND.COM等工作。
其主要过程是:
①建立新的磁盘基数表并修改INT lEH向量地址指向该磁盘基数表。
②初始化异步通信口R5-232和打印机口。
③修改0lH,03H,04H和1BH中断入口。
④调用INT 11H及INT l2H确定系统的硬件配置和内存RAM容量。
⑤将系统初始化程序移到内存高端并将MSDOS.SYS程序下移占据其位置。
⑥控制权交给MSDOS.SYS。MSDOS.SYS是DOS的核心部分,它在接受控制以后,也进行一系列的初始化工作,这些工作包括:初始化DOS内部表和工作区、初始化DOS的中断向量20H~2EH、建立磁盘输入/输出参数表以及设置磁盘缓冲区和文件控制块等。完成这些工作以后,继续执行IO.SYS的系统初始化程序。
⑦初始化程序检查系统盘上的系统配置程序CONFIG.SYS,如果存在,则执行该程序,按配置命令建立DOS的运行环境:设置磁盘缓冲区大小、能同时打开的句柄文件个数、加载可安装的设备驱动程序等。
⑧将命令处理程序COMMAND.COM程序装入内存,并把控制权交给该程序。至此IO.SYS文件的使命即告完成。
(4)命令处理程序在接受控制以后,重新设置中断向量22H、23H、24H和27H入口地址,然后检查系统盘上是否存在AUTOEXEC.BAT文件。若系统盘上不存在该文件,则显示日期和时间等待用户输入,显示DOS提示符。若存在该文件,则程序转入暂驻区,由批处理程序对其进行解释和执行,执行完成后显示DOS提示符。至此,DOS的整个启动过程全部结束,系统处于命令接受状态。
DOS启动后,内存的组织即分配如图2.6所示,该图仅说明了DOS在基本内存(640KB)运行时的内存分配状态。在计算机通常的工作方式(实方式)下,总体上来说,DOS可以管理的内存空间为1 MB。此l MByte空间可分为两大部分,一部分是RAM区,另一部分则是ROM区。而RAM区又分为系统程序、数据区和用户程序区两部分。由于DOS的版本不同,DOS系统文件的长度就不同,从而驻留在内存中的系统程序占用的内存空间也就不同,这样用户程序区的段地址就是一个不确定的值。
从内存绝对地址0040:0000H~0040:00FFH开始存放一些重要的数据,这些数据是由ROM BIOS程序在引导过程中装入的,记录了有关系统的设备配置和存储单元的系统参数,它们是提供给ROM BIOS例行程序在进行设备操作时必备的重要数据。其中地址为40:13~40:14的两个字节存放了以lKB为单位的内存总容量(含存储扩展板容量),例如640 KB RAM为280H。有些病毒程序通过调入内皴高端并修改40:13~40:14内存而驻留内存;地址为40:6C~40:6F的4个字节为时钟数据区;前两个字节(40:6C~40:6D)为0~65535之间的一个数,由8253定时器每55 ms调1NT 8H使数值加1;后两个字节(40:6E~40:6F)为小时数,当计数值满65 535时(恰好1小时),小时数加1。病毒常通过调用这一时钟数据来检测激活的时机是否成熟。