H2003031311_魏云柯_木马检测工具的实现_第1页
H2003031311_魏云柯_木马检测工具的实现_第2页
H2003031311_魏云柯_木马检测工具的实现_第3页
H2003031311_魏云柯_木马检测工具的实现_第4页
H2003031311_魏云柯_木马检测工具的实现_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

分类号 分类号 TP393 08TP393 08 U U D D C C D10621 408 2007 D10621 408 2007 5864 05864 0 密密 级 公级 公 开开 编编 号 号 20030313112003031311 成成 都都 信信 息息 工工 程程 学学 院院 学学 位位 论论 文文 木马检测工具的实现木马检测工具的实现 论文作者姓名 论文作者姓名 魏云柯魏云柯 申请学位专业 申请学位专业 计算机科学与技术计算机科学与技术 申请学位类别 申请学位类别 工学学士工学学士 指指导导教教师师姓姓名名 职职称称 熊淑华 副教授 熊淑华 副教授 论文提交日期 论文提交日期 20072007 年年 6 6 月月 9 9 日日 木马检测工具的实现木马检测工具的实现 摘摘 要要 近年来 特洛伊木马 以下简称木马 数量迅速增加 在各类非法程序中 已经占到了极大的比重 由木马所造成的破坏和损失也越来越严重 因此 反 木马的研究己成为网络安全领域的一个热点和重点 基于特征码的静态扫描技 术由于具有检测潜伏的木马 病毒等非法程序的能力 成为反木马 反病毒等 研究领域的一个热点 所以至今特征码技术得到了广泛的应用 特征代码法 是目前公认的检测己知病毒的最简单 开销最小的方法 检测工具在将已知木 马以二进制读取到的 4096 位字符串 通过 MD5 取摘要作为特征码 然后将这些 木马独有的特征搜集在一个木马特征码数据库中 每当需要确定文件是否为木 马的时候 检测工具会以扫描的方式将数据文件与特征码数据库内的现有特征 码一一比对 如果双方数据吻合 就可以判定该数据文件为木马文件 本工具 检测准确 可识别病毒的名称 依据检测结果 可做相应的处理 关键词关键词 网络安全 木马 MD5 特征码 The Implementation of a Trojan Detection Tool Abstract In recent years the number of trojan is increasing very rapid and it now amounts to the most part among in all the illegal programs Trojans have brought much more serious damages and losses As a result the research of anti trojan has already become the hotspot and the main emphasis in the area of network security Because of its ability of detecting unknown trojans signature based scanning has currently turned into hotspot in the anti trojan research area So the characteristic code technology is used widely The characteristic code technology is the method that has the simplest and lowest expense to check the Trojans The tool gets 4 096 bits from the known Trojans file and gets its message digest with MD5 algorithm then puts this value in an INI file as the database of Trojan characteristic code When a file is checked the tool will scan the file and compare with the characteristic code database if the message digest of this file is equal to a certain record then we can determine the file is a Trojan file The accuracy of our tool is very high and can identify the name of the Trojan According to the result it can take corresponding measure to deal with the Trojan file Key words Network security Trojan MD5 Characteristic code 目目 录录 论文总页数 26 页 1引 言 1 1 1木马查杀工具设计背景 1 1 1 1木马的概念及技术原理 1 1 1 2木马的危害 3 1 2现在流行的查杀方式 3 1 3木马检测的实现方法 6 1 3 1PE 文件静态信息的提取和特征码的设置 6 1 3 2特征码选择与采集 8 1 3 3特征码库的设计 8 1 3 4信息摘要技术中的 MD5 算法 9 1 3 5MD5 算法的原理及应用 10 1 3 6MD5 作特征码简介 11 2需求分析及方案设计 11 2 1本工具要完成的功能 11 2 2环境需求 11 2 3可行性研究 11 3木马查杀功能的实现 12 3 1工具模块介绍 12 3 2木马特征码的读取 12 3 3获得文件 MD5 特征码 14 3 4文件属性的更改 19 3 5实现驱动器的选择 19 3 6MD5 特征码查杀 22 结 论 23 参考文献 24 致 谢 25 声 明 26 第 1 页 共 26 页 1 1 引引 言言 1 11 1木马查杀工具设计背景木马查杀工具设计背景 特洛伊木马 这个词源于希腊古神话中的一场战役 而今天计算机的应 用领域中 木马的存在给网络安全带来了不容忽视的问题 计算机网络发展到 今天 已经迅速延伸到世界的每个角落 大到政府 公司 小到家庭 网吧等 场所 己经处处离不开网络 随时随地都要接入 Internet 与世界同步 信息产业 的发展的确使我们生活有了很大的改善 但是如何控制信息的安全性呢 有人 为了窃取商业机密 个人隐私 使用非法手段 利用操作系统的漏洞 为目标 计算机植入木马 这就相当于在对方计算机中安排 内应 而对方使用者却毫 无察觉 于是被植入木马的计算机对于入侵者来说完全就是透明的了 毫无机 密可言 所以木马的出现给网络带来了非常严重的负面影响 在计算机安全学中 特洛伊木马是指一种表面上有某种功能 而内部隐藏 着完成特殊任务代码的计算机程序 它利用自身具有的植入功能或依附其它具 有传播能力病毒等途径 进驻目标机器 搜集各种敏感信息 并通过网络发回 搜集到的敏感信息 接受植入者指令 完成各种操作 在一定程度上 木马也 可以称为是计算机病毒 但从木马的本质来讲 它是一种远程控制的黑客工具 具有隐蔽性和非授权性 一般的木马执行文件都很小 如果把木马捆绑到其它 正常文件上 用户很难发现 并且 木马一般不像计算机病毒那样去破坏文件 占用系统资源 而是在背后充当 间谍 的角色 因此 用户即使中了木马 也很难察觉到它的存在 从以往网络安全事件的统计分析中可以发现 有相当部分的网络入侵是通 过木马进行 利用木马 攻击者可以窃取密码 控制系统操作 进行文件操作 等 造成用户资料的泄漏 破坏或整个系统崩溃 随着网络化程度的提高 如何有效防范木马己成为人们关注的问题 目前 国内外很多新版杀毒软件都加入了木马清除功能 市场上也出现了很多 木马 专杀工具 这些软件主要根据木马的动态执行特性识别木马 不能有效识别潜 伏的木马 针对这一情况 本文提出两种根据文件静态信息检测木马的新方法 能有效识别木马文件 特别是潜伏着的没有发作的木马文件 1 1 1 木马的概念及技术原理木马的概念及技术原理 木马是一种网络通信程序 它既不同于病毒 也不同于蠕虫 病毒具有自 我复制和感染文件的特点 它能迅速地感染某台计算机上的每个应用程序文件 但它在不同计算机之间的传播通常不是自发的 需要依靠各种人为因素 例如 人为发送电子邮件等等 蠕虫则通常会通过网络主动在计算机之间传播 因此 第 2 页 共 26 页 它的传播速度一般比病毒快 而木马既不会自我复制和感染文件 也不会主动 传播 木马可分为后门类木马 网银类木马 网游类木马等 其中后门类木马 最为常见 网银类和网游类木马次之 图 1 后门类木马客户端与服务器的通信示意图 不论哪类木马 均包含服务器程序 平常所说的 中了木马 更确切地讲 是 中了木马服务器 服务器程序具有较强的隐蔽性和伪装性 它通常包含在 一些合法程序或数据当中 或者木马服务器本身伪装为一个合法程序 例如 游戏软件 工具软件 电子邮件的附件 网页等等 如果计算机运行这些程序 打开这些文件或访问这些网页 就可能同时在计算机操作系统的后台启动了木 马服务器的安装程序 但普通计算机用户对此是无法觉察的 后门类木马的通信如图 1 所示 除服务器外 还包含客户端 两者遵守一 定的通信协议 如果木马服务器被安装到某台计算机并成功启动 该计算机就 成为受控于木马客户端的目标机 木马投放者或者第三方可在网络的另一端 通过木马客户端向其发送各种命令 而服务器则负责接收 解析和执行命令 并将执行结果返回给客户端 通过这些命令 可以实现对目标机的远程文件管 理 远程屏幕监视 键盘和鼠标消息记录 远程关机和重启 系统信息获取 硬盘数据共享以及远程程序执行等 网银类木马通常没有客户端 它的主要目 的在于窃取目标机用户的网络银行帐号和密码 并将其发送到指定的电子邮箱 而网游类木马的目的则在于窃取网络游戏的帐号 密码和虚拟装备等 并将其 发送到指定的电子邮箱 供邮件接收者牟利 多数服务器会随着目标机的启动而自动运行 运行时 一般还会隐藏进程 和网络连接 以躲避进程查看工具以及防火墙软件 另外 目前某些木马还具 有自我恢复功能 在目标机上存放多个服务器程序及相关文件的备份 如果只 是其中的某一个被删除 那么 其它备份又会在一定条件下运行起来 木马一直是国内外黑客和安全专家研究的热点 它发展至今 从早期的 第 3 页 共 26 页 BackOrifice Netspy 冰河等到现在的广外女生 网络神偷等木马 功能越来 越强大 隐藏 自启动等方面的技术手段也逐渐多样化 1 1 2 木马的危害木马的危害 木马不仅破坏计算机及计算机网络 而且对其进行控制 并窃取或篡改重 要信息 不断对网络安全造成严重的破坏 另外 木马还被许多不法分子用作 犯罪工具 造成巨大的经济损失 甚至扰乱社会治安 综观 2006 年国内的各类典型木马 传奇男孩 剑侠幽灵 及 蜜蜂大盗 等 网类木马会盗取网络游戏的帐号 密码及游戏装备 并将其发送到指定电子邮 箱 供木马使用者出售牟利 严重侵犯了网络游戏合法用户的网络虚拟财产 MSN 小尾巴 QQ 小尾巴 等广告类木马会修改网页定向 导致被感染的计算 机无法访问一些网站 网银大盗 A 等网银类木马采用窃取击键记录的方法 盗用合法用户网上银行的帐号和密码 给用户带来巨大的经济损失 而 灰鸽子 黑洞 等后门类木马则可能使计算机系统完全受到非法控制 据国际著名风险 管理公司公布的调查结果显示 在 2006 年 病毒 蠕虫和特洛伊木马等恶意程 序或混合型攻击共给全球造成了 1890 亿美元的经济损失 同时它预计 全球约 有 6 亿部 Windows 计算机 每部计算机因遭受攻击而带来的经济损失大约在 281 美元到 340 美元之间 基于上述情况 反木马应是反病毒工作者的重点工作之一 目前 一般的 反病毒软件都加入了反木马功能 甚至出现了专门的反木马软件 反木马的研 究正日益受到关注 1 21 2现在流行的查杀方式现在流行的查杀方式 1 通过网络监控发现网络通信的异常并阻断木马的网络通信 或者定义各 种规则 使木马无法进行网络通信 防火墙 入侵检测 Intrusion Detection 以及入侵保护 Intrusion Protection 是 这类技术的典型代表 它们对网络通信的端口及网络连接作了严格的限制和严 密的监控 发现并拦截任何未经允许的网络连接或者通信端口的使用 并向用 户报警 此外 入侵检测还能探测网络流量中潜在的入侵和攻击 而入侵保护 在此基础上又增加了主动阻断功能 目前的入侵保护系统产品在性能和数据包 的分析能力上比入侵检测系统产品都有了质的提升 另外 防火墙联动技术的发展将防火墙从众多的安全问题中解脱出来 与 其它技术互补互益 架构起立体的防护系统 例如 防火墙与入侵检测系统联 动 可以对网络进行动静结合的保护 对网络行为进行细颗粒的检查 并对网 络内外两个部分都进行可靠管理 第 4 页 共 26 页 2 特征码技术 特征码技术最初被应用于反病毒 后亦用于反木马 它被作为检测这些非 法程序的最基本的技术沿用至今 也是目前各类反病毒软件普遍采用的主要技 术 3 实时监控 实时监控 从文件 邮件 网页等多个不同的角度对流入 流出系统的数据 进行过滤 检测并处理其中可能含有的非法程序代码 与其它技术相比 它在 反病毒 反木马等方面体现出实时性的特点 能较明显地减少甚至完全避免由 非法程序带来的危害 目前国内外各类较为著名和常用的安全软件 如 Kaspersky 江民 金山毒霸 瑞星等 均具备了这项功能 4 行为分析 简而言之 行为分析就是根据程序的动态行为特征 如在注册表设置自启动 项等 判断其是否可疑 目前 病毒 木马等非法程序的种类迅速增加 变化不断加快 带来的危 害日益严重 而特征码的提取又必然滞后于非法程序出现 根据国际著名的信 息安全厂商熊猫软件公司的技术文献 从某种特征码未知的非法程序出现 到 研究出它的检测和清除方法 通常会相隔 72 个小时甚至更多的时间 因而需要 这样一种技术 能在特征码提取之前 检测特征码未知的非法程序 以有效的 阻止其进行破坏 更大程度地降低损失 行为分析正是具有可检测特征码未知的非法程序的特点 所以成为目前国 内外反病毒 反木马等领域研究的热点 然而 行为分析在具体应用时一般有 较高的误报率 这也是它早在 20 世纪 90 年代早期就被提出 而至今仍未得到 广泛应用的主要原因 如何在不提高漏报率的同时 有效地降低行为分析在具 休实施时的误报率 是承待解决的问题之一 最近几年 很多国外研究者将新 的智能处理技术引入网络攻击和病毒的检测 提出了许多检测网络攻击和恶意 程序的新方法 如 1 在 2001 年 NAFIPS North American Fuzzy Information Processing Society 国 际会议上 J E Dickerson 等人提出基于 Agent 方法的网络入侵监测系统 该系 统通过在各个 Agent 上对网络活动进行分析 汇总后识别网络攻击行为 可有 效识别网络入侵 后来基于 Agent 的方法也被很多人用于恶意程序的分析上但 这种方法基本可归类为前面提到的方法 对检测潜伏木马仍有一定局限性 2 在可执行程序中检测恶意代码的观点是由 LSFM 研究组提出的 他们应 用各种静态和动态方法执行模型检验 看分析的程序是否与违背预先定义的安 全策略 这种识别恶意代码方式存在的最大问题是需要分析者以策略的形式定 第 5 页 共 26 页 义恶意代码的行为 在 AC SAC 02 会议上 M Weber 等人对此方法进行了改进 提出了 PEAT 系统 该系统不需要定义或识别恶意代码的行为 而是为用户提 供了一些工具来分析整个程序的结构特征 他们认为被插入可执行程序的恶意 代码 其结构特征一般与宿主程序的结构特征不一致 并据此判定文件中是否 插入了恶意代码 但如果病毒编写者对该应用程序的结构非常熟悉 模仿其结 构特征 或用恶意代码完全替换原程序代码 那么该方法就很难检测出恶意代 码的存在 3 Eleazar Eskin 等人在 2005 年初的报告中提出将数据挖掘技术用于木马 文件的检测 与本设计提出方法不同之处是 他们先利用数据挖掘技术发现己 知类型木马的特征 然后利用这些特征构造分类器来检测木马文件 与国外相比 国内研究者的主要结合木马的攻击原理与特征研究木马的检 测方法 近年提出的检测方法主要是对传统检测方法的改进 也对未知木马的 检测进行了探讨 1 西安交通大学的李顺东等人运用字母集合到数字集合的映射理论 字符 串的可计算性理论与数论理论 设计的特洛伊木马检测算法 陈桂清等人提出 的通过监视与跟踪系统对外通信进程的操作检测木马的方法等等 这些方法对 识别新型的木马 特别是 DLL 型木马 就需要进一步改进 2 中国科学技术大学的朱明等人提出了基于多 Agent 协作实现未知木马自 动识别的方法 该方法利用驻留在局域网各机器监测 Agent 和网络监测 Agent 所收集的证据和初步判断 并由协作 Agent 对这些证据和初步判断进行融合印 证并做出最终结论 该方法将 Agent 技术引入木马防范领域 但仍是通过动态 执行特性检测木马 对检测潜伏木马仍有一定局限性 3 2004 年 武汉大学计算机学院的单氏虹将人工智能中的启发式分析技 术引入木马检测 提出一种启发式分析的木马实时查杀模型 这种模型既可以 实现对已知木马的查杀 又可以对未知木马进行启发式分析 并将分析数据提 交专家系统 由专家系统对其判定 本设计提出的通过分析文件的静态信息 发现木马文件与正常文件的区别 不需要上面提到的专家系统的支持 传统的木马检测与清除方法归纳起来可分为两类 一种是利用木马程序运 行时的特征码检测木马 另一种通过监视系统端口 网络连接 注册表状态变 化等动态监控的方法检测木马 这些方法共同特点是通过文件的动态执行状态 特性信息来检测木马 对发现某些潜伏得十分隐蔽和新出现的未知木马 没有 较好方法 本设计提出基于文件自身的静态信息来检测木马 是与传统木马检 测方法的最大区别 为有效解决潜伏木马的识别问题开辟了一条新思路 第 6 页 共 26 页 1 31 3 木马检测的实现方法木马检测的实现方法 特征码技术被作为反病毒技术中最基本的技术沿用至今 也是到目前为止 各类反病毒软件仍普遍采用的技术 特征码 是一串信息 它能唯一标识某一非法程序 如病毒 木马等 研究 人员通过对非法程序样本的分析 提取出 特征码 写入反病毒软件的特征码库 特征码技术的基本原理就是在待测文件中查找特征码 一旦查找到 就判定该 文件是非法程序或包含了非法程序 并作相应的处理 基于特征码的静态扫描便是对特征码技术最直接的应用 目前的各类反病 毒软件均具备这项基本功能 它对用户指定的某个或某几个文件进行扫描 以 确定是否包含非法程序的特征码 据有吻合之处 就可以判定该数据文件己遭 病毒感染 特征代码法的实现步骤如下 1 采集己知病毒样本 如果病毒既感染 COM 文件 又感染 EXE 文件 那么要对这种病毒要同时采集 COM 型病毒样 本和 EXE 型病毒样本 2 在病毒样本中 抽取病毒特征代码 对于既感染 COM 文件又感染 EXE 文件的病毒样本 要抽取两种样本共有的代码 3 将特 征代码存入病毒库 4 检测文件 打开被检测文件 在文件中搜索 检查文件 中是否含有病毒数据库中的病毒特征代码 如果发现病毒特征代码 查询病毒 特征代码就可以知道所感染的病毒类型 在具体实现时 它最初是采用对待测 文件全部扫描的方式 在病毒等非法程序出现的早期 非法程序的种类不过数 百种 采用这种扫描方式还是比较快捷的 但在目前病毒 木马 蠕虫及其变 种的总数超过 60000 的情况下 这种方式显然是效率低下的 为此 采用了一 些用来提高特征码扫描效率的技术 因为木马文件一个很明显的特征就是它的 文件名和大小 所以通过这两个特征来作为静态查杀的初步选择 另外就是取 文件的 MD5 值来进行查杀 先对扫描文件进行 MD5 计算 然后根据得到的 MD5 值与库中特征码进行比较 如果相同就进行处理 1 3 11 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 的内核模式驱动程序 第 7 页 共 26 页 PE 文件主体结构如图 2 所示 PE 文件使用的是一个平面地址空间 所有代码和数据都被合并在一起 组 成一个很大的结构 文件的内容被分割为不同的区块 Section 又称区段 节 区块中包含代码或数据 各个区块按页边界对齐 区块没有大小限制 是一个 连续结构 每个区块都有它自己在内存中的一套属性 如该区块是否包含代码 是否只读或可读 写等 每一个区块都有不同的名字 这个名字用来表示区块的功能 例如 一个 叫 rdata 的区块表明它是一个只读区块 常见的区块有 text rdata data idata 和 rsrc 等 各种块的具体含义详见图 3 块名的具体含义 PE 文件最大的优点是 在磁盘上的数据结构与内存中的结构是一致的 如图 4 物理结构与内存结构对 照图 图 2 PE 文件主体结构 第 8 页 共 26 页 图 3 块名与对应的解释 图 4 物理结构与内存结构 1 3 21 3 2 特征码选择与采集特征码选择与采集 特征码采集的好坏直接影响到整个实验的结果 如果所采集的样本具有一 定的普遍性和代表性的话 那么理论值与实际值差别不会有很大出入 甚至直 接应用到产品中去 如果木马特征码特性带有局部性 不能代表一般性的话 即使得出结论 也会使实验结果与实际产生很大的偏离 所以采集特征码的方 式在本工具中被列为了重点 本工具的根本目的是要找出木马文件在文件静态 特征上的特征 即文件在执行以前所具有的特征差异 重点是木马文件的静态 特性 所以在选择特征码时 既要选择有代表性的 PE 文件 又要满足一定的 数量 1 3 31 3 3 特征码库的设计特征码库的设计 由于是简单木马的查杀 所以直接采用了 ini 文件手动设置特征码库 特征 码库 ini 文件如图 5 注 mnum 的值代表收录的木马特征码个数 第 9 页 共 26 页 n 代表的是具体第 n 1 个病毒 Name 代表的是木马文件的文件名 Size 代表的是木马文件的文件大小 以 byte 计算 MD5 代表的是木马文件的 MD5 值 图 5 特征码库的具体格式 1 3 41 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 天就找 第 10 页 共 26 页 到一个冲突 但从 1991 年到 2001 年这 10 年间 竟没有出现替代 MD5 算法的 MD6 或被叫做其他什么名字的新算法这一点 我们就可以看出这个瑕疵没有太 多的影响 MD5 的安全性 上而所有这些都不足以成为 MD5 的在实际应用中的 问题 并且由于 MD5 算法的使用不需要支付任何版权费用的 所以在一般的情 况下 非绝密应用领域 但即便是应用在绝密领域内 MD5 也不失为一种非常 优秀的中间技术 MD5 怎么都应该算得上是非常安全的了 1 3 51 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 算法来进行文件校验的方案 被大量应用在软件下载站点 论 坛数据库和系统文件安全等方面 第 11 页 共 26 页 1 3 61 3 6 MD5 作特征码简介作特征码简介 本文描述了 MD5 报文摘要算法 此算法将对输入的任意长度的信息进行计 算 产生一个 128 位长度的 指纹 或 报文摘要 假定两个不同的文件产生相 同的报文摘要或由给定的报文摘要产生原始信息在计算上是行不通的 MD5 算 法适合用在文件判定应用中 在此应用中 一个大的文件必须在类似 RSA 算法 的公用密钥系统中用私人密钥加密前被 压缩 在一种安全模式下 MD5 算法能 在 32 位机器上能以很快的速度运行 MD5 的作用是对一段信息 message 生成 信息摘要 message digest 该摘要对该信息具有唯一性 可以作为特征码 用 于验证文件的有效性 是否有丢失或损坏的数据 对木马文件的判定 在哈希 函数中计算散列值输入一个任意长度的字节串 生成一个 128 位的整数 由于 算法的某些不可逆特征 在加密应用上有较好的安全性 并且 MD5 算法的使 用不需要支付任何版权费用 唯一性和不可逆性都不是绝对的 从理论上分析 是一种多对一的关系 但两个不同的信息产生相同摘要的概率很小 不可逆是 指从输出结果中反推输入所需的运算量和计算时间太大 使用穷举字典的方法 又需要太多的存储空间 所以用 MD5 来作为特征码是很有高效性和稳定性的 2 2 需求分析及方案设计需求分析及方案设计 2 12 1本工具要完成的功能本工具要完成的功能 本工具的运行是基于 Windows 平台的 选用所熟悉的开发工具及开发环境 进行本工具的设计与开发 设计开发一个木马检测工具 本设计要求实现部分功能 1 能对特征 码库进行设置 2 本工具能自动的读取特征码库中的特征码 2 本工具 能检测指定盘符的文件 并进行相应的检测 4 本工具能进行的检测有普通 查杀和特征码查杀 2 22 2环境需求环境需求 操作系统 Windows XP SP2 开发平台 Visual C 6 0 2 32 3可行性研究可行性研究 本程序的开发利用 Visual C 作为开发工具 使用其作为程序的开发工具 是因为它采用面向对象的编程方法 把程序和数据封装起来作为一个对象 并 为每个对象赋予相应的属性 事件驱动的编程机制 通过事件执行对象的操作 在设计应用程序时 不必建立具有明显的开始和结束的程序 而是编写若干个 过程 通过这些过程执行指定的操作 提供完善的指令控制语句 给开发高性 第 12 页 共 26 页 能的系统提供了保障 保证了代码的模块化要求 而且 Visual C 本身就自带 一些库函数能够提供一些功能 更利于本工具的开发 3 3 木马查杀功能的实现木马查杀功能的实现 3 13 1工具模块介绍工具模块介绍 模块一 驱动器的选择 该模块可以选择机器上所以本地硬盘和移动盘 模块二 普通查杀的选择 即快速查杀 通过比较文件名和文件大小来查 杀 模块三 特征码查杀的选择 即 MD5 特征码查杀 通过读取特征库里的数 据与文件特征码进行比较来进行查杀 模块四 显示查杀成功的文件 模块五 显示正在查杀的文件夹 图 6 木马查杀工具的功能模块界面 3 23 2木马特征码的读取木马特征码的读取 由于本工具用的是 ini 文件作为特征库文件 所以木马查杀工具开始运行第 一件事就是对特征库文件的读取 获得病毒的特征码 读取的方法是首先打开 和工具同一目录下的 code ini 文件 首先读取得到总共的病毒数 然后依次循 环读出每个 section 下的属性值 即对应的文件的 name 属性和 size 属性 也就 是文件名和文件大小 下是基于 ini 特征库文件读取的代码 CString CIniFile GetFileString CString Section CString Item CString Value 第 13 页 共 26 页 ReadIniFile 打开文件 if bFileExist FALSE FileContainer GetSize 0 return Value 文件打开出错或文件为空 返回默认值 int i 0 int iFileLines FileContainer GetSize CString strline 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 icount 0 pms count 1 0 pms abcd 0 0 x67452301 pms abcd 1 0 xefcdab89 pms abcd 2 0 x98badcfe pms abcd 3 0 x10325476 添加字符窜到消息摘要中 md5 append md5 state t pms const md5 byte t data int nbytes const md5 byte t p data int left nbytes int offset pms count 0 3 63 md5 word t nbits md5 word t nbytes 3 if nbytes count 1 nbytes 29 第 15 页 共 26 页 pms count 0 nbits if pms count 0 count 1 Process an initial partial block if offset int copy offset nbytes 64 64 offset nbytes memcpy pms buf offset p copy if offset copy buf Process full blocks for left 64 p 64 left 64 md5 process pms p Process a final partial block if left memcpy pms buf p left 完成消息摘要并返回 md5 finish md5 state t pms md5 byte t digest 16 static const md5 byte t pad 64 0 x80 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 t data 8 int i Save the length before padding for i 0 i count i 2 i 3 count 0 3 63 1 Append the length md5 append pms data 8 for i 0 i abcd i 2 i 3 abcd 0 b pms abcd 1 c pms abcd 2 d pms abcd 3 md5 word t t ifndef ARCH IS BIG ENDIAN define ARCH IS BIG ENDIAN 1 slower default implementation endif if ARCH IS BIG ENDIAN On big endian machines we must arrange the bytes in the right order This also works on machines of unknown byte order md5 word t X 16 const md5 byte t xp data int i 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 On little endian machines we can process properly aligned data without copying it md5 word t xbuf 16 const md5 word t X if data const md5 byte t 0 3 data are properly aligned 第 17 页 共 26 页 X const md5 word t data else not aligned memcpy xbuf data 64 X xbuf endif define ROTATE LEFT x n x 32 n Round 1 Let abcd k s i denote the operation a b a F b c d X k T i s define F x y z x y x z define SET a b c d k s Ti t a F b c d X k Ti a ROTATE LEFT t s b Do the following 16 operations SET a b c d 0 7 T1 部分代码省略 SET b c d a 15 22 T16 undef SET Round 2 Let abcd k s i denote the operation a b a G b c d X k T i s define G x y z x z y z define SET a b c d k s Ti t a G b c d X k Ti a ROTATE LEFT t s b Do the following 16 operations SET a b c d 1 5 T17 SET d a b c 6 9 T18 部分代码省略 SET c d a b 7 14 T31 第 18 页 共 26 页 SET b c d a 12 20 T32 undef SET Round 3 Let abcd k s t denote the operation a b a H b c d X k T i s define H x y z x y z define SET a b c d k s Ti t a H b c d X k Ti a ROTATE LEFT t s b Do the following 16 operations SET a b c d 5 4 T33 部分代码省略 SET b c d a 2 23 T48 undef SET Round 4 Let abcd k s t denote the operation a b a I b c d X k T i abcd 0 a pms abcd 1 b 第 19 页 共 26 页 pms abcd 2 c pms abcd 3 d 3 43 4文件属性的更改文件属性的更改 在 windows 操作系统下 当文件属性为只读时 删除文件将无法成功 所 以需要对文件进行属性更改 以进行查杀 以下为实现代码 CFileStatus status status m attribute 0 x00 CFile SetStatus tFileName status DeleteFile tFileName 3 53 5实现驱动器的选择实现驱动器的选择 为了方便用户查杀方便和深度查杀 所以设置了驱动器 本地硬盘和移动 设备 的选择 下面实现代码 void CDiskCleanDlg GetSysDriver UINT drvType 0 CString drv char ch 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 文件 的特征码进行读取 下面是具体实现代 码 void FileNameRead 第 20 页 共 26 页 for int i 0 im hWnd WM ANSWER WPARAM 2 LPARAM 0 for int i 0 im hWnd WM ANSWER 第 22 页 共 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 3 63 6MD5 特征码查杀特征码查杀 因为 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论