1、 本 科 毕 业 论 文 基于网络的漏洞扫描系统 Vulnerability Scan System Based on Network 姓 名: 学 号: 学 院:软件学院 系:软件工程 专 业:软件工程 年 级 指导教师: 年 月 毕业论 文任务书 题 目: 基于网络的漏洞扫描系统 目标要求: 设计并实现一个基于网络的漏洞 扫描 系统。该系 统由漏洞特征数据库、用户控制台、远程主机检测模块、操作系统嗅探模块、端口扫描模块及 漏洞扫描模块组成。 该系统应具以下功能: ( 1)针对普通非专业用户,提供图形化界面,友好的操作方式。针对专业用户,如网络管理员,提供命令行操作方式,使之能够方便地使用各
2、个模块的功能。 ( 2)接受用户的扫描任务,允许用户设置扫描参数,如 IP 地址段,端口号等。 ( 3) 实现远程主机检测、 操作系统嗅探、端口扫描、漏洞扫描等功能。 ( 4)在一定时间内完成扫描任务并将扫描结果反馈给用户 。 除系统之外,完成毕业论文。 支持条件: 1、 硬件 支持 处理器:奔腾 4 或以上 内存: 512M 或以上 网络: 1M 或以上 2、 软件支持 操作系统: Windows 2000 开发工具: Microsoft Visual C+ 6.0; Eclipse-SDK-3.2-win32 开发语言: c 语言; java 语言 数据库: MySQL 5.0.18 校内
3、指导教师(签名) 职称 学生(签名) 分阶段 进度安排 阶段 起讫时间 计划完成内容 1 2009 年 12 月 2 日 - 2010 年 1 月 11 日 完成毕业设计(论文)的开题报告,并交给指导教师审核。 2 2009 年 1 月 12 日 - 2010 年 3 月 19 日 对课题进行深入调研,研究该课题所需要的技术并进行学习,在导师的指导下完成系统的设计工作。 完成中期检查报告。 3 2010 年 3 月 20 日 - 2010 年 4 月 30 日 编写各模块代码并进行测试 。 4 2010 年 5 月 1 日 - 2010 年 5 月 20 日 集成各模块并进行测试,基本完成系统
4、整体,完成毕业论文初稿。 5 2010 年 5 月 21 日 - 2010 年 5 月 31 日 修改完善改系统并完成毕业论文定稿。 6 2010 年 6 月 1 日 - 2010 年 6 月 7 日 整理资料,准备演示文档及答辩。 教师分阶段指导记录 第一阶段: 指导学生确定课题范围和方向,并指导学生如何切入课题。 第二阶段: 检查学生对课题的调研工作,收集学生遇到的困难和问题并进行点拨和解答。 第三阶段: 检查学生的 系统 设计工作,并提出修改意见。 第四阶段: 检查学生工作进度,和已经完成的工作,解决学生工作中遇到的困难。 第 五阶段: 指导学生论文写作方法与技巧,审核学生论文初稿并提出
5、修改意见,直至论文符合要求。 厦门大学软件学院毕业设计(论文)开题报告 学生姓名 班级 一班 学号 校内指导教师姓名 职称 副教授 所在单位 厦门大学软件学院 毕业设计(论文)题 目 基于网络的漏洞 扫描 系统 毕业设计(论文)的 目标: 设计并实现一个基于网络的漏洞 扫描 系统。该系 统由漏洞特征数据库、用户控制台、 远程主机检测模块、 操作系统 嗅探 模块、端口扫描模块及 漏洞扫描模块组成。 该系统应具以下功能: ( 1)针对普通非专业用户,提供图形化界面,友好的操作方式。 针对专业用户,如网络管理员,提供命令行操作方式,使之能够方便地使用各个模块的功能。 ( 2)接受用户的扫描任务,允许
6、用户设置扫描参数,如 IP 地址段,端口号等。 ( 3)实现远程主机检测、 操作系统嗅探、端口扫描、漏洞扫描等功能。 ( 4)在一定时间内完成扫描任务并 将扫描结果反馈给用户 。 开发环境 操作系统: Windows 2000 Professional 开发工具: Microsoft Visual C+ 6.0; Eclipse-SDK-3.2-win32 开发语言: c 语言 ; java 语言 数据库: MySQL 5.0.18 实现方法 ( 1) 远程主机检测模块 本模块主要使用 ICMP 回显请求与应答报文。在主机没有被设置为过滤ICMP 数据包的情况下,我们可以向目标 IP 发送一个
7、 ICMP 回显请求数据包,如果目标主机收到该信息,那么它就会发送一个 ICMP 相应数据包给发送方主机,发送方拆包并检测接受到的数据,有三个条件可以说明目标主机是存活的:一是接收到的数据包 IP 地址是发送方所发送的目标 IP 地址; 二是 type 属性为 0,也就是说该数据包的确是回显请求应答数据包; 三是标识符与所发送数据包的标识符一致。这样我们就能够确定目标主机在线,其余所有情况都表明目标主机不在线。 ( 2) 操作系统嗅探模块 系统主要使用 ICMP 栈指纹识别的方式来探测目标主机操作系统类型及版本号。其方法是向目标主机发送一组 ICMP 数据包,根据目标主机对数据包响应的差异来区
8、分不同的操作系统。 扫描引擎向目标主机发送一系列 ICMP 数据包进行探测,在完成响应数据包信息的手机后,将所得到的特征存入一个数据结构中。扫描引擎会读取数据库中记录的操作系统特征信息与数据库中所记录的各种操作系统的版本特征信息相匹配,如果匹配 成功,则认为该条记录所描述的的操作系统版本是目标系统所使用的操作系统版本。 ( 3) 端口探测模块 使用 TCP SYN 扫描技术,它利用了 TCP 三次握手中的一个步骤,也就是传送 SYN 标志这个步骤,其他的后续步骤没有发生。而 SYN 标志在 TCP 协议中表示发起一个新的连接,但如果只是发送了一个 SYN 标志,后续的三次握手过程没有。 不同的
9、端口状态会返回不同的响应数据包,如果是开放的端口,那么会返回一个含有 SYN+ACK 标志的 TCP 报文,如果端口是关闭的,那么会反馈一个含有 RST 标志的报文。由此可以判断目标主机的端口开放情况。 ( 4) 漏洞扫描模块 在收集到目标主机的操作系统、开放端口等信息之后,我们就可以针对端口服务进行相关的漏洞扫描了。不同的服务所对应的漏洞种类也不尽相同,但无论何种漏洞,都可以采用模拟攻击的方法进行探测,即向目标主机的目标端口发送一组精心构造的数据报,检测目标主机的反应情况并分析结果。如果返回结果跟漏洞数据库中记录的漏洞特征在设定的匹配规则下相匹配,就认为目标主机 存在该漏洞。 进度安排: 时
10、间 计划完成内容 2009 年 12 月 2 日 - 2010 年 1 月 11 日 完成毕业设计(论文)的开题报告,并交给指导教师审核。 2009 年 1 月 12 日 - 2010 年 3 月 19 日 对课题进行深入调研,研究该课题所需要的技术并进行学习,在导师的指导下完成系统的设计工作。 完成中期报告。 2010 年 3 月 20 日 - 2010 年 4 月 30 日 编写各模块代码并进行测试 。 2010 年 5 月 1 日 - 2010 年 5 月 20 日 集成各模块并进行测试,基本完成系统整体,完成毕业论文初稿。 2010 年 5 月 21 日 - 2010 年 5 月 31
11、 日 修改完善改系统并完成毕业论文定稿。 2010 年 6 月 1 日 - 2010 年 6 月 7 日 整理资料,准备演示文档及答辩。 指导教师审核意见: 校内指导教师签名: 2010 年 月 日 厦门大学软件学院毕业设计(论文)中期检查报告 学生姓名 班级 一班 学号 校内指导教师姓名 职称 副教授 所在单位 厦门大学软件学院 毕业设计(论文)题 目 基于网络的漏洞分析系统 毕业设计(论文)的 目标和主要任务: 目标 :设计并实现一个基于网络的漏洞扫描系统。 该系统能 检测远程或本地主机安全性弱点的程序。通过使用 该 扫描器, 系统管理员能够发现所维护的服务器的各种 TCP 端口的分配、提
12、供的服务、 Web 服务软件版本和这些服务及软件呈现在 Internet 上的安全漏洞。从而在计算机网络系统安全防护中做到有的放矢,及时修补漏洞,构筑安全的网络体系 。 主要任务: (1) 深入了解网络安全漏洞方面的知识,漏洞的概念、成因等。 (2) 分析现有网络漏洞扫描系统的现状,所使用的原理及特点。 (3) 学习漏洞检测到相关技术,原始套接字编程、协议栈指纹识别技术,各种扫描技术等。 (4) 设计并实现一个基于网络的漏洞扫描系统,要求该系统能够完成远程主机检测、操作系统嗅探、端口扫描和 漏洞扫描等基本功能,并提供友好的用户操作界面。 另外, 完成毕业论文及答辩。 已经完成毕业设计(论文)任
13、务的情况 : 漏洞相关知识的学习: 漏洞也称脆弱性,是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。 系统安全漏洞是在系统具体实现和具体使用中产生的错误,但并不是系统中存在的错误都是安全漏洞。只有能威胁到系统安全的错误才是漏洞。许多错误在通常情况下并不会对系统安全造成危害,只有被人在某些条件下故意使用时才会影响系统安全。 漏洞问题是与时间紧密相关的。一个系统从发布的那一天起,随着用户的深入使用,系统中存在的漏洞会被不断暴露出来,这些早先被发现的漏洞也会不断被系统供应商发布的补丁软件修补,或在以后发布的新版系统中得以纠正。而在新版系统
14、纠正了旧版本中具有漏洞的同时,也会引入一些新的漏洞和错误。因而随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现。漏洞问题也会长期存在。因而脱离具体的时间和具体的系统环境来讨论漏洞问题是毫无意义的。只能针对目标系统的作系统版本、其上运行的软件版本以及服务运行设置等实际环境来具体谈论其中可能存在 的漏洞及其可行的解决办法。 安全漏洞形成的原因主要有:设计上的缺陷、口令设置过于简单、数据未加密、软件 bug 等。 常见的几种漏洞: CGI 漏洞。 由于 CGI 程序开发者的疏忽,许多 CGI 程序存在各种危险程度的漏洞。例如有的 CGI 程序允许远程攻击者在 WEB 服务器上执行任意的命令,可
15、能对服务器造成破坏;有些 CGI 程序本身、或者被其调用的函数缺乏对用户输入数据的合法性检查,未能滤除一些特殊字符,使得入侵者可以通过构造请求来达到入侵的目的。比如,缺乏对 “” 的过滤,可能导致入侵者读取系统的任意文件;有些 CGI 程序会 向客户端浏览器返回某些敏感信息,比如脚本所在路径、 HTTP 根目录所在路径、 Perl 版本、 server_admin、 server_name、 PATH环境变量等,这些都为黑客的攻击提供了便利。 SMTP 漏洞 。 SMTP 服务已经在 RFC 中被详细的定义,但在具体实现中各个软件开发商并没有很好的遵循 RFC 的规定,因此我们可以通过实现上的
16、细小差异来进行探测活动。通过发送特定的、非标准的数据包来获得指纹信息,可以进而判断出目标主机使用的软件版本信息。 FTP 漏洞 。 FTP 服务 存在多种漏洞,包括拒绝服务攻击漏洞、缓冲区溢出漏洞 等等,以 FTP 弱口令为例,因为 ftp 服务器上可能存在匿名用户或者弱势密码用户,所以黑客常利用该缺陷进行攻击。例如发现 ftp 匿名用户后,可以再借助系统的其他漏洞通过匿名用户提升权限。开放匿名用户经常会给系统带来一些安全隐患。 DOS 漏洞 。 任何对服务的干涉如果使得其可用性降低或者失去可用性均成为拒绝服务。如果一个计算机系统崩溃或其带宽耗尽或其硬盘被填满,导致其不能提供正常的服务,就构成
17、拒绝服务。 Finger 漏洞 。 Finger 是 UNIX 系统中用于查询用户情况的实用程序。 UNIX系统保存了每个用户的详细资料,包括 E-mail 地址、账号,在现实生活中的真实姓名、登录时间、有没有未阅读的信件,最后一次阅读 E-mail 的时间以及外出时的留言等资料。当用 Finger 命令查询时,系统会将上述资料一一显示在终端计算机上。 漏洞扫描技术现状的调研: 安全扫描通常采用两种策略,第一种是被动式策略,第二种是主动式策略。所谓被动式策略就是基于主机之上,对系统中不合适的设置,脆弱的口令以及其他同安全规则抵触的对象进行检查;而主动式策略是基于网络的,它通过执行一些脚本文件模
18、拟对系统进行攻击的行为并记录系统的反应,从而发现其中的漏洞。利 用被动式策略扫描称为系统安全扫描,利用主动式策略扫描称为网络安全扫描。 目前安全漏洞扫描主要使用的检测方案: ( 1) 基于应用的检测技术 它采用被动的、非破坏性的办法检查应用软件包的设置,发现安全漏洞。 ( 2)基于主机的检测技术 它采用被动的、非破坏性的办法对系统进行检测。通常,它涉及到系统的内核,文件的属性,操作系统的补丁等问题。这种技术还包括口令解密,把一些简单的口令剔除。因此,这种技术可以非常准确地定位系统的问题,发现系统的漏洞。它的缺点是与平台相关,升级复杂。 ( 3)基于目标的漏洞检测技术 它采 用被动的、非破坏性的办法检查系统属性和文件属性,如数据库,注册号等。通过消息文摘算法,对文件的加密数进行检验。这种技术的实现是运行在一个闭环上,不断地处理文件,系统目标,系统目标属性,然后产生检验数,把这些检验数同原来的检验数相比较。一旦发现改变就通知管理员。