第4章计算机病毒寄生环境分析.ppt
《第4章计算机病毒寄生环境分析.ppt》由会员分享,可在线阅读,更多相关《第4章计算机病毒寄生环境分析.ppt(64页珍藏版)》请在三一办公上搜索。
1、第4章 计算机病毒寄生环境分析,4.1 磁盘引导区结构4.2 com文件结构4.3 exe文件结构4.4 PE文件结构4.5 VxD文件结构4.6 其他可感染病毒存储介质结构,4.7 系统的启动与加载4.8 BIOS与DOS的中断4.9 计算机病毒与系统安全漏洞习题,主引导扇区,或称为主引导记录(MBR)是物理硬盘的第一个扇区,其位置在硬盘的0柱面0磁头1扇区。MBR中包含了主引导程序和硬盘分区表。当MBR中感染病毒后,病毒程序将替代主引导程序,原来的主引导程序通常被转移到其他地方。,4.1 磁盘引导区结构 4.1.1 主引导扇区,基于DOS的主引导扇区包含经典的主引导程序,具有最好的兼容性,
2、可在各种DOS和Windows版本正常工作。如果主引导扇区感染了病毒,可以使用基于DOS的主引导程序覆盖之,可消除病毒。可以使用DEBUG编写一段小程序来读出主引导扇区,程序如下:,-U 100138A: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-某物理硬盘的主引导扇区的内容
3、如图4.1所示。,图4.1 经典主引导扇区数据,从图4.1中可以看出,主引导程序范围在7C007C8A,接着是数据区。中间有很大一部分数据是00。7DBE至7DFD之间为4个分区表,每个分区表占用16B。图4.1中只有一个分区表有数据,其余3个全为00。主引导扇区最后两个字节55AA是已分区的标志。分区表的16B数据结构如表4.1(见书95页)所示。可以从图4.1中的程序区(008A)反汇编出主引导程序如下:,-U7C007C8A138A:7C00FACLI;关中断138A:7C0133C0XORAX,AX138A:7C038ED0MOVSS,AX138A:7C05BC007C MOV SP,
4、7C00;设置堆栈到0:7C00138A:7C088BF4MOVSI,SP138A:7C0A 50PUSHAX138A:7C0B 07POPES;设置ES、DS段为0138A:7C0C 50PUSHAX138A:7C0D1FPOPDS138A:7C0EFBSTI;开中断138A:7C0FFCCLD138A:7C10BF0006MOVDI,0600,138A:7C13B90001MOVCX,0100138A:7C16F2REPNZ;把主引导扇区从内存0:7C00转移到0:0600138A:7C17A5MOVSW138A:7C18EA1D060000JMP0000:061D;跳转到0:061D继续
5、执行(转移后的下一条指令执行)138A:7C1DBEBE07MOVSI,07BE;指向第一个硬盘分区表138A:7C20B304MOVBL,04;设置分区表总个数为4138A:7C22803C80 CMP BYTE PTR SI,80;测试分区是否活动138A:7C25740EJZ 7C35;是活动分区转移138A:7C27803C00 CMP BYTE PTR SI,00138A:7C2A751CJNZ 7C48;分区表标志非法转移138A:7C2C83C610 ADDSI,+10;指向下一个分区表138A:7C2FFECBDEC BL,138A:7C3175EFJNZ 7C22;没有检查完
6、,从头继续检查下一个分区表138A:7C33CD18INT 18;没有找到活动分区,则寻找其他引导设备138A:7C358B14MOVDX,SI;将活动分区首扇区地址放入DX和CX中138A:7C378B4C02MOV CX,SI+02138A:7C3A8BEEMOVBP,SI138A:7C3C83C610 ADD SI,+10;指向活动分区表之后的分区表138A:7C3FFECBDEC BL138A:7C41741AJZ7C5D;4个分区表检查完转移138A:7C43803C00 CMP BYTE PTR SI,00;检查后续分区表标志字节是否合法,138A:7C4674F4JZ 7C3C;
7、分区表标志合法,则继续138A:7C48BE8B06 MOV SI,068B;非法分区表则给出提示“Invalid partition table.”138A:7C4BACLODSB138A:7C4C3C00CMPAL,00138A:7C4E740BJZ7C5B;显示完后跳入死循环138A:7C5056PUSHSI138A:7C51BB0700MOVBX,0007138A:7C54B40EMOVAH,0E138A:7C56CD10INT 10;显示AL中的字符138A:7C585EPOP SI138A:7C59EBF0JMP7C4B;继续处理下一个字符138A:7C5BEBFEJMP7C5B;
8、死循环,138A:7C5DBF0500 MOV DI,0005;设置读入活动分区引导扇区的次数为5138A:7C60BB007C MOV BX,7C00138A:7C63B80102 MOV AX,0201138A:7C6657PUSHDI138A:7C67CD13INT 13;把活动分区的引导扇区读入内存0:7C00138A:7C695FPOP DI138A:7C6A730CJNB 7C78;读引导成功转移138A:7C6C33C0XORAX,AX;读引导失败138A:7C6ECD13INT 13;复位驱动器138A:7C704FDEC DI138A:7C7175EDJNZ 7C60;再次读
9、活动分区的引导扇区;读引导扇区失败,给出提示“Error loading operating system”后跳入死循环。,138A:7C73BEA306 MOV SI,06A3138A:7C76EBD3JMP7C4B;读引导扇区成功,再检查主引导扇区的末尾标志是否为55AA。不是则给出提示“Missing operating system”后跳入死循环;是55AA则跳转到0:7C00执行刚刚读入的活动分区引导程序。138A:7C78BEC206MOVSI,06C2138A:7C7BBFFE7DMOVDI,7DFE138A:7C7E813D55AACMPWORD PTR DI,AA55138A
10、:7C8275C7JNZ7C4B138A:7C848BF5MOVSI,BP138A:7C86EA007C0000JMP 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文件系统的逻辑引导扇区的结构与MS-DOS类似,如图4.3所示的是FAT32逻辑硬盘的引导扇区数据。磁盘系统引导扇区中,有整个逻辑盘的重要数据,即系统参数块(BIOS Parameter Block,BPB)。BPB在磁盘逻辑格式化时写入逻辑磁盘的引导区中,位置从引导扇区的0BH字节地址开始存放。FAT32的BPB对FAT16的BPB进行
12、了扩充,可以通过DEBUG来读取硬盘的BPB参数区内容。如图4.4所示的是从某计算机的D盘引导区读取的BPB参数。,图4.3 FAT32逻辑硬盘的引导扇区数据,图4.4 磁盘参数表(BPB参数块),FAT32的BPB参数块的具体结构如表4.2(见书101页)所示(其中的实例数据在图4.4中)。,引导型病毒是一种在ROM BIOS之后,系统引导时出现的病毒,它先于操作系统执行,依托的环境是BIOS中断服务程序。引导型病毒是利用操作系统的引导模块放在某个固定的位置,并且控制权的转交方式是以物理地址为依据,而不是以操作系统引导区的内容为依据,因而病毒占据该物理位置即可获得控制权。主引导扇区和逻辑引导
13、扇区就是引导型病毒寄生的场所。病毒寄生在引导扇区后,将真正的引导区程序转移或替换,待病毒程序执行后,再将控制权交给原来真正的引导区程序,使得这个带病毒的系统看似正常运转,而病毒已隐藏在系统中,并伺机传染、发作。,4.1.3 引导型病毒,在可执行文件中,com文件的结构是最简单的。com文件只使用一个段,文件中的程序和数据的大小限制在64KB内。执行一个com文件时,DOS把com文件装入到系统分配的一个内存块中。在内存块的最前面为该程序建立一个程序段前缀PSP,PSP的大小为100H字节,com文件的内容直接读入到PSP之后的内存中,在运行com文件程序前,4个段寄存器CS、DS、ES、SS都
14、初始化为PSP的段地址,堆栈指针SP被设置为FFFEH,指令指针IP设置为100H。然后开始执行这个com程序。,4.2 com文件结构,每一个程序都有一个环境段,其中包括环境变量的设置值。环境变量可以用SET命令显示和设置。环境块中环境变量的格式为:NAME=string。每一项后面都以“00H”字节结束。整个列表后面再跟一个字节“00H”,表示环境变量列表的结束。正在执行的程序的文件名也放在环境段中。环境段的值放在PSP:02CH中,如图4.5所示。,图4.5 COM文件的内存映像和环境段,一个DOS下的exe文件可以包含多个段,每个段的长度在64KB内。exe文件中的程序、数据总的大小可
15、以超过64KB。EXE文件分为两个部分,exe文件头和装入模块。文件头描述整个exe文件的一些信息,在装入过程中由DOS使用。exe文件的格式如图4.6所示。在执行一个exe文件时,操作系统根据文件头的信息,为其分配内存块、生成环境段、建立PSP,其过程和执行com文件时基本相同。,4.3 exe文件结构,图4.6 exe文件结构,exe文件中装入模块的内容直接读入到PSP之后的内存。程序段前缀PSP所在的段称为起始段值,其值由操作系统根据动态内存使用情况决定。DS、ES初始化为PSP的段地址,CS、IP和SS、SP根据文件头中相应字段的内容进行赋值,段寄存器CS和SS等于文件头中相应字段的值
16、,再加上PSP的段值(即起始段值)。,对exe文件的装入模块中,如果其中的指令或数据使用了段地址,装入程序还需要进行重定位。通过重定位表,取出每一个重定位项进行处理。重定位项实际上是一个4字节指针,包括段和偏移两个部分,将段加上起始段值得到一个段值,再结合偏移,就可以定位到装入模块的一个字,将这个字的内容加上起始段值,然后开始执行这个exe程序,如图4.7所示。,图4.7 exe内存映像,在文件型病毒中,exe文件曾经是计算机病毒的主要寄生场所。大多数exe文件病毒寄生在该文件的末尾,同时修改了文件头的数据,把原来的文件头数据保存到病毒代码之中,使得在运行该文件时,病毒代码首先运行,然后再执行
17、exe文件原来的程序。,PE的意思就是可移植的执行体(portable executable),它是 Win 32环境自身所带的执行体文件格式。它的一些特性继承自UNIX的 COFF(Common Object File Format)文件格式。“portable executable”意味着该文件格式是跨Win 32平台的:即使Windows运行在非Intel的CPU上,任何Win 32平台的PE装载器都能识别和使用该文件格式。当然,移植到不同的CPU上PE执行体必然得有一些改变。所有Win 32执行体(除了VxD和16位的DLL)都使用PE文件格式,包括NT的内核模式驱动程序(Kernel
18、 Mode Drivers)。,4.4 PE文件结构,Microsoft设计的可移植执行文件格式Portable Executable File Format(PE格式),可应用于所有基于Win 32的系统:Windows NT、Win 32s及Windows 95/98/Me。这种文件格式主要由公共对象文件格式COFF(Common Object File Format)发展而来,COFF文件格式普遍运用于UNIX操作系统。然而,为了和旧版本MS-DOS及Windows操作系统兼容,这种PE文件格式同样保留了在MS-DOS中老的、类似于MZ的文件头。它同Win 31系统下的NE格式相比有了很
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机病毒 寄生 环境 分析
链接地址:https://www.31ppt.com/p-5766579.html