版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
木马检测工具的实现—毕业设计论文毕业设计(论文)木马检测工具的实现论文作者姓名:申请学位专业:申请学位类别:指导教师姓名,职称,:论文提交日期:木马检测工具的实现摘要近年来,“特洛伊木马”(以下简称木马)数量迅速增加,在各类非法程序中已经占到了极大的比重,由木马所造成的破坏和损失也越来越严重,因此,反木马的研究己成为网络安全领域的一个热点和重点。基于特征码的静态扫描技成为反木马、反病毒等术由于具有检测潜伏的木马、病毒等非法程序的能力,研究领域的一个热点,所以至今特征码技术得到了广泛的应用。特征代码法,是目前公认的检测己知病毒的最简单、开销最小的方法。检测工具在将已知木马以二进制读取到的4096位字符串,通过MD5取摘要作为特征码,然后将这些木马独有的特征搜集在一个木马特征码数据库中。每当需要确定文件是否为木马的时候,检测工具会以扫描的方式将数据文件与特征码数据库内的现有特征,如果双方数据吻合,就可以判定该数据文件为木马文件。本工具码一一比对检测准确,可识别病毒的名称,依据检测结果,可做相应的处理。关键词:网络安全;木马;MD5;特征码TheImplementationofaTrojanDetectionToolAbstractInrecentyears,thenumberoftrojanisincreasingveryrapidanditnowamountstothemostpartamonginalltheillegalprograms.Trojanshavebroughtmuchmoreseriousdamagesandlosses.Asaresult,theresearchofanti-trojanhasalreadybecomethehotspotandthemainemphasisintheareaofnetworksecurity.Becauseofitsabilityofdetectingunknowntrojans,signature-basedscanninghascurrentlyturnedintohotspotintheanti-trojanresearcharea.Sothecharacteristiccodetechnologyisusedwidely.ThecharacteristiccodetechnologyisthemethodthathasthesimplestandlowestexpensetochecktheTrojans.Thetoolgets4,096bitsfromtheknownTrojansfile,andgetsitsmessagedigestwithMD5algorithm,thenputsthisvalueinanINIfileasthedatabaseofTrojancharacteristiccode.Whenafileischecked,thetoolwillscanthefileandcomparewiththecharacteristiccodedatabase,ifthemessagedigestofthisfileisequaltoacertainrecord,thenwecandeterminethefileisaTrojanfile.Theaccuracyofourtoolisveryhigh,andcanidentifythenameoftheTrojan.Accordingtotheresult,itcantakecorrespondingmeasuretodealwiththeTrojanfile.Keywords:Networksecurity;Trojan;MD5;Characteristiccode目录论文总页数:26页引 1木马查杀工具设计背景 1木马的概念及技术原理 1木马的危现在流行的查杀方害 现在流行的查杀方 31.2式 3木马检测的实现方法 61.3PE文件静态信息的提取和特征码的设置 6特征码选择与采 8特征码库的设计 8信息摘要技术中的MD5算法 9MD5算法的原理及应用 10MD5作特征码简介 112 需求分析及方案设计 112.1本工具要完成的功环境需能 求 112.2 112.3可行性研究 113木马查杀功能的实现 123.1工具模块介绍 123.2木马特征码的读取 123.3获得文件MD5特征码
143.4文件属性的更 143.4文件属性的更实现驱动器的选改 实现驱动器的选 193.5择 193.6MD5 特征码查杀 22结论 23参考文献 24致谢 25声明 261引言木马查杀工具设计背景“特洛伊木马”这个词源于希腊古神话中的一场战役,而今天计算机的应用领域中,木马的存在给网络安全带来了不容忽视的问题。计算机网络发展到今天,已经迅速延伸到世界的每个角落,大到政府、公司,小到家庭、网吧等场所,己经处处离不开网络,随时随地都要接入Internet与世界同步。信息产业的发展的确使我们生活有了很大的改善,但是如何控制信息的安全性呢。有人为了窃取商业机密,个人隐私,使用非法手段,利用操作系统的漏洞,为目标计算机植入木马,这就相当于在对方计算机中安排“内应”,而对方使用者却毫于是被植入木马的计算机对于入侵者来说完全就是透明的了,毫无机无察觉,密可言。所以木马的出现给网络带来了非常严重的负面影响。在计算机安全学中,特洛伊木马是指一种表面上有某种功能,而内部隐藏着完成特殊任务代码的计算机程序。它利用自身具有的植入功能或依附其它具有传播能力病毒等途径,进驻目标机器,搜集各种敏感信息,并通过网络发回搜集到的敏感信息,接受植入者指令,完成各种操作,在一定程度上,木马也可以称为是计算机病毒。但从木马的本质来讲,它是一种远程控制的黑客工具,具有隐蔽性和非授权性。一般的木马执行文件都很小,如果把木马捆绑到其它正常文件上,用户很难发现。并且,木马一般不像计算机病毒那样去破坏文件、占用系统资源,而是在背后充当“间谍”的角色,因此,用户即使中了木马,也很难察觉到它的存在。从以往网络安全事件的统计分析中可以发现,有相当部分的网络入侵是通过木马进行。利用木马,攻击者可以窃取密码、控制系统操作、进行文件操作等,造成用户资料的泄漏、破坏或整个系统崩溃。随着网络化程度的提高,如何有效防范木马己成为人们关注的问题。目前,国内外很多新版杀毒软件都加入了木马清除功能,市场上也出现了很多“木马”专杀工具,这些软件主要根据木马的动态执行特性识别木马,不能有效识别潜伏的木马。针对这一情况,本文提出两种根据文件静态信息检测木马的新方法,能有效识别木马文件,特别是潜伏着的没有发作的木马文件。木马的概念及技术原理木马是一种网络通信程序,它既不同于病毒,也不同于蠕虫。病毒具有自我复制和感染文件的特点,它能迅速地感染某台计算机上的每个应用程序文件,但它在不同计算机之间的传播通常不是自发的,需要依靠各种人为因素,例如人为发送电子邮件等等。蠕虫则通常会通过网络主动在计算机之间传播,因此,第1页共26页它的传播速度一般比病毒快。而木马既不会自我复制和感染文件,也不会主动传播。木马可分为后门类木马、网银类木马、网游类木马等,其中后门类木马最为常见,网银类和网游类木马次之图1后门类木马客户端与服务器的通信示意图不论哪类木马,均包含服务器程序,平常所说的“中了木马”,更确切地讲是“中了木马服务器”。服务器程序具有较强的隐蔽性和伪装性,它通常包含在一些合法程序或数据当中,或者木马服务器本身伪装为一个合法程序,例如,游戏软件、工具软件、电子邮件的附件、网页等等,如果计算机运行这些程序、打开这些文件或访问这些网页,就可能同时在计算机操作系统的后台启动了木马服务器的安装程序,但普通计算机用户对此是无法觉察的。后门类木马的通信如图1所示,除服务器外,还包含客户端,两者遵守一定的通信协议。如果木马服务器被安装到某台计算机并成功启动,该计算机就木马投放者或者第三方可在网络的另一端,成为受控于木马客户端的目标机,通过木马客户端向其发送各种命令,而服务器则负责接收、解析和执行命令,并将执行结果返回给客户端。通过这些命令,可以实现对目标机的远程文件管理、远程屏幕监视、键盘和鼠标消息记录、远程关机和重启、系统信息获取、硬盘数据共享以及远程程序执行等。网银类木马通常没有客户端,它的主要目的在于窃取目标机用户的网络银行帐号和密码,并将其发送到指定的电子邮箱。而网游类木马的目的则在于窃取网络游戏的帐号、密码和虚拟装备等,并将其发送到指定的电子邮箱,供邮件接收者牟利。多数服务器会随着目标机的启动而自动运行,运行时,一般还会隐藏进程和网络连接,以躲避进程查看工具以及防火墙软件。另外,目前某些木马还具有自我恢复功能,在目标机上存放多个服务器程序及相关文件的备份,如果只是其中的某一个被删除,那么,其它备份又会在一定条件下运行起来。木马一直是国内外黑客和安全专家研究的热点,它发展至今,从早期的第2页共26页BackOrifice、Netspy、冰河等到现在的广外女生、网络神偷等木马,功能越来越强大,隐藏、自启动等方面的技术手段也逐渐多样化。木马的危害木马不仅破坏计算机及计算机网络,而且对其进行控制,并窃取或篡改重要信息,不断对网络安全造成严重的破坏。另外,木马还被许多不法分子用作犯罪工具,造成巨大的经济损失,甚至扰乱社会治安。综观2006年国内的各类典型木马,“传奇男孩”、“剑侠幽灵”及“蜜蜂大盗”等网类木马会盗取网络游戏的帐号、密码及游戏装备,并将其发送到指定电子邮箱,供木马使用者出售牟利,严重侵犯了网络游戏合法用户的网络虚拟财产;“MSN小尾巴”、“QQ小尾巴”等广告类木马会修改网页定向,导致被感染的计算机无法访问一些网站;“网银大盗A”等网银类木马采用窃取击键记录的方法,盗用合法用户网上银行的帐号和密码,给用户带来巨大的经济损失 ;而“灰鸽子”、“黑洞”等后门类木马则可能使计算机系统完全受到非法控制。据国际著名风险管理公司公布的调查结果显示,在2006年,病毒、蠕虫和特洛伊木马等恶意程序或混合型攻击共给全球造成了1890亿美元的经济损失。同时它预计,全球约有6亿部Windows计算机,每部计算机因遭受攻击而带来的经济损失大约在281美元到340美元之间。基于上述情况,反木马应是反病毒工作者的重点工作之一。目前,一般的反病毒软件都加入了反木马功能,甚至出现了专门的反木马软件。反木马的研究正日益受到关注。现在流行的查杀方式通过网络监控发现网络通信的异常并阻断木马的网络通信,或者定义各种规则,使木马无法进行网络通信。防火墙、入侵检测(IntrusionDetection)以及入侵保护(IntrusionProtection)是这类技术的典型代表。它们对网络通信的端口及网络连接作了严格的限制和严密的监控,发现并拦截任何未经允许的网络连接或者通信端口的使用,并向用户报警。此外,入侵检测还能探测网络流量中潜在的入侵和攻击。而入侵保护在此基础上又增加了主动阻断功能,目前的入侵保护系统产品在性能和数据包的分析能力上比入侵检测系统产品都有了质的提升。另外,防火墙联动技术的发展将防火墙从众多的安全问题中解脱出来,与其它技术互补互益,架构起立体的防护系统。例如,防火墙与入侵检测系统联动,可以对网络进行动静结合的保护,对网络行为进行细颗粒的检查,并对网络内外两个部分都进行可靠管理。第3页共26页特征码技术:特征码技术最初被应用于反病毒,后亦用于反木马,它被作为检测这些非法程序的最基本的技术沿用至今,也是目前各类反病毒软件普遍采用的主要技术。实时监控:“实时监控”从文件、邮件、网页等多个不同的角度对流入、流出系统的数据进行过滤,检测并处理其中可能含有的非法程序代码。与其它技术相比,它在反病毒、反木马等方面体现出实时性的特点,能较明显地减少甚至完全避免由非法程序带来的危害。目前国内外各类较为著名和常用的安全软件(如Kaspersky,江民、金山毒霸、瑞星等)均具备了这项功能。行为分析:简而言之,行为分析就是根据程序的动态行为特征(如在注册表设置自启动项等)判断其是否可疑。目前,病毒、木马等非法程序的种类迅速增加、变化不断加快,带来的危害日益严重,而特征码的提取又必然滞后于非法程序出现,根据国际著名的信息安全厂商熊猫软件公司的技术文献,从某种特征码未知的非法程序出现,到研究出它的检测和清除方法,通常会相隔72个小时甚至更多的时间。因而需要这样一种技术:能在特征码提取之前,检测特征码未知的非法程序,以有效的阻止其进行破坏,更大程度地降低损失。行为分析正是具有可检测特征码未知的非法程序的特点,所以成为目前国内外反病毒、反木马等领域研究的热点。然而,行为分析在具体应用时一般有较高的误报率,这也是它早在20世纪90年代早期就被提出,而至今仍未得到广泛应用的主要原因。如何在不提高漏报率的同时,有效地降低行为分析在具休实施时的误报率,是承待解决的问题之一。最近几年,很多国外研究者将新的智能处理技术引入网络攻击和病毒的检测,提出了许多检测网络攻击和恶意程序的新方法,如:1、在2001年NAFIPS(NorthAmericanFuzzyInformationProcessingSociety)国际会议上,J.E.Dickerson等人提出基于Agent方法的网络入侵监测系统,该系统通过在各个Agent上对网络活动进行分析,汇总后识别网络攻击行为,可有效识别网络入侵。后来基于Agent的方法也被很多人用于恶意程序的分析上但这种方法基本可归类为前面提到的方法,对检测潜伏木马仍有一定局限性。2、在可执行程序中检测恶意代码的观点是由LSFM研究组提出的。他们应用各种静态和动态方法执行模型检验,看分析的程序是否与违背预先定义的安全策略。这种识别恶意代码方式存在的最大问题是需要分析者以策略的形式定第4页共26页义恶意代码的行为。在ACSAC'02会议上,MWeber等人对此方法进行了改进,提出了PEAT系统,该系统不需要定义或识别恶意代码的行为,而是为用户提供了一些工具来分析整个程序的结构特征。他们认为被插入可执行程序的恶意代码,其结构特征一般与宿主程序的结构特征不一致,并据此判定文件中是否插入了恶意代码。但如果病毒编写者对该应用程序的结构非常熟悉,模仿其结构特征,或用恶意代码完全替换原程序代码,那么该方法就很难检测出恶意代码的存在。3,EleazarEskin等人在2005年初的报告中提出将数据挖掘技术用于木马文件的检测。与本设计提出方法不同之处是,他们先利用数据挖掘技术发现己然后利用这些特征构造分类器来检测木马文件。知类型木马的特征,与国外相比,国内研究者的主要结合木马的攻击原理与特征研究木马的检测方法,近年提出的检测方法主要是对传统检测方法的改进,也对未知木马的检测进行了探讨:1、西安交通大学的李顺东等人运用字母集合到数字集合的映射理论、字符串的可计算性理论与数论理论,设计的特洛伊木马检测算法;陈桂清等人提出的通过监视与跟踪系统对外通信进程的操作检测木马的方法等等。这些方法对识别新型的木马,特别是DLL型木马,就需要进一步改进。2、中国科学技术大学的朱明等人提出了基于多Agent协作实现未知木马自动识别的方法。该方法利用驻留在局域网各机器监测Agent和网络监测Agent所收集的证据和初步判断,并由协作Agent对这些证据和初步判断进行融合印证并做出最终结论。该方法将Agent技术引入木马防范领域,但仍是通过动态执行特性检测木马,对检测潜伏木马仍有一定局限性。3、2004年,武汉大学计算机学院的单氏虹将人工智能中的启发式分析技术引入木马检测,提出一种启发式分析的木马实时查杀模型。这种模型既可以实现对已知木马的查杀,又可以对未知木马进行启发式分析,并将分析数据提交专家系统,由专家系统对其判定。本设计提出的通过分析文件的静态信息,发现木马文件与正常文件的区别,不需要上面提到的专家系统的支持。传统的木马检测与清除方法归纳起来可分为两类:一种是利用木马程序运行时的特征码检测木马,另一种通过监视系统端口、网络连接、注册表状态变化等动态监控的方法检测木马。这些方法共同特点是通过文件的动态执行状态、特性信息来检测木马,对发现某些潜伏得十分隐蔽和新出现的未知木马,没有较好方法。本设计提出基于文件自身的静态信息来检测木马,是与传统木马检测方法的最大区别,为有效解决潜伏木马的识别问题开辟了一条新思路。第5页共26页木马检测的实现方法特征码技术被作为反病毒技术中最基本的技术沿用至今,也是到目前为止各类反病毒软件仍普遍采用的技术。“特征码”是一串信息,它能唯一标识某一非法程序(如病毒、木马等)。研究人员通过对非法程序样本的分析,提取出“特征码”写入反病毒软件的特征码库特征码技术的基本原理就是在待测文件中查找特征码,一旦查找到,就判定该文件是非法程序或包含了非法程序,并作相应的处理。基于特征码的静态扫描便是对特征码技术最直接的应用,目前的各类反病毒软件均具备这项基本功能,它对用户指定的某个或某几个文件进行扫描,以确定是否包含非法程序的特征码。据有吻合之处,就可以判定该数据文件己遭病毒感染。特征代码法的实现步骤如下(1)采集己知病毒样本。如果病毒既感染COM文件,又感染EXE文件,那么要对这种病毒要同时采集COM型病毒样本和EXE型病毒样本。(2)在病毒样本中,抽取病毒特征代码。对于既感染COM文件又感染EXE文件的病毒样本,要抽取两种样本共有的代码。(3)将特征代码存入病毒库。(4)检测文件。打开被检测文件,在文件中搜索,检查文件中是否含有病毒数据库中的病毒特征代码。如果发现病毒特征代码,查询病毒特征代码就可以知道所感染的病毒类型。在具体实现时,它最初是采用对待测文件全部扫描的方式,在病毒等非法程序出现的早期,非法程序的种类不过数百种,采用这种扫描方式还是比较快捷的,但在目前病毒、木马、蠕虫及其变种的总数超过60000的情况下,这种方式显然是效率低下的。为此,采用了一些用来提高特征码扫描效率的技术。因为木马文件一个很明显的特征就是它的文件名和大小,所以通过这两个特征来作为静态查杀的初步选择。另外就是取文件的MD5值来进行查杀,先对扫描文件进行MD5计算,然后根据得到的MD5值与库中特征码进行比较,如果相同就进行处理。PE文件静态信息的提取和特征码的设置PE文件是PortableExecutablefile( 可移植的执行文件)的简称,它是Window、环境自带的可执行文件的标准格式,它的一些特性继承了 Unix的Coff(CommonObjectFileFormat)文件格式。“PortableExecutable”意味着此文件格式是跨win32平台的:即使Window、运行在非Intel的CPU上,任何win32平台下的PE装载器都能识别和使用该文件格式。当然,移植到不同的 CPU上PE执行文件必然得有一些改变。所有win32执行程序(除了VxD和16位的DLL外)都使用PE文件格式,包括NT的内核模式驱动程序。第6页共26页PE文件主体结构如图2所示。PE文件使用的是一个平面地址空间,所有代码和数据都被合并在一起,组成一个很大的结构。文件的内容被分割为不同的区块(Section,又称区段、节),区块中包含代码或数据,各个区块按页边界对齐,区块没有大小限制,是一个连续结构。每个区块都有它自己在内存中的一套属性,如该区块是否包含代码、是否只读或可读/写等。每一个区块都有不同的名字,这个名字用来表示区块的功能。例如,一个叫rdata的区块表明它是一个只读区块。常见的区块有text,rdata,data,idata和rsrc等。各种块的具体含义详见图3块名的具体含义。PE文件最大的优点是如图4物理结构与内存结构对在磁盘上的数据结构与内存中的结构是一致的,照图。图2PE文件主体结构第7页共26页图3块名与对应的解释图4物理结构与内存结构特征码选择与采集特征码采集的好坏直接影响到整个实验的结果,如果所采集的样本具有一定的普遍性和代表性的话,那么理论值与实际值差别不会有很大出入,甚至直接应用到产品中去;如果木马特征码特性带有局部性,不能代表一般性的话,即使得出结论,也会使实验结果与实际产生很大的偏离。所以采集特征码的方式在本工具中被列为了重点。本工具的根本目的是要找出木马文件在文件静态特征上的特征,即文件在执行以前所具有的特征差异,重点是木马文件的静态特性。所以在选择特征码时,既要选择有代表性的PE文件,又要满足一定的数量。特征码库的设计由于是简单木马的查杀,所以直接采用了ini文件手动设置特征码库,特征码库ini文件如图5。注:[mnum]的值代表收录的木马特征码个数;第8页共26页[n]代表的是具体第n+1个病毒;Name代表的是木马文件的文件名;Size代表的是木马文件的文件大小(以byte计算);MD5代表的是木马文件的MD5值;图5特征码库的具体格式信息摘要技术中的MD5算法MD5的全称是Message-Digestalgorithm5,MD5是一种不可逆的算法,即对生成的密文求逆,对应着无穷个逆。在90年代初山MITLaboratoryforComputerScience(IT计算机科学实验室)和RSADataSecurity(RSA数据安全公司)的RonaldL.Rivest开发出来,经MD2,MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2,MD4还是MD5,它们都需要获得一个随机长度的信息,产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但是MD2的设计与MD4和MD5完全不同,是因为MD2是为8位机器做过设计优化的,而MD4和MD5却是而向32位的电脑。这三个算法的描述和C语言源代码在Internetrfcs1321中有详细的描述,这是一份最具权威的文档,由RonaldL.Rivest在1992年8月向IFFT提交。Van.Oorscho和Wiener曾经考虑过一个在散列中暴力搜寻冲突的函数(bruteforcehashfunction),而目他们猜测一个被设计专门用来搜索MD5冲突的机器(这台机器在1994年的制造成本大约是一百万美元)可以平均每24天就找第9页共26页到一个冲突,但从1991年到2001年这10年间,竟没有出现替代MD5算法的MD6或被叫做其他什么名字的新算法这一点,我们就可以看出这个瑕疵没有太多的影响MD5的安全性。上而所有这些都不足以成为MD5的在实际应用中的问题,并且由于MD5算法的使用不需要支付任何版权费用的,所以在一般的情况下 (非绝密应用领域,但即便是应用在绝密领域内,MD5也不失为一种非常优秀的中间技术),MD5怎么都应该算得上是非常安全的了。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算法来进行文件校验的方案,被大量应用在软件下载站点、论坛数据库和系统文件安全等方面。第10页共26页MD5作特征码简介本文描述了MD5报文摘要算法,此算法将对输入的任意长度的信息进行计算,产生一个128位长度的“指纹”或“报文摘要”,假定两个不同的文件产生相同的报文摘要或由给定的报文摘要产生原始信息在计算上是行不通的。MD5算法适合用在文件判定应用中,在此应用中,一个大的文件必须在类似RSA算法的公用密钥系统中用私人密钥加密前被“压缩”在一种安全模式下。MD5算法能在32位机器上能以很快的速度运行。MD5的作用是对一段信息(message)生成信息摘要(messagedigest),该摘要对该信息具有唯一性,可以作为特征码。用于验证文件的有效性(是否有丢失或损坏的数据),对木马文件的判定,在哈希函数中计算散列值输入一个任意长度的字节串,生成一个128位的整数。由于算法的某些不可逆特征,在加密应用上有较好的安全性。并且,MD5算法的使用不需要支付任何版权费用。唯一性和不可逆性都不是绝对的,从理论上分析是一种多对一的关系,但两个不同的信息产生相同摘要的概率很小。不可逆是指从输出结果中反推输入所需的运算量和计算时间太大,使用穷举字典的方法又需要太多的存储空间。所以用 MD5来作为特征码是很有高效性和稳定性的。需求分析及方案设计本工具要完成的功能本工具的运行是基于Windows平台的,选用所熟悉的开发工具及开发环境进行本工具的设计与开发。设计开发一个木马检测工具,本设计要求实现部分功能——(1)能对特征码库进行设置;(2)本工具能自动的读取特征码库中的特征码;(2)本工具能检测指定盘符的文件,并进行相应的检测。(4)本工具能进行的检测有普通查杀和特征码查杀。环境需求操作系统:WindowsXPSP2开发平台:VisualC++6.0可行性研究本程序的开发利用VisualC++作为开发工具。使用其作为程序的开发工具,是因为它采用面向对象的编程方法把程序和数据封装起来作为一个对象,并为每个对象赋予相应的属性;事件驱动的编程机制通过事件执行对象的操作,在设计应用程序时,不必建立具有明显的开始和结束的程序,而是编写若干个过程,通过这些过程执行指定的操作;提供完善的指令控制语句,给开发第11页共26页高性能的系统提供了保障,保证了代码的模块化要求,而且VisualC++本身就自带一些库函数能够提供一些功能,更利于本工具的开发。木马查杀功能的实现工具模块介绍模块一:驱动器的选择,该模块可以选择机器上所以本地硬盘和移动盘模块二:普通查杀的选择,即快速查杀,通过比较文件名和文件大小来查杀。模块三:特征码查杀的选择,即MD5特征码查杀,通过读取特征库里的数据与文件特征码进行比较来进行查杀。模块四:显示查杀成功的文件。模块五:显示正在查杀的文件夹。图6木马查杀工具的功能模块界面木马特征码的读取由于本工具用的是ini文件作为特征库文件,所以木马查杀工具开始运行第一件事就是对特征库文件的读取,获得病毒的特征码。读取的方法是首先打开和工具同一目录下的code.ini文件,首先读取得到总共的病毒数,然后依次循环读出每个section下的属性值,即对应的文件的name属性和size属性,也就是文件名和文件大小。下是基于ini特征库文件读取的代码:CStringCIniFile::GetFileString(CStringSection,CStringItem,CStringValue)第12页共26页ReadIniFile();//打开文件if(bFileExist==FALSE||FileContainer.GetSize()<0)returnValue;//文件打开出错或文件为空,返回默认值inti=0;intiFileLines=FileContainer.GetSize();CStringstrline,str;while(i<iFileLines){strline=FileContainer.GetAt(i++);strline.TrimLeft();if(strline.GetAt(0)=='[')//查找Section,第一个必须为[{str=strline.Left(strline.Find("]"));// 去掉]右边str=str.Right(str.GetLength()-str.Find("[")-1);// 去掉[左边str.TrimLeft();str.TrimRight();if(Section==str)//找到Section{while(i<iFileLines){strline=FileContainer.GetAt(i++);strline.TrimLeft();if(strline.GetAt(0)=='[')returnValue;//如果到达下一个[],即找不到,返回默认值str=strline.Left(strline.Find("="));// 去掉=右边str.TrimLeft();str.TrimRight();if(Item==str)//找到Item{去掉=左去掉=左str.TrimLeft();str.TrimRight();returnstr;第13页共26页}}returnValue;//找不到,返回默认值}}}returnValue;//找不到,返回默认值}获得文件MD5特征码本工具使用MD5做特征码,所以写了一个MD5类来实现对文件的MD5特征码的获得,下面是MD5值的获得的实现步骤和描述:因为本工具是基于特征码来对木马进行查杀的,所以第一步当我们获得一个木马时,就对它进行MD5计算,然后把获得的MD5值保存到ini文件(即特征码库)。算法的初始化:md5_init(md5_state_t*pms){pms->count[0]=pms->count[1]=0;pms->abcd[0]=0x67452301;pms->abcd[1]=0xefcdab89;pms->abcd[2]=0x98badcfe;pms->abcd[3]=0x10325476;}添加字符窜到消息摘要中:md5_append(md5_state_t*pms,constmd5_byte_t*data,intnbytes){constmd5_byte_t*p=data;intleft=nbytes;intoffset=(pms->count[0]>>3)&63;md5_word_tnbits=(md5_word_t)(nbytes<<3);if(nbytes<=0)return;/*Updatethemessagelength.*/pms->count[1]+=nbytes>>29;第14页共26页pms->count[0]+=nbits;if(pms->count[0]<nbits)pms->count[1]++;/*Processaninitialpartialblock.*/if(offset){intcopy=(offset+nbytes>64?64-offset:nbytes);memcpy(pms->buf+offset,p,copy);if(offset+copy<64)return;p+=copy;left-=copy;md5_process(pms,pms->buf);}/*Processfullblocks.*/for(;left>=64;p+=64,left-=64)md5_process(pms,p);/*Processafinalpartialblock.*/if(left)memcpy(pms->buf,p,left);}完成消息摘要并返回:md5_finish(md5_state_t*pms,md5_byte_tdigest[16]){staticconstmd5_byte_tpad[64]={0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};md5_byte_tdata[8];inti;/*Savethelengthbeforepadding.*/for(i=0;i<8;++i)data[i]=(md5_byte_t)(pms->count[i>>2]>>((i&3)<<3));第15页共26页/*Padto56bytesmod64.*/md5_append(pms,pad,((55-(pms->count[0]>>3))&63)+1);/*Appendthelength.*/md5_append(pms,data,8);for(i=0;i<16;++i)digest[i]=(md5_byte_t)(pms->abcd[i>>2]>>((i&3)<<3));}MD5算法的主要变换过程:md5_process(md5_state_t*pms,constmd5_byte_t*data/*[64]*/){md5_word_ta=pms->abcd[0],b=pms->abcd[1],c=pms->abcd[2],d=pms->abcd[3];md5_word_tt;#ifndefARCH_IS_BIG_ENDIAN#defineARCH_IS_BIG_ENDIAN1/*slower,defaultimplementation*/#endif#ifARCH_IS_BIG_ENDIAN*Onbig-endianmachines,wemustarrangethebytesintheright*order.(Thisalsoworksonmachinesofunknownbyteorder.)md5_word_tX[16];constmd5_byte_t*xp=data;inti;for(i=0;i<16;++i,xp+=4)X[i]=xp[0]+(xp[1]<<8)+(xp[2]<<16)+(xp[3]<<24);#else/*!ARCH_IS_BIG_ENDIAN*//**Onlittle-endianmachines,wecanprocessproperlyaligneddata*withoutcopyingit.*/md5_word_txbuf[16];constmd5_word_t*X;if(!((data-(constmd5_byte_t*)0)&3)){/*dataareproperlyaligned*/第16页共26页X=(constmd5_word_t*)data;}else{/*notaligned*/memcpy(xbuf,data,64);X=xbuf;}#endif#defineROTATE_LEFT(x,n)(((x)<<(n))|((x)>>(32-(n))))/*Round1.*//*Let[abcdksi]denotetheoperationa=b+((a+F(b,c,d)+X[k]+T[i])<<<s).*/#defineF(x,y,z)(((x)&(y))|(~(x)&(z)))#defineSET(a,b,c,d,k,s,Ti)\t=a+F(b,c,d)+X[k]+Ti;\a=ROTATE_LEFT(t,s)+b/*Dothefollowing16operations.*/SET(a,b,c,d,0,7,T1);***部分代码省略******SET(b,c,d,a,15,22,T16);#undefSET/*Round2.*//*Let[abcdksi]denotetheoperationa=b+((a+G(b,c,d)+X[k]+T[i])<<<s).*/#defineG(x,y,z)(((x)&(z))|((y)&~(z)))#defineSET(a,b,c,d,k,s,Ti)\t=a+G(b,c,d)+X[k]+Ti;\a=ROTATE_LEFT(t,s)+b/*Dothefollowing16operations.*/SET(a,b,c,d,1,5,T17);SET(d,a,b,c,6,9,T18);***部分代码省略******SET(c,d,a,b,7,14,T31);第17页共26页SET(b,c,d,a,12,20,T32);#undefSET/*Round3.*//*Let[abcdkst]denotetheoperationa=b+((a+H(b,c,d)+X[k]+T[i])<<<s).*/#defineH(x,y,z)((x)^(y)^(z))#defineSET(a,b,c,d,k,s,Ti)\t=a+H(b,c,d)+X[k]+Ti;\a=ROTATE_LEFT(t,s)+b/*Dothefollowing16operations.*/SET(a,b,c,d,5,4,T33);***部分代码省略******SET(b,c,d,a,2,23,T48);#undefSET/*Round4.*//*Let[abcdkst]denotetheoperationa=b+((a+I(b,c,d)+X[k]+T[i])<<<s).*/#defineI(x,y,z)((y)^((x)|~(z)))#defineSET(a,b,c,d,k,s,Ti)\t=a+I(b,c,d)+X[k]+Ti;\a=ROTATE_LEFT(t,s)+b/*Dothefollowing16operations.*/SET(a,b,c,d,0,6,T49);***部分代码省略******SET(b,c,d,a,9,21,T64);#undefSET/*Thenperformthefollowingadditions.(Thatisincrementeachofthefourregistersbythevalueithadbeforethisblockwasstarted.)*/pms->abcd[0]+=a;pms->abcd[1]+=b;第18页共26页pms->abcd[2]+=c;pms->abcd[3]+=d;}文件属性的更改在windows操作系统下,当文件属性为只读时,删除文件将无法成功,所以需要对文件进行属性更改,以进行查杀,以下为实现代码:CFileStatusstatus;status.m_attribute=0x00;CFile::SetStatus(tFileName,status);DeleteFile(tFileName);实现驱动器的选择为了方便用户查杀方便和深度查杀,所以设置了驱动器(本地硬盘和移动设备)的选择,下面实现代码:voidCDiskCleanDlg::GetSysDriver(){UINTdrvType=0;CStringdrv;charch;for(ch='C';drvType!=1;ch++){drv="X:\\";drv.SetAt(0,ch);drvType=GetDriveType(drv);if(drvType==DRIVE_FIXED||drvType==DRIVE_REMOVABLE){m_ctlComboDrive.AddString(drv);}}}普通查杀的实现首先是对特征码库(code.ini文件)的特征码进行读取,下面是具体实现代码:voidFileNameRead()第19页共26页for(inti=0;i<mnum;i++){CStringstr1;str1.Format("%d",i);name[i]=IniFile.GetString(str1,"name"," 不知道");size[i]=IniFile.GetInt(str1,"size",10);md5[i]=IniFile.GetString(str1,"md5"," 不知道");}}接下来是扫描文件时候进行文件名和文件大小的比较,然后和特征码进行对比,判断进行处理:voidDealRabbishScan(CStringpath){if(!gbRuning)return;chdir(path);//更换当前目录gPath1=path;::SendMessage(gpMainWnd->m_hWnd,WM_ANSWER,(WPARAM)2,(LPARAM)0);for(inti=0;i<mnum;i++){DeleteRabbishFile(path,name[i],size[i]);}BOOLflag;CFileFindm_File;DWORDdwRes;flag=m_File.FindFile(NULL);while(flag&&gbRuning){dwRes=WaitForSingleObject(ghThreadExitEvent,0);if(dwRes==WAIT_OBJECT_0){gbRuning=FALSE;break;}第20页共26页flag=m_File.FindNextFile();if(m_File.IsDirectory()){if(!m_File.IsDots()){path=m_File.GetFilePath();//DeleteZeroFile(path);DealRabbishScan(path);}}}//}}CFileStatusstatus;//下面是对文件删除的具体实现:voidDeleteRabbishFile(CStringFilePath,CStringFileName,intSize)CFileFindfindfile;CStringtFileName;CStringPath;LV_ITEMlvitem;lvitem.mask=LVIF_TEXT;status.m_attribute=0x00;SetCurrentDirectory(FilePath);if(findfile.FindFile(FileName)){while(findfile.FindNextFile()){Path=findfile.GetFilePath();gPath=Path;tFileName=findfile.GetFileName();if(findfile.GetLength()==Size){CFile::SetStatus(tFileName,status);DeleteFile(tFileName);::SendMessage(gpMainWnd->m_hWnd,WM_ANSWER,第21页共26页(WPARAM)1,(LPARAM)0);}}Path=findfile.GetFilePath();gPath=Path;tFileName=findfile.GetFileName();if(findfile.GetLength()==Size){CFile::SetStatus(tFileName,status);DeleteFile(tFileName);::SendMessage(gpMainWnd->m_hWnd,WM_ANSWER,(WPARAM)1,(LPARAM)0);}}}MD5特征码查杀因为MD5的特性,所以两个不同文件的MD5值相同的几率非常的小,所以通过MD5来作为特征码有很好的针对性,本查杀方式就是通过对文件的 MD5值的计算,然后与特征码库里的MD5值进行比较,通过判断结果来进行查杀,下面是功能具体实现代码。下面的代码具体功能打开需要查杀的文件,然后从文件头开始循环读取4096次一个字节的二进制数据,并添加到字符串中,利用md5_process函数进行具体的替换、转换等等来实现MD5值的获得,而且是对指定盘符下的所有文件都进行检测,可以对潜伏的木马文件进行查杀。f=fopen(ff.GetFilePath(),"rb");md5_init(&state);while(1)n=(int)fread(buf,1,4096,f);if(n<=0)break;nbytes+=n;md5_append(&state,buf,n);}md5_finish(&state,binout);第22页共26页for(i=0;i<16;i++){sprintf(Md5String+2*i,"%02x",binout[i]);}Md5String[32]=0;fclose(f);结论本文主要分析了木马查杀的主要方法,并对特征码查杀的主要技术做了描述。同时设计并实现了一个木马查杀。该木马查杀工具是基于WindowsXp操作系统开发的,是一个实验性的程序。整个系统由普通查杀,和MD5特征码查杀等几大模块功能构成。测试报告如下:测试环境:MicrosoftWindowsXPProfessionalServicePack2系统:主机:AMDAthlon(tm)XP2600+1.91GHz512M内存1普通查杀测试在c:下几个不同深度的目录下放置木马文件,然后对木马文件的特征码提取并保存入库,进行查杀,查杀结果很理想,而且速度很快。2(MD5特征码查杀在d:下几个不同深度的目录下放置木马文件,然后对木马文件的MD5特征码提取并保存入库,进行查杀,查杀结果也很理想,但是由于在查杀过程中要对文件进行MD5预算,所以耗费的时间和机器的CPU与内存的占用率都不低。木马特征码技术契合了目前检测未知木马的迫切需求,随着对其研究的深入和实践的展开,必定能使其得到广泛的应用,使人们从中受益。但正如McAfee公司在其06年的一份白皮书中提出的,特征码技术并不能完全替代行为分析,至少在今后很长一段时间内,两者还将共存下去。特征码技术、行为分析以及其它反木马技术相辅相成,各取所长,才能更有效地抵御木马的入侵和破坏。未来开发方向:一种可行的方案是:以特征码技术为主,同时辅以启发式技术:对某个程序进行静态特征码扫描后,如未发现异常,则可选用静态启发式扫描,还可以通过行为分析做进一步的确认。譬如,同时使用实时监控和行为分析这两种技第23页共26页术,对于已知木马的程序文件,在执行之前,实时监控就会检测到文件中包含的特征码,并阻止它运行;对于未知木马,虽然可以避开实时监控,但一旦其运行起来,并表现出木马的行为特征,就会被行为分析技术检测出来。参考文献冻正凯(c++函数库查询辞典[M](北京:中国铁道出版社,2002。王维(基于文件静态特征的木马检测[D](天津:天津理工大学,2004。[3]单长虹,张焕国等(一种启发式木马查杀模型的设计与分析[J],计算机工程与应用,2004,(1):120,130何长龙,林蓉(如何检测和删除系统中的木马[J](信息安全与通信保密,2001,(7),55,58。黄天戍,孙夫雄,杨显娇(网络安全管理之特洛伊木马的防御[J],计算机应用,2002,:22-26。[6]陈桂清,伍乃哄,滕少华(通过进程监视检测木马攻击[J],计算机应用,2006,(8):33-35。[7]宋彦民(检测和删除木马病毒的方法[J],现代电子技术,2002,(12):22-25。第24页共26页致谢本文是在熊淑华老师和张金全老师的热情关心和指导下完成的,他们渊博的知识和严谨的治学作风使我受益匪浅,对顺利完成本设计起到了极大的作用。在此向他们表示我最衷心的感谢~在论文完成过程中,本人还得到了陈晓龙同学的热心帮助,本人向他表示深深的谢意~最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢~作者简介:姓名:魏云柯性别:男出生年月:1984年8月民族:汉E-mail:第25页共26页声明本论文的工作是2007年2月至2007年6月在成都信息工程学院网络工程系完成的。文中除了特别加以标注地方外,不包含他人已经发表或撰写过的研究成果,也不包含为获得成都信息工程学院或其他教学机构的学位或证书而使用过的材料。除非另有说明,本文的工作是原始性工作。关于学位论文使用权和研究成果知识产权的说明:本人完全了解成都信息工程学院有关保管使用学位论文的规定,其中包括:(1)学校有权保管并向有关部门递交学位论文的原件与复印件。(2)学校可以采用影印、缩印或其他复制方式保存学位论文。学校可以学术交流为目的复制、赠送和交换学位论文。学校可允许学位论文被查阅或借阅。学校可以公布学位论文的全部或部分内容(保密学位论文在解密后遵守此规定)。除非另有科研合同和其他法律文书的制约,本论文的科研成果属于成都信息工程学院。特此声明~作者签名:2007年6月日第26页共26页ChristopherTolkienAINULINDAL?TheMusicoftheAinurTherewasEru,theOne,whoinArdaiscalledIl 鷙atar;andhemadefirsttheAinur,theHolyOnes,thatweretheoffspringofhisthought,andtheywerewithhimbeforeaughtelsewasmade.Andhespoketothem,propoundingtothemthemesofmusic;andtheysangbeforehim,andhewasglad.Butforalongwhiletheysangonlyeachalone,orbutfewtogether,whiletheresthearkened;foreachcomprehendedonlythatpartofmemindofIl 鷙atarfromwhichhecame,andintheunderstandingoftheirbrethrentheygrewbutslowly.Yeteverastheylistenedtheycametodeeperunderstanding,andincreasedinunisonandharmony.AnditcametopassthatIl 鷙atarcalledtogetheralltheAinuranddeclaredtothemamightytheme,unfoldingtothemthingsgreaterandmorewonderfulthanhehadyetrevealed;andthegloryofitsbeginningandthesplendourofitsendamazedtheAinur,sothattheybowedbeforeIl鷙atarandweresilent.ThenIl鷙atarsaidtothem:'OfthethemethatIhavedeclaredtoyou,IwillnowthatyemakeinharmonytogetheraGreatMusic.AndsinceIhavekindledyouwiththeFlameImperishable,yeshallshowforthyourpowersinadorningthistheme,eachwithhisownthoughtsanddevices,ifhewill.ButIwinsitandhearken,andbegladthatthroughyougreatbeautyhasbeenwakenedintosong.'ThenthevoicesoftheAinur,likeuntoharpsandlutes,andpipesandtrumpets,andviolsandorgans,andlikeuntocountlesschoirssingingwithwords,begantofashionthethemeofIl 鷙atartoagreatmusic;andasoundaroseofendlessinterchangingmelodieswoveninharmonythatpassedbeyondhearingintothedepthsandintotheheights,andtheplacesofthedwellingofIl 鷙atarwerefilledtooverflowing,andthemusicandtheechoofthemusicwentoutintotheVoid,anditwasnotvoid.NeversincehavetheAinurmadeanymusicliketothismusic,thoughithasbeensaidthatagreaterstillshallbemadebeforeIl鷙atarbythechoirsoftheAinurandtheChildrenofIl鷙ataraftertheendofdays.ThenthethemesofIl 鷙atarshallbeplayedaright,andtakeBeinginthemomentoftheirutterance,forallshallthenunderstandfullyhisintentintheirpart,andeachshallknowthecomprehensionofeach,andIl 鷙atarshallgivetotheirthoughtsthesecretfire,beingwellpleased.ButnowIl 鷙atarsatandhearkened,andforagreatwhileitseemedgoodtohim,forinthemusictherewerenoflaws.Butasthethemeprogressed,itcameintotheheartofMelkortointerweavemattersofhisownimaginingthatwerenotinaccordwiththethemeofIl 鷙atar,forhesoughtthereintoincreasethepowerandgloryofthepartassignedtohimself.ToMelkoramongtheAinurhadbeengiventhegreatestgiftsofpowerandknowledge,andhehadashareinallthegiftsofhisbrethren.HehadgoneoftenaloneintothevoidplacesseekingtheImperishableFlame;fordesiregrewhotwithinhimtobringintoBeingthingsofhisown,anditseemedtohimthatIl 鷙atartooknothoughtfortheVoid,andhewasimpatientofitsemptiness.YethefoundnottheFire,foritiswithIl 鷙atar.Butbeingalonehehadbeguntoconceivethoughtsofhisownunlikethoseofhisbrethren.Someofthesethoughtshenowwoveintohismusic,andstraightwaydiscordaroseabouthim,andmanythatsangnighhimgrewdespondent,andtheirthoughtwasdisturbedandtheirmusicfaltered;butsomebegantoattunetheirmusictohisratherthantothethoughtwhichtheyhadatfirst.ThenthediscordofMelkorspreadeverwider,andthemelodieswhichhadbeenheardbeforefounderedinaseaofturbulentsound.ButIl鷙atarsatandhearkeneduntilitseemedthatabouthisthronetherewasaragingstorm,asofdarkwatersthatmadewaroneuponanotherinanendlesswraththatwouldnotbeassuaged.ThenIl鷙atararose,andtheAinurperceivedthathesmiled;andhelifteduphislefthand,andanewthemebeganamidthestorm,likeandyetunliketotheformertheme,anditgatheredpowerandhadnewbeauty.ButthediscordofMelkorroseinuproarandcontendedwithit,andagaintherewasawarofsoundmoreviolentthanbefore,untilmanyoftheAinurweredismayedandsangnolonger,andMelkorhadthemastery.ThenagainIl鷙atararose,andtheAi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 加油站建设项目可行性研究报告
- 《描写春天的句子》课件
- 《社会语言学》课件
- 房产建筑工程
- (部编版八年级《政治》课件)第1课时-法不可违
- 《简单的电路计算》课件
- 《柠檬酸发酵机制》课件
- 机构编制培训课件(机构编制政策要点及纪律要求)
- 中型电力施工合同模板
- 用户体验研究保密协议管理办法
- 2024年肠道传染病培训课件:疾病预防新视角
- 2024年度拼多多店铺托管经营合同2篇
- 2023年北京肿瘤医院(含社会人员)招聘笔试真题
- 2024年化学检验员(中级工)技能鉴定考试题库(附答案)
- 旅行社分店加盟协议书(2篇)
- 勘察工作质量及保证措施
- 城镇燃气经营安全重大隐患判定及燃气安全管理专题培训
- 个人和企业间资金拆借合同
- 重大火灾隐患判定方法
- 2024年除雪服务定制协议样本版
- 七年级地理上册 3.2海陆变迁说课稿 (新版)商务星球版
评论
0/150
提交评论