《计算机病毒及其防范技术》第三章 计算机病毒结构分析A_第1页
《计算机病毒及其防范技术》第三章 计算机病毒结构分析A_第2页
《计算机病毒及其防范技术》第三章 计算机病毒结构分析A_第3页
《计算机病毒及其防范技术》第三章 计算机病毒结构分析A_第4页
《计算机病毒及其防范技术》第三章 计算机病毒结构分析A_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章计算机病毒结构分析本章学习目标掌握计算机病毒的结构掌握计算机病毒的工作机制了解引导型病毒原理了解COM、EXE、NE、PE可执行文件格式掌握COM文件病毒原理及实验掌握PE文件型病毒及实验总体概念DOS是VXer的乐园(Aver)9x病毒ring3,ring02K病毒主要是ring3Windows文件格式变迁:COMEXE:MZ->NE->PEVxd:LE(16Bit,32Bit)一、计算机病毒的结构和工作机制

四大模块:感染模块触发模块破坏模块(表现模块)引导模块(主控模块)两个状态:静态动态工作机制计算机操作系统启动过程程序的执行是必须要进去内存之后进行执行,操作系统也可以看做一个程序的运行,从开机加载到内存中执行的过程就是系统的启动。我们先宏观上看一下整个从CPU加电到操作系统启动的过程:BIOS程序首先将存储设备的引导记录(BootRecord)载入内存,并执行引导记录中的引导程序(Boot);引导程序会将存储设备中的操作系统内核载入内存,并进入内核的入口点开始执行操作系统内核完成系统的初始化,允许用户与操作系统进行交互计算机操作系统启动过程引导模块引导前——寄生寄生位置:引导区可执行文件寄生手段:替代法(寄生在引导区中的病毒常用该法)链接法(寄生在文件中的病毒常用该法)引导过程驻留内存窃取系统控制权恢复系统功能引导区病毒引导过程搬迁系统引导程序-〉替代为病毒引导程序启动时-〉病毒引导模块-〉加载传染、破坏和触发模块到内存-〉使用常驻技术最后,转向系统引导程序-〉引导系统文件型病毒引导过程修改入口指令-〉替代为跳转到病毒模块的指令执行时-〉跳转到病毒引导模块-〉病毒引导模块-〉加载传染、破坏和触发模块到内存-〉使用常驻技术最后,转向程序的正常执行指令-〉执行程序感染模块病毒传染的条件被动传染(静态时)用户在进行拷贝磁盘或文件时,把一个病毒由一个载体复制到另一个载体上。或者是通过网络上的信息传递,把一个病毒程序从一方传递到另一方。这种传染方式叫做计算机病毒的被动传染。主动传染(动态时)以计算机系统的运行以及病毒程序处于激活状态为先决条件。在病毒处于激活的状态下,只要传染条件满足,病毒程序能主动地把病毒自身传染给另一个载体或另一个系统。这种传染方式叫做计算机病毒的主动传染。传染过程系统(程序)运行-〉各种模块进入内存-〉按多种传染方式传染传染方式立即传染,即病毒在被执行的瞬间,抢在宿主程序开始执行前,立即感染磁盘上的其他程序,然后再执行宿主程序。驻留内存并伺机传染,内存中的病毒检查当前系统环境,在执行一个程序、浏览一个网页时传染磁盘上的程序,驻留在系统内存中的病毒程序在宿主程序运行结束后,仍可活动,直至关闭计算机。文件型病毒传染机理首先根据病毒自己的特定标识来判断该文件是否已感染了该病毒;当条件满足时,将病毒链接到文件的特定部位,并存入磁盘中;完成传染后,继续监视系统的运行,试图寻找新的攻击目标。文件型病毒传染途径加载执行文件浏览目录过程创建文件过程

破坏模块破坏是Vxer(VirusMaker或者ViruseXchanger的简称,(有时候中文也叫做毒客),是一群追求完美、极致代码的病毒程序员)的追求,病毒魅力的体现破坏模块的功能破坏、破坏、还是破坏……破坏对象系统数据区、文件、内存、系统运行速度、磁盘、CMOS、主板和网络等。破坏的程度触发模块触发条件计算机病毒在传染和发作之前,往往要判断某些特定条件是否满足,满足则传染或发作,否则不传染或不发作或只传染不发作,这个条件就是计算机病毒的触发条件。触发模块的目的是调节病毒的攻击性和潜伏性之间的平衡大范围的感染行为、频繁的破坏行为可能给用户以重创,但是,它们总是使系统或多或少地出现异常,容易使病毒暴露。而不破坏、不感染又会使病毒失去其特性。可触发性是病毒的攻击性和潜伏性之间的调整杠杆,可以控制病毒感染和破坏的频度,兼顾杀伤力和潜伏性。病毒常用的触发条件日期触发时间触发键盘触发感染触发例如,运行感染文件个数触发、感染序数触发、感染磁盘数触发、感染失败触发等。启动触发访问磁盘次数触发CPU型号/主板型号触发二、16位操作系统病毒编制技术

1引导型病毒编制原理2COM、EXE、NE文件结构及运行原理3COM文件病毒原理1引导型病毒编制原理PC引导流程加电CPU\BIOS初始化POST自检引导区、分区表检查发现操作系统执行引导程序引导区病毒取得控制权的过程:MBR和分区表装载DOS引导区运行DOS引导程序加载IO.sysMSDOS.sys加载DOS1正常的引导过程引导型病毒从软盘加载到内存寻找DOS引导区的位置将DOS引导区移动到别的位置病毒将自己写入原DOS引导区的位置2用被感染的软盘启动MBR和分区表将病毒的引导程序加载入内存运行病毒引导程序病毒驻留内存原DOS引导程序执行并加载DOS系统3病毒在启动时获得控制权2COM\EXE\NE文件结构及运行原理COM格式最简单的可执行文件就是DOS下的以COM(CopyOfMemory)文件。COM格式文件最大64KB,内含16位程序的二进制代码映像,没有重定位信息。COM文件包含程序二进制代码的一个绝对映像,也就是说,为了运行程序准确的处理器指令和内存中的数据,DOS通过直接把该映像从文件拷贝到内存来加载COM程序,系统不需要作重定位工作。加载COM程序DOS尝试分配内存。因为COM程序必须位于一个64K的段中,所以COM文件的大小不能超过65,024(64K减去用于PSP的256字节和用于一个起始堆栈的至少256字节)。如果DOS不能为程序、一个PSP、一个起始堆栈分配足够内存,则分配尝试失败。否则,DOS分配尽可能多的内存(直至所有保留内存),即使COM程序本身不能大于64K。在试图运行另一个程序或分配另外的内存之前,大部分COM程序释放任何不需要的内存。分配内存后,DOS在该内存的头256字节建立一个PSP(ProgramSegmentPrefix:程序段前缀)。创建PSP后,DOS在PSP后立即开始(偏移100H)加载COM文件,它置SS、DS和ES为PSP的段地址,接着创建一个堆栈。DOS通过把控制传递偏移100H处的指令而启动程序。程序设计者必须保证COM文件的第一条指令是程序的入口点。因为程序是在偏移100H处加载,因此所有代码和数据偏移也必须相对于100H。汇编语言程序设计者可通过置程序的初值为100H而保证这一点(例如,通过在源代码的开始使用语句org100H)。DOS中断(汇编指令)PSP结构偏移大小

长度(Byte)

说明

0000h

02

中断20H

0002h

02

以节计算的内存大小(利用它可看出是否感染引导型病毒)

0004h

01

保留

0005h

05

至DOS的长调用

000Ah

02

INT22H入口IP

000Ch

02

INT22H入口CS

000Eh

02

INT23H入口IP

0010h

02

INT23H入口CS

0012h

02

INT24H入口IP

0014h

02

INT24H入口CS

0016h

02

父进程的PSP段值(可测知是否被跟踪)

0018h

14

存放20个SOFT号

002Ch

02

环境块段地址(从中可获知执行的程序名)

002Eh

04

存放用户栈地址指针

0032h

1E

保留

0050h

03

DOS调用(INT21H/RETF)

0053h

02

保留

0055h

07

扩展的FCB头

005Ch

10

格式化的FCB1

006Ch

10

格式化的FCB2

007Ch

04

保留

0080h

01

命令行参数长度

0081h

127

命令行参数MZ格式MZ格式:COM发展下去就是MZ格式的可执行文件,这是DOS中具有重定位功能的可执行文件格式。MZ可执行文件内含16位代码,在这些代码之前加了一个文件头,文件头中包括各种说明数据,例如,第一句可执行代码执行指令时所需要的文件入口点、堆栈的位置、重定位表等。装载过程:操作系统根据文件头的信息将代码部分装入内存,然后根据重定位表修正代码,最后在设置好堆栈后从文件头中指定的入口开始执行。DOS可以把MZ格式的程序放在任何它想要的地方。MZ标志MZ文件头其它信息重定位表的字节偏移量重定位表重定位表可重定位程序映像二进制代码//MZ格式可执行程序文件头structHeadEXE{WORDwType;//00HMZ标志WORDwLastSecSize;//02H最后扇区被使用的大小WORDwFileSize;//04H文件大小WORDwRelocNum;//06H重定位项数WORDwHeadSize;//08H文件头大小WORDwReqMin;//0AH最小所需内存WORDwReqMax;//0CH最大所需内存WORDwInitSS;//0EHSS初值WORDwInitSP;//10HSP初值WORDwChkSum;//12H校验和WORDwInitIP;//14HIP初值WORDwInitCS;//16HCS初值WORDwFirstReloc;//18H第一个重定位项位置WORDwOverlap;//1AH覆盖WORDwReserved[0x20];//1CH保留WORDwNEOffset;//3CHNE头位置};

NE格式为了保持对DOS的兼容性并满足Windows的需要,Win3.x中出现的NE格式的可执行文件中保留了MZ格式的头,同时NE文件又加了一个自己的头,之后才是可执行文件的可执行代码。NE类型包括了EXE、DLL、DRV和FON四种类型的文件。NE格式的关键特性是:它把程序代码、数据、资源隔离在不同的可加载区中;藉由符号输入和输出,实现所谓的运行时动态链接。NE装载16位的NE格式文件装载程序(NELoader)读取部分磁盘文件,并生成一个完全不同的数据结构,在内存中建立模块。当代码或数据需要装入时,装载程序必须从全局内存中分配出一块,查找原始数据在文件的位置,找到位置后再读取原始的数据,最后再进行一些修正。每一个16位的模块(Module)要负责记住现在使用的所有段选择符,该选择符表示该段是否已经被抛弃等信息。MS-DOS头DOS文件头保留区域Windows头偏移DOSStub程序信息块NE文件头段表资源表驻留名表模块引用表引入名字表入口表非驻留名表代码段和数据段程序区重定位表3COM文件病毒原理感染过程:将开始的3个字节保存在orgcode中.将这3个字节更改为0E9H和COM文件的实际大小的二进制编码。将病毒写入原COM文件的后边。在病毒的返回部分,将3个字节改为0E9H和表达式(当前地址-COM文件的实际大小-病毒代码大小)的二进制编码,以便在执行完病毒后转向执行原程序。三、32位操作系统病毒示例分析

1PE文件结构及其运行原理2Win32文件型病毒编制技术3从ring3到ring0概述1PE文件结构及其运行原理

(1)PE文件格式总体结构

PE(PortableExecutable:可移植的执行体)是Win32环境自身所带的可执行文件格式。它的一些特性继承自Unix的Coff(CommonObjectFileFormat)文件格式。可移植的执行体意味着此文件格式是跨win32平台的,即使Windows运行在非Intel的CPU上,任何win32平台的PE装载器都能识别和使用该文件格式。当然,移植到不同的CPU上PE执行体必然得有一些改变。除VxD和16位的Dll外,所有win32执行文件都使用PE文件格式。因此,研究PE文件格式是我们洞悉Windows结构的良机。PE文件结构总体层次分布DOSMZheader‘MZ’格式头DOSstubDos桩程序PEheaderPE文件头Sectiontable节表Section1第1个节Section2第2个节……Sectionn第n个节所有PE文件必须以一个简单的DOSMZheader开始。有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执行体。DOSstub实际上是个有效的EXE,在不支持PE文件格式的操作系统中,它将简单显示一个错误提示,类似于字符串“该程序不能在DOS模式下运行”或者程序员可根据自己的意图实现完整的DOS代码。

PEheader是PE相关结构IMAGE_NT_HEADERS的简称,其中包含了许多PE装载器用到的重要域。sectiontable(节表)是节的索引。PE文件的真正内容被划分成块,我们称之为sections(节)。每节是一块拥有共同属性的数据,比如代码/数据、读/写等。把PE文件想象成一逻辑磁盘,PEheader是磁盘的boot扇区,而sections就是各种文件,每种文件自然就有不同属性如只读、系统、隐藏、文档等等。其中节表就像目录。值得我们注意的是——节的划分是基于各组数据的共同属性而不是逻辑概念。因此,我们不必关心节中类似于data,code或其他的逻辑概念。如果数据和代码拥有相同属性,它们就可以被归入同一个节中。节名称仅仅是个区别不同节的符号而已,类似于data和code等的节名称只为了便于识别,惟有节的属性设置决定了节的特性和功能。如果某块数据想作为只读属性,就可以将该块数据放入属性为只读的节中。装载PE文件的主要步骤第一,当PE文件被执行,PE装载器检查DOSMZheader里的PEheader偏移量。如果找到,则跳转到PEheader。第二,PE装载器检查PEheader的有效性。如果有效,就跳转到PEheader的尾部。第三,紧跟PEheader的是节表。PE装载器读取其中的节索引信息,并采用文件映射方法将这些节映射到内存,同时附上节表里指定的节属性。第四,PE文件映射入内存后,PE装载器将处理PE文件中类似importtable(引入表)逻辑部分。(2)检验PE文件的有效性什么样的PE文件是有效的?只要一些关键数据结构有效,我们就认为是有效的PE文件了。这个重要数据结构就是PEheader。从编程角度看,PEheader实际就是一个IMAGE_NT_HEADERS结构。IMAGE_NT_HEADERS结构的定义如下:IMAGE_NT_HEADERSSTRUCTSignatureddFileHeaderIMAGE_FILE_HEADEROptionalHeaderIMAGE_OPTIONAL_HEADER32IMAGE_NT_HEADERSENDSSignature:该域为PE标记,值为50h,45h,00h,00h(PE\0\0)。IMAGE_DOS_SIGNATUREequ5A4DhIMAGE_OS2_SIGNATUREequ454EhIMAGE_OS2_SIGNATURE_LEequ454ChIMAGE_VXD_SIGNATUREequ454ChIMAGE_NT_SIGNATUREequ4550hFileHeader:该结构域包含了关于PE文件物理分布的信息,比如节数目、文件执行机器等。OptionalHeader:该结构域包含了关于PE文件逻辑分布的信息。定位PEheaderDOSMZheader(IMAGE_DOS_HEADER)包含了指向PEheader的文件偏移量,即e_lfanew。定位步骤为:第一,检验文件头部第一个字的值是否等于IMAGE_DOS_SIGNATURE,是则DOSMZheader有效。第二,一旦证明文件的DOSMZheader有效后,就可用e_lfanew来定位PEheader了。第三,比较PEheader的第一个字的值是否等于IMAGE_NT_SIGNATURE。如果前后两个值都匹配,那我们就认为该文件是一个有效的PE文件。(3)文件头(FileHeader)文件头(FileHeader)是IMAGE_NT_HEADERS的一个重要的域。文件头的表示结构为:IMAGE_FILE_HEADERSTRUCTMachineWORDNumberOfSectionsWORDTimeDateStampddPointerToSymbolTableddNumberOfSymbolsddSizeOfOptionalHeaderWORDCharacteristicsWORDIMAGE_FILE_HEADERENDS域名含义Machine该文件运行所要求的CPU。对于Intel平台,该值是IMAGE_FILE_MACHINE_I386(14Ch)。NumberOfSections文件的节数目。如果我们要在文件中增加或删除一个节,就需要修改这个值。TimeDateStamp文件创建日期和时间。要让它保持原样,不要变PointerToSymbolTable用于调试。NumberOfSymbols用于调试。SizeOfOptionalHeader指示紧随本结构之后的OptionalHeader结构大小,必须为有效值。Characteristics关于文件信息的标记,比如文件是exe还是dll。(4)OptionalHeaderOptionalHeader是PEheader中最后,最大,也是最重要的成员,包含了PE文件的逻辑分布信息。该结构共有31个域。虚拟地址(VA——VirtualAddress)RVA(RelativeVirtualAddress,相对虚拟地址)域名含义AddressOfEntryPointPE装载器准备运行的PE文件的第一个指令的RVA。若您要改变整个执行的流程,可以将该值指定到新的RVA,这样新RVA处的指令首先被执行。ImageBasePE文件的优先装载地址。比如,如果该值是400000H,PE装载器将尝试把文件装到虚拟地址空间的400000H处。若该地址区域已被其他模块占用,那PE装载器会选用其他空闲地址。SectionAlignment内存中节对齐的粒度。例如,如果该值是4096(1000H),那么每节的起始地址必须是4096的倍数。若第一节从401000H开始且大小是10个字节,则下一节必定从402000H开始,即使401000H和402000H之间还有很多空间没被使用。FileAlignment文件中节对齐的粒度。含义类似SectionAlignment。MajorSubsystemVersionMinorSubsystemVersionWin32系统版本。SizeOfImage内存中整个PE映像体的尺寸。它是所有头和节经过节对齐处理后的大小。SizeOfHeaders所有头+节表的大小,也就等于文件尺寸减去文件中所有节的尺寸。可以以此值作为PE文件第一节的文件偏移量。SubsystemNT用来识别PE文件属于哪个子系统。对于大多数Win32程序,只有两类值:WindowsGUI和WindowsCUI(控制台)。DataDirectoryIMAGE_DATA_DIRECTORY结构数组。每个结构给出一个重要数据结构的RVA,比如引入地址表等。(5)节表(SectionTable)SectionTable是用来索引节的数组结构,其详细表示为:IMAGE_SIZEOF_SHORT_NAMEequ8

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论