TCPIP协议原理与应用论文.docx
- 文档编号:30446418
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:15
- 大小:111.22KB
TCPIP协议原理与应用论文.docx
《TCPIP协议原理与应用论文.docx》由会员分享,可在线阅读,更多相关《TCPIP协议原理与应用论文.docx(15页珍藏版)》请在冰豆网上搜索。
TCPIP协议原理与应用论文
计算机病毒的攻与防
课程论文
课程名称TCP/IP协议原理与应用
专业计算机应用技术
年级民专12-1
姓名沙依兰古丽.吾木提别克
学号5032108105
任课教师吴欢欢
摘要:
计算机技术不断进化创新,病毒技术也与时俱进。
病毒己经成为一种社会现象,影响力与日俱增。
现在的视窗操作系统下的病毒己经非常完善了,它们使用汇编、高级和脚本语言编写,利用了系统的种种漏洞,使用先进的加密和隐藏算法,可以对杀毒软件进行攻击。
全世界每年因病毒造成的损失不可估量。
在反病毒行业中,杀毒软件厂商迫于商业性的目的,不得不将一些很简单的问题隐藏在广告和宣传的迷雾之中。
从Win32病毒所需基础知识开始,详细阐述了PE格式、重定位、API地址获取、遍历网络与硬盘、利用IRC,P2P,E-Mail传播病毒的原理与细节。
最后,本文讨论了反病毒的一些关键技术:
样本的截获、特征码提取、特征字原理以及当前最流行的对抗变形和未知病毒的启发式扫描技术。
关键词:
病毒多态变形扫描启发式
目录
1.什么是计算机病毒1
2.目的与意义1
3.病毒基础知识1
3.1PE文件格式与计算机病毒1
3.1.1PE文件格式与Win32病毒的关系1
3.1.2PE文件格式介绍2
3.2地址与汇编指令的本质2
3.2.1地址的基本概念2
3.2.2映射的本质3
3.2.3重要汇编指令的含义与技巧3
3.3方汇编技术4
3.4小结5
4.病毒的攻与防5
4.l样本截获技术5
4.2提取样本技术6
4.3如何发现普通病毒6
4.3.1特征码扫描简介6
4.3.2特征字扫描7
4.4如何发现变形病毒和未知病毒7
4.4.1简单变形7
4.4.2模拟器(Emulator)原理8
4.4.3传统扫描技术与启发式代码分析扫描技术的结合运用10
4.5小结11
5.病毒预测11
6.结论11
致谢:
12
参考文献13
1.什么是计算机病毒
计算机病毒(ComputerVirus)在《中华人民共和国计算机信息系统安全保护条例》中被明确定义为:
11指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码”。
简单精确的说,能够主动复制自身的一组指令就是病毒。
这包含了两个要素,一个是主动,这是病毒传播特性的体现,如果可以四处传播但却是被动进的,就不是病毒,比如QQ,大家从腾讯网站上下载,QQ.exe得到四处传播,但因为是被动进行,所以不是病毒;另一个是一段指令,这体现了病毒的寄生性,也就是病毒这个名称的来历,因为生物界中的病毒都是寄生在细胞内,它不是细胞,不能单独生存,却可以在不同细胞中复制自身。
病毒也一样,它的寄生体就是程序(文件)。
那么,作为一个完整的文件来传播的,就类似于生物界中的细菌(细菌是细胞),那就是蠕虫,现在也被广义地看作病毒。
随着互联网的普及和迅猛发展,病毒也向着多元化方向发展,很多病毒都具有病毒和蠕虫等的多重特性。
2.目的与意义
计算机病毒破坏硬盘上的数据,拥塞网络,干扰人们的正常生活,每年的直接和间接经济损失都数以百亿计。
防治病毒的重要性不言而喻。
3.病毒基础知识
3.1PE文件格式与计算机病毒
在编写Dos文件型病毒时,不可避免我们要非常了解MZ文件格式。
同样如果想在Windows环境下编写感染EXE的文件型病毒,我们不得不先在PE文件格式上下一番功夫。
3.1.1PE文件格式与Win32病毒的关系
Win32病毒感染文件时,一般都是针对EXE,SCR文件,而这些文件都是PE格式,所以,只有了解PE格式的规范和细节,才能编写PE文件型病毒。
一般来说,Win32病毒是这样被运行的:
1.用户点击(或者系统自动运行)一个染毒程序
2.PE装载器(系统程序)通过PE文件中的AddressOfEntryPoint和
ImageBase之和来定位第一条语句在内存的偏移。
3.从第一条语句开始执行(这时其实执行的是病毒代码)
4.病毒主体代码执行完毕,将控制权交给染毒程序。
5.染毒程序继续执行。
可见,Win32病毒要想对.EXE文件进行传染,了解PE文件格式确实是不可少的。
下面我们就将结合计算机病毒的感染原理,具体分析一下PE文件的具体格式。
3.1.2PE文件格式介绍
PE就是PortableExecutable(可移植的执行体)。
它是Win32可执行文件的标准格式。
"PortableExecutable"意味着此文件格式是跨win32平台的。
即使Windows运行在非Intel的CPU上,任何win32平台的PE装载器都能识别和使用该文件格式。
当然,移植到不同的CPU上PE执行文件必然得有一些改变。
所有Win32执行体(都使用PE文件格式,包括NT的内核模式驱动程序(kernelmodedrivers).因而研究PE文件格式,除了有助于了解病毒的传染原理之外,也给了我们洞悉悉Windows结构的良机。
所有PE文件(甚至32位的DLLs)必须以一个简单的DOSMZheader开始。
有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执行体,然后运行紧随MZheader之后的DOSstub.DOSstub实际上是个有效的EXE,在不支持PE文件格式的操作系统中,它将简单显示一个错误提示,类似于字符串"ThisprogramrequiresWindows"。
紧接着DOSstub的是PEheader。
包含了许多PE装载器用到的重要域。
执行体在支持PE文件结构的操作系统中执行时,PE装载器将从DOSMZheader中找到PEheader的起始偏移量。
因而跳过了DOSstub直接定位到真正的文件头PEheader。
3.2地址与汇编指令的本质
3.2.1地址的基本概念
虚拟地址=逻辑地址=【段选择子】:
【线形地址】,利用段选择子找到描述符,描述符有字段表示段的基地址(在Win32中都是0,所以线形地址就是真正地址)还有字段表示段属性,实际上起到保护作用。
事实上,在Win32中,其他地址己经不重要了,关键的只是线形地址。
我们在程序中使用的都是线形地址,我们完全可以忘记虚拟内存的概念,认为每个进程确实具有4G的物理内存,OS和CPU屏蔽了这个细节。
不考虑它,也不会影响程序的编写。
程序在执行时,CPU会将我们使用的地址(可能是硬编码或寄存器)转换为物理地址。
寻址时,最重要的寄存器是eip和CR3.CR3的内容是物理地址,这在寻址过程中是很特殊的,因为Win32在保护模式下,感觉上都是虚拟地址,但是,如果真的都是虚拟地址,可就真的没办法定位到物理内存了。
CPU只是根据eip的值一条一条的执行。
此时访问的地址就是本进程(P)的4G空间,执行P的指令。
如何实现的呢?
关键是页表。
3.2.2映射的本质
内存和CPU,之间有一个MMU部件(MemoryManagementUnit),cpu执行时,把eip高20位作为一个索引,再将[index+CR3]的作为高20位,eip的低12位作为低12位组合在一起,形成新的32位地址,这就是物理地址.把页表想象成一个数组,个数为2~20(1M),大小为4M,页表当然存储在物理内存中,CR3就是数组首地址。
数组的每一项为一个DWORD,双字的前20位表示一个物理页面。
形象地:
页号(0~19)…页属性保留(30)提交(31)
CR3一>00100rw11
01001r10
01010000
00111000
10011000
这表明,物理内存的第4个物理页面提交,第9个保留.每个进程都含有这样一个页表,其中的页号可能一样,就是对应相同的物理页面,比如内存映射文件。
此时一个进程修改的数据,其他进程访问时也会改变。
每个进程都有4G的内存可以使用,只是很多页面没有提交而己,这就是每个进程有4G的原理。
所谓映射,简单的说,就是将页表项的保留和提交设置为1而已。
解除映射则置。
解除后,再使用线形地址访问内存时,找到页表相应项,发现此页面没有保留,就会发生内存错误。
值得注意的是,即使使用MapViewOfFile,页表中提‘交’字段也未必是1,只是作了保留标志,其他函数请求内存时就不会重复分配了,真正访问这个页面时再产生页错误而真正分配物理页。
3.2.3重要汇编指令的含义与技巧
指令含义
1.CALLX<一>PUSHEIP;IMPX这是唯一获得EIP的方法。
2.PUSHX<一>SUBESP,4;MOV[ESP],X
3.RET<->POPEIP把栈顶内容放入EIP
4.STOSD<一>MOV[EDI],EAX;ADDEDI,4
技巧
1.将寄存器清零
XOREAX,EAX不要用MOVEAX,O
寄存器和零比较
OREAX,EAX不要用CMPEAX,O
连续多个PUSH0
XOREAX,EAX
PUSHEAXPUSHEAXPUSHEAX
不要用PUSH0PUSH0
3.3方汇编技术
这种方法要求病毒包括一个小型的反汇编软件,感染的时候,将被感染文件加载到内存中,然后一条一条代码的进行反汇编,当满足某个特定的条件的时候(病毒认为可以安全的改变代码了),将原来的指令替换成一条跳转指令,跳转到病毒代码中,“CNTV”和“中间感染”病毒是用这种方法插入跳转到病毒的指令。
见图2.3
图2.3
3.4小结
本章介绍了病毒需要的基本知识,PE格式,汇编指令以及地址的含义。
4.病毒的攻与防
4.l样本截获技术
经常看到AV软件的广告上说XX公司率先截获了XX病毒,这种截获的方法通常给人以过分复杂的感觉,其实并不神奇,这就是蜜罐系统(这种蜜罐与分析Hacker行为的那个不一样!
)可以如下构造:
准备一台上网机器,安装Win2k+Spl(不装SPl可能受到无数初级菜鸟的Scan),再安装IIS6.0和SQLServer2002,能开的服务都打开,最好再装上NAV(防止重复获得已知病毒的样本),并装上ISAFireWall来监控网络流,也装上SnifferXP来做底层包截获,最后装上文件变化记录敬监视文件可以只有几种类型的几个文件就行了),再用Ghost备份这台机器的硬盘。
现在己经准备了一台这样的DIY型蜜罐了,到HotMail注册一个E-mail,然后加入多个国外的新闻组等热闹的地方(这样子才有可能得到样本!
)。
接下来就是等待了,查Outlook的Mails,等到SnifferXP的监视出现流量异常或NAV被关闭或NAV失效,此时应该多打开几次一些Program目录下的程序以确保病毒的感染,然后一IPCS和US进来的病毒或蠕虫会开一些新进程,用Ctrl+Alt+Del把他们查出来,找到那些文件—复制到存样本的小盘里(推荐USB移动硬盘),然后把文件变化记录器中变化的文件拷出来。
这样子就得到了疑似样本了。
4.2提取样本技术
样本有Office文档,脚本,PE文件,网络数据包等形式,在准备分析前,需要一些基本工具:
一台性能不错的机器(能运行VMWare就行了),够大的内存和硬盘。
安装Win2k,最新的SoBIce,IDApro,PEDump,Language没有特殊之处,如果没采用EPO,和简单病毒一样,采用EPO则和EPO病毒一样,只是分析病毒代码和变形算法具有相当的难度。
得到样本后,接下来的工作就是分析病毒,对于普通病毒,要提取特征码,加到特征数据库;对于变形病毒,要分析其特征,升级杀毒程序。
4.3如何发现普通病毒
特征码和特征字扫描依然是行之有效的方法。
4.3.1特征码扫描简介
特征码就是某个病毒所具有的与其它病毒不同,而且又可以把它和正常程序区别开的一段代码。
存储特征码的数据库结构各不相同,不过大体上都得有特征码,病毒描述信息等部分组成。
扫描法是检测一个文件,如果在文件内部所有具有可执行属性的节发现了某一种特定字节串,就表明发现了该字节串所代表的病毒。
病毒扫描软件由两部分组成:
一部分是病毒代码库,含有经过特别选定的各种计算机病毒的代码串;另一部分是利用该代码库进行扫描的扫描程序。
病毒扫描程序能识别的计算机病毒的数目完全取决于病毒代码库内所含病毒的种类有多少。
病毒代码串的选择是非常重要的。
短小的病毒只有一百多个字节,病毒代码长的有上IOKB字节的。
如果随意从病毒体内选一段作为代表该病毒的特征代码串,可能在不同的环境中,该特征串并不真正具有代表性,不能用于将该串所对应的病毒检查出来。
选这种串做为病毒代码库的特征串就是不合适的。
代码串一定要在仔细分析了程序之后才能选出最具代表特性的,足以将该病毒区别于其它病毒和该病毒的其它变种的代码串。
一般情况下,代码串是连续的若干个字节组成的串,但是有些扫描软件采用的是可变长串,即在串中包含有一个到几个“模糊”字节。
扫描软件遇到这种串时,只要除“模糊”字节之外的字串都能完好匹配,则也能判别出病毒。
例如给定特征串:
"E97C0010?
37CB”则“E97C00102737CB”和"E97C00109C37CB”都能被识别出来。
一些AV产品,当匹配一个特征串后,再对剩余部分计算CRC来确认。
为了提高扫描速度,扫描串一般是20-30个字节,并且只是从固定的指令开始,比如
"cmpeax,#","pusheax","jz","movreg,r/m",
"moveax,#","call","jmp"
当扫描未知病毒时,大多数AV产品使用模拟器(emulation),而有一些仍然在使用特征串扫描。
4.3.2特征字扫描
特征字识别法是基于特征串扫描法发展起来的一种新方法。
特征字识别法只需从病毒体内抽取很少几个关键的特征字,组成特征字库。
由于需要处理的字节很少,而又不必进行串匹配,大大加快了识别速度,当被处理的程序很大时表现更突出。
使用基于特征串扫描法的查病毒软件方法与使用基于特征字识别法的查病毒软件方法是一样的。
只要运行查毒程序,就能将己知的病毒检查出来。
将这两种方法应用到实际中,都需要不断地对病毒库进行扩充,一捕捉到病毒,经过提取特征并加入到病毒库,就能使查病毒程序多检查出一种新病毒来。
4.4如何发现变形病毒和未知病毒
4.4.1简单变形
对于前面提到的简单变形,AV可以用特征码模糊匹配它的解密头。
如:
Movecx,Virus_Size
Movedi,Virus_Start
Decrypt:
xor[edi],key
LoopDecrypt
这段代码Virus_Size,Virus_Start,key是变化的,其他是固定的,正好适应于模糊匹配。
4.4.2模拟器(Emulator)原理
实现启发扫描的就是模拟器,它截获文件操作,让文件先在VM中运行一段时间,未发现病毒再让程序真正运行。
检测变形病毒时,模拟器运行文件代码,跟踪文件映像的虚拟内存,发现连续的内部被修改后,会认为这是被解密的代码,在从中扫描特征串来发现病毒。
为了避免模拟器永远运行下去,当它运行到指令条数的上限时,或遇到未知API时就会停止(因为它不知道API有多少参数,无法正常返回)。
为了提高模拟器的效率,它还使用了很多技巧:
1.排除字符串
比如,如果一个程序含有这条指令"ADDeax,3",机器码有3种形式
0503000000;32位立即数
83CO03;带符号
81CO03000000;不带符号
如果一个变形病毒只能在1,3两种情况下变化,那么如果发现了指令2,那么就可以排除这种病毒的可能性。
2.包含字符串
如果一个病毒包含了"ADDal,0",CLC/JC","MOVEAX,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地址通常是一个循环,按照固定次序。
模拟器到达GetProcAddress。
的第一条指令后,会停下来判断参数,如果模拟器检测到获得地址的顺序和病毒相同,就可以增加是病毒的可疑度。
4.4.3传统扫描技术与启发式代码分析扫描技术的结合运用
前面论述了启发式代码分析技术的优点和长处,会不会引起某些人的误解,以为传统的检测扫描技术就可以丢弃了呢?
情况当然不是这样。
从实际应用的效果看来,传统的手法由于基于对已知病毒的分析和研究,在检测时能够更准确,减少误报;但如果是对待此前根本没有见过的新病毒,由于传统手段的知识库并不存在该类(种)病毒的特征数据,则有可能产生漏报的严重后果。
而这时基于规则和定义的启发式代码分析技术则正好可以大显身手,使这类新病毒不至成为漏网之鱼。
传统与启发式技术的结合支用,可以使病毒检测软件的检出率提高到前所未有的水平,而另一方面,又大大降低了总的误报率。
详见以下测试实验结果对比数据:
分析的结论相一,致那么真实的结果往往就如同其判断结论一样砍无,疑两种不同技术对同一检测样分析的结果不一致的情况比较少见,这种情形下需借助另外的分析去得出最后结论。
抛开启发式代码分析技术实现的具体细节和不同手法不谈,这种代表着未来反病毒技术发展的必然趋势具备某种人工智能特点的反毒技术,向我们展示了一种通用的、不需升级(较省需要升级或不依赖于升级)的病毒检测技术和产品的可能性,由于诸多传统技术无法企及的强大优势,必将得到普遍的应用和迅速的发展。
资料显示,目前国际上最著名的排名在前五名的反病毒软件产品均声称应用了这项技术,从来自不同机构和出处的评测结果来看,纯粹的启发式代码分析技术的应用不〔借助任何事先的对于被测目标病毒样本的研究和了解),已能达到80%以上的病毒检出率,而其误报率极易控制在0.1%之下,这对于仅仅使用传统的基于对己知病毒的研究而抽取“特征字串”的特征扫描技术的查毒软件来说,是不可想象的,一次质的飞跃。
在新病毒,新变种层出不穷,病毒数量不断激增的今天,这种新技术的产生和应用具有特殊的意义。
4.5小结
本章讨论了反病毒技术,包含样本截获,特征码提取,普通病毒和变形病
毒的发现,启发式扫描原理。
5.病毒预测
针对当今病毒发展趋势,预测五种未来病毒(至今未出现过)以及互连网存在的某些安全隐患,并给出了预防这类病毒的方法。
这五种病毒是:
1.利用Sniffer获得邮件地址及信任关系的邮件病毒。
2.利用Sniffer获得帐户和密码来进行PC传播的蠕虫,一般开机就关闭PC服务。
3.基于P2P思想的IM蠕虫,速度很快,缺点是依赖于IE漏洞。
4.利用“爬虫”思想搜集邮件地址。
这类蠕虫获得邮件地址快且多。
5.利用“特快专递”原理发送邮件。
类似于DDos,很难避免.
现在的邮件病毒可以从txt,doa,dbx,wab,http,网络数据包中获得大量的邮件地址,但是信任关系的确立很难,也就是源发件人未必是可信任的,邮件地址建立一套加密机制是解决这个问题的根本,这对于反垃圾邮件同样至关重要。
6.结论
目前国内信息安全技术人员仍十分缺乏,至于专业的反病毒工程师,更是国内IT人才架构中的一个空白。
信息安全受到社会各界越来越多的关注,电脑病毒灾难频频发生。
本文全面介绍了Win32下病毒编写的基础知识和原理和反病毒的关键技术与发展。
包含PE格式、API地址获取、遍历网络与硬盘,对于高级的EPQ和变形技术也做了详细阐述。
讨论了反病毒的一些关键技术:
样本的截获、特征码提取、特征字原理以及当前最流行的对抗变形和未知病毒的启发式扫描技术。
了解这些知识后,可以对病毒和反病毒技术有一个全面的理解。
病毒和反病毒技术的较量一直没有间断,并且越演越烈。
只有了解了病毒技术,才能更好的反病毒,在遭遇病毒的时候,也可以最大限度的减少损失。
致谢:
值此论文完成之际,我很高兴向曾给予我帮助和关心的老师、同学和亲人们表示深深的谢意!
感谢信息工程学院提供的优秀的工作环境和良好的学习气氛。
感谢我的老师邬欢欢,严谨的治学态度,勤奋的工作精神永远是我学习的榜样。
最后,感谢我的同学和朋友们!
正是他(她)们的关爱与支持才使得我有了不断前进的动力。
参考文献
1.Benny.FuckinAVsinWin32enviroment.29a-4.1999
4.LordJulus.MetamorphismDemo.29a-5.2001
5.LiteSys.Win32.R
6.TheMentalDriller.NAZKA.29a-4.1999
7.TheMentalDriller.Metamorphisminpractice,29a-5.2002
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TCPIP 协议 原理 应用 论文