1、中央广播电视大学人才培养模式改革和开放教育计算机科学与技术专业毕业论文在线安全检测系统设计姓名何可畏学号1041001266438学校工商电大指导老师郭岚峰2目录摘要3关键词3一、在线安全研究的目的和现状3(一)研究目的3(二)研究内容概述4(三)系统需求分析4二、漏洞扫描技术概述5(一)什么是漏洞扫描5(二)漏洞扫描器的分类5(三)漏洞扫描气的工作原理6(四)漏洞扫描的整体结构7五CGI的应用8三、详细设计9(一)在线升级工作原理9(二)多线程原理及实现10(三)MFC部分类的使用11四、关键技术实现13(一)在线升级系统的实现13(二)多线程实现的方法15五、系统调试16参考文献173在线
2、安全检测系统设计摘要21世纪是信息时代,信息已成为社会发展的重要战略资源,社会的信息化已成为当今世界发展的潮流和核心,而信息安全在信息社会中将扮演极为重要的角色。随着计算机网络的不断发展,全球信息化已成为人类发展的大趋势。但由于计算机网络具有联结形式多样性、终端分布不均匀性和网络的开放性、互连性等特征,致使网络容易受到黑客、恶意软件和其他不轨的攻击,前者会对用户造成不可预料的影响,而后者往往使系统崩溃。无论是在局域网还是在广域网中,都存在着自然和人为等诸多因素的脆弱性和潜在威胁。故此,网络的安全措施应是能全方位地针对各种不同的威胁和脆弱性,这样才能确保网络信息的保密性、完整性和可用性。本文开始
3、的部分本文的开始部分,通过对黑客行为和典型攻击的分析,总结了网络安全漏洞存在必然原因,并综述了计算机网络安全的现状,以及漏洞扫描技术的具体概念,分类和局限性。本文的重点在于改进原有系统的主题模块,并对原有系统增加了一些功能,使之功能更加完善。最后提出了该系统还存在的不足以及一些进一步完善和扩展的建议。关键词网络安全扫描漏洞一、在线安全研究的目的和现状(一)研究目的现代计算机系统功能日渐复杂,网络体系日渐强大,正在对社会产生巨大深远的影响,但同时由于计算机网络具有联结形式多样性、终端分布不均匀性和网络的开放性、互连性等特征,致使网络易受黑客、恶意软件和其他不轨的攻击,所以使得安全问题越来越突出。
4、4(二)研究内容概述本课题的研究内容包括分析黑客的攻击行为、收集整理网络安全漏洞、漏洞扫描系统的设计并实现,漏洞扫描系统的测试与改进。笔者着重参与了漏洞扫描系统的设计并实现、漏洞扫描系统的测试与改进。在系统结构方面我们拟采用两种方案,实现两种结构一种是基于主机的网络安全评估系统,一种是基于网络的安全评估系统。基于主机的,是用户控制界面和扫描引擎都在一个应用程序中,安装灵活,但不便于移植,且受到系统本身所在应用平台的限制。另一种是基于网络的是BROWSER/SERVER模式,扫描引擎等主要部分都放在安全的扫描服务器上。管理者在独立的其它工作站上进行监控,通过浏览器进行扫描控制和查看结果。在访问工
5、作站和扫描引擎之间的数据通讯采用加密通道方式。(三)系统需求分析1、系统功能的要求(1)系统首先应该可以对相应IP进行扫描,并给出相应的报告(2)能够实现对已加漏洞的扫描,并给出一份简略的报告和一份详尽的报告(3)系统在扫描和更新的时候应该有明显的标识2、系统性能要求(1)系统应该在扫描过程中使用多线程扫描,以节省使用时间(2)系统应该考虑到用户在适用本程序时,要不断的更新漏洞库,因此,系统需要有在线升级的功能。3、用户界面要求(1)用户界面应该简洁,通俗易懂,(2)用户界面应该能够准确的显示出程序的进程(3)用户界面应该给出帮助文件,是用户能够独立使用该程序。4、系统的可扩展性(1)应该留出
6、足够的空间,以方便以后添加控键。(2)将来系统成熟时,应该可以基于任何操作平台进行扫描55、采用方法关于在线安全评估系统的扫描过程大致可以分为两类一类是基于主机的;一类是基于网络的。在此次研究中,我们拟同时采用两种方法6、系统设计工具的选择MICROSOFT公司开发的VISUALC一直是一种具有高度综合性的软件开发工具,用它开发的程序有着运行速度快,可移植性强等优点。因此,我们采用VC来完成我们系统的设计任务二、漏洞扫描技术概述(一)什么是漏洞扫描漏洞扫描器是一种自动检测远程或本地主机安全性弱点的程序。通过使用漏洞扫描器,系统管理员能够发现所维护的WEB服务器的各种TCP端口的分配、提供的服务
7、、WEB服务软件版本和这些服务及软件呈现在INTERNET上的安全漏洞。从而在计算机网络系统安全保卫战中做到“有的放矢”,及时修补漏洞,构筑坚固的安全长城。(二)漏洞扫描器的分类按常规标准,可以将漏洞扫描器分为三类1、主机漏洞扫描器(HOSTSCANNER)在系统本地运行检测系统漏洞的程序。如著名的COPS、TRIPEWIRE、TIGER等自由软件。2、网络漏洞扫描器(NETWORKSCANNER)基于INTERNET,远程检测目标网络和主机系统漏洞的程序。如SATAN、ISS软件。3、入侵扫描器(INTRUSIONSCANNERS)是能够远程实时检测目标主机漏洞,在某些情况下可允许实时尝试和
8、探测这些漏洞的程序6(三)漏洞扫描气的工作原理网络漏洞扫描器通过远程检测目标主机TCP/IP不同端口的服务,记录目标给予的回答。通过这种方法,可以搜集到很多目标主机的各种信息(例如是否能用匿名登陆,是否有可写的FTP目录,是否能用TELNET,HTTPD是否是用ROOT在运行)。在获得目标主机TCP/IP端口和其对应的网络访问服务的相关信息后,与网络漏洞扫描系统提供的漏洞库进行匹配,如果满足匹配条件,则视为漏洞存在。此外,通过模拟黑客的进攻手法,对目标主机系统进行攻击性的安全漏洞扫描,如测试弱势口令等,也是扫描模块的实现方法之一。如果模拟攻击成功,则视为漏洞存在。在匹配原理上,该网络漏洞扫描器
9、采用的是基于规则的匹配技术,即根据安全专家对网络系统安全漏洞、黑客攻击案例的分析和系统管理员关于网络系统安全配置的实际经验,形成一套标准的系统漏洞库,然后再在此基础之上构成相应的匹配规则,由程序自动进行系统漏洞扫描的分析工作。所谓基于规则是基于一套由专家经验事先定义的规则的匹配系统。例如,在对TCP80端口的扫描中,如果发现/CGIBIN/PHF或/CGIBIN/COUNTCGI,根据专家经验以及CGI程序的共享性和标准化,可以推知该WWW服务存在两个CGI漏洞。同时应当说明的是,基于规则的匹配系统也有其局限性,因为作为这类系统的基础的推理规则一般都是根据已知的安全漏洞进行安排和策划的,而对网
10、络系统的很多危险的威胁是来自未知的安全漏洞,这一点和PC杀毒很相似。实现一个基于规则的匹配系统本质上是一个知识工程问题,而且其功能应当能够随着经验的积累而利用,其自学习能力能够进行规则的扩充和修正,即是系统漏洞库的扩充和修正。当然这样的能力目前还需要在专家的指导和参与下才能实现。但是,也应该看到,受漏洞库覆盖范围的限制,部分系统漏洞也可能不会触发任何一个规则,从而不被检测到。整个网络扫描器的工作原理是当用户通过控制平台发出了扫描命令之后,控制平台即向扫描模块发出相应的扫描请求,扫描模块在接到请求之后立即启动相应的子功能模块,对被扫描主机进行扫描。通过对从被扫描主机返回的信息进行分析判断,扫描模
11、块将扫描结果返回给控制平台,再由控制平台最终呈现给用户。7(四)漏洞扫描的整体结构外部扫描模块直接从安装了外部扫描模块的运行平台(简称扫描主机)上以其他机器为对象(简称被扫描主机)进行扫描;内部扫描模块则以被扫描主机作为运行平台,由另一台机器从远程进行控制;而控制平台则提供一个人机交互的界面。内部扫描模块外部扫描模块被扫描主机扫描主机外部扫描请求各种网络服务请求内部扫描请求内部扫描结果外部扫描返回信息用户控制台图2网络漏洞扫描系统的结构内部扫描原理当用户通过控制平台发出了内部扫描的命令之后,控制平台即向内部扫描模块发出相应的内部部扫描请求,由于内部扫描模块就装在被扫描主机8上,所以内部扫描模块
12、接到请求后启动各子功能模块对本机进行相应的内部扫描,并将结果实时的返回给控制平台,再由控制平台将扫描结果最终呈现给用户。(五)CGI的应用整个漏洞扫描系统利用了浏览器/服务器(B/S)架构,目的是为了消除由于操作系统平台的不同而给程序的运行带来的差异,还为了能利用HTML提供的一系列功能,如超文本功能、灵活的版面编辑功能来构建一个美观灵活的人机接口。在该网络漏洞扫描器的实现中,我们通过CGI技术来连接前台的浏览器和后台的扫描程序。CGI是通用网关接口,作为一种规范,它允许WEB服务器执行其他程序并将它们的输出以相应的方式储存在发给浏览器的文本、图形和音频中。CGI程序能够提供从简单的表单处理到
13、复杂的数据库查询等各种功能,这大大增强了WEB的动态处理能力和交互能力。服务器和CGI程序相结合能够扩充和自定义WORLDWIDEWEB的能力。CGI过程的主要步骤如下1浏览器将URL的第一部分解码并联系服务器;2浏览器将URL的其余部分提供给服务器;3服务器将URL转换成路径和文件名;4服务器意识到URL指向一个程序,而非一个静态的文件;5服务器准备环境变量,执行CGI程序;6程序执行,读取环境变量和STDIN;7程序为将来的内容向STDOUT发送正确的MIME头信息;8程序向STDOUT发送其输出的其余部分,然后终止;9服务器发现程序终止,关闭与浏览器的连接;10浏览器从程序中显示输出。9
14、三、详细设计(一)在线升级工作原理一个INTERNET客户端程序的目的是通过INTERNET协议如HTTP、FTP等来存取网络数据源(服务器)的信息。客户端程序可以访问服务器获得象天气预报,股票价格、重要新闻数据,甚至是与服务器交换信息。INTERNET客户端程序可以通过外部网络(INTERNET)或内部网络(一般为INTRANET)访问服务器。为了开发INTERNET客户端程序。MFC类库提供了专门的WIN32INTERNET扩展接口,也就是WININET。MFC将WININET封装在一个标准的、易于使用的类集合中。在编写WININET客户端程序时,你既可以直接调用WIN32函数,也可以使用
15、WININET类库。WIN32INTERNET扩展提供了对普通INTERNET协议的访问,这些协议包括HTTP、FTP和GOPHER。GOPHER已经渐渐淡出。借助于WININET编程接口,开发人员不必去了解WINSOCK、TCP/IP和特定INTERNET协议的细节就可以编写出高水平的INTERNET客户端程序。WININET为所有几种协议(HTTP、FTP和GOPHER)提供了统一的函数集,也就是WIN32API接口。利用这些统一的函数集,大大简化了针对HTTP、FTP等协议的编程,从而轻松地将INTERNET集成到自己的应用程序中。底层协议的转换(如从FTP到HTTP)只要对源代码稍作修
16、改就可以完成。在VISUALC工程中提供有两种方式来使用WININET。一种是直接调用WIN32INTERNET函数,另一种是使用WININET类库。MFC对WININET的封装是通过提供三个由CSTDIOFILE派生类实现的。这三个派生类是CINTERNETFILE、CHTTPFILE和CGOPHERFILE。由于GOPHER协议已经很少使用,所以本文将不再对CGOPHERFILE进行讨论。对开发人员来说,不管你以前是否用过CSTDIOFILE,WININET都是很好理解并且易于使用的。它使得存取INTERNET数据易如反掌,使得INTERNET数据和本地数据的处理一致透明,数据的存储位置已
17、经不再重要。MFCWININET类有如下优点10缓冲器输入输出数据的类型安全处理许多函数的参数都是缺省值对普通的INTERNET错误进行异常处理自动清除打开的句柄和连接使用WININET提供的API函数,你可以通过HTTP协议下载HTML页,HTTP协议是专门用于在服务器和客户浏览器之间传输HTML页。发送FTP请求上传或下载文件以及获取服务器的目录信息。通过匿名登陆下载文件便是FTP的典型应用。其它基于HTTP、FTP协议的应用。使用WININET的一般流程如下图图3(二)多线程原理及实现每个进程都有私有的虚拟地址空间,进程的所有线程共享一个地址空间。每个线程被CPU分配一个时间片,一旦被激
18、活,他正常运行直到时间片耗尽并被挂起,此时,操作系统选择另一个线程进行运行,通过时间片轮转,又由于各个时间片很小(20毫秒级),看起来就像多个线程同时在工作。实际上只有多处理器系统上才是真正的在可得到的处理器上同时运行多个线程。基于WIN32的应用程序,以使用户提高效率,加强反应能力以及进行后台辅助处理。在VISUALC中利用MFC编程时,线程被分为工作者线程和用户界面线成建立连接发送请求关闭连接11两大类。前者常用于处理后台任务,执行这些后台任务并不会耽搁用户对应用程序的使用,即用户无需等待后台任务的完成。后者常用来独立的处理用户输入和响应用户事件。(三)MFC部分类的使用WININET是指
19、由MICROSOFTWIN32提供的INTERNET函数,在WININETDLL动态库中所包含的这些函数使得程序员能方便地使用HTTP、FTP和GOPHER访问INTERNET,再稍加变通后还能进行FINGER查询和WHOIS查询。VC42以上版本的MFC则提供了WININET类,这些类屏蔽了WINSOCK和TCP/IP协议,程序员只须调用这些类的方法,而不用了解协议的具体内容就能编制客户端程序访问HTTP、FTP、GOPHER等站点。1WININET类及其功能MFC共提供了13个WININET类,它们实现了一系列INTERNET访问功能。1CINTERNETSESSION创建1个或多个INT
20、ERNET通道。2CINTERNETCONNECTION与子类CHTTPCONNECTION、CFTPCONNECTION、CGOPHERCONNECTION管理应用程序与INTERNET服务器HTTP服务器、FTP服务器、GOPHER服务器建立的连接。3CINTERNETFILE与子类CHTTPFILE、CGOPHERFILE提供了访问远程服务器HTTP服务器、GOPHER服务器文件系统的方法。4CFILEFIND与子类CFTPFILEFIND、CGOPHERFILEFIND完成在本地及远程INTERNET站点FTP服务器、GOPHER服务器查找文件的功能。5CGOPHERLOCATOR从G
21、OPHER站点获取GOPHER位标LOCATOR,并提供给CGOPHERFILEFIND用来定位。6CINTERNETEXCEPTION描述与INTERNET操作有关的例外情况。2用WININET编制INTERNET客户端程序INTERNET客户端应用程序指基于INTERNET协议如GOPHER、FTP、HTTP等从网络数据资源服务器获取信息的程序。程序员可以直接调用WIN32函数或采用MFC的WININET类编写WININET客户端应用程序。作者在编制INTERNET客户端程序的过程中,用WININET类完成了HTTP查询、12FTP查询、GOPHER查询、FINGER查询、WHOIS查询等
22、功能模块的实现。查询的主要功能是设法与服务器建立连接,然后从服务器直接接受回应信息或获取对服务器相关文件系统的控制句柄。下面分别阐述不同协议查询方法的实现。WININET类的声明在头文件“AFXINETH“中,在使用到WININET类的应用程序中要有语句INCLUDE3访问WWW服务器做一个HTTP连接,最简单的方法是创建CINTERNETSESSION对象,以某一有效HTTP站点URL为参数调用函数OPENURL,它返回CINTERNETFILE文件句柄,其内容为由此URL定位的WEB页面信息,可以像处理本地文件一样对其进行读、写、搜索等操作,获取必要的信息。访问WWW站点,还可以使用CHT
23、TPCONNECTION类。具体方法是,以HTTP服务器域名及其执行HTTP协议端口的端口号缺省80为参数,调用CINTERNETSESSIONGETHTTPCONNECTION函数建立与某站点的连接,再用CHTTPCONNECTIONSENDREQUEST函数向HTTP服务器发送服务请求,返回值为包含应答信息的CHTTPFILE类型的文件句柄。13四、关键技术实现(一)在线升级系统的实现1在线升级原理模块是基于诺顿防火墙在线升级模块的原理进行设计的,其原理是当用户点击在线升级的按钮时,系统会自动弹出对话框,用户可在对话块内选择是否执行在线升级图4如果用户选择执行“下一步”时,程序将连接到我们
24、建立的网站,在连接道网站的FTP后,程序自动检索网站上是否有比现有更高版本的漏洞库,如果有,系统将自动下载高版本的漏洞库,更新现有的漏洞库,如够现有版本已经是高版本,系统将提示没有必要进行更新。用户可以点击“完成”键结束在线升级。142在线升级流程图图53在线升级关键技术的实现M_CISSETOPTIONINTERNET_OPTION_CONNECT_TIMEOUT,5/设置一个INTERNET选项M_PHTTPM_CISGETHTTPCONNECTIONM_STRSERVER,M_DWPORT/连接到HTTP服务器M_STRSERVERM_LBPRODUCTADDSTRINGM_STRSOF
25、T“M_STRVERSION然后是查找可用的更新,先通过CHTTPFILE将UPDATEINI文件下载到系统临时目录下,然后调用GETPRIVATEPROFILESTRING读取网上最新的版本号以及要更新的文件,判断是否需要更新,下载的文件PFILEQUERYINFOHTTP_QUERY_CONTENT_LENGTH,STR取得。为防止下载一半网络出现故障,先将下载的文件加后缀名UPG,下载全部成功后替换掉原来在用的程序,完成更新。OLDNYNEW开始连接服务器检测版本号升级版本结束15(二)多线程实现的方法首先,我们对扫描IP的线程数进行定义,最大线程数定义为500,创建一个线程(管理线程)
26、,这个线程用来管理那些对每个IP扫描的线程。之所以这样是因为管理线程有时可能会挂起,如果不创建新的,那么主线程就会挂起,窗口就会停止响应。当一个线程进入临界区时,其它想要进入临界区的线程就会被挂起,直到进入临界区的线程退出临界区,这样就保证了在同一时间,只有一个线程能修改这些变量。这样做是为了更好的对多线程进行控制(防止多个线程竞争资源,造成系统死机)。每当一个新的扫描线程被创建,程序就锁住信号量一次,当达到最大并发线程数时,扫描管理线程想再次锁住信号量时就会挂起,这时不会有新的扫描线程被创建,直到某个扫描线程结束。扫描线程结束时会释放信号量,这样挂起的管理线程就会解锁,继续创建新的扫描线程。
27、扫描线程一直循环,直到所有的IP地址都扫描完毕且所有的活动扫描线程都结束。对IP的读取,我们是用读取整个数据,通过控制它右移的长度,然后再对FF取“与”的方法实现的,及STRIPFORMAT“DDDD“,DWIP24接着就是扫描代码(和原数据相连,在这里不在介绍)最后将信号量及临界资源释放,返回函数值,功能模块实现。五、系统调试我在进行实现在线升级的功能模块中,由于涉及到在服务器获取数据后,要将数据写入数据库,也就是需要对数据库操作。由于经验不足,加之对数据库的操作理解的也不是太深。因此在对数据库的操作中出现了一些问题,在代码中添加了对数据库添加数据的功能,但检查数据库,发现并没有实现该功能,
28、数据没有插入数据库。于是我对自己所写的代码进行了调试,我首先将所对数据库操作的代码加上了TRY、CATCH的异常操作语句,结果发现异常,提示数据库连接不正确,我将数据库重新配置后,再次进行操作,一切正常。16参考文献1臧桂鹏,肖佳放VC网络与数据库编程百例M北京中国电力出版社2HTTP/WWW900IBMCOM/DEVELOPERWORKS/CN/SECURITY/SECGISCANER/PART1/INDEXSHTML23侯俊杰深入浅出MFCM武汉华中科技大学出版社4美REBECCAGURLEYBACE著,陈明奇译入侵检测M北京人民邮电出版社5ICATMETABASEEB/OLHTTP/ICATNISTGOV/6韩东海,王超入侵检测系统及实例剖析M北京清华大学出版社7唐正军网络入侵检测系统的设计与实现M北京电子工业出版社8吕林涛,周明全信息安全技术M西安西安电子工业大学9戴英峡,连一峰系统安全与入侵检测M北京清华大学出版社10蒋建春,冯登国网络入侵检测原理与技术M北京国防工业出版社。