1、 计算机病毒的攻与防课程论文课程名称TCP/IP 协议原理与应用 专 业 计算机科学与技术 年 级 2008 级 姓 名 郑 重 学 号 122512008076 任课教师 王普彪 开课时间 2011 年 2 月 教师评阅意见:论文成绩 评阅日期摘 要 :计算机技术不断进化创新,病毒技术也与时俱进。病毒己经成为一种社会现象,影响力与日俱增。现在的视窗操作系统下的病毒己经非常完善了,它们使用汇编、高级和脚本语言编写,利用了系统的种种漏洞,使用先进的加密和隐藏算法,可以对杀毒软件进行攻击。全世界每年因病毒造成的损失不可估量。在反病毒行业中,杀毒软件厂商迫于商业性的目的,不得不将一些很简单的问题隐藏
2、在广告和宣传的迷雾之中。从 Win32 病毒所需基础知识开始, 详细阐述了 PE 格式、重定位、API 地址获取、遍历网络与硬盘、利用 IRC,P2P,E-Mail 传播病毒的原理与细节。最后,本文讨论了反病毒的一些关键技术:样 本的截获、特征码提取、特征字原理以及当前最流行的对抗变形和未知病毒的启发式扫描技术。关键词: 病毒;多态; 变形; 扫描;启发式i1. 绪论 .11.1 课题背景 .11.1.1 什么是计算机病毒 11.1.2 目的与意义 22. 病毒基础知识 22.1 PE 文件格式与计算机病毒 22.1.1 PE 文件格式与 Win32 病毒的关系 .22.1.2 PE 文件格式
3、介绍 .32.2 地址与汇编指令的本质 42.2.1 地址的基本概念 42.2.2 映射的本质 42.2.3 重要汇编指令的含义与技巧 52.3 方汇编技术 62.4 小结 .63. 病毒传播途径 73.1 通过 1PC 传播 .73.2 通过电子邮件传播 73.2.1 原理 73.2.2 SMTP 协议框架 .83.3 利用 Sniffer 来建立信任关系 83.4 通过 IRC 聊天通道传播 94. 病毒的攻与防 94.l 样本截获技术 .94.2 提取样本技术 .104.3 如何发现普通病毒 .104.3.1 特征码扫描简介 104.3.2 特征字扫描 114.4 如何发现变形病毒和未知
4、病毒 .114.4.1 简单变形 .114.4.2 模拟器 (Emulator)原理 .114.4.3 传统扫描技术与启发式代码分析扫描技术的结合运用 .144.5 小结 145. 病毒预测 .156. 结论 15致谢 .16参考文献 17目 录11. 绪论1.1 课题背景 人类进入了信息社会创造了电子计算机,同时也创造了计算机病毒。由于计算机软件的脆弱性与互联网的开放性,我们将与病毒长久共存。而且,病毒主要朝着能够迅速传播、更好的隐蔽自己并对抗反病毒手段的方向发展。同时,病毒己被人们利用其特有的性质与其他功能相结合进行有目的的活动。 病毒的花样不断翻新,编程手段越来越高,防不胜防。特别是 I
5、nternet 的广泛应用,促进了病毒的空前活跃,网络蠕虫传播更快更广,Windows 病毒更加复杂,网络蠕虫成为病毒设计者的首选(也有人认为蠕虫并不是病毒,蠕虫和病毒是有分别的,见 Internet 标准 RFC2828). 目前,计算机病毒之所以到处不断的泛滥,其一方面的原因就是查解病毒的手段总是跟在一些新病毒的后面发展,所以新病毒就能跳过传统的病毒特征代码分析、动态仿真跟踪、实时监控程序、自动解压缩技术等常用反病毒手段的监视而到处传染。 1.1.1 什么是计算机病毒 计算机病毒(Computer Virus)在 中华人民共和国计算机信息系统安全保护条例中被明确定义为:11 指编制或者在计
6、算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码” 。简单精确的说,能够主动复制自身的一组指令就是病毒。这包含了两个要素,一个是主动,这是病毒传播特性的体现,如果可以四处传播但却是被动进的,就不是病毒,比如 QQ,大家从腾讯网站上下载,QQ.exe 得到四处传播,但因为是被动进行,所以不是病毒;另一个是一段指令,这体现了病毒的寄生性,也就是病毒这个名称的来历,因为生物界中的病毒都是寄生在细胞内,它不是细胞,不能单独生存,却可以在不同细胞中复制自身。病毒也一样,它的寄生体就是程序(文件)。那么,作为一个完整的文件来传播的,就类似于生物界中的细
7、菌(细菌是细胞),那就是蠕虫,现在也被广义地看作病毒。随着互联网的普及和迅猛发展,病毒也向着多元化方向发展,很多病毒都具有病毒和蠕虫等的多重特性。21.1.2 目的与意义 计算机病毒破坏硬盘上的数据,拥塞网络,干扰人们的正常生活,每年的直接和间接经济损失都数以百亿计。防治病毒的重要性不言而喻。2. 病毒基础知识2.1 PE 文件格式与计算机病毒在编写 Dos 文件型病毒时,不可避免我们要非常了解 MZ 文件格式。同样如果想在 Windows 环境下编写感染 EXE 的文件型病毒,我们不得不先在 PE 文件格式上下一番功夫。 2.1.1 PE 文件格式与 Win32 病毒的关系 Win32 病毒
8、感染文件时,一般都是针对 EXE,SCR 文件,而这些文件都是 PE格式,所以,只有了解 PE 格式的规范和细节,才能编写 PE 文件型病毒。一般来说,Win32 病毒是这样被运行的: 1.用户点击 (或者系统自动运行)一个染毒程序 2.PE 装载器(系统程序)通过 PE 文件中的 Address Of Entry Point 和 Image Base 之和来定位第一条语句在内存的偏移。 3.从第一条语句开始执行 (这时其实执行的是病毒代码) 4.病毒主体代码执行完毕,将控制权交给染毒程序。 5.染毒程序继续执行。 可见,Win32 病毒要想对.EXE 文件进行传染,了解 PE 文件格式确实是
9、不可少的。下面我们就将结合计算机病毒的感染原理,具体分析一下 PE 文件的具体格式。 2.1.2 PE 文件格式介绍 PE 就是 Portable Executable(可移植的执行体)。它是 Win32 可执行文件的标准格式。“Portable Executable“意味着此文件格式是跨 win32 平台的。即使 Windows 运3行在非 Intel 的 CPU 上,任何 win32 平台的 PE 装载器都能识别和使用该文件格式。当然,移植到不同的 CPU 上 PE 执行文件必然得有一些改变。所有 Win32 执行体(都使用 PE 文件格式,包括 NT 的内核模式驱动程序 (kernel
10、mode drivers).因而研究 PE 文件格式,除了有助于了解病毒的传染原理之外,也给了我们洞悉悉 Windows 结构的良机。表 1-1 是 PE 文件格式的概要。所有 PE 文件(甚至 32 位的 DLLs)必须以一个简单的 DOS MZ header 开始。有了它,一旦程序在 DOS 下执行,DOS 就能识别出这是有效的执行体,然后运行紧随 MZ header 之后的 DOS stub. DOS stub 实际上是个有效的 EXE,在不支持PE 文件格式的操作系统中,它将简单显示一个错误提示,类似于字符串 “This program requires Windows“。紧接着 DO
11、S stub 的是 PE header。包含了许多 PE 装载器用到的重要域。执行体在支持 PE 文件结构的操作系统中执行时,PE 装载器将从 DOS MZ header 中找到 PE header 的起始偏移量。因而跳过了 DOS stub 直接定位到 真正的文件头PE header。2.2 地址与汇编指令的本质 2.2.1 地址的基本概念 虚拟地址=逻辑地址=【段选择子】:【线形地址】 ,利用段选择子找到描述符,描述符有字段表示段的基地址 (在 Win32 中都是 0,所以线形地址就是真正地址)还4有字段表示段属性,实际上起到保护作用。事实上,在 Win32 中,其他地址己经不重要了,关键
12、的只是线形地址。我们在程序中使用的都是线形地址,我们完全可以忘记虚拟内存的概念,认为每个进程确实具有 4G 的物理内存,OS 和 CPU 屏蔽了这个细节。不考虑它,也不会影响程序的编写。程序在执行时,CPU 会将我们使用的地址(可能是硬编码或寄存器)转换为物理地址。寻址时,最重要的寄存器是 eip 和 CR3.CR3 的内容是物理地址,这在寻址过程中是很特殊的,因为 Win32 在保护模式下,感觉上都是虚拟地址,但是,如果真的都是虚拟地址,可就真的没办法定位到物理内存了。CPU 只是根据 eip 的值一条一条的执行。此时访问的地址就是本进程(P)的4G 空间,执行 P 的指令。如何实现的呢?关
13、键是页表。2.2.2 映射的本质 内存和 CPU,之间有一个 MMU 部件(Memory Management Unit),cpu 执行时,把 eip 高 20 位作为一个索引,再将index+CR3的作为高 20 位,eip 的低 12 位作为低 12 位组合在一起,形成新的 32 位地址,这就是物理地址.把页表想象成一个数组,个数为 220(1M),大小为 4M,页表当然存储在物理内存中,CR3 就是数组首地址。数组的每一项为一个 DWORD,双字的前 20 位表示一个物理页面。形象地:页号(019) 页属性 保留(30) 提交 (31) CR3 一 00100 rw 1 1 01001
14、r 1 0 01010 0 0 0 00111 0 0 0 10011 0 0 0 这表明,物理内存的第 4 个物理页面提交,第 9 个保留.每个进程都含有这样一个页表,其中的页号可能一样,就是对应相同的物理页面,比如内存映射文件。此时一个进程修改的数据,其他进程访问时也会改变。每个进程都有 4G 的内存可以使用,只是很多页面没有提交而己,这就是每个进5程有 4G 的原理。所谓映射,简单的说,就是将页表项的保留和提交设置为 1 而已。解除映射则置。解除后,再使用线形地址访问内存时,找到页表相应项,发现此页面没有保留,就会发生内存错误。值得注意的是,即使使用 Map View Of File,页
15、表中提交字段也未必是 1,只是作了保留标志,其他函数请求内存时就不会重复分配了,真正访问这个页面时再产生页错误而真正分配物理页。2.2.3 重要汇编指令的含义与技巧指令含义 1.CALLX PUSH EIP;IMPX 这是唯一获得 EIP 的方法。2.PUSHX SUB ESP,4;MOVESP,X3.RET POP EIP 把栈顶内容放入 EIP4.STOSD MOV EDI,EAX ;ADD EDI,4技巧1.将寄存器清零XOR EAX,EAX 不要用 MOV EAX,O寄存器和零比较OR EAX,EAX 不要用 CMP EAX,O连续多个 PUSH 0XOR EAX, EAXPUSH E
16、AX PUSH EAX PUSH EAX不要用 PUSH 0 PUSH 02.3 方汇编技术这种方法要求病毒包括一个小型的反汇编软件,感染的时候,将被感染文件加载到内存中,然后一条一条代码的进行反汇编,当满足某个特定的条件的时候6(病毒认为可以安全的改变代码了) ,将原来的指令替换成一条跳转指令,跳转到病毒代码中, “CNTV”和“中间感染”病毒是用这种方法插入跳转到病毒的指令。见图 2.3图 2.32.4 小结本章介绍了病毒需要的基本知识,PE 格式,汇编指令以及地址的含义。3. 病毒传播途径3.1 通过 1PC 传播 1.相关命令1)建立非空连接:Ne use WP ipc “用户名“ /
17、user: “密码“,2)拷贝文件Copy virus .exe remote ipadmin7admin 就是 c:winnt 或 c:Windows 目录,使用 c ,d 就是 C 盘 D 盘。3)查看时间Net time remote ip4) at remote ip time virus.exe用 at 命令启动 virus.exe(这里设置的时间要比主机时间)2.程序实现NET.IP Remote Name=(char*)“Remote1Pipc“WNetAddConnection2 (Copy File (LocalViursFile, RemotelPadmin);这种方法依赖
18、于密码.3.2 通过电子邮件传播3.2.1 原理编写电子邮件客户端程序,把病毒作为附件发送过去。可是,发送给谁呢?这就要获得电子邮件地址。 3.2.2 SMTP 协议框架我们先来看看 SMTP 的发送协议,在 rfc821(smtp)和 rfc1521(mime)里面写得非常清楚,SMTP 的整个发送过程如下:Socket 连接后,按 SMTP 协议通讯(注意每条命令结尾符”回车换行、回车、换行,结束):1、HELOrnExample:HELOrn2、MAILFROM:rn8发送者的 Email 地址。xample:MAILFROM:rn3.3 利用 Sniffer 来建立信任关系从 Win2
19、000 开始,WinSock 2 的 wsaloctl 可以给一个 SOCK_RAW 类型的socket 设置 SIORCVALL 属性,这样该 socket 就可以收到所有经过本机的所有数据。因此无需自己编写驱动程序就可以截获流经本机的数据了。下面将利用这个原理,获得邮件地址及信任关系。步骤如下:1.创建 Raw Socket,设置 SIO_RCVALL,截获所有流经本网卡的数据包。2.分析收到的 PE 包头,如果 Dest Port 是 25 转 3,否则抛弃,继续执行 23.取出数据,寻找 Helo hrn、From:flan、to:trn、Mail From mfrn.、Rctp To
20、 rtrn、忽略,取出 h ,f ,t, mf , rt 这些有用数据。4.如果 ip 包的 SrcIP 为本机 ip,则保存 mf,作为本机发送邮件的可选发件人,收件人为本机发现的邮件地址。5.向 rt 发送邮件,病毒为附件,发件人为 f.标题为 Re:h 至于是否从 ip 包中收集 SMTPServer 的信息以及用户的 Q 令,做为未来发送邮件只用是一种选择。因为可以查询 DNS 的 MX 记录来获 MTP 信息,因此可以不选择。3.4 通过 IRC 聊天通道传播一 SCRIPT.NIISCRIPT.NII 自身是一个 mIRC 脚本语言,它内部的命令允许其他人控制你的IRC 对话,使得
21、 mIRC 客户端产生两个安全漏洞,一个是 auto-DCC-get,一个是mIRC 目录下的 CRIPTINI 会自动执行。它本身不是一个病毒,但病毒可以修改SCRIPT.NII,使 mIRC 用户在聊天时传播自身。9二.通过 mIRC 聊天通道传播这段代码在 OMIRC、下创建 script.ini 文件,写入的命令使得任何人在加入你聊天的通道时,将病毒发送给他。命令在 mIRC 的帮助文件中有详细讲解。Scriptn0=on1: join:*.*:if($nick=$me)(halt)n1=/descend 串 nickVirusPathn3=14. 病毒的攻与防4.l 样本截获技术经常
22、看到 AV 软件的广告上说 XX 公司率先截获了 XX 病毒,这种截获的方法通常给人以过分复杂的感觉,其实并不神奇,这就是蜜罐系统(这种蜜罐与分析Hacker 行为的那个不一样!)可以如下构造:准备一台上网机器,安装 Win2k+Spl(不装 SPl 可能受到无数初级菜鸟的Scan),再安装 IIS6.0 和 SQL Server 2002,能开的服务都打开,最好再装上 NAV(防止重复获得已知病毒的样本),并装上 ISA FireWall 来监控网络流,也装上 Sniffer XP 来做底层包截获,最后装上文件变化记录敬监视文件可以只有几种类型的几个文件就行了),再用 Ghost 备份这台机
23、器的硬盘。现在己经准备了一台这样的 DIY 型蜜罐了,到 Hot Mail 注册一个 E-mail, 然后加入多个国外的新闻组等热闹的地方(这样子才有可能得到样本!)。接下 来就是等待了,查 Outlook 的 Mails,等到 Sniffer XP 的监视出现流量异常或NAV 被关闭或 NAV 失效,此时应该多打开几次一些 Program 目录下的程序以确保病毒的感染,然后一 IPCS 和 US 进来的病毒或蠕虫会开一些新进程,用 Ctrl+Alt+Del 把他们查出来,找到那些文件 复制到存样本的小盘里(推荐 USB移动硬盘),然后把文件变化记录器中变化的文件拷出来。这样子就得到了疑似样本
24、了。 104.2 提取样本技术 样本有 Office 文档,脚本,PE 文件,网络数据包等形式,在准备分析前,需要一些基本工具:一台性能不错的机器(能运行 VMWare 就行了),够大的内存和硬盘。安装 Win2k,最新的 SoBIce, IDA pro, PEDump, Language 没有特殊之处,如果没采用 EPO,和简单病毒一样,采用 EPO 则和 EPO 病毒一样,只是分析病毒代码和变形算法具有相当的难度。 得到样本后,接下来的工作就是分析病毒,对于普通病毒,要提取特征码,加到特征数据库;对于变形病毒,要分析其特征,升级杀毒程序。 4.3 如何发现普通病毒 特征码和特征字扫描依然是
25、行之有效的方法。 4.3.1 特征码扫描简介 特征码就是某个病毒所具有的与其它病毒不同,而且又可以把它和正常程 序区别开的一段代码。存储特征码的数据库结构各不相同,不过大体上都得有特征码,病毒描述信息等部分组成。扫描法是检测一个文件,如果在文件内部所有具有可执行属性的节发现了某一种特定字节串,就表明发现了该字节串所代表的病毒。 病毒扫描软件由两部分组成:一部分是病毒代码库,含有经过特别选定的各种计算机病毒的代码串;另一部分是利用该代码库进行扫描的扫描程序。病毒扫描程序能识别的计算机病毒的数目完全取决于病毒代码库内所含病毒的种类有多少。病毒代码串的选择是非常重要的。短小的病毒只有一百多个字节,病
26、毒代码长的有上 IOKB 字节的。如果随意从病毒体内选一段作为代表该病毒的特征代码串,可能在不同的环境中,该特征串并不真正具有代表性,不能用于将该串所对应的病毒检查出来。选这种串做为病毒代码库的特征串就是不合适的。代码串一定要在仔细分析了程序之后才能选出最具代表特性的,足以将该病毒区别于其它病毒和该病毒的其它变种的代码串。 一般情况下,代码串是连续的若干个字节组成的串,但是有些扫描软件采用的是可变长串,即在串中包含有一个到几个 “模糊 ”字节。扫描软件遇到这种串时,只要除 “模糊”字节之外的字串都能完好匹配,则也能判别出病毒。11例如给定特征串:“E9 7C 00 10 ? 37 CB”则 “
27、E9 7C 00 10 27 37 CB”和 “E9 7C 00 10 9C 37 CB”都能被识别出来。一些 AV 产品,当匹配一个特征串后,再对剩余部分计算 CRC 来确认。为了提高扫描速度,扫描串一般是 20-30 个字节,并且只是从固定的指令开始,比如“cmp eax, #“,“push eax“, “jz“, “mov reg, r/m“, “mov eax,#“, “call“, “jmp“当扫描未知病毒时,大多数 AV 产品使用模拟器(emulation),而有一些仍然在使用特征串扫描。 4.3.2 特征字扫描 特征字识别法是基于特征串扫描法发展起来的一种新方法。特征字识别法 只
28、需从病毒体内抽取很少几个关键的特征字,组成特征字库。由于需要处理的字节很少,而又不必进行串匹配,大大加快了识别速度,当被处理的程序很大时表现更突出。使用基于特征串扫描法的查病毒软件方法与使用基于特征字识别法的查病毒软件方法是一样的。只要运行查毒程序,就能将己知的病毒检查出来。将这两种方法应用到实际中,都需要不断地对病毒库进行扩充,一捕捉到病毒,经过提取特征并加入到病毒库,就能使查病毒程序多检查出一种新病毒来。 4.4 如何发现变形病毒和未知病毒 4.4.1 简单变形 对于前面提到的简单变形,AV 可以用特征码模糊匹配它的解密头。如: Mov ecx, Virus_Size Mov edi,Vi
29、rus_Start Decrypt: xor edi, key Loop Decrypt这段代码 Virus_Size, Virus_Start, key 是变化的,其他是固定的,正好适应于模糊匹配。 124.4.2 模拟器 (Emulator)原理 实现启发扫描的就是模拟器,它截获文件操作,让文件先在 VM 中运行一段时间,未发现病毒再让程序真正运行。检测变形病毒时,模拟器运行文件代码,跟踪文件映像的虚拟内存,发现连续的内部被修改后,会认为这是被解密的代码,在从中扫描特征串来发现病毒。 为了避免模拟器永远运行下去,当它运行到指令条数的上限时,或遇到未知 API时就会停止 (因为它不知道 AP
30、I 有多少参数,无法正常返回)。为了提高模拟器的效率,它还使用了很多技巧: 1.排除字符串 比如,如果一个程序含有这条指令“ADD eax,3“,机器码有 3 种形式 05 03 00 00 00 ;32 位立即数 83 CO 03 ;带符号 81 CO 03 00 00 00 ;不带符号 如果一个变形病毒只能在 1,3 两种情况下变化,那么如果发现了指令 2,那么就可以排除这种病毒的可能性。2.包含字符串 如果一个病毒包含了“ADD al,0“,CLC/JC“ ,“MOV EAX,EAX,等无用指令,那么如果在文件中找不到这些指令,就认为文件没有感染这种病毒。 3.遍历所有分支 最新的模拟器
31、并不是按照程序的流程执行,因为有些病毒的执行存在一定的概率,它产生一个随机数,符合一定条件时在运行,否则返回宿主,那么很可能逃过模拟器。所以,模拟器会遍历程序所有分支,遇到不可到达的再回溯,这样,可以有效的对付这类病毒。 4.根据病毒行为特征 变形病毒在复制自身时,两个版本几乎找不到任何两个相同的字节,是特征穿完全失效。几乎等同于未知病毒。但是从感染文件的角度来说,并无特别之处。这就可以用启发式来判断以下方面: 1)入口是否在最后一个段 13目前病毒体积很大,通常给宿主文件添加一个节,存放病毒。 2)入口是否己 imp 开始 其实是最简单的 EPO.JMP 到病毒执行。好处是不必修改入口。3)
32、Size0fCode 错误 病毒具有代码段的属性,但有些病毒不把自己体积计算到 SizeofCode 4)可疑的节名 和正常的编译器生成的节名不同,病毒的节有自己的特色名字。 5)从 Keme132 中导入的可疑函数,比如使用索引。 正常程序不会这样做,直接引用函数。 6)入口附近存在重定位代码(CALL/POP) 病毒必备。 7)多个 PE 头 原来的 PE 头不够大,自己生成一个。 8)不正确的校验和 很多病毒不重新计算校验和。 9)打了补丁的输入节 很可能挂接了 APL 病毒常用手段。 同时结合以下技巧: 1)排除字符串 2)感染标记 3)垃圾代码 4)解密例程 注意,这些是病毒未在虚拟
33、机中运行前的判断,上面提到的可以功能是在运行程序中发现的,不可混淆。 另外,还可以根据某些特性判断变形病毒,比如前面获得 api 地址中提到 14的,获取 API 地址通常是一个循环,按照固定次序。 模拟器到达 Get Proc Address。的第一条指令后,会停下来判断参数,如果模拟器检测到获得地址的顺序和病毒相同,就可以增加是病毒的可疑度。 4.4.3 传统扫描技术与启发式代码分析扫描技术的结合运用 前面论述了启发式代码分析技术的优点和长处,会不会引起某些人的误解,以为传统的检测扫描技术就可以丢弃了呢?情况当然不是这样。从实际应用的效果看来,传统的手法由于基于对已知病毒的分析和研究,在检
34、测时能够更准确,减少误报;但如果是对待此前根本没有见过的新病毒,由于传统手段的知识库并不存在该类 (种)病毒的特征数据,则有可能产生漏报的严重后果。而这时基于规则和定义的启发式代码分析技术则正好可以大显身手,使这类新病毒不至成为漏网之鱼。传统与启发式技术的结合支用,可以使病毒检测软件的检出率提高到前所未有的水平,而另一方面,又大大降低了总的误报率。详见以下测试实验结果对比数据: 分析的结论相一,致那么真实的结果往往就如同其判断结论一样砍无,疑两种不同技术对同一检测样分析的结果不一致的情况比较少见,这种情形下需借助另外的分析去得出最后结论。抛开启发式代码分析技术实现的具体细节和不同手法不谈,这种
35、代表着未来反病毒技术发展的必然趋势具备某种人工智能特点的反毒技术,向我们展示了一种通用的、不需升级(较省需要升级或不依赖于升级)的病毒检测技术和产品的可能性,由于诸多传统技术无法企及的强大优势,必将得到普遍的应用和迅速的发展。资料显示,目前国际上最著名的排名在前五名的反病毒软件产品均声称应用了这项技术,从来自不同机构和出处的评测结果来看,纯粹的启发式代码分析技术的应用 不借助任何事先的对于被测目标病毒样本的研究和了解),已能达到80%以上的病毒检出率,而其误报率极易控制在 0.1%之下,这对于仅仅使用传统的基于对己知病毒的研究而抽取 “特征字串”的特征扫描技术的查毒软件来说,是不可想象的,一次
36、质的飞跃。在新病毒,新变种层出不穷,病毒数量不断激增的今天,这种新技术的产生和应用具有特殊的意义。154.5 小结本章讨论了反病毒技术,包含样本截获,特征码提取,普通病毒和变形病 毒的发现,启发式扫描原理。5. 病毒预测针对当今病毒发展趋势,预测五种未来病毒(至今未出现过)以及互连网存在的某些安全隐患,并给出了预防这类病毒的方法。这五种病毒是:1.利用 Sniffer 获得邮件地址及信任关系的邮件病毒。2.利用 Sniffer 获得帐户和密码来进行 PC 传播的蠕虫,一般开机就关闭 PC服务。 3.基于 P2P 思想的 IM 蠕虫,速度很快,缺点是依赖于 IE 漏洞。4.利用 “爬虫”思想搜集
37、邮件地址。这类蠕虫获得邮件地址快且多。5.利用 “特快专递”原理发送邮件。类似于 DDos,很难避免.现在的邮件病毒可以从 txt, doa, dbx, wab, http,网络数据包中获得大量的邮件地址,但是信任关系的确立很难,也就是源发件人未必是可信任的,邮件地址建立一套加密机制是解决这个问题的根本,这对于反垃圾邮件同样至关重要。6. 结论 目前国内信息安全技术人员仍十分缺乏,至于专业的反病毒工程师,更是国内 IT 人才架构中的一个空白。信息安全受到社会各界越来越多的关注,电脑病毒灾难频频发生。本文全面介绍了 Win32 下病毒编写的基础知识和原理和反病毒的关键技术与发展。包含 PE 格式
38、、API 地址获取、遍历网络与硬盘,对于高级的 EPQ 和变形技术也做了详细阐述。讨论了反病毒的一些关键技术:样本的截获、特征码提取、16特征字原 理以及当前最流行的对抗变形和未知病毒的启发式扫描技术。了解这些知识后,可以对病毒和反病毒技术有一个全面的理解。病毒和反病毒技术的较量一直没有间断,并且越演越烈。只有了解了病毒技术,才能更好的反病毒,在遭遇病毒的时候,也可以最大限度的减少损失。致谢: 值此论文完成之际,我很高兴向曾给予我帮助和关心的老师、同学和亲人们表示深深的谢意!感谢闽南科技学院提供的优秀的工作环境和良好的学习气氛。感谢我的老师王普彪,严谨的治学态度,勤奋的工作精神永远是我学习的榜样。最后,感谢我的亲人和朋友们!正是他(她)们的关爱与支持才使得我有了不断前进的动力。17参考文献1. Benny. Fuckin AVsin Win32 enviroment.29a-4.1999 4. Lord Julus.Metamor phism Demo.29a-5.2001 5. LiteSys.Win32.R 6. The Mental Driller.NAZKA.29a-4.1999 7. The Mental Driller.Metamorphisminpractice,29a-5.2002