311_木马检测工具(VC++)
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
1.3 木马检测的实现方法
特征码技术被作为反病毒技术中最基本的技术沿用至今,也是到目前为止各类反病毒软件仍普遍采用的技术。
“特征码”是一串信息,它能唯一标识某一非法程序(如病毒、木马等)。研究人员通过对非法程序样本的分析,提取出“特征码”写入反病毒软件的特征码库。特征码技术的基本原理就是在待测文件中查找特征码,一旦查找到,就判定该文件是非法程序或包含了非法程序,并作相应的处理。
基于特征码的静态扫描便是对特征码技术最直接的应用,目前的各类反病毒软件均具备这项基本功能,它对用户指定的某个或某几个文件进行扫描,以确定是否包含非法程序的特征码。据有吻合之处,就可以判定该数据文件己遭病毒感染。特征代码法的实现步骤如下(1)采集己知病毒样本。如果病毒既感染COM文件,又感染EXE文件,那么要对这种病毒要同时采集COM型病毒样本和EXE型病毒样本。(2)在病毒样本中,抽取病毒特征代码。对于既感染COM文件又感染EXE文件的病毒样本,要抽取两种样本共有的代码。(3)将特征代码存入病毒库。(4)检测文件。打开被检测文件,在文件中搜索,检查文件中是否含有病毒数据库中的病毒特征代码。如果发现病毒特征代码,查询病毒特征代码就可以知道所感染的病毒类型。在具体实现时,它最初是采用对待测文件全部扫描的方式,在病毒等非法程序出现的早期,非法程序的种类不过数百种,采用这种扫描方式还是比较快捷的,但在目前病毒、木马、蠕虫及其变种的总数超过60000的情况下,这种方式显然是效率低下的。为此,采用了一些用来提高特征码扫描效率的技术。因为木马文件一个很明显的特征就是它的文件名和大小,所以通过这两个特征来作为静态查杀的初步选择。另外就是取文件的MD5值来进行查杀,先对扫描文件进行MD5计算,然后根据得到的MD5值与库中特征码进行比较,如果相同就进行处理。 【买计算机毕业论文就到www.think58.com】
think58.com [资料来源:http://think58.com]
[资料来源:http://www.THINK58.com]1.3.1 PE文件静态信息的提取和特征码的设置
PE文件是Portable Executable file(可移植的执行文件)的简称,它是Window、环境自带的可执行文件的标准格式,它的一些特性继承了Unix的Coff (Common Object File Format)文件格式。“Portable Executable”意味着此文件格式是跨win32平台的:即使Window、运行在非Intel的CPU上,任何win32平台下的PE装载器都能识别和使用该文件格式。当然,移植到不同的CPU上PE执行文件必然得有一些改变。所有win32执行程序(除了VxD和16位的DLL外)都使用PE文件格式,包括NT的内核模式驱动程序。
PE文件主体结构如图2所示。
PE文件使用的是一个平面地址空间,所有代码和数据都被合并在一起,组成一个很大的结构。文件的内容被分割为不同的区块(Section,又称区段、节),区块中包含代码或数据,各个区块按页边界对齐,区块没有大小限制,是一个连续结构。每个区块都有它自己在内存中的一套属性,如该区块是否包含代码、是否只读或可读/写等。
每一个区块都有不同的名字,这个名字用来表示区块的功能。例如,一个叫rdata的区块表明它是一个只读区块。常见的区块有text,rdata,data,idata和rsrc等。各种块的具体含义详见图3块名的具体含义。PE文件最大的优点是在磁盘上的数据结构与内存中的结构是一致的,如图4物理结构与内存结构对照图。
think58.com
[资料来源:www.THINK58.com]
[资料来源:http://www.THINK58.com]
[资料来源:http://THINK58.com]
图2 PE文件主体结构
图3 块名与对应的解释
图4 物理结构与内存结构 本文来自think58
1.3.2 特征码选择与采集
特征码采集的好坏直接影响到整个实验的结果,如果所采集的样本具有一定的普遍性和代表性的话,那么理论值与实际值差别不会有很大出入,甚至直接应用到产品中去;如果木马特征码特性带有局部性,不能代表一般性的话,即使得出结论,也会使实验结果与实际产生很大的偏离。所以采集特征码的方式在本工具中被列为了重点。本工具的根本目的是要找出木马文件在文件静态特征上的特征,即文件在执行以前所具有的特征差异,重点是木马文件的静态特性。所以在选择特征码时,既要选择有代表性的PE文件,又要满足一定的数量。 内容来自think58 [资料来源:www.THINK58.com]
1.3.3 特征码库的设计
由于是简单木马的查杀,所以直接采用了ini文件手动设置特征码库,特征码库ini文件如图5。
注:[mnum]的值代表收录的木马特征码个数;
[n]代表的是具体第n+1个病毒;
Name代表的是木马文件的文件名;
Size代表的是木马文件的文件大小(以byte计算);
MD5代表的是木马文件的MD5值; 内容来自think58
图5 特征码库的具体格式
1.3.4 信息摘要技术中的MD5算法
MD5的全称是Message-Digest algorithm 5,MD5是一种不可逆的算法,即对生成的密文求逆,对应着无穷个逆。在90年代初山MIT Laboratory for Computer Science(IT计算机科学实验室)和RSA Data Security(RSA数据安全公司)的Ronald L.Rivest开发出来,经MD2, MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2, MD4还是MD5,它们都需要获得一个随机长度的信息,产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但是MD2的设计与MD4和MD5完全不同,是因为MD2是为8位机器做过设计优化的,而MD4和MD5却是而向32位的电脑。这三个算法的描述和C语言源代码在Internet rfcs1321中有详细的描述,这是一份最具权威的文档,由Ronald L.Rivest在1992年8月向IFFT提交。
Van.Oorscho和Wiener曾经考虑过一个在散列中暴力搜寻冲突的函数(brute-force hash function),而目他们猜测一个被设计专门用来搜索MD5冲突的机器(这台机器在1994年的制造成本大约是一百万美元)可以平均每24天就找到一个冲突,但从1991年到2001年这10年间,竟没有出现替代MD5算法的MD6或被叫做其他什么名字的新算法这一点,我们就可以看出这个瑕疵没有太多的影响MD5的安全性。上而所有这些都不足以成为MD5的在实际应用中的问题,并且由于MD5算法的使用不需要支付任何版权费用的,所以在一般的情况下(非绝密应用领域,但即便是应用在绝密领域内,MD5也不失为一种非常优秀的中间技术),MD5怎么都应该算得上是非常安全的了。 内容来自think58
1.3.5 MD5算法的原理及应用
Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。请注意我使用了“字节串”而不是“字符串”这个词,是因为这种变换只与字节的值有关,与字符集或编码方式无关。MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点像不存在反函数的数学函数。
MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后可以传播这个文件给别人,别人如果修改了文件中的任何内容,对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。MD5的应用非常广泛,如加密和解密技术等等。在802.1x认证中,EAP-MD5认证采用MD5算法,用户密码不以明文方式在网上传输,从而保证了认证信息的安全。同时,它还被应用于加密和解密技术上,譬如在Unix系统中用户的密码就是使用MD5算法(或其他类似的算法)加密后存储在文件系统中。当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户明文密码的情况下就可以确定用户登录的合法性,也就是说,用户的密码是以MD5值(或类似的其它算法)的方式保存的,用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不“知道”用户的密码是什么。这样不但可以避免普通用户的密码被系统管理员知道,而且还在一定程度上增加了密码被破解的难度。另外,大家比较熟悉的即时通信软件MyIM也使用MD5算法。利用MD5算法来进行文件校验的方案,被大量应用在软件下载站点、论坛数据库和系统文件安全等方面。 think58好,好think58 [来源:http://think58.com]
1.3.6 MD5作特征码简介
本文描述了MD5报文摘要算法,此算法将对输入的任意长度的信息进行计算,产生一个128位长度的“指纹”或“报文摘要”,假定两个不同的文件产生相同的报文摘要或由给定的报文摘要产生原始信息在计算上是行不通的。MD5算法适合用在文件判定应用中,在此应用中,一个大的文件必须在类似RSA算法的公用密钥系统中用私人密钥加密前被“压缩”在一种安全模式下。MD5算法能在32位机器上能以很快的速度运行。MD5的作用是对一段信息(message)生成信息摘要(message-digest),该摘要对该信息具有唯一性,可以作为特征码。用于验证文件的有效性(是否有丢失或损坏的数据),对木马文件的判定,在哈希函数中计算散列值输入一个任意长度的字节串,生成一个128位的整数。由于算法的某些不可逆特征,在加密应用上有较好的安全性。并且,MD5算法的使用不需要支付任何版权费用。唯一性和不可逆性都不是绝对的,从理论上分析是一种多对一的关系,但两个不同的信息产生相同摘要的概率很小。不可逆是指从输出结果中反推输入所需的运算量和计算时间太大,使用穷举字典的方法又需要太多的存储空间。所以用MD5来作为特征码是很有高效性和稳定性的。 [资料来源:http://www.THINK58.com]
think58 [资料来源:http://www.THINK58.com]