资源预览内容
第1页 / 共47页
第2页 / 共47页
第3页 / 共47页
第4页 / 共47页
第5页 / 共47页
第6页 / 共47页
第7页 / 共47页
第8页 / 共47页
第9页 / 共47页
第10页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
OAV软件分析与使用 刘功申上海交通大学信息安全工程学院 本章学习目标 了解OAV引擎的框架了解OAV的核心代码掌握OAV使用方法 本章内容 OAV项目介绍OAV基本框架ScannerDaemon测试与使用VirusHammer使用PatternFinder的使用章节实验 1OAV项目简介 OAV OpenAntiVirus 项目 http www openantivirus org 是在2000年8月30日由德国开源爱好者发起 旨在为开源社区的反病毒开发者提供一个交流和项目管理的资源平台 该项目具有明确的路线图 为网络 邮件服务器 internet网关 文件服务器等 终端用户和企业客户提供病毒防护的开源解决方案 为网络终端用户和企业客户提供计算机和网络安全的开源解决方案 研发开源的扫描引擎 从而使未来的安全需求不再依赖于商业提供商 通过开源系统和软件产品 为系统管理员提供系统恢复能力 建立网站 提供最新的病毒和安全信息 建立How To项目提供相关信息和白皮书 用户和系统管理员可以通过该项目提供的信息 利用开源安全解决方案 从而确定反病毒策略 项目组成 ScannerDaemon VirusHammer和PatternFinder是符合GPL规范的病毒扫描器的一个简单而基础的实现 用Java语言写成 ScannerDaemon 病毒扫描软件 VirusHammer 具有用户界面的病毒扫描软件 PatternFinder 查找商业杀毒软件所使用的病毒特征串的工具 squid vscan可以利用SquidHttp Proxy扫描网络流量 从而侦测病毒 samba vsan利用samba服务器提供on access病毒扫描 最新的SUSELinux已经包含了该工具 此外 很多开源爱好者还开发了很多小工具 详细情况参见http www openantivirus org projects php 2ScannerDaemon架构 ScannerDaemon基本上可以分为如下几个模块 扫描引擎模块扫描配置模块病毒签名文件解析模块文件系统支持模块 扫描目标文件 文件夹时所需要 Main class类 主要包括两个重要的类 RequestHandlerScannerDaemon 扫描配置模块 该模块 源代码的组织结构看 可归入到扫描引擎模块中 这里单独拿出来分析 该模块主要包括两个类 WriteableScanConfiguration这个类放了一些扫描引擎的属性名 DefaultScanConfiguration该类是默认的属性配置类 其构造函数就是对扫描引擎的属性赋以默认值 病毒签名模块 这个模块中涉及到的类 接口包括CredoFile类 CredoEntry类 PositionFoundEvent类 PositionFoundListener接口 StringFoundListener类 StringsParser类 WildcardPattern类 StringFinder类等 其中StringsParser类 WildcardPattern类和StringFinder类尤为重要 病毒签名文件首先看看病毒签名文件到底是什么形式 下载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 Signature 32 58354F2150254041505B345C505A58353428505E2937434329377D2445494341522D5354414E4441从这段代码大致可以认为 Oror fam Clam VBS Kristen等为病毒名称 1 0 3 0 3 495243 56697275 53455859330F5455 4B617A61 536E617073686F等字串为该病毒的一段特征模式串 CredoFile类该类只是把普通文件包装成jar格式输入流CredoEntry类根据 病毒签名文件 的介绍 病毒签名文件 credo文件是一个jarpackage 这个package里的每一个文件就用一个credoEntry类实例来表示 这个类十分简单 此处不做进一步分析 CredoParser类这个类的作用是 在指定的目录下查找 credo文件 供StringsParser类解析 credo文件的具体内容 StringsParser类这个类具体完成对 strings文件的解析 WildcardPattern类这个类是用来处理不包含 字符的模式串 即模式串具有统一的形式 无须用 字符分隔开 例如 5 StringsParser类 节中文本行2和3中 后面的模式串 该类是病毒签名模块中的一个重要类 StringFinder类这个类是病毒签名模块中的核心类 该类具体保存了各种病毒的名称和特征串 并给每个相应的病毒加上了一个侦听器 扫描引擎模块 这个模块是ScannerDaemon的中心模块 先简单看看对几个与事件侦听器有关的类 接口 然后按着扫描的整个过程逐个对相关类分析 主要包括PositionFoundEvent类 PositionFoundListener接口和StringFoundListener类 MatchArray类这个类包括两方面的功能 第一 根据病毒签名文件 建立模式串hash表 在ScanEngine类的初始化函数中 调用函数loadCredoFiles scanConfiguration 这个函数经过层层调用 最终调用MatchArray类的addString函数建立hash表 第二 通过调用createCensor函数返回MatchArrayCensor类实例 而MatchArrayCensor类提供对文件的扫描 文件系统支持模块 文件系统支持模块主要包括VfsEnty类 FileVfsEntry类 VfsContainerFactory接口 ScanEngine类和容器类等 VfsEntry类这是个抽象类 表示一个文件 文件夹节点 FileVfsEntry类该类是VfsEntry抽象类的子类 该类实现了VfsEntry中为定义的抽象函数 3ScannerDaemon测试和使用 测试样例 test1 txt 不含病毒 It sagoodday test2 txt 含Eicar Test Signature病毒 X5O P AP 4 PZX54 P 7CC 7 EICAR STANDARD ANTIVIRUS TEST FILE H H test3 txt 含W32 GriYo病毒 CodedbyGriYo29AW32 GriYo test4 txt 不含病毒 29ACodedbyGriYoW32 GriYotest5 txt 含Eicar Test Signature和W32 GriYo病毒 X5O P AP 4 PZX54 P 7CC 7 EICAR STANDARD ANTIVIRUS TEST FILE H H CodedbyGriYo29AW32 GriYotest6 zip 含含Eicar Test Signature和W32 GriYo病毒 包含test2 txt和test3 txt两个子文件test7 zip 不含任何病毒 包含test1 txt和test4 txt两个子文件 1 对不含病毒模式串文件的测试测试文件名为test1 txt 放在项目文件夹下 内容为 It sagoodday 客户端和服务器建立telnet连接后 输入scantest1 txt就会在客户端命令行窗口中输出 OK表明未发现任何病毒 2 对第一类模式串的测试 注意关闭杀毒软件 测试文件名为test2 txt 放在项目文件夹下 内容为 X5O P AP 4 PZX54 P 7CC 7 EICAR STANDARD ANTIVIRUS TEST FILE H H 其中X5O P AP 4 PZX54 P 7CC 7 EICAR STANDA是Eicar Test Signature 32 病毒的模式串58354F2150254041505B345C505A58353428505E2937434329377D2445494341522D5354414E4441翻译后得到的字符串 每两个16进制码翻译成一个ascii字符 例如58 X 35 5 运行ScannerDaemon 然后客户端连接telnetlocalhost8127之后输入scantest2 txt 就会输出Found Eicar Test Signature in test2 txt 说明匹配成功 3 对第三类模式串的测试测试文件名为test3 txt 放在项目文件夹下 内容为 CodedbyGriYo29AW32 GriYo其中CodedbyGriYo和29A是W32 GriYo病毒的两个顺序子串436F64656420627920477269596F和323941的ascii码翻译串 同样测试后 客户端会输出 Found W32 GriYo Clam in test3 txt 说明匹配成功 为了说明第三类模式串必须按模式字串的顺序得到匹配 另测试文件test4 txt 内容为 29ACodedbyGriYoW32 GriYo运行后 客户端输出 OK 说明子串顺序改变后 匹配未成功 4 对含多个病毒模式的文件的测试测试文件名为test5 txt 内容如下 X5O P AP 4 PZX54 P 7CC 7 EICAR STANDARD ANTIVIRUS TEST FILE H H CodedbyGriYo29AW32 GriYo输出为 Found Eicar Test Signature in test5 txt 说明扫描并未发现W32 GriYo病毒 5 对含多个病毒的zip压缩包的测试测试的压缩包文件为test6 zip 包含test2 txt和test3 txt两个子文件 其中test2 txt含有Eicar Test Signature病毒 test3 txt含有W32 GriYo病毒 扫描的输出结果是 FOUND W32 GriYo Clam in test6 zip zip test3 txt 说明只发现了一个病毒 6 对不含任何病毒的zip压缩包的测试测试的压缩包文件为test7 zip 包含test1 txt和test4 txt两个子文件 不含任何病毒 扫描后 客户端的输出为 OK表明未发现任何病毒 ScannerDaemon配置 在 ScannerDaemonDir 目录下建立credo目录和temp目录 把VirusSignatures latest zip解压缩得到的VirusSignatures credo文件放到credo目录下 temp目录为扫描压缩包文件所必须 用wordpad 或notepad 工具打开ScannerDaemon settings properties文件 要使该文件中的配置信息起作用 只要去掉属性名前的 以 字符开头表示注释行 字符便可 ScannerDaemon使用说明 服务器端启动ScannerDaemon1 启动命令说明启动ScannerDaemon时可以接受的参数列表为 nosignature 表示病毒签名文件无需检查签名 VirusSignatures latest zip中的病毒签名文件是没有签名的 所以运行ScannerDaemon必须加上此参数 configfilefilename 指定配置文件 为指定该参数 默认的配置文件为
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号