最新:第4章计算机病毒寄生环境分析-文档资料.ppt
《最新:第4章计算机病毒寄生环境分析-文档资料.ppt》由会员分享,可在线阅读,更多相关《最新:第4章计算机病毒寄生环境分析-文档资料.ppt(63页珍藏版)》请在三一文库上搜索。
1、4.7 系统的启动与加载 4.8 BIOS与DOS的中断 4.9 计算机病毒与系统安全漏洞 习题,主引导扇区,或称为主引导记录(MBR)是物理硬盘的第一个扇区,其位置在硬盘的0柱面0磁头1扇区。 MBR中包含了主引导程序和硬盘分区表。当MBR中感染病毒后,病毒程序将替代主引导程序,原来的主引导程序通常被转移到其他地方。,4.1 磁盘引导区结构 4.1.1 主引导扇区,基于DOS的主引导扇区包含经典的主引导程序,具有最好的兼容性,可在各种DOS和Windows版本正常工作。如果主引导扇区感染了病毒,可以使用基于DOS的主引导程序覆盖之,可消除病毒。 可以使用DEBUG编写一段小程序来读出主引导扇
2、区,程序如下:,-U 100 138A:0100 B80102 MOVAX,0201;读1个扇区 138A:0103 BB007C MOVBX,7C00;读到当前段的7C00处 138A:0106 B90100 MOVCX,0001;0柱面1扇区 138A:0109 BA8000 MOVDX,0080;第一个物理硬盘0磁头 138A:010C CD13INT 13;读盘中断调用 138A:010E CCINT 3 - 某物理硬盘的主引导扇区的内容如图4.1所示。,图4.1 经典主引导扇区数据,从图4.1中可以看出,主引导程序范围在7C007C8A,接着是数据区。中间有很大一部分数据是00。 7
3、DBE至7DFD之间为4个分区表,每个分区表占用16B。图4.1中只有一个分区表有数据,其余3个全为00。主引导扇区最后两个字节55AA是已分区的标志。分区表的16B数据结构如表4.1(见书95页)所示。 可以从图4.1中的程序区(008A)反汇编出主引导程序如下:,-U 7C00 7C8A 138A:7C00 FA CLI ;关中断 138A:7C01 33C0 XOR AX,AX 138A:7C03 8ED0 MOV SS,AX 138A:7C05 BC007C MOV SP,7C00 ;设置堆栈到0:7C00 138A:7C08 8BF4 MOV SI,SP 138A:7C0A 50 P
4、USH AX 138A:7C0B 07 POP ES ;设置ES、DS段为0 138A:7C0C 50 PUSH AX 138A:7C0D 1F POP DS 138A:7C0E FB STI ;开中断 138A:7C0F FC CLD 138A:7C10 BF0006 MOV DI,0600,138A:7C13 B90001 MOV CX,0100 138A:7C16 F2REPNZ ;把主引导扇区从内存0:7C00转移到0:0600 138A:7C17 A5 MOVSW 138A:7C18 EA1D060000 JMP 0000:061D ;跳转到0:061D继续执行(转移后的下一条指令执
5、行) 138A:7C1D BEBE07 MOV SI,07BE ;指向第一个硬盘分区表 138A:7C20 B304 MOV BL,04 ;设置分区表总个数为4 138A:7C22 803C80 CMP BYTE PTR SI,80 ;测试分区是否活动 138A:7C25 740E JZ 7C35 ;是活动分区转移 138A:7C27 803C00 CMP BYTE PTR SI,00 138A:7C2A 751C JNZ 7C48 ;分区表标志非法转移 138A:7C2C 83C610 ADD SI,+10 ;指向下一个分区表 138A:7C2F FECB DEC BL,138A:7C31
6、75EF JNZ 7C22 ;没有检查完,从头继续检查下一个分区表 138A:7C33 CD18 INT 18 ;没有找到活动分区,则寻找其他引导设备 138A:7C35 8B14 MOV DX, SI ;将活动分区首扇区地址放入DX和CX中 138A:7C37 8B4C02 MOV CX, SI+02 138A:7C3A 8BEE MOV BP,SI 138A:7C3C 83C610 ADD SI,+10 ;指向活动分区表之后的分区表 138A:7C3F FECB DEC BL 138A:7C41 741A JZ 7C5D ;4个分区表检查完转移 138A:7C43 803C00 CMP B
7、YTE PTR SI,00 ;检查后续分区表标志字节是否合法,138A:7C46 74F4 JZ 7C3C ;分区表标志合法,则继续138A:7C48 BE8B06 MOV SI,068B ;非法分区表则给出提示“Invalid partition table.” 138A:7C4B AC LODSB 138A:7C4C 3C00 CMP AL,00 138A:7C4E 740B JZ 7C5B ;显示完后跳入死循环 138A:7C50 56 PUSH SI 138A:7C51 BB0700 MOV BX,0007 138A:7C54 B40E MOV AH,0E 138A:7C56 CD10
8、 INT 10 ;显示AL中的字符 138A:7C58 5E POP SI 138A:7C59 EBF0 JMP 7C4B ;继续处理下一个字符 138A:7C5B EBFE JMP 7C5B ;死循环,138A:7C5D BF0500 MOV DI,0005 ;设置读入活动分区引导扇区的次数为5 138A:7C60 BB007C MOV BX,7C00 138A:7C63 B80102 MOV AX,0201 138A:7C66 57 PUSH DI 138A:7C67 CD13 INT 13 ;把活动分区的引导扇区读入内存0:7C00 138A:7C69 5F POP DI 138A:7C
9、6A 730C JNB 7C78 ;读引导成功转移 138A:7C6C 33C0 XOR AX,AX ;读引导失败 138A:7C6E CD13 INT 13 ;复位驱动器 138A:7C70 4F DEC DI 138A:7C71 75ED JNZ 7C60;再次读活动分区的引导扇区 ;读引导扇区失败,给出提示“Error loading operating system”后跳入死循环。,138A:7C73 BEA306 MOV SI,06A3 138A:7C76 EBD3 JMP 7C4B ;读引导扇区成功,再检查主引导扇区的末尾标志是否为55AA。不是则给出提示“Missing oper
10、ating system”后跳入死循环;是55AA则跳转到0:7C00执行刚刚读入的活动分区引导程序。 138A:7C78 BEC206 MOV SI,06C2 138A:7C7B BFFE7D MOV DI,7DFE 138A:7C7E 813D55AA CMP WORD PTR DI,AA55 138A:7C82 75C7 JNZ 7C4B 138A:7C84 8BF5 MOV SI,BP 138A:7C86 EA007C0000 JMP 0000:7C00,主引导程序由BIOS引导装入到内存0:7c000,并从此执行。主引导程序检查硬盘分区表,寻找活动分区。如果没有找到活动分区,则在屏幕
11、上给出提示后跳入死循环;找到活动分区,则读入活动分区的逻辑引导扇区,如果读入成功,则执行活动分区的引导程序,否则给出提示后跳入死循环。,硬盘活动分区的引导扇区或系统软盘的引导扇区(以下称为逻辑引导扇区),其结构基本相同,包含两方面的内容:逻辑引导程序和磁盘基数表。 逻辑引导程序是在逻辑格式化时建立的,其内容与所使用的高级格式化软件(或操作系统)有关。如图4.2所示的是MS-DOS 3.30A软盘引导扇区的全部数据。,4.1.2 逻辑引导扇区,图4.2 MS-DOS 3.30A软盘引导扇区数据,对于Windows 95/98/Me格式化的磁盘分区,通常使用FAT32文件系统。FAT32文件系统的
12、逻辑引导扇区的结构与MS-DOS类似,如图4.3所示的是FAT32逻辑硬盘的引导扇区数据。 磁盘系统引导扇区中,有整个逻辑盘的重要数据,即系统参数块(BIOS Parameter Block,BPB)。BPB在磁盘逻辑格式化时写入逻辑磁盘的引导区中,位置从引导扇区的0BH字节地址开始存放。FAT32的BPB对FAT16的BPB进行了扩充,可以通过DEBUG来读取硬盘的BPB参数区内容。如图4.4所示的是从某计算机的D盘引导区读取的BPB参数。,图4.3 FAT32逻辑硬盘的引导扇区数据,图4.4 磁盘参数表(BPB参数块),FAT32的BPB参数块的具体结构如表4.2(见书101页)所示(其中
13、的实例数据在图4.4中)。,引导型病毒是一种在ROM BIOS之后,系统引导时出现的病毒,它先于操作系统执行,依托的环境是BIOS中断服务程序。引导型病毒是利用操作系统的引导模块放在某个固定的位置,并且控制权的转交方式是以物理地址为依据,而不是以操作系统引导区的内容为依据,因而病毒占据该物理位置即可获得控制权。主引导扇区和逻辑引导扇区就是引导型病毒寄生的场所。病毒寄生在引导扇区后,将真正的引导区程序转移或替换,待病毒程序执行后,再将控制权交给原来真正的引导区程序,使得这个带病毒的系统看似正常运转,而病毒已隐藏在系统中,并伺机传染、发作。,4.1.3 引导型病毒,在可执行文件中,com文件的结构
14、是最简单的。com文件只使用一个段,文件中的程序和数据的大小限制在64KB内。 执行一个com文件时,DOS把com文件装入到系统分配的一个内存块中。在内存块的最前面为该程序建立一个程序段前缀PSP,PSP的大小为100H字节,com文件的内容直接读入到PSP之后的内存中,在运行com文件程序前,4个段寄存器CS、DS、ES、SS都初始化为PSP的段地址,堆栈指针SP被设置为FFFEH,指令指针IP设置为100H。然后开始执行这个com程序。,4.2 com文件结构,每一个程序都有一个环境段,其中包括环境变量的设置值。环境变量可以用SET命令显示和设置。环境块中环境变量的格式为:NAME=st
15、ring。每一项后面都以“00H”字节结束。整个列表后面再跟一个字节“00H”,表示环境变量列表的结束。正在执行的程序的文件名也放在环境段中。环境段的值放在PSP: 02CH中,如图4.5所示。,图4.5 COM文件的内存映像和环境段,一个DOS下的exe文件可以包含多个段,每个段的长度在64KB内。exe文件中的程序、数据总的大小可以超过64KB。 EXE文件分为两个部分,exe文件头和装入模块。文件头描述整个exe文件的一些信息,在装入过程中由DOS使用。exe文件的格式如图4.6所示。 在执行一个exe文件时,操作系统根据文件头的信息,为其分配内存块、生成环境段、建立PSP,其过程和执行
16、com文件时基本相同。,4.3 exe文件结构,图4.6 exe文件结构,exe文件中装入模块的内容直接读入到PSP之后的内存。程序段前缀PSP所在的段称为起始段值,其值由操作系统根据动态内存使用情况决定。DS、ES初始化为PSP的段地址,CS、IP和SS、SP根据文件头中相应字段的内容进行赋值,段寄存器CS和SS等于文件头中相应字段的值,再加上PSP的段值(即起始段值)。,对exe文件的装入模块中,如果其中的指令或数据使用了段地址,装入程序还需要进行重定位。通过重定位表,取出每一个重定位项进行处理。重定位项实际上是一个4字节指针,包括段和偏移两个部分,将段加上起始段值得到一个段值,再结合偏移
17、,就可以定位到装入模块的一个字,将这个字的内容加上起始段值,然后开始执行这个exe程序,如图4.7所示。,图4.7 exe内存映像,在文件型病毒中,exe文件曾经是计算机病毒的主要寄生场所。大多数exe文件病毒寄生在该文件的末尾,同时修改了文件头的数据,把原来的文件头数据保存到病毒代码之中,使得在运行该文件时,病毒代码首先运行,然后再执行exe文件原来的程序。,PE的意思就是可移植的执行体(portable executable),它是 Win 32环境自身所带的执行体文件格式。它的一些特性继承自UNIX的 COFF (Common Object File Format)文件格式。“porta
18、ble executable”意味着该文件格式是跨Win 32平台的:即使Windows运行在非Intel的CPU上,任何Win 32平台的PE装载器都能识别和使用该文件格式。当然,移植到不同的CPU上PE执行体必然得有一些改变。所有Win 32执行体 (除了VxD和16位的DLL)都使用PE文件格式,包括NT的内核模式驱动程序(Kernel Mode Drivers)。,4.4 PE文件结构,Microsoft设计的可移植执行文件格式Portable Executable File Format (PE格式),可应用于所有基于Win 32的系统:Windows NT、Win 32s及Wind
19、ows 95/98/Me。 这种文件格式主要由公共对象文件格式COFF (Common Object File Format)发展而来,COFF文件格式普遍运用于UNIX操作系统。然而,为了和旧版本MS-DOS及Windows操作系统兼容,这种PE文件格式同样保留了在MS-DOS中老的、类似于MZ的文件头。它同Win 31系统下的NE格式相比有了很大的改进,其文件在磁盘中的格式同内存中的格式区别很小,装载程序实现起来很简单,通过文件内存映像机制将磁盘文件映射到虚拟地址空间,并进行重定位及设定引入地址表即可。,在头文件WINNT.h中,包含了许多用于PE文件格式的结构定义,该头文件是Window
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 计算机病毒 寄生 环境 分析 文档 资料
链接地址:https://www.31doc.com/p-1938498.html