大学计算机病毒原理及防范技术-王路群-课件PPT
收藏
资源目录
压缩包内文档预览:
编号:21836107
类型:共享资源
大小:14.56MB
格式:ZIP
上传时间:2019-09-06
上传人:QQ24****1780
认证信息
个人认证
王**(实名认证)
浙江
IP属地:浙江
25
积分
- 关 键 词:
-
大学
计算机病毒
原理
防范
技术
王路群
课件
ppt
- 资源描述:
-
大学计算机病毒原理及防范技术-王路群-课件PPT,大学,计算机病毒,原理,防范,技术,王路群,课件,ppt
- 内容简介:
-
计算机病毒原理及防范技术中国水利水电出版社第1章计算机病毒基本技巧 7.4 花指令和变形术 7.3 病毒的多态 7.2 病毒简单加密 7.1 病毒隐藏技巧 7.5 代码优化 7.6 异常处理 教学要求:理解:病毒的代码优化和异常处理 掌握:病毒隐藏原理,病毒的多态、花指令和变形技术 7.1 病毒隐藏技巧 隐藏是病毒的天性,是病毒的一个最基本特征。任何病毒都希望在被感染的计算机中长期隐藏不被发现,因为病毒只有在不被发现的情况下,才能实施其破坏行为。为了达到这个目的,许多病毒使用了各种不同的技术来躲避反病毒软件的检测。 病毒的隐藏技巧,贯穿于3个模块(引导、感染、表现)之中,使病毒在运行过程中直到其表现(破坏)发作以前都尽可能地不被人发觉。引导型病毒、文件型病毒、宏病毒以及Windows环境下的病毒采用了不同的技术达到这个目的。 7.1 病毒隐藏技巧 (续)引导型病毒的隐藏技巧 引导型病毒一般采用两种方法进行隐藏:第一种方法是改变基本输入输出系统中断INT 13H(BIOS磁盘中断,利用它可以实现磁盘扇区的读写)的入口地址使其指向病毒代码,一旦有调用INT 13H读被感染扇区的请求时,引导型病毒将原来没有感染过的内容返回给调用程序。这样,任何DOS程序都无法觉察道病毒的存在,如果反病毒软件无法首先将内存中的病毒清除(也就是说首先恢复被替换的INT 13H中断服务程序),那么要彻底清除这种病毒是非常困难的。7.1 病毒隐藏技巧 (续)引导型病毒的隐藏技巧 另一种方法是专门针对杀毒软件的。随着反病毒技术地提高,一些杀毒软件采用直接读写磁盘扇区的方法而不是采用INT 13H中断方法读写磁盘扇区,这样能够解决引导型病毒采用第一种方式进行隐藏而造成的问题。为了针对杀毒软件采用的这种技术,引导型病毒在计算机系统启动任何程序的时候(包括反病毒程序),开始修改DOS执行程序的中断功能,将被病毒感染的扇区恢复成原样,这样即使反病毒软件采用直接读写磁盘扇区的方法看到的也是正常的磁盘扇区,当反病毒软件运行结束后再重新感染相应的磁盘扇区。 7.1 病毒隐藏技巧 (续) 文件型病毒的隐藏技巧 文件型病毒通过替换DOS或者基本输入输出系统(BIOS)的文件系统的相关调用,在打开文件的时候将文件的内容恢复成未被感染时的状态,在关闭文件的时候重新进行感染。因为操作系统访问文件的方式、方法非常多,所以实现文件型病毒的完全隐藏是一件非常困难的事情,一套比较完整的隐藏技术应该包括对下面几个方面的处理,如图7.3所示。7.1 病毒隐藏技巧 (续)文件型病毒的隐藏技巧图7.3 文件型病毒使用的隐藏技术7.1 病毒隐藏技巧 (续)宏病毒的隐藏技巧 由于宏病毒离不开它的运行环境(Office软件)和宏,所以宏病毒的隐藏技术和引导型病毒以及文件型病毒比起来要简单很多,只要在Word/Excel中禁止菜单“文件模板”或者“工具宏”就可以隐藏病毒了,可以通过宏病毒代码删除菜单项以及宏病毒用自己的FileTemplates和ToolsMacro宏替代系统缺省的宏就可以了。7.1 病毒隐藏技巧 (续)进程隐藏 实现进程或模块隐藏是一个成功病毒所必须具备的特征。 进程隐藏最常用的开源代码有RootKit,发现隐藏进程并杀死该隐藏进程可以参照瑞星的进程管理工具,也可以使用更专业的Icesword工具(Icesword工具可以同时杀死多个进程,这对多个相互守护的进程特别有效)。还有一种比较流行的进程隐藏技术,就是“远程线程注射”(remotethread injection) 。通常情况下,各个进程的内存空间是不可以相互访问的,这也是为程序能够稳定运行打下基础,这个访问限制让所有进程之间互相独立,这样一来,任何一个非系统关键进程发生崩溃时都不会影响到其他内存空间里的进程执行,从而使NT架构的稳定性远远高于Win9x架构。7.1 病毒隐藏技巧 (续)进程隐藏 但是在一些特定的场合里,必须让进程之间可以互相访问和管理,这就是“远程线程”技术的初衷,这个技术实现了进程之间的跨内存空间访问,其核心是产生一个特殊的线程,这个线程能够将一段执行代码连接到另一个进程所处的内存空间里,作为另一个进程的其中一个非核心线程来运行,从而达到交换数据的目的,这个连接的过程被称为“注射”(injection)。远程线程技术好比一棵寄生在大树上的蔓藤,一旦目标进程被注射,这段新生的线程就成为目标进程的一部分代码了,只要目标进程不被终止,原进程无论是否还在运行都不会再影响到执行结果了。7.2病毒简单加密病毒的简单加密是指对病毒的某些主题代码采用固定的密钥进行加密,这样静态反汇编出来的代码就是经过加密处理过的,因此在某种程度上可以起到保护病毒程序的目的。一个被简单加密的病毒一般有如下几个部分:解密算法(解开被加密的代码,以便病毒执行)。 病毒主体代码(被加密的病毒代码)。 跳转(病毒解密完毕后,跳到解密代码部分执行解密语句)。 7.2病毒简单加密(续)简单加密的加密算法比较简单,密钥也比较固定。由于所有的病毒代码都是完全相同的,如果该病毒的特征代码被提取出来,同样是不能逃脱反病毒软件的查杀。 7.3病毒的多态所谓病毒的多态,就是指一个病毒的每个样本的代码都不相同,它表现为多种状态。采用多态技术的病毒由于病毒代码不固定,这样就很难提取出该病毒的特征码,所以只采用特征码查毒法的杀毒软件是很难对这种病毒进行查杀的。多态病毒是改进了的加密病毒,由变化的解密头和加密的代码组成。多态病毒运行时,先执行的是解密代码,对加密代码解密,然后执行刚解密的代码,也就是实现传播的主体代码。7.3病毒的多态(续)简单加密病毒之所以代码固定,是因为它采用了相同的加密算法和密钥。如果病毒在每次感染其他文件时,改变密钥对解密后的病毒代码进行加密,那么会得到不同的加密代码。这样,由于病毒每次感染时所取的密钥不相同,那么最后得到的加密后的病毒代码也会不同。在多态技术中,由于要对解密后的代码用不同的密钥进行重新加密,那么在多态病毒中至少就需要另外一个加密部分。病毒密钥的生成,我们可以随机产生,也可以采用被感染计算机里面的某些特征。 7.3病毒的多态(续)多态性的级别 根据病毒使用多态技术的复杂程度,多态病毒大致可以划分为6个级别:半多态 病毒拥有一组解密算法,感染的时候从其中随机选择一种算法进行加密和感染。 具有不动点的多态 病毒有一条或几条语句是不变的(把这些不变的语句叫做不动点),其他病毒指令都是可变的。 7.3病毒的多态(续)多态性的级别 带有填充物的多态 解密代码中包含一些没有实际用途的代码来干扰分析者的视线。 算法固定的多态 解密代码所使用的算法是固定的,但是实现这个算法的指令和指令的次序是可变的。 算法可变的多态 使用了上面所有的技术,同时解密的算法也是可以部分或者全部改变的。完全多态 算法多态,同时病毒体可以随机分布在感染文件的各个位置,但是在运行的时候能够进行拼装,并且可以正常工作。 7.3病毒的多态(续)多态性的级别对于前面3种多态病毒,使用病毒特征码或者改进后的病毒特征码是可以发现病毒的(所谓的改进后的特征码,就是包括一些非比较字节的特征串),对于第4种多态病毒,由于代码的变化是有限的,所以通过增加多种情况的改进后的特征码,应该也可以处理。至于第5和第6种多态病毒,依靠传统的特征码技术是完全无能为力的。7.3病毒的多态(续)多态性的级别一个真正意义的多态应该可以创建每次都不同的自解密代码和不同的加密代码。一个好的多态引擎应该做到:创建不同的解密代码。 在真实的解密代码中创建垃圾指令。 可移动(可以包含在任意程序中)。 所有的多态机制都建立在随机过程上。 解密器大小可变。 尽量快且小。 7.3病毒的多态(续)多态病毒的原理 最简单的多态病毒: VStart: I2callstart;1start:I2popebx;2I3subebx,offsetstart;3I3movecx,VEndEncryptStart;4I3leaedi,offsetEncryptStart+ebx;5DecryptLoop:I3xoredi,byteptr00h;6DecryptKey=byteptr$-1;7I3incedi;8I2loopDecryptLoop;9EncryptStart:callGetKBasecallGetAPIzcallInfectThreadRet2Host:pushHostEntryebxret7.3病毒的多态(续)多态病毒的原理 这段代码的工作流程是:获得重定位信息。 将加密代码的偏移保存在edi中,将加密代码的大小保存在ecx中。 循环解密每一个字节。 解密完成后,病毒主体开始执行,进行获得地址,判断发作,感染文件,返回宿主等病毒的常规工作。必须注意的是:程序第一次运行时,EncryptStart开始的代码并没有被加密,此时key必须等于0,任何字节与0异或(XOR)后才不会改变。可是,当病毒复制自身的时候,写入其他文件内部的代码才是加密的,当然,写入的key值已不再是0,EncryptStart开始的代码也已经被加密,当这个染毒文件执行时,解密代码才会真正发挥作用。7.3病毒的多态(续) 多态病毒的原理改变指令顺序 多态很重要的一个工作就是可以交换解密指令位置,仅这个特性就可以使特征字符串扫描失效。上面的19可排列的指令具有如下规则: 指令13顺序不能改变。指令4可以在VStartDecryptLoop之间的任何地方。指令5必须在指令3之后,指令6之前。指令6 9顺序不能改变。 7.3病毒的多态(续)多态病毒的原理改变解密指令 改变指令是多态最重要的部分,多态应该可以如下变换指令:把单条指令展开为复杂的指令集把已知的指令集转换为单条指令 把指令变换为相同功能的指令 7.3病毒的多态(续)多态病毒的原理随机数的生成 因为多态必须建立在随机过程之上,避免有规律可循,所以选择一个好的随机数算法是非常重要的事情。垃圾代码的产生选择垃圾代码的原则:不能影响任何寄存器(当然,eip是一定要改变的)和标志位的状态。 不能修改程序中的任何数据。7.3病毒的多态(续)多态病毒的原理多态复制自身时的特殊性 我们知道,普通病毒复制自身只要简单的调用WriteFile(offsetVStart,VIRUS_SIZE)就可以了,而多态病毒的复制过程要复杂一些,它可以分为3个步骤:生成并写入解密代码 生成并写入密钥 写入病毒加密部分 7.3病毒的多态(续)多态病毒的对抗 对付多态病毒的最好办法是某种形式的虚拟执行技术,也就是仿真出一个80x86的CPU,让解密代码自己解密完成之后,再使用通常的特征码识别法进行病毒检测。 但是针对这种仿真技术也出现了一些具有反仿真技术的病毒,比如说根据执行所需要的时间判断是否处于虚拟机的监视下,在监视下和非监视下表现出完全不同的行为。 7.3病毒的多态(续)多态病毒的对抗 因此,衡量多态病毒的难度、复杂性和检测的困难程度可以从下面几个方面进行:采用算法的复杂性,是否采用了非公开、非标准的80x86指令,是否使用了大量的寻址方法和多种类型的指令实现解密算法。 是否使用了反仿真(虚拟执行)技术。 是否采用了可变的加密解密算法。 解密代码是否具有充分的随机性。 7.4花指令和变形术 花指令 一个没有任何防护措施的程序,很容易被完整地静态反汇编出来。为了达到迷惑破解者的目的,我们往往在程序中加入花指令。这不仅仅用在计算机病毒中以防止被轻易分析出其病毒结构和原理,它也常常用在很多正常的软件中,以防止遭到非法破解。所谓花指令就是在程序之间加入一些似乎没有什么意义的代码,这些代码不会妨碍程序的正常执行,但是在静态反汇编时,却会让原本正常的代码解释成难以读懂、甚至有些怪异的汇编代码。通过花指令,病毒可以防止被轻易的分析出其病毒结构和原理。7.4花指令和变形术 (续) 变形术 所谓病毒的变形技术就是同一个病毒在感染不同的宿主程序后所附加的代码不同。这给当前以静态特征码查毒为主要手段的杀毒软件以沉重的打击,使很多病毒在杀毒软件的眼底下为所欲为,却不被查杀。 病毒的变形是病毒加密的最高状态。它与多态技术不同的是:每次加密的原始病毒代码是变化的。我们选择垃圾代码时,一般有如下一些规则:不会破坏有用的寄存器。不改变存储器的内容。解密代码要用FLAGS时也不能改变FLAGS。7.5代码优化一个好的病毒讲究短小精悍,因为越精小的病毒就越不容易被发现,减少病毒的大小,还可以减少内存与磁盘空间的占用量,相对地也减短了在磁盘读写时所需的时间。所谓病毒代码的优化,应该是对病毒代码所占空间和运行所占时间两方面的优化。但是通常情况下,二者不可兼得,我们需要寻找这二者间的平衡点,具体取决于我们的实际需要。 7.6异常处理病毒程序在运行的过程中,由于环境的变化、程序设计上的失误等原因,有时候轻则会弹出提示窗口,重则会导致程序、甚至系统崩溃。为了不被发现,异常处理也经常用在计算机病毒中。7.6异常处理(续)异常处理的方式 Windows下的异常处理有两种方式:筛选器异常处理和SHE异常处理。筛选器异常处理的方式由程序指定一个异常处理回调函数,当发生异常的时候,Windows系统将调用这个回调函数,并根据回调函数的返回值决定下一步如何操作。对于一个进程来说,只有一个筛选器回调函数。 很明显,这种异常处理方式不便于模块的封装:由于筛选器回调函数是基于整个进程的,无法为一个线程或子程序单独设置一个异常处理回调函数,这样就无法将私有处理代码封装进某个模块中。SEH(Structured Exception Handling),即结构化异常处理,是操作系统提供给程序设计者的强有力的处理程序错误或异常的武器。 7.6异常处理(续)异常处理的方式 筛选器异常处理和SHE异常处理都是以回调函数的方式提供的;另外,系统都会根据回调函数的返回值选择不同的操作。但它们之间也有如下区别:SEH可以为美国线程设置不同的异常处理程序,而且可以为每个线程设置多个异常处理程序。两者的回调函数的参数定义和返回值的定义都不一样。 SEH使用了与硬件相关的数据指针,所以在不同硬件平台中使用SHE的方法会有所不同。 7.6异常处理(续)异常处理的过程 程序发生异常时,系统一般按如下顺序进行处理:因为有很多种异常,系统首先判断异常是否应发送给目标程序的异常处理例程,如果决定应该发送,并且目标程序正处于被调试状态,则系统挂起程序并向调试器发送EXCEPTION_DEBUG_EVENT消息,剩下的事情就由调试器全权负责。 如果进程没有被调试或者调试器不去处理这个异常,那么系统会检查异常所处的线程,并在这个线程环境中查看是否安装了SHE异常处理回调函数,如果有的话则调用它。 与每个线程相关的异常处理例程可以选择处理或者不处理
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。