《计算机病毒原理及防范技术》课件第7章 计算机病毒基本技巧.ppt

上传人(卖家):momomo 文档编号:7379461 上传时间:2023-12-15 格式:PPT 页数:39 大小:461.50KB
下载 相关 举报
《计算机病毒原理及防范技术》课件第7章 计算机病毒基本技巧.ppt_第1页
第1页 / 共39页
《计算机病毒原理及防范技术》课件第7章 计算机病毒基本技巧.ppt_第2页
第2页 / 共39页
《计算机病毒原理及防范技术》课件第7章 计算机病毒基本技巧.ppt_第3页
第3页 / 共39页
《计算机病毒原理及防范技术》课件第7章 计算机病毒基本技巧.ppt_第4页
第4页 / 共39页
《计算机病毒原理及防范技术》课件第7章 计算机病毒基本技巧.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、中国水利水电出版社中国水利水电出版社第1章计算机病毒基本技巧 7.4 花指令和变形术花指令和变形术 7.3 病毒的多态病毒的多态 7.2 病毒简单加密病毒简单加密 7.1 病毒隐藏技巧病毒隐藏技巧 7.5 代码优化代码优化 7.6 异常处理异常处理 教学要求:v 理解:病毒的代码优化和异常处理 v 掌握:病毒隐藏原理,病毒的多态、花指令和变形技术 7.1 病毒隐藏技巧 v 隐藏是病毒的天性,是病毒的一个最基本特征。任何病毒都希望在被感染的计算机中长期隐藏不被发现,因为病毒只有在不被发现的情况下,才能实施其破坏行为。为了达到这个目的,许多病毒使用了各种不同的技术来躲避反病毒软件的检测。v 病毒的

2、隐藏技巧,贯穿于3个模块(引导、感染、表现)之中,使病毒在运行过程中直到其表现(破坏)发作以前都尽可能地不被人发觉。引导型病毒、文件型病毒、宏病毒以及Windows环境下的病毒采用了不同的技术达到这个目的。7.1 病毒隐藏技巧(续)v引导型病毒的隐藏技巧引导型病毒的隐藏技巧 引导型病毒一般采用两种方法进行隐藏:第一种方法是改变基本输入输出系统中断INT 13H(BIOS磁盘中断,利用它可以实现磁盘扇区的读写)的入口地址使其指向病毒代码,一旦有调用INT 13H读被感染扇区的请求时,引导型病毒将原来没有感染过的内容返回给调用程序。这样,任何DOS程序都无法觉察道病毒的存在,如果反病毒软件无法首先

3、将内存中的病毒清除(也就是说首先恢复被替换的INT 13H中断服务程序),那么要彻底清除这种病毒是非常困难的。7.1 病毒隐藏技巧(续)v引导型病毒的隐藏技巧引导型病毒的隐藏技巧 另一种方法是专门针对杀毒软件的。随着反病毒技术地提高,一些杀毒软件采用直接读写磁盘扇区的方法而不是采用INT 13H中断方法读写磁盘扇区,这样能够解决引导型病毒采用第一种方式进行隐藏而造成的问题。为了针对杀毒软件采用的这种技术,引导型病毒在计算机系统启动任何程序的时候(包括反病毒程序),开始修改DOS执行程序的中断功能,将被病毒感染的扇区恢复成原样,这样即使反病毒软件采用直接读写磁盘扇区的方法看到的也是正常的磁盘扇区

4、,当反病毒软件运行结束后再重新感染相应的磁盘扇区。7.1 病毒隐藏技巧(续)v 文件型病毒的隐藏技巧文件型病毒的隐藏技巧 文件型病毒通过替换DOS或者基本输入输出系统(BIOS)的文件系统的相关调用,在打开文件的时候将文件的内容恢复成未被感染时的状态,在关闭文件的时候重新进行感染。因为操作系统访问文件的方式、方法非常多,所以实现文件型病毒的完全隐藏是一件非常困难的事情,一套比较完整的隐藏技术应该包括对下面几个方面的处理,如图7.3所示。7.1 病毒隐藏技巧(续)v 文件型病毒的隐藏技巧文件型病毒的隐藏技巧图7.3 文件型病毒使用的隐藏技术7.1 病毒隐藏技巧(续)v宏病毒的隐藏技巧宏病毒的隐藏

5、技巧 由于宏病毒离不开它的运行环境(Office软件)和宏,所以宏病毒的隐藏技术和引导型病毒以及文件型病毒比起来要简单很多,只要在Word/Excel中禁止菜单“文件模板”或者“工具宏”就可以隐藏病毒了,可以通过宏病毒代码删除菜单项以及宏病毒用自己的FileTemplates和ToolsMacro宏替代系统缺省的宏就可以了。7.1 病毒隐藏技巧(续)v进程隐藏进程隐藏 实现进程或模块隐藏是一个成功病毒所必须具备的特征。进程隐藏最常用的开源代码有RootKit,发现隐藏进程并杀死该隐藏进程可以参照瑞星的进程管理工具,也可以使用更专业的Icesword工具(Icesword工具可以同时杀死多个进程

6、,这对多个相互守护的进程特别有效)。还有一种比较流行的进程隐藏技术,就是“远程线程注射”(remotethread injection)。通常情况下,各个进程的内存空间是不可以相互访问的,这也是为程序能够稳定运行打下基础,这个访问限制让所有进程之间互相独立,这样一来,任何一个非系统关键进程发生崩溃时都不会影响到其他内存空间里的进程执行,从而使NT架构的稳定性远远高于Win9x架构。7.1 病毒隐藏技巧(续)v进程隐藏进程隐藏 但是在一些特定的场合里,必须让进程之间可以互相访问和管理,这就是“远程线程”技术的初衷,这个技术实现了进程之间的跨内存空间访问,其核心是产生一个特殊的线程,这个线程能够将

7、一段执行代码连接到另一个进程所处的内存空间里,作为另一个进程的其中一个非核心线程来运行,从而达到交换数据的目的,这个连接的过程被称为“注射”(injection)。远程线程技术好比一棵寄生在大树上的蔓藤,一旦目标进程被注射,这段新生的线程就成为目标进程的一部分代码了,只要目标进程不被终止,原进程无论是否还在运行都不会再影响到执行结果了。7.2 病毒简单加密v 病毒的简单加密是指对病毒的某些主题代码采用固定的密病毒的简单加密是指对病毒的某些主题代码采用固定的密钥进行加密,这样静态反汇编出来的代码就是经过加密处钥进行加密,这样静态反汇编出来的代码就是经过加密处理过的,因此在某种程度上可以起到保护病

8、毒程序的目的。理过的,因此在某种程度上可以起到保护病毒程序的目的。v 一个被简单加密的病毒一般有如下几个部分:一个被简单加密的病毒一般有如下几个部分:解密算法(解开被加密的代码,以便病毒执行)。病毒主体代码(被加密的病毒代码)。跳转(病毒解密完毕后,跳到解密代码部分执行解密语句)。7.2 病毒简单加密(续)v 简单加密的加密算法比较简单,密钥也比较固定。由于所简单加密的加密算法比较简单,密钥也比较固定。由于所有的病毒代码都是完全相同的,如果该病毒的特征代码被有的病毒代码都是完全相同的,如果该病毒的特征代码被提取出来,同样是不能逃脱反病毒软件的查杀。提取出来,同样是不能逃脱反病毒软件的查杀。7.

9、3 病毒的多态v 所谓病毒的多态,就是指一个病毒的每个样本的代码都不相同,它表所谓病毒的多态,就是指一个病毒的每个样本的代码都不相同,它表现为多种状态。采用多态技术的病毒由于病毒代码不固定,这样就很现为多种状态。采用多态技术的病毒由于病毒代码不固定,这样就很难提取出该病毒的特征码,所以只采用特征码查毒法的杀毒软件是很难提取出该病毒的特征码,所以只采用特征码查毒法的杀毒软件是很难对这种病毒进行查杀的。难对这种病毒进行查杀的。v 多态病毒是改进了的加密病毒,由变化的解密头和加密的代码组成。多态病毒是改进了的加密病毒,由变化的解密头和加密的代码组成。多态病毒运行时,先执行的是解密代码,对加密代码解密

10、,然后执行多态病毒运行时,先执行的是解密代码,对加密代码解密,然后执行刚解密的代码,也就是实现传播的主体代码。刚解密的代码,也就是实现传播的主体代码。7.3 病毒的多态(续)v 简单加密病毒之所以代码固定,是因为它采用了相同的加密算法和密简单加密病毒之所以代码固定,是因为它采用了相同的加密算法和密钥。如果病毒在每次感染其他文件时,改变密钥对解密后的病毒代码钥。如果病毒在每次感染其他文件时,改变密钥对解密后的病毒代码进行加密,那么会得到不同的加密代码。这样,由于病毒每次感染时进行加密,那么会得到不同的加密代码。这样,由于病毒每次感染时所取的密钥不相同,那么最后得到的加密后的病毒代码也会不同。所取

11、的密钥不相同,那么最后得到的加密后的病毒代码也会不同。v 在多态技术中,由于要对解密后的代码用不同的密钥进行重新加密,在多态技术中,由于要对解密后的代码用不同的密钥进行重新加密,那么在多态病毒中至少就需要另外一个加密部分。病毒密钥的生成,那么在多态病毒中至少就需要另外一个加密部分。病毒密钥的生成,我们可以随机产生,也可以采用被感染计算机里面的某些特征。我们可以随机产生,也可以采用被感染计算机里面的某些特征。7.3 病毒的多态(续)v多态性的级别多态性的级别 根据病毒使用多态技术的复杂程度,多态病毒大致可以划分为6个级别:半多态 病毒拥有一组解密算法,感染的时候从其中随机选择一种算法进行加密和感

12、染。具有不动点的多态 病毒有一条或几条语句是不变的(把这些不变的语句叫做不动点),其他病毒指令都是可变的。7.3 病毒的多态(续)v多态性的级别多态性的级别 带有填充物的多态 解密代码中包含一些没有实际用途的代码来干扰分析者的视线。算法固定的多态 解密代码所使用的算法是固定的,但是实现这个算法的指令和指令的次序是可变的。算法可变的多态 使用了上面所有的技术,同时解密的算法也是可以部分或者全部改变的。完全多态 算法多态,同时病毒体可以随机分布在感染文件的各个位置,但是在运行的时候能够进行拼装,并且可以正常工作。7.3 病毒的多态(续)v多态性的级别多态性的级别 对于前面3种多态病毒,使用病毒特征

13、码或者改进后的病毒特征码是可以发现病毒的(所谓的改进后的特征码,就是包括一些非比较字节的特征串),对于第4种多态病毒,由于代码的变化是有限的,所以通过增加多种情况的改进后的特征码,应该也可以处理。至于第5和第6种多态病毒,依靠传统的特征码技术是完全无能为力的。7.3 病毒的多态(续)v多态性的级别多态性的级别 一个真正意义的多态应该可以创建每次都不同的自解密代码和不同的加密代码。一个好的多态引擎应该做到:创建不同的解密代码。在真实的解密代码中创建垃圾指令。可移动(可以包含在任意程序中)。所有的多态机制都建立在随机过程上。解密器大小可变。尽量快且小。7.3 病毒的多态(续)v 多态病毒的原理多态

14、病毒的原理 最简单的多态病毒:VStart:I2 call start ;1start:I2 pop ebx ;2I3 sub ebx,offset start ;3I3 mov ecx,VEnd EncryptStart ;4I3 lea edi,offset EncryptStart+ebx ;5DecryptLoop:I3 xor edi,byte ptr 00h;6DecryptKey =byte ptr$-1 ;7 I3 inc edi ;8 I2 loop DecryptLoop ;9EncryptStart:call GetKBase call GetAPIzcall Infec

15、tThreadRet2Host:push HostEntryebx ret7.3 病毒的多态(续)v多态病毒的原理多态病毒的原理 这段代码的工作流程是:获得重定位信息。将加密代码的偏移保存在edi中,将加密代码的大小保存在ecx中。循环解密每一个字节。解密完成后,病毒主体开始执行,进行获得地址,判断发作,感染文件,返回宿主等病毒的常规工作。必须注意的是:程序第一次运行时,EncryptStart开始的代码并没有被加密,此时key必须等于0,任何字节与0异或(XOR)后才不会改变。可是,当病毒复制自身的时候,写入其他文件内部的代码才是加密的,当然,写入的key值已不再是0,EncryptStar

16、t开始的代码也已经被加密,当这个染毒文件执行时,解密代码才会真正发挥作用。7.3 病毒的多态(续)v多态病毒的原理多态病毒的原理 改变指令顺序 多态很重要的一个工作就是可以交换解密指令位置,仅这个特性就可以使特征字符串扫描失效。上面的19可排列的指令具有如下规则:指令 13 顺序不能改变。指令 4可以在VStartDecryptLoop之间的任何地方。指令 5 必须在指令3之后,指令6之前。指令 6 9 顺序不能改变。7.3 病毒的多态(续)v多态病毒的原理多态病毒的原理 改变解密指令 改变指令是多态最重要的部分,多态应该可以如下变换指令:把单条指令展开为复杂的指令集 把已知的指令集转换为单条

17、指令 把指令变换为相同功能的指令 7.3 病毒的多态(续)v 多态病毒的原理多态病毒的原理 随机数的生成 因为多态必须建立在随机过程之上,避免有规律可循,所以选择一个好的随机数算法是非常重要的事情。垃圾代码的产生 选择垃圾代码的原则:不能影响任何寄存器(当然,eip是一定要改变的)和标志位的状态。不能修改程序中的任何数据。7.3 病毒的多态(续)v多态病毒的原理多态病毒的原理 多态复制自身时的特殊性 我们知道,普通病毒复制自身只要简单的调用WriteFile(offset VStart,VIRUS_SIZE)就可以了,而多态病毒的复制过程要复杂一些,它可以分为3个步骤:生成并写入解密代码 生成

18、并写入密钥 写入病毒加密部分 7.3 病毒的多态(续)v多态病毒的对抗多态病毒的对抗 对付多态病毒的最好办法是某种形式的虚拟执行技术,也就是仿真出一个80 x86的CPU,让解密代码自己解密完成之后,再使用通常的特征码识别法进行病毒检测。但是针对这种仿真技术也出现了一些具有反仿真技术的病毒,比如说根据执行所需要的时间判断是否处于虚拟机的监视下,在监视下和非监视下表现出完全不同的行为。7.3 病毒的多态(续)v多态病毒的对抗多态病毒的对抗 因此,衡量多态病毒的难度、复杂性和检测的困难程度可以从下面几个方面进行:采用算法的复杂性,是否采用了非公开、非标准的80 x86指令,是否使用了大量的寻址方法

19、和多种类型的指令实现解密算法。是否使用了反仿真(虚拟执行)技术。是否采用了可变的加密解密算法。解密代码是否具有充分的随机性。7.4 花指令和变形术 v花指令花指令 一个没有任何防护措施的程序,很容易被完整地静态反汇编出来。为了达到迷惑破解者的目的,我们往往在程序中加入花指令。这不仅仅用在计算机病毒中以防止被轻易分析出其病毒结构和原理,它也常常用在很多正常的软件中,以防止遭到非法破解。所谓花指令就是在程序之间加入一些似乎没有什么意义的代码,这些代码不会妨碍程序的正常执行,但是在静态反汇编时,却会让原本正常的代码解释成难以读懂、甚至有些怪异的汇编代码。通过花指令,病毒可以防止被轻易的分析出其病毒结

20、构和原理。7.4 花指令和变形术(续)v 变形术变形术 所谓病毒的变形技术就是同一个病毒在感染不同的宿主程序后所附加的代码不同。这给当前以静态特征码查毒为主要手段的杀毒软件以沉重的打击,使很多病毒在杀毒软件的眼底下为所欲为,却不被查杀。病毒的变形是病毒加密的最高状态。它与多态技术不同的是:每次加密的原始病毒代码是变化的。我们选择垃圾代码时,一般有如下一些规则:不会破坏有用的寄存器。不改变存储器的内容。解密代码要用FLAGS时也不能改变FLAGS。7.5 代码优化v 一个好的病毒讲究短小精悍,因为越精小的病毒就越不容易被发现,减少病毒的大小,还可以减少内存与磁盘空间的占用量,相对地也减短了在磁盘

21、读写时所需的时间。v 所谓病毒代码的优化,应该是对病毒代码所占空间和运行所占时间两方面的优化。但是通常情况下,二者不可兼得,我们需要寻找这二者间的平衡点,具体取决于我们的实际需要。7.6 异常处理v病毒程序在运行的过程中,由于环境的变化、程序设计上的失误等原因,有时候轻则会弹出提示窗口,重则会导致程序、甚至系统崩溃。为了不被发现,异常处理也经常用在计算机病毒中。7.6 异常处理(续)v异常处理的方式异常处理的方式 Windows下的异常处理有两种方式:筛选器异常处理和SHE异常处理。筛选器异常处理的方式由程序指定一个异常处理回调函数,当发生异常的时候,Windows系统将调用这个回调函数,并根

22、据回调函数的返回值决定下一步如何操作。对于一个进程来说,只有一个筛选器回调函数。很明显,这种异常处理方式不便于模块的封装:由于筛选器回调函数是基于整个进程的,无法为一个线程或子程序单独设置一个异常处理回调函数,这样就无法将私有处理代码封装进某个模块中。SEH(Structured Exception Handling),即结构化异常处理,是操作系统提供给程序设计者的强有力的处理程序错误或异常的武器。7.6 异常处理(续)v异常处理的方式异常处理的方式 筛选器异常处理和SHE异常处理都是以回调函数的方式提供的;另外,系统都会根据回调函数的返回值选择不同的操作。但它们之间也有如下区别:SEH可以为

23、美国线程设置不同的异常处理程序,而且可以为每个线程设置多个异常处理程序。两者的回调函数的参数定义和返回值的定义都不一样。SEH使用了与硬件相关的数据指针,所以在不同硬件平台中使用SHE的方法会有所不同。7.6 异常处理(续)v异常处理的过程异常处理的过程 程序发生异常时,系统一般按如下顺序进行处理:因为有很多种异常,系统首先判断异常是否应发送给目标程序的异常处理例程,如果决定应该发送,并且目标程序正处于被调试状态,则系统挂起程序并向调试器发送EXCEPTION_DEBUG_EVENT消息,剩下的事情就由调试器全权负责。如果进程没有被调试或者调试器不去处理这个异常,那么系统会检查异常所处的线程,

24、并在这个线程环境中查看是否安装了SHE异常处理回调函数,如果有的话则调用它。与每个线程相关的异常处理例程可以选择处理或者不处理这个异常,如果它不处理并且安装了与多个线程相关的异常处理例程,可交由链起来的其他例程处理。如果这些例程均选择不处理异常,并且程序正处于被调试状态,操作系统会再次挂起程序通过调试器。7.6 异常处理(续)v异常处理的过程异常处理的过程 如果程序未处于被调试状态或者调试器没有能够处理,那么系统将检查是否安装了筛选器回调函数,如果有,则去调用它。系统默认的异常处理会根据筛选器回调函数返回的值作相应的动作。如果没有安装筛选器回调函数,或者它没有处理这个异常,系统会调用默认的系统

25、处理程序,通常显示一个对话框,你可以选择关闭或者最后将其附加到调试器上的调试按钮。如果没有调试器能被附加于其上或者调试器也处理不了,系统就调用ExitProcess终结程序。不过在终结之前,系统仍然对发生异常的线程异常处理句柄来一次展开,这是线程异常处理例程最后清理的机会。7.6 异常处理(续)v异常处理的过程异常处理的过程 整个过程基本上是这样的:系统按照调试器、SEH 链上的从新到旧的各个回调函数、筛选器回调函数的步骤一个一个地去调用它们,直到有一个回调函数愿意处理异常为止,如果都不愿意处理该异常,则由系统默认的异常处理程序来终止发生异常的进程。7.6 异常处理(续)v异常处理的参数异常处理的参数 传递给筛选器异常处理型的参数 传递给per_thread型异常处理程序的参数 习 题 v 1病毒是如何隐藏的?你能想出更好的隐藏方法吗?病毒是如何隐藏的?你能想出更好的隐藏方法吗?v 2什么是多态(变形)病毒?病毒如何实现多态?你觉什么是多态(变形)病毒?病毒如何实现多态?你觉得怎么对抗多态病毒更有效?得怎么对抗多态病毒更有效?v 3什么是花指令?其理论依据是什么?什么是花指令?其理论依据是什么?v 4病毒为什么要进行异常处理?异常处理的两种方式是病毒为什么要进行异常处理?异常处理的两种方式是什么?系统对异常处理的一般流程是什么?什么?系统对异常处理的一般流程是什么?

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中职 > 综合专业
版权提示 | 免责声明

1,本文(《计算机病毒原理及防范技术》课件第7章 计算机病毒基本技巧.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|