服务器软件漏洞测试程序的设计与实现

上传人:博****1 文档编号:544438340 上传时间:2022-10-18 格式:DOC 页数:4 大小:18KB
返回 下载 相关 举报
服务器软件漏洞测试程序的设计与实现_第1页
第1页 / 共4页
服务器软件漏洞测试程序的设计与实现_第2页
第2页 / 共4页
服务器软件漏洞测试程序的设计与实现_第3页
第3页 / 共4页
服务器软件漏洞测试程序的设计与实现_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《服务器软件漏洞测试程序的设计与实现》由会员分享,可在线阅读,更多相关《服务器软件漏洞测试程序的设计与实现(4页珍藏版)》请在金锄头文库上搜索。

1、效劳器软件破绽测试程序的设计与实现摘要:效劳器软件破绽是导致网络不平安的重要因素,当前还没有什么方法能保证效劳器软件没有破绽,因此破绽测试在网络平安方面占有重要地位。本文给出了一个通用破绽测试程序的设计与实现,设计方案采用脚本、样本包及动态链接库技术,使得测试程序与协议无关,进步了通用性。关键词:网络平安;破绽测试;样本包;动态链接库网络平安是当前的热门话题,互联网平安性差的重要表现是效劳器软件大多存在破绽,黑客的入侵行为大多是利用效劳器破绽实现的。如今,每天都有新的效劳器软件出现,但这些软件根本上都存在着破绽,按照传统的测试方法,依靠测试人员去分析代码来完成测试,显然是满足不了需求的。网络效

2、劳器软件的破绽测试是一个非常重要的问题,设计一个较为自动化、通用的破绽测试工具是非常必要的。一般破绽研究方法是先熟悉软件功能,分析效劳协议,检查程序代码,然后再推测什么情况下会出现破绽。这是一个工作量很大的过程,而且开发出来的测试程序也是针对特定软件,不能通用。我们的测试软件要做到通用,就要找出网络效劳器软件的共同特性,采用易于配置,易于扩展的构造。1.网络效劳的共性及破绽产生原因网络效劳根本上都是基于客户机-效劳器模型。恳求数据包响应数据报图1客户机发出恳求数据包,效劳器返回响应数据包,即Request-Respnse方式。效劳的共性就在于客户机与效劳器通过数据包进展通信。每个效劳都有自己的

3、应用层协议。效劳器软件的应用层协议决定了效劳器对恳求数据包里的内容怎么解释,所以协议也就表达在数据包中。效劳器软件的破绽一般是因为效劳器对异常的恳求数据包不能正确响应。对于异常的恳求数据包,像数据包里有太长的文件名或文件目录途径包含特殊字符等,假如效劳器软件不能正确处理,就可能导致缓冲区溢出、泄露效劳器重要信息、回绝效劳等问题,使得入侵者有机可乘。如IIS效劳器的UNIDE编码破绽,对于未打补丁的IIS效劳器,假如入侵者输入类似x.x.x.x/sripts/.%255./innt/syste32/d.exe/+dir+:的恳求,IIS效劳器会将文件途径中的%255解释为“/,绕过系统平安策略,

4、在效劳器上执行dir命令,并将结果返回给客户端。利用这种方法,可在效劳器上执行任何系统命令,能轻而易举的控制整个效劳器。我们的测试程序就是要能自动生成各种可能导致效劳器不正常工作的恳求数据包,并分析返回的响应信息,找出破绽所在。2.测试程序的设计方案为了通用,测试程序不能过多涉及到详细协议,而测试数据包的格式又要符合详细协议,这是一个矛盾。我们采用样本包和动态链接库的方法来解决这个矛盾。样本包,即有代表性的数据包,依效劳为例,恳求数据包“GET/pub/index.htHTTP/1.1可以很好的代表一类恳求,就可以作为一个样本包。假如只对这个样本包中的某个数据域进展变换,那么生成数据包的格式一

5、般也是满足效劳通信协议的。对于一个详细效劳,它的协议表达在通信所用的数据包中,我们可以搜集一个足以表达该效劳协议的样本包集,采用一个脚本来描绘这些样本包,要测试不同的效劳软件,只须编写与之对应的脚本即可。测试程序只对脚本进展处理,不必与详细协议相关,也就实现了通用性。整个测试程序的系统框图如图2所示,测试数据包生成模块处理脚本,生成测试数据包,发送给效劳器;响应信息分析模块分析返回信息,并将分析结果保存在记录文件中。脚本记录文件图22.1脚本脚本是对样本包集的描绘,效劳器软件的协议表达在脚本中。测试数据包就是对样本包的某个域进展变换后得到的数据包。为了便于程序处理,定义了几个关键字:SAPS,

6、样本包开场;ITE,数据项;SAPE,样本包完毕;RESULT,返回结果特征串;“;,注释,假如一行以“;打头,那么这一行是注释行。脚本中依次列出各个样本包,每个样本包分成几个数据域,每个数据域用一个数据项来表示。GET/pub/index.htHTTP/1.1的脚本描绘为:SAPSITEGETITEPATH/pub/ITEFILEindex.htITEVERHTTP/1.1RESULTSAPE每个数据项由三局部组成,以第一个数据项ITESIGET为例:ITES,关键字,标识数据项开场每个数据项占一行,因此无须关键字标识数据项完毕;:数据项类型名,数据项类型名决定了它的变换处理函数;GET:数

7、据项的内容。2.2测试数据包生成模块测试数据包生成模块是整个测试工具的关键所在,只有生成最可能导致效劳器出问题的恳求数据包,才能发现效劳器软件的破绽所在。但又不能产生过多的数据包,使得测试效率太低。从统计测试的角度来说,就是要生成最可能导致效劳器出错的数据包的样本集。测试数据包生成模块对脚本的处理过程为:从脚本中读出一个样本包,脚本处理函数构造描绘样本包的链表,链表的构造为:typedefstrutRULELISTrulende*rulelisthead;rulende*rulelistend;RULELIST;样本包中的每一项为链表中的一个节点rulende;结点rulende的定义为typ

8、edefstrut_rulendhartype8;/数据项类型名harite128;/数据项内容_rulende*nextnde;/指向下一个结点的指针rulende;构造好链表后,对该样本包里一个数据项的内容进展变换,而保持其它数据项不变,生成测试数据包,发送给效劳器,分析返回信息,将测试结果写入记录文件,处理完该样本包的所有数据项后,释放链表,读出下一样本包,重复上面的处理过程,直至脚本完毕。模块中对数据项内容进展变换的处理函数做成DLL动态链接库,调用时根据数据项类型名进展调用。这样使得该测试程序易于扩展,假如被测试软件的数据包中有原测试程序未定义的数据项类型,只需在脚本中参加新的数据项

9、类型,同时将对应的处理函数做成DLL动态链接库的形式,拷贝至测试程序目录下即可,而原有的程序一点也不必改动。2.3响应信息分析模块响应信息分析模块主要对返回信息进展特征串搜索,记录下效劳器软件出现异常时的情况。特征串定义在脚本中,特征串搜索采用Byer-re字符串匹配算法.假如返回信息中有匹配的字符串,就意味着效劳器可能出错.例如,IIS返回“Theretepredureallfailed,就是RP效劳出现错误。由于很多情况下返回信息很难意料,即便采用人工智能的方法也难判断效劳器到底出了什么问题。所以响应信息分析模块只是检测异常,将异常记录下来,进一步的分析判断还需要人工介入。3.实现中的关键

10、问题测试程序用v+6.0写成,在实现中有几个关键问题:3.1样本包的获取样本包可以通过分析网络效劳器软件的协议,手工设置;也可以通过截包程序来获得样本包。要想得到好的测试效果,这两种方法要综合应用。另一个问题是特殊字符的处理,如“r,n等,测试程序利用它们作为分隔符,但样本包中也可能包含这些字符。对于这类字符,在脚本中用“%后加特殊字符的ASII码来表示,r即为“%0D。从脚本中读取特殊字符后的转换函数为.if(s=%)/字符串s中s为%,si+1,si+2为特殊字符的ASII码strj=(isdigit(si+1)?(si+1-0):(tupper(si+1)-A+10)*16+(isdig

11、it(si+2)?(si+2-0):(tupper(si+2)-A+10);/转换后存入strji+=2;j+;3.2数据项的变换函数这是影响测试工具效果最重要的因素,在某种程度上也是与协议相关的,详细的实现要根据经历,甚至分析协议,一定要变换出各种特殊情况。例如,对文件名,需要测试文件名过长、文件名为空、文件名中包含特殊字符等,对基于inds的系统,尤其要测试系统对不同类型文件(如有.exe,.asp,.php,.htr等扩展名的文件)的响应情况,IIS效劳器的许多破绽都与此有关。变换函数的原型为intTEANSER(FILE*fp,har*ite);一个数据项有很多种变换结果,为了实现方便

12、,处理时,一次得出一个数据项的所有变换结果,写入临时文件,再从临时文件中读出变换后所得的数据项内容,组包后发送给效劳器。这样变换函数不需要保持状态,编程起来就容易多了。变换函数做成DLL动态连接库形式,假如有新的数据项类型,只需在脚本中定义新的数据项类型名,编写对应的DLL库,处理时,处理函数会自动调用它来进展变换处理。实现自动调用的主要代码如下:.typedefVID(*YPR)(FILE*,har*);/函数原型FILE*fp/临时文件指针;.if(!deffun(idx-type)/idx为指向当前结点的指针,deffun判断当前数据项类型是否/已在测试工具中定义,如已定义,返回真。/假

13、如数据类型未定义HINSTANEh;Stringstr;YPRpr;If(h=LadLibrary(idx-type)=NULL)/装入对应的动态链接库Stringstr;str.Frat(antladthelibrary%s.dll,idx-type);essageBx(str,ERRR);pr=(YPR)GetPrAddress(h,idx-type);/获得变换函数地址(pr)(fp,idx-ite);/调用变换函数,执行变换else/假如数据类型已经定义,直接调用相应函数处理.3.3测试包的发送有的测试包发送前要发送一些固定的信息,像一些需要认证后才提供的效劳,对于这类测试包,每次发送前先发送固定信息,再发送恳求数据包。4.完毕语效劳器软件破绽测试是实现网络平安的一个重要手段,本测试程序能有效的构造测试数据包,自动测试,分析响应结果。而且采用了脚本和动态链接库的方法,易于扩展,可用来测试多种效劳器软件。我们用该软件对一些常用效劳器软件进展测试,获得了较好的测试效果。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号