APP下载

网络应用程序漏洞挖掘技术研究

2018-01-31高瑞周彩兰朱荣

现代电子技术 2018年3期
关键词:数据采集

高瑞+周彩兰+朱荣

摘 要: 研究和分析了漏洞挖掘技术,针对客户端应用程序提出一种基于Fuzzing的客户端应用程序漏洞挖掘方法,研究了网络数据自动分析的方法和基于数据包内容的Fuzzing测试的方法,解决了客户端网络数据包自动采集的问题。实验结果表明,该方法相比主流测试方法,可测试范围广,测试速度快。针对Web应用程序提出一种基于Fuzzing的Web应用程序漏洞挖掘方法。研究了基于脚本和测试数据集的Web应用程序Fuzzing测试方法,解决了Web网络数据采集的问题。实验结果表明,该方法比主流Web漏洞检测工具检测范围广,可扩展性强。

关键词: 漏洞挖掘; Fuzzing; 网络应用程序; Web应用程序; 数据采集; 数据自动分析

中图分类号: TN915.08?34; TM417 文献标识码: A 文章编号: 1004?373X(2018)03?0115?05

Abstract: The vulnerability mining technology is studied and analyzed. For the client application program, a Fuzzing?based vulnerability mining method of client application program is proposed, the Fuzzing testing method based on data packet content and network data automatic analysis method are studied, and the automatic acquisition problem of client network data packet is solved. The experimental results show that the proposed method has wider testing range and faster testing speed than the mainstream testing methods. A vulnerability mining method based on Fuzzing is put forward for Web application program. The script and test data set based Fuzzing test method of Web application program is studied to solve the problem of data collection in Web network. The experimental results show that the proposed method has wider testing range and stronger scalability than the mainstream Web vulnerability detection tools.

Keywords: vulnerability mining; Fuzzing; network application program; Web application program; data mining; data automatic analysis

0 引 言

影响信息系统安全性的主要因素是应用软件、各种通信安全协议和构成信息系统的操作系统等存在的漏洞。攻击者可以利用漏洞对信息系统实施相应的攻击,并对信息系统造成不同程度的损害[1]。目前,绝大部分发现的漏洞不是来自操作系统、数据库系统,而是纷繁复杂的应用软件。就现有的技术手段来讲,消除这些安全隐患的方法除了开发高质量的应用程序之外,比较有效的方法就是发现这些信息系统的漏洞以及相应的攻击技术,争取在黑客利用这些漏洞入侵之前修复应用程序的漏洞或者做好安全防护来抵御入侵者的攻击[2]。

1 系统总体设计

系统的总体设计基于对系统功能的需求分析。系统的具体功能需求如下。

数据收集功能:需要按正确顺序收集到一次正常通信的数据包。

数据分析功能:对收集的数据包使用分析算法进行整体分析。

数据替换功能:对分析出的数据包按Fuzzing算法进行数据替换。

模拟通信功能:用多线程模拟客户端,将替换后的数据模拟发送。

结果检测功能:对通信过程进行检测,检测测试结果。

结果分析功能:对测试结果进行分析。

设计的系统架构需要功能实现准确,结果直观,操作简单方便,计算效率高。

系统总体架构如图1所示,按照数据收集、數据分析、数据替换、模拟通信、结果检测和结果分析的步骤进行,在该过程中,每一步面临攻击Attack,需要进行Attack的获取与处理。最终,借助于云进行展示。

2 系统的功能原理

用多线程模拟客户端,将变异后的数据模拟发送。对测试后的结果进行检测,对于普通客户端网络应用程序,新起一个监听线程,监听服务端存活情况。对于Web应用程序,监控其返回的数据包,如果为http错误,则视为成功[3]。检测完之后,保存所使用的数据包,对其结果进行分析,分析所具有的漏洞类型。系统功能原理图如图2所示。

系统的功能结构如图3所示。该系统可以分为数据包截获模块,数据包展示、修改及自动分析模块,数据Fuzzing模块,通信模拟模块,错误检测结果分析模块[4]。其中数据包截获模块为一个子程序及钩子技术用到的动态库。数据包展示、修改及自动分析模块为一个带UI的子程序。通信模拟模块和数据检测结果分析模块为一个子程序,分别另起线程执行各自操作。主程序流程如图4所示。endprint

数据包截获子程序,需要用户选择HOOK的进程名称,然后加载全局钩子,注入目标进程[5]。数据包截获程序界面如图5所示。

配置文件设置程序,主要配置三个程序之间的主要运行参数信息和信息交互文件,配置文件界面如图6所示。

数据包展示、修改及分析子程序主要用ASCII码及十六进制显示数据包,用三种方式分析数据包(多个数据包和相似数据包显示于一处)[6]。

3 关键功能模块实现

3.1 数据包截获模块

该模块主要使用HOOK技术,当客户端调用到socketAPI中的send函数时,就会触发HOOK函数。具体处理步骤如下:

首先设置全局钩子,任何进程都将触发这个钩子,当钩子判断出当前进程为指定进程时,在当前进程内安装API钩子。

其次,当该程序调用send函数时,会先调用动态库里的钩子函数,将所发送的数据保存一份到指定位置,然后再发送出去。

该过程的算法描述如下:

1) 系统维护钩子链表;

2) 回调函数的子程序调用;

3) 子程序处理;

4) 消息传递;

5) 消息处理。

处理过程中的函数说明如下:

EnumProcessesInfo()函数用来显示现有进程列表。

HOOK1中HookInit函数用来安装全局钩子。

HookProc为全局钩子的钩子函数。

InjectWinsockHook函数用来安装API钩子。

HOOK2中的custom_send等系列函数为API钩子的钩子函数,用来保存数据。

3.2 数据包展示及自动分析模块

将收集到的数据包分别以ASCII码和十六进制进行展示,并列出其基本属性;自动分析数据包,并将分析结果输出到文件,并且支持手动修改输出结果。具体处理步骤如下:数据每次读取都以两种方式显示,在分析了每个数据包之后,进行相似数据包以及所有数据包的分析,输出分析结果。

具体算法描述:采用单个数据包分析算法,其中,DoAnsys为数据包分析算法函数。

3.3 数据Fuzzing模块

该模块将收集的数据包按Fuzzing算法进行替换。具体步骤如下:对输入的数据,按设置的算法类型进行处理。具体算法类型有两种:一种是普通替换,按Fuzzing算法,参照数据格式进行替换;另一种是Web替换模式,对注入点,按规则库进行替换。具体算法描述如下:

普通替换模式,使用客户端网络应用程序Fuzzing算法。Web替换模式采用Web网络应用程序Fuzzing算法。对应的函数说明Fuzzer类为普通替换算法模式类;WebFuzzer类为Web替换模式类。

3.4 通信模拟模块

该模块采用多线程技术,可以模拟多客户端进行,更高效的测试。具体处理流程如下:首先读取配制文件,连接指定服务端,将Fuzzing模块输出的数据模拟发送,每次调用Fuzzing模块,Fuzzing的内容就有变更,使用多线程,可以模拟多客户端测试。算法描述如下:使用Boost的asio库作为通信库,进行网络通信的连接、发送、接收等操作。其中,SimulateConnect类为通信类,初始化通信连接过程。

3.5 错误检测模块

该模块采用三种方式:一是监控服务端状态;二是监控收到的数据包;三是人工监控。对于客户端应用程序,采用监控服务端状态和人工监控方式。对于Web服务端,采用监控收到的数据包的方式。具体处理流程如下:当模拟通信发送时,新起线程判断服务端状态,如果无法连接,则视为一次Fuzzing结束,保存其结果。当测试Web应用程序时,监控收到数据包,当收到http错误码时,视为一次Fuzzing结束,保存其结果。

算法采用基于数据包内容的Fuzzing测试算法和基于脚本和测试数据集的Web应用程序Fuzzing測试算法[7]。其中,OnEnd函数为错误检测函数。

4 实验及分析

4.1 实验过程和参数说明

基于Fuzzing方法的客户端应用程序漏洞挖掘算法的对比实验过程的步骤和参数设置如下:

1) 分别设置好BFS考勤系统、BFS周报提交系统、BFS学术报告评分系统、局域网聊天室等4个测试系统的服务端。在BFS服务器S0003及BFS服务器S0008上安装服务端,并使所有服务端正常启动。

2) 在BFS学生电脑U0004上安装BFS考勤系统、BFS周报提交系统、BFS学术报告评分系统、局域网聊天室等4个测试系统的客户端。并安装QuickTestProfessional软件及基于Fuzzing方法的客户端网络应用程序漏洞挖掘算法原型系统。

3) 使用QuickTestProfessional软件,对4个测试系统客户端进行测试。分别录制其操作过程,并编写测试脚本。然后测试他们的检测漏洞时间、检测漏洞数目、检测漏洞准确性等,使用QuickTest Professional软件的测试结果如图7所示。

由于4个软件的操作都比较多,这里都选取他们最简单的一次操作,如表1所示。

4) 使用基于Fuzzing方法的客户端网络应用程序漏洞挖掘算法原型系统,对4个测试系统客户端进行测试。测试过程如图8所示。这是一次简单变异的测试,数据包每一位都从原有的值变成了0x11。变异之后发送给服务端进行测试,如果测试成功,程序将完成并记录详细变异数据信息。

基于Fuzzing方法的Web网络应用程序漏洞挖掘算法的对比实验过程的步骤和参数设置如下:

1) 在BFS服务器S0003上架设好Apache+php+sql发服务器,在BFS服务器S0008上架设好IIS服务器。在Apache上先后加载phpGet漏洞页面、phpPost漏洞页面、phpCookies漏洞页面、php正常页面;在IIS上先后加载ASPGet漏洞页面、ASPPost漏洞页面、ASP正常页面。endprint

2) 在BFS学生电脑U0004上安装阿D注入工具和基于Fuzzing方法的Web网络应用程序漏洞挖掘算法原型系统。

3) 使用阿D注入工具对每个漏洞网页进行注入测试。测试他们的检测漏洞时间、检测漏洞数目、检测漏洞准确率等三个方面指标。

4) 编辑sql注入规则库,在c:\Webfuzz\sql.txt文件中,每一行表示一条注入判断语句。

5) 编辑sql注入脚本库,在c:\Webfuzz\inject.txt文件中,每一行表示一条注入位置。

6) 使用基于Fuzzing方法的Web网络应用程序漏洞挖掘算法原型系统对每个漏洞网页进行注入测试。

4.2 实验结果及分析

4.2.1 实验结果

分别对4个测试软件进行测试,得到的结果如表2所示。主要比较了QTP与试验原型系统的测试准备时间、测试操作时间、操作步骤、测试漏洞数目、可检测漏洞类型等。

表3主要比较了阿D注入工具与试验原型系统的测试准备时间、测试平均时间、操作步骤、测试漏洞数目、可检测漏洞类型等。

4.2.2 结果分析

由上述实验结果可以得出该试验原型系统特点的优势如下:

1) 本系统的客户端网络应用程序测试功能采用直接模拟网络传输进行漏洞挖掘测试,采用多线程模式模拟多客户端,测试速度比普通黑盒测试速度要快。测试范围包括客户操作漏洞及服务端数据处理漏洞,测试漏洞范围广,测试漏洞效率高。

2) 本系统的Web网络应用程序测试功能采用脚本库和漏洞规则库,检测漏洞范围广,也可进行功能扩展。

该试验原型系统特点的不足之处如下:

1) 对于客户端网络应用程序的漏洞挖掘功能,试验原型系统要比QuickTestProfessioal速度快、效率高、效果好。但是操作复杂,操作耗时较多,只适用于专业人员使用。

2) 对于Web网络应用程序的漏洞挖掘功能,试验原型系统要比阿D注入工具检测范围广,检测准确率高。但是操作复杂,操作耗时较多,只适用于专业人员使用。

5 结 论

本文设计了一个基于Fuzzing的网络应用程序漏洞挖掘方法的试验原型系统,并详细阐述了该系统的总体构架和交互界面,以及系统的关键模块实现的方法和过程。同时与主流软件QuickTest Professional、阿D注入工具做了对比实验,实验结果表明,设计的原型系统能够更为有效地对网络应用程序进行漏洞挖掘,不过在操作复杂度、操作时间和用户交互体验上还略有不足,可以在后续工作中改进。

参考文献

[1] 杨莎滢.论软件安全漏洞挖掘技术[J].信息安全与技术,2013,4(1):32?34.

YANG Shaying. Study on software security vulnerabilities mining technology [J]. Information security and technology, 2013, 4(1): 32?34.

[2] 李晓鹏,刘佳.浅论网络计算机安全隐患及漏洞挖掘技术[J].数字技术与应用,2014(1):182?183.

LI Xiaopeng, LIU Jia. Discussion on network computer security hidden trouble and vulnerability mining technology [J]. Digital technology & application, 2014(1): 182?183.

[3] 唐萍,张国强.基于软件体系结构分析的漏洞挖掘技术研究[J].现代电子技术,2016,39(9):99?102.

TANG Ping, ZHANG Guoqiang. Research on vulnerability mining technology based on software architecture analysis [J]. Modern electronics technique, 2016, 39(9): 99?102.

[4] 陈震.网络计算机安全隐患及漏洞挖掘技术分析[J].网络安全技术与应用,2015(3):112?113.

CHEN Zhen. Network computer security risks and vulnerability mining technology analysis [J]. Network security technology & application, 2015(3): 112?113.

[5] 刘涛,王海东.基于Fuzzing的文件格式漏洞挖掘技术[J].中国科技信息,2014(9):160?162.

LIU Tao, WANG Haidong. File format vulnerability mining technology based on Fuzzing [J]. China science and technology information, 2014(9): 160?162.

[6] 张远,方勇.程序流程跟踪漏洞挖掘系统[J].信息安全与通信保密,2013(4):90?91.

ZHANG Yuan, FANG Yong. Program flow tracing vulnerability mining system [J]. Information security and communication security, 2013(4): 90?91.

[7] 张开便,董振华,李喜艳.基于模糊测试的网络协议漏洞挖掘研究[J].现代电子技术,2016,39(13):84?87.

ZHANG Kaibian, DONG Zhenhua, LI Xiyan. Research on network protocol vulnerability mining based on fuzzy test [J]. Modern electronics technique, 2016, 39(13): 84?87.

[8] 达小文,王晓程,陈志浩.基于改进模糊测试的Web应用漏洞挖掘方法[J].计算机与现代化,2016(8):100?104.

DA Xiaowen, WANG Xiaocheng, CHEN Zhihao. Web vulnerability mining method based on improved fuzzy test [J]. Computer and modernization, 2016(8): 100?104.

[9] 王凯,刘奇旭,张玉清.基于Fuzzing的Android应用通信过程漏洞挖掘技术[J].中国科学院大学学报,2014,31(6):827?835.

WANG Kai, LIU Qixu, ZHANG Yuqing. Vulnerability mining technology of Android application communication process based on Fuzzing [J]. Journal of University of Chinese Academy of Sciences, 2014, 31(6): 827?835.

[10] 黄超,李毅,麻荣宽,等.网页漏洞挖掘系统设计[J].信息网络安全,2012(9):76?80.

HUANG Chao, LI Yi, MA Rongkuan, et al. Web vulnerability mining system design [J]. Information network security, 2012 (9): 76?80.endprint

猜你喜欢

数据采集
CAN总线通信技术在电梯监控系统中的应用
基于AVR单片机的SPI接口设计与实现
CS5463在植栽用电子镇流器老化监控系统中的应用
大数据时代高校数据管理的思考
基于广播模式的数据实时采集与处理系统
通用Web表单数据采集系统的设计与实现
基于开源系统的综合业务数据采集系统的开发研究
大数据时代的管理会计