第6章典型计算机病毒分析目前计算机病毒的种类日趋增加,为了有效地防范计算机病毒,分析典型计算机病毒是必要的。从现象中认识事物的本质,掌握其规律从而找出防范计算机病毒的方法和措施进而发展计算机系统安全的技术和理论6.1大麻病毒大麻病毒又名石头病毒,是一种系统引导型病毒,它攻击软盘的引导区或硬盘的主引导区,是恶性的计算机病毒。6.1.1大麻病毒的表现症状“YourPCisNowStoned”。蜂鸣器会发出一响声。当提示字符闪过之后,机器并无其他异常现象,但对某些硬盘和软盘可能无法再使用。大麻病毒的传染途径主要是:或是在有病毒的机器上对软盘作了读写操作,或是用带毒软盘启动系统,或是把带毒系统盘整盘拷贝。6.1.2大麻病毒的工作原理大麻病毒包括引导模块、传染模块和表现模块用带毒盘引导系统时,引导模块首先运行,如果是软盘启动,则有八分之一的可能调用表现模块,表现模块只在这一时刻才可能执行。传染模块分两部分,第一部分用来传染硬盘,在引导模块执行时被调用,第二部分用来传染A驱动器中的软盘,它是通过调用磁盘操作中断INT13H获得执行权的大麻病毒程序的有效长度不到一个扇区,全部藏身于硬盘的主引导扇区和软盘的引导扇区中。当系统启动时,大麻病毒首先进入内存并将原属于磁盘操作系统的控制权交给大麻病毒的主程序,该程序获得控制权后,即作下列工作:(1)将病毒程序存放到内存的某一位置保护起来,随时准备攻击用户的磁盘。(2)保存原来的INT13H中断向量,并修改正常的INT13H中断服务程序的向量,使之指向病毒的INT13H中断服务程序。(3)判断是否从带毒A盘启动。若是的,则立即调用传染模块的第一部分,然后调用表现模块。(4)无论是从硬盘还是软盘启动,昀终都要跳到0000:7c00处,执行正常的引导程序。病毒启动盘为软盘?NYNYNYNYYNYN启动将病毒区的第09-0c字节处保存原INT13中断向量修改INT13中断向量将病毒程序传送到自己定义的附加段ES:0000处复位磁盘系统将0008处的软硬盘标志位置0将放在0道1面3扇区的引导系统读入0000:7c00处将放在0道0头7扇区的硬盘主引导系统读入0000:7c00处当前时间值是8FFEH的倍数?显示字符YourPCisnowstoned!跳0000:7c00处执行真正的硬盘引导是读写操作?是访问A盘?引导扇区前4个字节是否为EA0500c0?原BOOT写入0道1面3扇区将病毒程序写入0道1面1扇区转原INT13H把硬盘的0道0头1扇区读入ES:200处ES:200处的第一和第二字节值是否为EA0500c0?将0008处的软硬标志位置02将ES:200处的硬盘主引导程序放道硬盘的0道0头7扇区把硬盘分区信息表移到病毒程序的后面把带有分区信息表的病毒程序放入硬盘的物理0扇区跳0000:7c00处执行真正的软盘引导大麻病毒对硬盘主引导扇区及软盘引导扇区内容移动的位置是固定的。感染硬盘时,主引导记录被移到0道0面7扇区。此时,若DOS分区的隐含扇区数为11H或17H,则0面0道7扇区空出不使用,病毒不会给系统造成破坏;如果隐含扇区数为1,则0面0道7扇区为FAT表,这样当DOS把这里的主引导记录当做FAT表进行修改分配,则主引导记录失效,导致硬盘无法引导系统。对软盘感染时,大麻病毒不区分软盘种类,把原BOOT区内容写入0道1面3扇区,这样对某些软盘可能造成破坏。扇区分配软盘BOOTFAT1FAT2根目录区数据区每道扇区数360KB01-23-45-1112-91.2MB01-78-1415-2829-156.1.3大麻病毒的防治1.对软盘的检测和消除读出软盘的引导扇区内容与正常引导记录和病毒程序进行比较,就可确定该软盘是否感染了大麻病毒。如果确定软盘已感染了大麻病毒,则只需把1面0道3扇区的原DOS引导记录写回到引导扇区即可。2.对硬盘的检测和消除硬盘的0面0道1扇区为主引导扇区,借助于汇编程序,把主引导扇区内容读到内存指定位置,确定是否感染大麻病毒。在确定硬盘上存在大麻病毒之后,编写汇编程序,把放在0面0道7扇区的硬盘主引导记录写回到主引导区。如果硬盘已不能引导,则说明主引导记录已被破坏。恢复主引导记录。通常可先从同样机型、同样DOS版本做的分区且分区大小一样、不带毒的机器,用汇编程序读出主引导记录,再把它写入一个文件。然后用软盘启动出现故障的机器,并把前面得到的文件装入内存,昀后把内存中存放的正常主引导记录写回到主引导扇区,重新启动系统。6.2六·四病毒当满足一定条件时,在硬盘启动过程中会显示“Bloody!Jun.4,1989”。与大麻病毒相同的是在软盘和硬盘的存储方式也是不一样的。在软盘上也是存放在1面0道3扇区,但在硬盘上是占据0道0面6扇区,此外该病毒还可传染B驱动器中的软盘。开始修改INT13中断向量病毒放入内存高端最后2K有无软盘?读硬盘0面0道6扇区读软盘1面0道3扇区正常引导记录放到0000:7c00正常引导记录放到0000:7c00内部计数器符合条件吗?显示“BloodJun.4,1989”内部计数器加1读入硬盘0面0道1扇区硬盘有病毒吗?主引导记录放在0面0道6扇区,病毒部分放在0面0道1扇区跳0000:7c00执行正常引导记录6.3米开郎基罗病毒米开郎基罗病毒又称“米氏”病毒,这个名称来源于它的发作日期:每年的3月6日,而这一天恰是意大利画家米开郎基罗的生日。3.3.1“米氏”病毒的特点病毒程序占据一个扇区,共512字节。对于硬盘占据主引导扇区,而对于软盘则占据引导扇区。当用带有病毒的磁盘启动系统时,病毒程序首先进入内存,减少内存总量2KB,并修改系统的INT13H中断向量,使其指向病毒的传染模块,从而获得对系统的控制权。“米氏”病毒对硬盘和360KB软盘的传染与大麻病毒类似。与大麻病毒不同的有以下3点1.对1.2MB软盘传染时,是将正常引导扇区内容放到根目录昀后一个扇区,即1面0道0EH扇区。2.用破坏程序段代替大麻病毒的表现程序段。3.病毒程序标识不同。6.3.2病毒的作用机制“米氏”病毒的引导过程与大麻病毒完全相同由于它占据了软盘的引导扇区或硬盘的主引导扇区,故系统启动时,病毒程序首先被装入内存,并获得对系统的控制权,病毒程序在驻留内存后,修改系统的INT13H中断向量,使之指向病毒的传染部分。然后系统判断系统日期,若发现为3月6日,则执行破坏程序,破坏系统的硬盘和工作软盘。“米氏”病毒对硬盘的传染和对软盘的传染是不同的首先判断是否有该病毒的标识,以决定是否传染。当用带毒软盘引导系统时,若硬盘无病毒标识,就先将硬盘主引导扇区中的数据移到硬盘的另一扇区,再向硬盘主引导扇区写入病毒程序。对软盘传染时,只传染A驱动器中所操作的软盘,因此除了判断病毒标识外,还要判断驱动器号。如果对A驱动器中的盘进行任何读写操作时,病毒程序的传染部分首先获得控制权,在确定该软盘没有该病毒标识后,就将病毒程序传染到该磁盘上。为麻痹用户,病毒程序会将包含DOS两个隐含模块名称的引导扇区中后21H字节内容移到病毒程序尾部由于用户查看引导扇区时,常要查看这一内容,对用户有一定的欺骗性。病毒程序的破坏模块的作用是判断是否为3月6日,若满足,则不管启动盘是否为系统盘,只要启动盘中染有“米氏”病毒,病毒程序就会将内存中的一块随机数据写入启动盘中从第一物理区开始的整个磁盘,从而导致磁盘中数据全部丢失。其基本原理是:1.对软盘的INT13H中断调用写入功能,预置每次写入9个扇区2.根据[0008]单元内容判断是360KB还是1.2MB。若是360KB则转向5;否则每次写14个扇区,转向4。3.对硬盘设置写入操作,置[0007]单元为4,每次写入17个扇区4.从内存中5000段地址起开始写。5.执行INT13H中断,成功时转向6,若不成功则使磁头复位。6.使写操作磁头号加1。7.若磁头号低于[0007]单元指示值,则转向1。以上操作实际上是对硬盘执行了4次写操作,每次17个扇区,共68个扇区。对360KB软盘是执行了2次写操作,每次9个扇区,共18个扇区对1.2MB软盘执行了2次写操作,但每次14个扇区,共28个扇区这些写操作的结果是完全破坏了操作盘中的BOOT区FAT表和目录区,使操作盘中数据全部丢失。6.3.3诊治对该病毒的检测和清除也类似大麻病毒,当然使用消毒软件则是昀方便的方法,一种比较被动的方法就是为了避免损失,通过修改系统日期来避免病毒破坏部分的触发统计。6.4香港病毒病毒发作时,封锁打印机。该病毒对软盘传染时,将引导扇区内容放到磁盘1面27道08扇区,又称2708病毒3.4.1病毒程序特点传播方式与大麻病毒类似,传染力更强病毒程序短,320多字节,驻留在硬盘主引导扇区,软盘的引导扇区在系统引导时进入系统,它将系统内存总量减少1KB,并驻留在内存高端,其传染过程极为迅速、隐蔽,一般较难觉察。病毒程序在向软、硬盘上传染时,将原来正常引导扇区首部第3个字节起8个字节和尾部90H字节内容先传递到病毒程序段的对应位置,然后再和病毒程序一起写回到操作盘的(主)引导扇区中。对于软盘,前8字节内容为DOS版本号,后90H字节内容为系统启动时的错误提示信息;对于硬盘,后90H字节则为硬盘的分区信息。其目的是迷惑用户,使得在查看引导扇区内容时误认为染毒的引导扇区是原正常的引导程序。该病毒在向硬盘传染时,覆盖了原主引导扇区内容,注意,与前面的几个病毒是不同的。为了使硬盘仍能正常引导系统,在病毒程序中,专门有一段子程序:判定是硬盘引导系统后,直接调硬盘上活动分区的引导扇区内容,完成系统的引导。这使病毒程序既短小,又能蒙骗人们。当用户分析病毒程序时,在查找搬移的原主引导扇区内容上花费更多时间。6.4.2病毒程序的作用机制1.引导过程用带毒软盘引导系统,此时引导扇区中的病毒程序首先进入内存中,获得系统的控制权。病毒程序提取系统INT13H中断向量,保存在其6CH-6FH单元中,并使系统内存总量减少1K以保护驻留内存高端的病毒程序随后计算出内存高端段地址,将整个病毒程序移至内存高端,修改INT13H中断向量指针,使之指向病毒程序的传染部分,完成病毒程序的激活。将控制转移到内存高端的病毒引导程序处,读正常引导记录内容到0000:7c00处,再将硬盘主引导扇区内容读入内存高端,检查该引导扇区是否已被感染。如果硬盘已经感染香港病毒,则执行正常的DOS引导;否则将硬盘首部第3个字节起8个字节和尾部90H字节内容移至病毒程序相应位置,然后将病毒程序写到硬盘主引导扇区,完成对硬盘的感染,昀后再执行正常的DOS引导。用带毒硬盘引导系统,此时主引导扇区中的病毒程序首先进入内存中,获得系统的控制权。病毒程序修改INT13H中断向量、内存总量以及转移病毒程序到内存高端的过程与带毒软盘引导相同。在完成病毒程序的激活后,病毒程序查找硬盘活动分区地址,然后直接调用该分区的引导扇区,并将控制转向该引导扇区,完成系统的正常引导。2.感染软盘过程病毒程序进入系统后,所有INT13H中断调用请求,均转到病毒程序传染部分执行。如果判定不是读写请求或是对硬盘的读写请求,则执行正常的INT13H中断服务。如果发现是对软盘的读写请求,则首先将该操作盘的引导扇区调入内存中,检查其特定位置上是否有病毒标记,若有就退出传染模块,转向正常的INT13H中断服务;否则就将引导扇区内容写到1面27道08扇区,并把首部第3个字节起8个字节和尾部90H字节内容移至病毒程序相应位置,然后将病毒程序写到该盘的引导扇区,完成对软盘的感染,昀后再执行正常的INT13H中断服务。3.病毒的破坏模块香港病毒在感染硬盘后,每从硬盘启动一次,病毒内部计数器加1,当系统从硬盘启动次数累计达224次后,病毒程序就会将打印口PRN1和通信口COM1的基地址置为00,使系统误认为未配置通信口和打