计算机病毒结构分析_第1页
计算机病毒结构分析_第2页
计算机病毒结构分析_第3页
计算机病毒结构分析_第4页
计算机病毒结构分析_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

第三章计算机病毒结构分析,本章学习目标,掌握计算机病毒的结构掌握计算机病毒的工作机制了解引导型病毒原理了解COM、EXE、NE、PE可执行文件格式掌握COM文件病毒原理及实验掌握PE文件型病毒及实验,总体概念,DOS是VXer的乐园(Aver)9x病毒ring3,ring02K病毒主要是ring3Windows文件格式变迁:COMEXE:MZ-NE-PEVxd:LE(16Bit,32Bit),一、计算机病毒的结构和工作机制,四大模块:感染模块触发模块破坏模块(表现模块)引导模块(主控模块)两个状态:静态动态,工作机制,引导模块,引导前寄生寄生位置:引导区可执行文件寄生手段:替代法(寄生在引导区中的病毒常用该法)链接法(寄生在文件中的病毒常用该法),引导过程驻留内存窃取系统控制权恢复系统功能引导区病毒引导过程搬迁系统引导程序-替代为病毒引导程序启动时-病毒引导模块-加载传染、破坏和触发模块到内存-使用常驻技术最后,转向系统引导程序-引导系统,文件型病毒引导过程修改入口指令-替代为跳转到病毒模块的指令执行时-跳转到病毒引导模块-病毒引导模块-加载传染、破坏和触发模块到内存-使用常驻技术最后,转向程序的正常执行指令-执行程序,感染模块,病毒传染的条件被动传染(静态时)用户在进行拷贝磁盘或文件时,把一个病毒由一个载体复制到另一个载体上。或者是通过网络上的信息传递,把一个病毒程序从一方传递到另一方。这种传染方式叫做计算机病毒的被动传染。主动传染(动态时)以计算机系统的运行以及病毒程序处于激活状态为先决条件。在病毒处于激活的状态下,只要传染条件满足,病毒程序能主动地把病毒自身传染给另一个载体或另一个系统。这种传染方式叫做计算机病毒的主动传染。,传染过程系统(程序)运行-各种模块进入内存-按多种传染方式传染传染方式立即传染,即病毒在被执行的瞬间,抢在宿主程序开始执行前,立即感染磁盘上的其他程序,然后再执行宿主程序。驻留内存并伺机传染,内存中的病毒检查当前系统环境,在执行一个程序、浏览一个网页时传染磁盘上的程序,驻留在系统内存中的病毒程序在宿主程序运行结束后,仍可活动,直至关闭计算机。,文件型病毒传染机理首先根据病毒自己的特定标识来判断该文件是否已感染了该病毒;当条件满足时,将病毒链接到文件的特定部位,并存入磁盘中;完成传染后,继续监视系统的运行,试图寻找新的攻击目标。文件型病毒传染途径加载执行文件浏览目录过程创建文件过程,破坏模块,破坏是Vxer的追求,病毒魅力的体现破坏模块的功能破坏、破坏、还是破坏破坏对象系统数据区、文件、内存、系统运行速度、磁盘、CMOS、主板和网络等。破坏的程度,触发模块,触发条件计算机病毒在传染和发作之前,往往要判断某些特定条件是否满足,满足则传染或发作,否则不传染或不发作或只传染不发作,这个条件就是计算机病毒的触发条件。触发模块的目的是调节病毒的攻击性和潜伏性之间的平衡大范围的感染行为、频繁的破坏行为可能给用户以重创,但是,它们总是使系统或多或少地出现异常,容易使病毒暴露。而不破坏、不感染又会使病毒失去其特性。可触发性是病毒的攻击性和潜伏性之间的调整杠杆,可以控制病毒感染和破坏的频度,兼顾杀伤力和潜伏性。,病毒常用的触发条件,日期触发时间触发键盘触发感染触发例如,运行感染文件个数触发、感染序数触发、感染磁盘数触发、感染失败触发等。启动触发访问磁盘次数触发CPU型号/主板型号触发,二、16位操作系统病毒编制技术,1引导型病毒编制原理2COM、EXE、NE文件结构及运行原理3COM文件病毒原理,1引导型病毒编制原理,PC引导流程,加电,CPUBIOS初始化,POST自检,引导区、分区表检查,发现操作系统执行引导程序,引导区病毒取得控制权的过程:,MBR和分区表装载DOS引导区,运行DOS引导程序,加载IO.sysMSDOS.sys,加载,1正常的引导过程,引导型病毒从软盘加载到内存,寻找DOS引导区的位置,将引导区移动到别的位置,病毒将自己写入原引导区的位置,用被感染的软盘启动,MBR和分区表将病毒的引导程序加载入内存,运行病毒引导程序,病毒驻留内存,原引导程序执行并加载系统,病毒在启动时获得控制权,2COMEXENE文件结构及运行原理,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)。,PSP结构偏移大小长度(Byte)说明0000h02中断20H0002h02以节计算的内存大小(利用它可看出是否感染引导型病毒)0004h01保留0005h05至DOS的长调用000Ah02INT22H入口IP000Ch02INT22H入口CS000Eh02INT23H入口IP0010h02INT23H入口CS0012h02INT24H入口IP0014h02INT24H入口CS0016h02父进程的PSP段值(可测知是否被跟踪)0018h14存放20个SOFT号002Ch02环境块段地址(从中可获知执行的程序名)002Eh04存放用户栈地址指针0032h1E保留0050h03DOS调用(INT21H/RETF)0053h02保留0055h07扩展的FCB头005Ch10格式化的FCB1006Ch10格式化的FCB2007Ch04保留0080h80命令行参数长度0081h127命令行参数,MZ格式,MZ格式:COM发展下去就是MZ格式的可执行文件,这是DOS中具有重定位功能的可执行文件格式。MZ可执行文件内含16位代码,在这些代码之前加了一个文件头,文件头中包括各种说明数据,例如,第一句可执行代码执行指令时所需要的文件入口点、堆栈的位置、重定位表等。装载过程:操作系统根据文件头的信息将代码部分装入内存,然后根据重定位表修正代码,最后在设置好堆栈后从文件头中指定的入口开始执行。DOS可以把MZ格式的程序放在任何它想要的地方。,/MZ格式可执行程序文件头structHeadEXEWORDwType;/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覆盖WORDwReserved0 x20;/1CH保留WORDwNEOffset;/3CHNE头位置;,NE格式,为了保持对DOS的兼容性并满足Windows的需要,Win3.x中出现的NE格式的可执行文件中保留了MZ格式的头,同时NE文件又加了一个自己的头,之后才是可执行文件的可执行代码。NE类型包括了EXE、DLL、DRV和FON四种类型的文件。NE格式的关键特性是:它把程序代码、数据、资源隔离在不同的可加载区中;藉由符号输入和输出,实现所谓的运行时动态链接。,NE装载,16位的NE格式文件装载程序(NELoader)读取部分磁盘文件,并生成一个完全不同的数据结构,在内存中建立模块。当代码或数据需要装入时,装载程序必须从全局内存中分配出一块,查找原始数据在文件的位置,找到位置后再读取原始的数据,最后再进行一些修正。每一个16位的模块(Module)要负责记住现在使用的所有段选择符,该选择符表示该段是否已经被抛弃等信息。,3COM文件病毒原理,感染过程:将开始的3个字节保存在orgcode中将这3个字节更改为0E9H和COM文件的实际大小的二进制编码。将病毒写入原COM文件的后边。在病毒的返回部分,将3个字节改为0E9H和表达式(当前地址COM文件的实际大小病毒代码大小)的二进制编码,以便在执行完病毒后转向执行原程序。,E9,:,E9,源代码:jump,源代码示例讲解,三、32位操作系统病毒示例分析,PE文件结构及其运行原理Win32文件型病毒编制技术从ring3到ring0概述,PE文件结构及其运行原理(1)PE文件格式总体结构,PE(PortableExecutable:可移植的执行体)是Win32环境自身所带的可执行文件格式。它的一些特性继承自Unix的Coff(CommonObjectFileFormat)文件格式。可移植的执行体意味着此文件格式是跨win32平台的,即使Windows运行在非Intel的CPU上,任何win32平台的PE装载器都能识别和使用该文件格式。当然,移植到不同的CPU上PE执行体必然得有一些改变。除VxD和16位的Dll外,所有win32执行文件都使用PE文件格式。因此,研究PE文件格式是我们洞悉Windows结构的良机。,PE文件结构总体层次分布,所有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文件了。这个重要数据结构就是PEheader。从编程角度看,PEheader实际就是一个IMAGE_NT_HEADERS结构。IMAGE_NT_HEADERS结构的定义如下:,IMAGE_NT_HEADERSSTRUCTSignatureddFileHeaderIMAGE_FILE_HEADEROptionalHeaderIMAGE_OPTIONAL_HEADER32IMAGE_NT_HEADERSENDSSignature:该域为PE标记,值为50h,45h,00h,00h(PE00)。IMAGE_DOS_SIGNATUREequ5A4DhIMAGE_OS2_SIGNATUREequ454EhIMAGE_OS2_SIGNATURE_LEequ454ChIMAGE_VXD_SIGNATUREequ454ChIMAGE_NT_SIGNATUREequ4550hFileHeader:该结构域包含了关于PE文件物理分布的信息,比如节数目、文件执行机器等。OptionalHeader:该结构域包含了关于PE文件逻辑分布的信息。,定位PEheader,DOSMZheader(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,注:节、节表和NumberOfSections的关系节表数组边界确定NumberOfSections全标示,(4)OptionalHeader,OptionalHeader是PEheader中最后,最大,也是最重要的成员,包含了PE文件的逻辑分布信息。该结构共有31个域。虚拟地址(VAVir

温馨提示

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

评论

0/150

提交评论