病毒与计算机安全_第1页
病毒与计算机安全_第2页
病毒与计算机安全_第3页
病毒与计算机安全_第4页
病毒与计算机安全_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

精选文库郑州轻工业学院本科设计题目: 病毒与计算机安全 学生姓名: 张 波 系 别: 计算机与通信工程学院 专 业: 网络运维 班 级: 1302 学 号: 541307110250 指导教师: 吉星、程立辉 2016 年摘 要 :计算机技术不断进化创新,病毒技术也与时俱进。病毒己经成为一种社会现象,影响力与日俱增。现在的视窗操作系统下的病毒己经非常完善了,它们使用汇编、高级和脚本语言编写,利用了系统的种种漏洞,使用先进的加密和隐藏算法,可以对杀毒软件进行攻击。全世界每年因病毒造成的损失不可估量。在反病毒行业中,杀毒软件厂商迫于商业性的目的,不得不将一些很简单的问题隐藏在广告和宣传的迷雾之中。从Win32病毒所需基础知识开始,详细阐述了PE格式、重定位、API地址获取、遍历网络与硬盘、利用IRC,P2P,E-Mail传播病毒的原理与细节。最后,本文讨论了反病毒的一些关键技术:样本的截获、特征码提取、特征字原理以及当前最流行的对抗变形和未知病毒的启发式扫描技术。关键词: 病毒;多态;变形;扫描;启发式目 录1. 绪论11.1 课题背景11.1.1 什么是计算机病毒11.1.2 目的与意义22. 病毒基础知识22.1 PE文件格式与计算机病毒22.1.1 PE文件格式与Win32病毒的关系22.1.2 PE文件格式介绍32.2 地址与汇编指令的本质42.2.1 地址的基本概念42.2.2 映射的本质42.2.3 重要汇编指令的含义与技巧52.3 方汇编技术62.4 小结63. 病毒传播途径73.1 通过1PC传播73.2 通过电子邮件传播83.2.1 原理83.2.2 SMTP协议框架83.3 利用Sniffer来建立信任关系83.4 通过IRC聊天通道传播94. 病毒的攻与防104.l样本截获技术104.2提取样本技术114.3如何发现普通病毒114.3.1 特征码扫描简介114.3.2 特征字扫描124.4如何发现变形病毒和未知病毒134.4.1简单变形134.4.2模拟器 (Emulator)原理134.4.3传统扫描技术与启发式代码分析扫描技术的结合运用154.5小结175. 病毒预测176. 结论181. 绪论1.1 课题背景 人类进入了信息社会创造了电子计算机,同时也创造了计算机病毒。由于计算机软件的脆弱性与互联网的开放性,我们将与病毒长久共存。而且,病毒主要朝着能够迅速传播、更好的隐蔽自己并对抗反病毒手段的方向发展。同时,病毒己被人们利用其特有的性质与其他功能相结合进行有目的的活动。 病毒的花样不断翻新,编程手段越来越高,防不胜防。特别是Internet的广泛应用,促进了病毒的空前活跃,网络蠕虫传播更快更广,Windows病毒更加复杂,网络蠕虫成为病毒设计者的首选(也有人认为蠕虫并不是病毒,蠕虫和病毒是有分别的,见Internet标准RFC2828). 目前,计算机病毒之所以到处不断的泛滥,其一方面的原因就是查解病毒的手段总是跟在一些新病毒的后面发展,所以新病毒就能跳过传统的病毒特征代码分析、动态仿真跟踪、实时监控程序、自动解压缩技术等常用反病毒手段的监视而到处传染。 1.1.1 什么是计算机病毒 计算机病毒(Computer Virus)在 中华人民共和国计算机信息系统安全保护条例中被明确定义为:11指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码”。简单精确的说,能够主动复制自身的一组指令就是病毒。这包含了两个要素,一个是主动,这是病毒传播特性的体现,如果可以四处传播但却是被动进的,就不是病毒,比如QQ,大家从腾讯网站上下载,QQ.exe得到四处传播,但因为是被动进行,所以不是病毒;另一个是一段指令,这体现了病毒的寄生性,也就是病毒这个名称的来历,因为生物界中的病毒都是寄生在细胞内,它不是细胞,不能单独生存,却可以在不同细胞中复制自身。病毒也一样,它的寄生体就是程序(文件)。那么,作为一个完整的文件来传播的,就类似于生物界中的细菌(细菌是细胞),那就是蠕虫,现在也被广义地看作病毒。随着互联网的普及和迅猛发展,病毒也向着多元化方向发展,很多病毒都具有病毒和蠕虫等的多重特性。1.1.2 目的与意义 计算机病毒破坏硬盘上的数据,拥塞网络,干扰人们的正常生活,每年的直接和间接经济损失都数以百亿计。防治病毒的重要性不言而喻。2. 病毒基础知识2.1 PE文件格式与计算机病毒 在编写Dos文件型病毒时,不可避免我们要非常了解MZ文件格式。同样如果想在Windows环境下编写感染EXE的文件型病毒,我们不得不先在PE文件格式上下一番功夫。 2.1.1 PE文件格式与Win32病毒的关系 Win32病毒感染文件时,一般都是针对EXE,SCR文件,而这些文件都是PE格式,所以,只有了解PE格式的规范和细节,才能编写PE文件型病毒。一般来说,Win32病毒是这样被运行的: 1.用户点击 (或者系统自动运行)一个染毒程序 2.PE装载器(系统程序)通过PE文件中的Address Of Entry Point和 Image Base之和来定位第一条语句在内存的偏移。 3.从第一条语句开始执行 (这时其实执行的是病毒代码) 4.病毒主体代码执行完毕,将控制权交给染毒程序。 5.染毒程序继续执行。 可见,Win32病毒要想对.EXE文件进行传染,了解PE文件格式确实是不可少的。下面我们就将结合计算机病毒的感染原理,具体分析一下PE文件的具体格式。 2.1.2 PE文件格式介绍 PE就是Portable Executable(可移植的执行体)。它是Win32可执行文件的标准格式。Portable Executable意味着此文件格式是跨win32平台的。即使Windows运行在非Intel的CPU上,任何win32平台的PE装载器都能识别和使用该文件格式。当然,移植到不同的CPU上PE执行文件必然得有一些改变。所有Win32执行体(都使用PE文件格式,包括 NT的内核模式驱动程序 (kernel 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。紧接着DOS stub的是PE header。包含了许多PE装载器用到的重要域。执行体在支持PE文件结构的操作系统中执行时,PE装载器将从DOS MZ header中找到PE header的起始偏移量。因而跳过了DOS stub直接定位到 真正的文件头PE header。2.2 地址与汇编指令的本质 2.2.1 地址的基本概念 虚拟地址=逻辑地址=【段选择子】:【线形地址】,利用段选择子找到描述符,描述符有字段表示段的基地址 (在Win32中都是0,所以线形地址就是真正地址)还有字段表示段属性,实际上起到保护作用。事实上,在Win32中,其他地址己经不重要了,关键的只是线形地址。我们在程序中使用的都是线形地址,我们完全可以忘记虚拟内存的概念,认为每个进程确实具有4G的物理内存,OS和CPU屏蔽了这个细节。不考虑它,也不会影响程序的编写。程序在执行时,CPU会将我们使用的地址(可能是硬编码或寄存器)转换为物理地址。寻址时,最重要的寄存器是eip和CR3.CR3的内容是物理地址,这在寻址过程中是很特殊的,因为Win32在保护模式下,感觉上都是虚拟地址,但是,如果真的都是虚拟地址,可就真的没办法定位到物理内存了。CPU只是根据eip的值一条一条的执行。此时访问的地址就是本进程(P)的4G空间,执行P的指令。如何实现的呢?关键是页表。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 r 1 0 01010 0 0 0 00111 0 0 0 10011 0 0 0 这表明,物理内存的第4个物理页面提交,第9个保留.每个进程都含有这样一个页表,其中的页号可能一样,就是对应相同的物理页面,比如内存映射文件。此时一个进程修改的数据,其他进程访问时也会改变。每个进程都有4G的内存可以使用,只是很多页面没有提交而己,这就是每个进程有4G的原理。所谓映射,简单的说,就是将页表项的保留和提交设置为1而已。解除映射则置。解除后,再使用线形地址访问内存时,找到页表相应项,发现此页面没有保留,就会发生内存错误。值得注意的是,即使使用Map View Of File,页表中提交字段也未必是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 EAX PUSH EAX PUSH EAX不要用PUSH 0 PUSH 02.3 方汇编技术这种方法要求病毒包括一个小型的反汇编软件,感染的时候,将被感染文件加载到内存中,然后一条一条代码的进行反汇编,当满足某个特定的条件的时候(病毒认为可以安全的改变代码了),将原来的指令替换成一条跳转指令,跳转到病毒代码中,“CNTV”和“中间感染”病毒是用这种方法插入跳转到病毒的指令。见图2.3 图 2.32.4 小结本章介绍了病毒需要的基本知识,PE格式,汇编指令以及地址的含义。3. 病毒传播途径3.1 通过1PC传播 1.相关命令1)建立非空连接: Ne use WP ipc 用户名 /user: 密码,2)拷贝文件Copy virus .exe remote ipadminadmin就是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*)Remote1PipcWNetAddConnection2 (&NET, & password,&usemame,0);Copy File (LocalViursFile, RemotelPadmin);这种方法依赖于密码.3.2 通过电子邮件传播3.2.1 原理 编写电子邮件客户端程序,把病毒作为附件发送过去。可是,发送给谁呢?这就要获得电子邮件地址。 3.2.2 SMTP协议框架我们先来看看SMTP的发送协议,在rfc821(smtp)和rfc1521(mime)里面写得非常清楚,SMTP的整个发送过程如下:Socket连接后,按SMTP协议通讯(注意每条命令结尾符”回车换行、回车、换行,结束):1、HELOrnExample:HELOrn2、MAILFROM:rn发送者的Email地址。xample:MAILFROM:rn3.3 利用Sniffer来建立信任关系从Win2000开始,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 rtrn、忽略,取出h ,f ,t, mf , rt这些有用数据。4.如果ip包的SrcIP为本机ip,则保存mf,作为本机发送邮件的可选发件人,收件人为本机发现的邮件地址。5.向rt发送邮件,病毒为附件,发件人为fmfl.6.向mf发送邮件,病毒为附件,发件人为t.标题为Re:h至于是否从ip包中收集SMTPServer的信息以及用户的Q令,做为未来发送邮件只用是一种选择。因为可以查询DNS的MX记录来获MTP信息,因此可以不选择。3.4 通过IRC聊天通道传播一 SCRIPT.NIISCRIPT.NII自身是一个mIRC脚本语言,它内部的命令允许其他人控制你的IRC对话,使得mIRC客户端产生两个安全漏洞,一个是auto-DCC-get,一个是mIRC目录下的CRIPTINI会自动执行。它本身不是一个病毒,但病毒可以修改SCRIPT.NII,使mIRC用户在聊天时传播自身。二.通过mIRC聊天通道传播这段代码在OMIRC、下创建script.ini文件,写入的命令使得任何人在加入你聊天的通道时,将病毒发送给他。命令在mIRC的帮助文件中有详细讲解。Scriptn0=on1: join:*.*:if($nick=$me)(halt)n1=/descend串nickVirusPathn3=14. 病毒的攻与防4.l样本截获技术经常看到AV软件的广告上说XX公司率先截获了XX病毒,这种截获的方法通常给人以过分复杂的感觉,其实并不神奇,这就是蜜罐系统(这种蜜罐与分析Hacker行为的那个不一样!)可以如下构造:准备一台上网机器,安装Win2k+Spl(不装SPl可能受到无数初级菜鸟的Scan),再安装IIS6.0和SQL Server 2002,能开的服务都打开,最好再装上 NAV(防止重复获得已知病毒的样本),并装上ISA FireWall来监控网络流,也装上Sniffer XP来做底层包截获,最后装上文件变化记录敬监视文件可以只有几种类型的几个文件就行了),再用Ghost备份这台机器的硬盘。现在己经准备了一台这样的DIY型蜜罐了,到Hot Mail注册一个E-mail, 然后加入多个国外的新闻组等热闹的地方(这样子才有可能得到样本!)。接下 来就是等待了,查Outlook的Mails,等到Sniffer XP的监视出现流量异常或NAV被关闭或NAV失效,此时应该多打开几次一些Program目录下的程序以确保病毒的感染,然后一 IPCS和US进来的病毒或蠕虫会开一些新进程,用 Ctrl+Alt+Del把他们查出来,找到那些文件 复制到存样本的小盘里(推荐USB移动硬盘),然后把文件变化记录器中变化的文件拷出来。这样子就得到了疑似样本了。 4.2提取样本技术 样本有Office文档,脚本,PE文件,网络数据包等形式,在准备分析前,需要一些基本工具:一台性能不错的机器(能运行VMWare就行了),够大的内存和硬盘。安装Win2k,最新的SoBIce, IDA pro, PEDump, Language没有特殊之处,如果没采用EPO,和简单病毒一样,采用EPO则和EPO病毒一样,只是分析病毒代码和变形算法具有相当的难度。 得到样本后,接下来的工作就是分析病毒,对于普通病毒,要提取特征码,加到特征数据库;对于变形病毒,要分析其特征,升级杀毒程序。 4.3如何发现普通病毒 特征码和特征字扫描依然是行之有效的方法。 4.3.1 特征码扫描简介 特征码就是某个病毒所具有的与其它病毒不同,而且又可以把它和正常程 序区别开的一段代码。存储特征码的数据库结构各不相同,不过大体上都得有特征码,病毒描述信息等部分组成。扫描法是检测一个文件,如果在文件内部所有具有可执行属性的节发现了某一种特定字节串,就表明发现了该字节串所代表的病毒。 病毒扫描软件由两部分组成:一部分是病毒代码库,含有经过特别选定的各种计算机病毒的代码串;另一部分是利用该代码库进行扫描的扫描程序。病毒扫描程序能识别的计算机病毒的数目完全取决于病毒代码库内所含病毒的种类有多少。病毒代码串的选择是非常重要的。短小的病毒只有一百多个字节,病毒代码长的有上IOKB字节的。如果随意从病毒体内选一段作为代表该病毒的特征代码串,可能在不同的环境中,该特征串并不真正具有代表性,不能用于将该串所对应的病毒检查出来。选这种串做为病毒代码库的特征串就是不合适的。代码串一定要在仔细分析了程序之后才能选出最具代表特性的,足以将该病毒区别于其它病毒和该病毒的其它变种的代码串。 一般情况下,代码串是连续的若干个字节组成的串,但是有些扫描软件采用的是可变长串,即在串中包含有一个到几个 “模糊”字节。扫描软件遇到这种串时,只要除 “模糊”字节之外的字串都能完好匹配,则也能判别出病毒。例如给定特征串:E9 7C 00 10 ? 37 CB”则 “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 特征字扫描 特征字识别法是基于特征串扫描法发展起来的一种新方法。特征字识别法 只需从病毒体内抽取很少几个关键的特征字,组成特征字库。由于需要处理的字节很少,而又不必进行串匹配,大大加快了识别速度,当被处理的程序很大时表现更突出。使用基于特征串扫描法的查病毒软件方法与使用基于特征字识别法的查病毒软件方法是一样的。只要运行查毒程序,就能将己知的病毒检查出来。将这两种方法应用到实际中,都需要不断地对病毒库进行扩充,一捕捉到病毒,经过提取特征并加入到病毒库,就能使查病毒程序多检查出一种新病毒来。 4.4如何发现变形病毒和未知病毒 4.4.1简单变形 对于前面提到的简单变形,AV可以用特征码模糊匹配它的解密头。如: Mov ecx, Virus_Size Mov edi,Virus_Start Decrypt: xor edi, key Loop Decrypt这段代码Virus_Size, Virus_Start, key是变化的,其他是固定的,正好适应于模糊匹配。 4.4.2模拟器 (Emulator)原理 实现启发扫描的就是模拟器,它截获文件操作,让文件先在VM中运行一段时间,未发现病毒再让程序真正运行。检测变形病毒时,模拟器运行文件代码,跟踪文件映像的虚拟内存,发现连续的内部被修改后,会认为这是被解密的代码,在从中扫描特征串来发现病毒。 为了避免模拟器永远运行下去,当它运行到指令条数的上限时,或遇到未知API时就会停止 (因为它不知道API有多少参数,无法正常返回)。为了提高模拟器的效率,它还使用了很多技巧: 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.遍历所有分支 最新的模拟器并不是按照程序的流程执行,因为有些病毒的执行存在一定的概率,它产生一个随机数,符合一定条件时在运行,否则返回宿主,那么很可能逃过模拟器。所以,模拟器会遍历程序所有分支,遇到不可到达的再回溯,这样,可以有效的对付这类病毒。 4.根据病毒行为特征 变形病毒在复制自身时,两个版本几乎找不到任何两个相同的字节,是特征穿完全失效。几乎等同于未知病毒。但是从感染文件的角度来说,并无特别之处。这就可以用启发式来判断以下方面: 1)入口是否在最后一个段 目前病毒体积很大,通常给宿主文件添加一个节,存放病毒。 2)入口是否己imp开始 其实是最简单的EPO.JMP到病毒执行。好处是不必修改入口。3)Size0fCode错误 病毒具有代码段的属性,但有些病毒不把自己体积计算到SizeofCode 4)可疑的节名 和正常的编译器生成的节名不同,病毒的节有自己的特色名字。 5)从Keme132中导入的可疑函数,比如使用索引。 正常程序不会这样做,直接引用函数。 6)入口附近存在重定位代码(CALL/POP) 病毒必备。 7)多个PE头 原来的PE头不够大,自己生成一个。 8)不正确的校验和 很多病毒不重新计算校验和。 9)打了补丁的输入节 很可能挂接了APL病毒常用手段。 同时结合以下技巧: 1)排除字符串 2)感染标记 3)垃圾代码 4)解密例程 注意,这些是病毒未在虚拟机中运行前的判断,上面提到的可以功能是在运行程序中发现的,不可混淆。 另外,还可以根据某些特性判断变形病毒,比如前面获得api地址中提到 的,获取API地址通常是一个循环,按照固定次序。 模拟器到达Get Proc Address。的第一条指令后,会停下来判断参数,如果模拟器检测到获得地址的顺序和病毒相同,就可以增加是病毒的可疑度。 4.4.3传统扫描技术与启发式代码分析扫描技术的结合运用 前面论述了启发式代码分析技术的优点和长处,会不会引起某些人的误解,以为传统的检测扫描技术就可以丢弃了呢?情况当然不是这样。从实际应用的效果看来,传统的手法由于基于对已知病毒的分析和研究,在检测时能够更准确,减少误报;但如果是对待此前根本没有见过的新病毒,由于传统手段的知识库并不存在该类 (种)病毒的特征数据,则有可能产生漏报的严重后果。而这时基于规则和定义的启发式代码分析技术则正好可以大显身手,使这类新病毒不至成为漏网之鱼。传统与启发式技术的结合支用,可以使病毒检测软件的检出率提高到前所未有的水平,而另一方面,又大大降低了总的误报率。详见以下测试实验结果对比数据: 分析的结论相一,致那么真实的结果往往就如同其判断结论一样砍无,疑两种不同技术对同一检测样分析的结果不一致的情况比较少见,这种情形下需借助另外的分析去得出最后结论。抛开启发式代码分析技术实现

温馨提示

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

评论

0/150

提交评论