计算机病毒原理及防范技术 王路群 第7章 计算机病毒基本技巧新_第1页
计算机病毒原理及防范技术 王路群 第7章 计算机病毒基本技巧新_第2页
计算机病毒原理及防范技术 王路群 第7章 计算机病毒基本技巧新_第3页
计算机病毒原理及防范技术 王路群 第7章 计算机病毒基本技巧新_第4页
计算机病毒原理及防范技术 王路群 第7章 计算机病毒基本技巧新_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

Virus计算机病毒原理及防范技术中国水利水电出版社2018/8/7 1第 1章 计算机病毒基本技巧 7.4 花指令和变形术 7.3 病毒的多态 7.2 病毒简单加密 7.1 病毒隐藏技巧 7.5 代码优化 7.6 异常处理 2教学要求:v理解:病毒的代码优化和异常处理 v掌握:病毒隐藏原理 ,病毒的多态、花指令和变形技术 37.1 病毒隐藏技巧 v 隐藏是病毒的天性,是病毒的一个最基本特征。任何病毒都希望在被感染的计算机中长期隐藏不被发现,因为病毒只有在不被发现的情况下,才能实施其破坏行为。为了达到这个目的,许多病毒使用了各种不同的技术来躲避反病毒软件的检测。 v 病毒的隐藏技巧,贯穿于 3个模块(引导、感染、表现)之中,使病毒在运行过程中直到其表现(破坏)发作以前都尽可能地不被人发觉。引导型病毒、文件型病毒、宏病毒以及 Windows环境下的病毒采用了不同的技术达到这个目的。 47.1 病毒隐藏技巧 (续)v引导型病毒的隐藏技巧 引导型病毒一般采用两种方法进行隐藏: 第一种方法是改变基本输入输出系统中断 INT 13H( BIOS磁盘中断,利用它可以实现磁盘扇区的读写)的入口地址使其指向病毒代码,一旦有调用 INT 13H读被感染扇区的请求时,引导型病毒将原来没有感染过的内容返回给调用程序。这样,任何 DOS程序都无法觉察道病毒的存在,如果反病毒软件无法首先将内存中的病毒清除(也就是说首先恢复被替换的 INT 13H中断服务程序),那么要彻底清除这种病毒是非常困难的。57.1 病毒隐藏技巧 (续)v引导型病毒的隐藏技巧 另一种方法是专门针对杀毒软件的。随着反病毒技术地提高,一些杀毒软件采用直接读写磁盘扇区的方法而不是采用 INT 13H中断方法读写磁盘扇区,这样能够解决引导型病毒采用第一种方式进行隐藏而造成的问题。为了针对杀毒软件采用的这种技术,引导型病毒在计算机系统启动任何程序的时候(包括反病毒程序),开始修改DOS执行程序的中断功能,将被病毒感染的扇区恢复成原样,这样即使反病毒软件采用直接读写磁盘扇区的方法看到的也是正常的磁盘扇区,当反病毒软件运行结束后再重新感染相应的磁盘扇区。 67.1 病毒隐藏技巧 (续)v 文件型病毒的隐藏技巧 文件型病毒通过替换 DOS或者基本输入输出系统( BIOS)的文件系统的相关调用,在打开文件的时候将文件的内容恢复成未被感染时的状态,在关闭文件的时候重新进行感染。 因为操作系统访问文件的方式、方法非常多,所以实现文件型病毒的完全隐藏是一件非常困难的事情,一套比较完整的隐藏技术应该包括对下面几个方面的处理,如图 7.3所示。77.1 病毒隐藏技巧 (续)v 文件型病毒的隐藏技巧图 7.3 文件型病毒使用的隐藏技术87.1 病毒隐藏技巧 (续)v宏病毒的隐藏技巧 由于宏病毒离不开它的运行环境( Office软件)和宏,所以宏病毒的隐藏技术和引导型病毒以及文件型病毒比起来要简单很多,只要在 Word/Excel中禁止菜单 “文件 模板 ”或者 “工具 宏 ”就可以隐藏病毒了,可以通过宏病毒代码删除菜单项以及宏病毒用自己的 FileTemplates和 ToolsMacro宏替代系统缺省的宏就可以了。97.1 病毒隐藏技巧 (续)v进程隐藏 实现进程或模块隐藏是一个成功病毒所必须具备的特征。 进程隐藏最常用的开源代码有 RootKit,发现隐藏进程并杀死该隐藏进程可以参照瑞星的进程管理工具,也可以使用更专业的 Icesword工具( Icesword工具可以同时杀死多个进程,这对多个相互守护的进程特别有效)。 还有一种比较流行的进程隐藏技术,就是 “远程线程注射 ”(remotethread injection) 。通常情况下,各个进程的内存空间是不可以相互访问的,这也是为程序能够稳定运行打下基础,这个访问限制让所有进程之间互相独立,这样一来,任何一个非系统关键进程发生崩溃时都不会影响到其他内存空间里的进程执行,从而使 NT架构的稳定性远远高于 Win9x架构。107.1 病毒隐藏技巧 (续)v进程隐藏 但是在一些特定的场合里,必须让进程之间可以互相访问和管理,这就是 “远程线程 ”技术的初衷,这个技术实现了进程之间的跨内存空间访问,其核心是产生一个特殊的线程,这个线程能够将一段执行代码连接到另一个进程所处的内存空间里,作为另一个进程的其中一个非核心线程来运行,从而达到交换数据的目的,这个连接的过程被称为 “注射 ”(injection)。 远程线程技术好比一棵寄生在大树上的蔓藤,一旦目标进程被注射,这段新生的线程就成为目标进程的一部分代码了,只要目标进程不被终止,原进程无论是否还在运行都不会再影响到执行结果了。117.2 病毒简单加密v 病毒的简单加密是指对病毒的某些主题代码采用固定的密钥进行加密,这样静态反汇编出来的代码就是经过加密处理过的,因此在某种程度上可以起到保护病毒程序的目的。v 一个被简单加密的病毒一般有如下几个部分: 解密算法(解开被加密的代码,以便病毒执行)。 病毒主体代码(被加密的病毒代码)。 跳转(病毒解密完毕后,跳到解密代码部分执行解密语句)。 127.2 病毒简单加密(续)v 简单加密的加密算法比较简单,密钥也比较固定。由于所有的病毒代码都是完全相同的,如果该病毒的特征代码被提取出来,同样是不能逃脱反病毒软件的查杀。 137.3 病毒的多态v 所谓病毒的多态,就是指一个病毒的每个样本的代码都不相同,它表现为多种状态。采用多态技术的病毒由于病毒代码不固定,这样就很难提取出该病毒的特征码,所以只采用特征码查毒法的杀毒软件是很难对这种病毒进行查杀的。v 多态病毒是改进了的加密病毒,由变化的解密头和加密的代码组成。多态病毒运行时,先执行的是解密代码,对加密代码解密,然后执行刚解密的代码,也就是实现传播的主体代码。147.3 病毒的多态(续)v 简单加密病毒之所以代码固定,是因为它采用了相同的加密算法和密钥。如果病毒在每次感染其他文件时,改变密钥对解密后的病毒代码进行加密,那么会得到不同的加密代码。这样,由于病毒每次感染时所取的密钥不相同,那么最后得到的加密后的病毒代码也会不同。v 在多态技术中,由于要对解密后的代码用不同的密钥进行重新加密,那么在多态病毒中至少就需要另外一个加密部分。病毒密钥的生成,我们可以随机产生,也可以采用被感染计算机里面的某些特征。 157.3 病毒的多态(续)v多态性的级别 根据病毒使用多态技术的复杂程度,多态病毒大致可以划分为 6个级别: 半多态 病毒拥有一组解密算法,感染的时候从其中随机选择一种算法进行加密和感染。 具有不动点的多态 病毒有一条或几条语句是不变的(把这些不变的语句叫做不动点),其他病毒指令都是可变的。 167.3 病毒的多态(续)v多态性的级别 带有填充物的多态 解密代码中包含一些没有实际用途的代码来干扰分析者的视线。 算法固定的多态 解密代码所使用的算法是固定的,但是实现这个算法的指令和指令的次序是可变的。 算法可变的多态 使用了上面所有的技术,同时解密的算法也是可以部分或者全部改变的。 完全多态 算法多态,同时病毒体可以随机分布在感染文件的各个位置,但是在运行的时候能够进行拼装,并且可以正常工作。 177.3 病毒的多态(续)v多态性的级别 对于前面 3种多态病毒,使用病毒特征码或者改进后的病毒特征码是可以发现病毒的(所谓的改进后的特征码,就是包括一些非比较字节的特征串),对于第 4种多态病毒,由于代码的变化是有限的,所以通过增加多种情况的改进后的特征码,应该也可以处理。至于第 5和第 6种多态病毒,依靠传统的特征码技术是完全无能为力的。187.3 病毒的多态(续)v多态性的级别 一个真正意义的多态应该可以创建每次都不同的自解密代码和不同的加密代码。一个好的多态引擎应该做到: 创建不同的解密代码。 在真实的解密代码中创建垃圾指令。 可移动(可以包含在任意程序中)。 所有的多态机制都建立在随机过程上。 解密器大小可变。 尽量快且小。 197.3 病毒的多态(续)v 多态病毒的原理 最简单的多态病毒: VStart: I2 call start ;1 start: I2 pop ebx ;2 I3 sub ebx , offset start ;3 I3 mov ecx , VEnd EncryptStart ;4 I3 lea edi , offset EncryptStart+ebx ;5 DecryptLoop: I3 xor edi , byte ptr 00h ;6 DecryptKey = byte ptr $ - 1 ;7 I3 inc edi ;8 I2 loop DecryptLoop ;9 EncryptStart: call GetKBase call GetAPIz call InfectThread Ret2Host: push HostEntryebx ret207.3 病毒的多态(续)v多态病毒的原理 这段代码的工作流程是: 获得重定位信息。 将加密代码的偏移保存在 edi中,将加密代码的大小保存在 ecx中。 循环解密每一个字节。 解密完成后,病毒主体开始执行,进行获得地址,判断发作,感染文件,返回宿主等病毒的常规工作。 必须注意的是:程序第一次运行时, EncryptStart开始的代码并没有被加密,此时 key必须等于 0,任何字节与 0异或( XOR)后才不会改变。可是,当病毒复制自身的时候,写入其他文件内部的代码才是加密的,当然,写入的 key值已不再是 0, EncryptStart开始的代码也已经被加密,当这个染毒文件执行时,解密代码才会真正发挥作用。217.3 病毒的多态(续) v多态病毒的原理 改变指令顺序 多态很重要的一个工作就是可以交换解密指令位置,仅这个特性就可以使特征字符串扫描失效。 上面的 1 9可排列的指令具有如下规则: 指令 1 3 顺序不能改变。 指令 4可以在 VStartDecryptLoop之间的任何地方。 指令 5 必须在指令 3之后,指令 6之前。 指令 6 9 顺序不能改变。 227.3 病毒的多态(续)v多态病毒的原理 改变解密指令 改变指令是多态最重要的部分,多态应该可以如下变换指令: 把单条指令展开为复杂的指令集 把已知的指令集转换为单条指令 把指令变换为相同功能的指令 237.3 病毒的多态(续)v 多态病毒的原理 随机数的生成 因为多态必须建立在随机过程之上,避免有规律可循,所以选择一个好的随机数算法是非常重要的事情 。 垃圾代码的产生 选择垃圾代码的原则: 不能影响任何寄存器(当然, eip是一定要改变的)和标志位的状态。 不能修改程序中的任何数据。247.3 病毒的多态(续)v多态病毒的原理 多态复制自身时的特殊性 我们知道,普通病毒复制自身只要简单的调用 WriteFile( offset VStart,VIRUS_SIZE)就可以了,而多态病毒的复制过程要复杂一些,它可以分为 3个步骤: 生成并写入解密代码 生成并写入密钥 写入病毒加密部分 257.3 病毒的多态(续)v多态病毒的对抗 对付多态病毒的最好办法是某种形式的虚拟执行技术,也就是仿真出一个 80x86的 CPU,让解密代码自己解密完成之后,再使用通常的特征码识别法进行病毒检测。 但是针对这种仿真技术也出现了一些具有反仿真技术的病毒,比如说根据执行所需要的时间判断是否处于虚拟机的监视下,在监视下和非监视下表现出完全不同的行为。 267.3 病毒的多态(续)v多态病毒的对抗 因此,衡量多态病毒的难度、复杂性和检测的困难程度可以从下面几个方面进行: 采用算法的复杂性,是否采用了非公开、非标准的 80x86指令,是否使用了大量的寻址方法和多种类型的指令实现解密算法。 是否使用了反仿真(虚拟执行)技术。 是否采用了可变的加密解密算法。 解密代码是否具有充分的随机性。 277.4 花指令和变形术 v花指令 一个没有任何防护措施的程序,很容易被完整地静态反汇编出来。为了达到迷惑破解者的目的,我们往往在程序中加入花指令。这不仅仅用在计算机病毒中以防止被轻易分析出其病毒结构和原理,它也常常用在很多正常的软件中,以防止遭到非法破解。 所谓花指令就是在程序之间加入一些似乎没有什么意义的代码,这些代码不会妨碍程序的正常执行,但是在静态反汇编时,却会让原本正常的代码解释成难以读懂、甚至有些怪异的汇编代码。通过花指令,病毒可以防止被轻易的分析出其病毒结构和原理。287.4 花指令和变形术 (续)v 变形术 所谓病毒的变形技术就是同一个病毒在感染不同的宿主程序后所附加的代码不同。这给当前以静态特征码查毒为主要手段的杀毒软件以沉重的打击,使很多病毒在杀毒软件的眼底下为所欲为,却不被查杀。 病毒的变

温馨提示

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

评论

0/150

提交评论