资源描述
1896,1920,1987,2006,单击此处编辑母版文本样式,第二级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,信息安全工程学院,School of Information Security Engineering,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,信息安全工程学院,College of Information Security Engineering,单击此处编辑母版标题样式,OAV软件分析与使用,刘功申,上海交通大学信息安全工程学院,OAV软件分析与使用刘功申,本章学习目标,了解,OAV,引擎的框架,了解,OAV,的核心代码,掌握,OAV,使用方法,本章学习目标了解OAV引擎的框架,本章内容,OAV,项目介绍,OAV,基本框架,ScannerDaemon,测试与使用,VirusHammer,使用,PatternFinder,的使用,章节实验,本章内容OAV项目介绍,1 OAV,项目简介,OAV(OpenAntiVirus)项目(http:/www.openantivirus.org)是在2000年8月30日由德国开源爱好者发起,旨在为开源社区的反病毒开发者提供一个交流和项目管理的资源平台。,1 OAV项目简介OAV(OpenAntiVirus)项目(,该项目具有明确的路线图:,为网络,(,邮件服务器、,internet,网关、文件服务器等,),终端用户和企业客户提供病毒防护的开源解决方案。,为网络终端用户和企业客户提供计算机和网络安全的开源解决方案。,研发开源的扫描引擎,从而使未来的安全需求不再依赖于商业提供商。,通过开源系统和软件产品,为系统管理员提供系统恢复能力。,建立网站,提供最新的病毒和安全信息。,建立,How-To,项目提供相关信息和白皮书,用户和系统管理员可以通过该项目提供的信息,利用开源安全解决方案,从而确定反病毒策略。,该项目具有明确的路线图:,项目组成:,ScannerDaemon,,,VirusHammer,和,PatternFinder,是符合,GPL,规范的病毒扫描器的一个简单而基础的实现,用,Java,语言写成。,ScannerDaemon,:病毒扫描软件。,VirusHammer,:具有用户界面的病毒扫描软件。,PatternFinder,:查找商业杀毒软件所使用的病毒特征串的工具。,squid-vscan,可以利用,Squid Http-Proxy,扫描网络流量,从而侦测病毒。,samba-vsan,利用,samba,服务器提供,on-access,病毒扫描。最新的,SUSE Linux,已经包含了该工具。,此外,很多开源爱好者还开发了很多小工具,详细情况参见,http:/www.openantivirus.org/projects.php,项目组成:,2 ScannerDaemon,架构,ScannerDaemon,基本上可以分为如下几个模块:,扫描引擎模块,扫描配置模块,病毒签名文件解析模块,文件系统支持模块(扫描目标文件,/,文件夹时所需要),2 ScannerDaemon架构ScannerDaemon,OAV软件分析与使用课件,Main-class类,主要包括两个重要的类:,RequestHandler,ScannerDaemon,Main-class类主要包括两个重要的类:,扫描配置模块,该模块(源代码的组织结构看,可归入到扫描引擎模块中,这里单独拿出来分析)。,该模块主要包括两个类:,WriteableScanConfiguration,这个类放了一些扫描引擎的属性名。,DefaultScanConfiguration,该类是默认的属性配置类,其构造函数就是对扫描引擎的属性赋以默认值。,扫描配置模块该模块(源代码的组织结构看,可归入到扫描引擎模块,病毒签名模块,这个模块中涉及到的类/接口包括CredoFile类、CredoEntry类、PositionFoundEvent类、PositionFoundListener接口、StringFoundListener类、StringsParser类、WildcardPattern类、StringFinder类等,其中StringsParser类、WildcardPattern类和StringFinder类尤为重要。,病毒签名模块这个模块中涉及到的类/接口包括CredoFile,病毒签名文件,首先看看病毒签名文件到底是什么形式。下载,VirusSignatures-latest.zip,,然后解压缩,可以看到里面包括,clamav.strings,和,clamav2.strings,两个子文件,这两个子文件可以用,notepad,文本工具打开。,摘取,clamav2.strings,文件中的一段内容如下,(,一行,),:,Oror-fam(Clam)1*0*3*0*3=495243*56697275*53455859330F5455*4B617A61*536E617073686F,病毒签名文件,摘取,clamav.strings,文件中的一段内容如下(一行):,Eicar-Test-Signature32=58354F2150254041505B345C505A58353428505E2937434329377D2445494341522D5354414E4441,从这段代码大致可以认为,,Oror-fam(Clam),、,VBS.Kristen,等为病毒名称,,1*0*3*0*3=495243*56697275*53455859330F5455*4B617A61*536E617073686F,等字串为该病毒的一段特征模式串。,摘取clamav.strings文件中的一段内容如下(一行),CredoFile,类,该类只是把普通文件包装成,jar,格式输入流,CredoEntry,类,根据(病毒签名文件)的介绍,病毒签名文件,.credo,文件是一个,jar package,,这个,package,里的每一个文件就用一个,credoEntry,类实例来表示。这个类十分简单,此处不做进一步分析。,CredoFile类,CredoParser,类,这个类的作用是:在指定的目录下查找,.credo,文件,供,StringsParser,类解析,.credo,文件的具体内容。,StringsParser,类,这个类具体完成对,.strings,文件的解析。,WildcardPattern,类,这个类是用来处理不包含“*”字符的模式串,即模式串具有统一的形式,无须用“*”字符分隔开,例如(,5.StringsParser,类)节中文本行,2,和,3,中“,=”,后面的模式串。该类是病毒签名模块中的一个重要类。,CredoParser类,StringFinder,类,这个类是病毒签名模块中的核心类,该类具体保存了各种病毒的名称和特征串,并给每个相应的病毒加上了一个侦听器。,StringFinder类,扫描引擎模块,这个模块是ScannerDaemon的中心模块,先简单看看对几个与事件侦听器有关的类/接口,然后按着扫描的整个过程逐个对相关类分析。主要包括PositionFoundEvent类、PositionFoundListener接口和StringFoundListener类。,扫描引擎模块这个模块是ScannerDaemon的中心模块,,MatchArray,类,这个类包括两方面的功能。,第一,根据病毒签名文件,建立模式串,hash,表,在,ScanEngine,类的初始化函数中,调用函数,loadCredoFiles(scanConfiguration),,这个函数经过层层调用,最终调用,MatchArray,类的,addString,函数建立,hash,表。,第二,通过调用,createCensor,函数返回,MatchArrayCensor,类实例,而,MatchArrayCensor,类提供对文件的扫描。,MatchArray类,文件系统支持模块,文件系统支持模块主要包括VfsEnty类、FileVfsEntry类、VfsContainerFactory接口、ScanEngine类和容器类等。,文件系统支持模块文件系统支持模块主要包括VfsEnty类、F,VfsEntry,类,这是个抽象类,表示一个文件,/,文件夹节点。,FileVfsEntry,类,该类是,VfsEntry,抽象类的子类。该类实现了,VfsEntry,中为定义的抽象函数。,VfsEntry类,3 ScannerDaemon,测试和使用,测试样例:,test1.txt,(,不含病毒,),:,Its a good day!,test2.txt,(含,Eicar-Test-Signature,病毒):,X5O!P%AP4PZX54(P)7CC)7$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*,test3.txt,(含,W32.GriYo,病毒):,Coded by GriYo 29A W32.GriYo,3 ScannerDaemon测试和使用测试样例:,test4.txt,(不含病毒):,29A Coded by GriYo W32.GriYo,test5.txt,(含,Eicar-Test-Signature,和,W32.GriYo,病毒):,X5O!P%AP4PZX54(P)7CC)7$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*,Coded by GriYo 29A W32.GriYo,test6.zip,(含含,Eicar-Test-Signature,和,W32.GriYo,病毒):,包含,test2.txt,和,test3.txt,两个子文件,test7.zip,(不含任何病毒):,包含,test1.txt,和,test4.txt,两个子文件,test4.txt(不含病毒):,1.,对不含病毒模式串文件的测试,测试文件名为,test1.txt,(放在项目文件夹下),内容为:,Its a good day!,客户端和服务器建立,telnet,连接后,输入,scan test1.txt,就会在客户端命令行窗口中输出:,OK,表明未发现任何病毒。,1.对不含病毒模式串文件的测试,2.,对第一类模式串的测试(,注意关闭杀毒软件,),测试文件名为,test2.txt,(放在项目文件夹下),内容为:,X5O!P%AP4PZX54(P)7CC)7$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*,其中,X5O!P%AP4PZX54(P)7CC)7$EICAR-STANDA,是,Eicar-Test-Signature32,病毒的模式串,58354F2150254041505B345C505A58353428505E2937434329377D2445494341522D5354414E4441,翻译后得到的字符串(每两个,16,进制码翻译成一个,ascii,字符,例如,58X,,,355,),运行,ScannerDaemon,,然后客户端连接,telnet localhost 8127,之后输入,scan test2.txt,,就会输出,Found Eicar-Test-Signature in test2.txt,。,说明匹配成功。,2.对第一类模式串的测试(注意关闭杀毒软件),3.,对第三类模式串的测试,测试文件名为,test3.txt,(放在项目文件夹下),内容为:,Coded by GriYo 29A W32.GriYo,其中,Coded by GriYo,和,29A,是,W32.GriYo,病毒的两个顺序子串,436F64656420627920477269596F,和,323941,的,ascii,码翻译串,同样测试后,客户端会输出:,Found W32.GriYo(Clam)in test3.txt
展开阅读全文