CN103209173B - 一种网络协议漏洞挖掘方法 - Google Patents

一种网络协议漏洞挖掘方法 Download PDF

Info

Publication number
CN103209173B
CN103209173B CN201310075248.XA CN201310075248A CN103209173B CN 103209173 B CN103209173 B CN 103209173B CN 201310075248 A CN201310075248 A CN 201310075248A CN 103209173 B CN103209173 B CN 103209173B
Authority
CN
China
Prior art keywords
variation
destination client
data
client
character
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201310075248.XA
Other languages
English (en)
Other versions
CN103209173A (zh
Inventor
罗森林
郭亮
潘丽敏
闫广禄
张弛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Institute of Technology BIT
Original Assignee
Beijing Institute of Technology BIT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Technology BIT filed Critical Beijing Institute of Technology BIT
Priority to CN201310075248.XA priority Critical patent/CN103209173B/zh
Publication of CN103209173A publication Critical patent/CN103209173A/zh
Application granted granted Critical
Publication of CN103209173B publication Critical patent/CN103209173B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种针对网络协议的漏洞挖掘方法,其步骤包括:1构造一个具有特征码的正常数据并输入到目标客户端。2劫持系统调用,挂起目标客户端进程,记录特征数据的偏移位置。3对内存中的特征数据,进行动态变异。4继续执行目标客户端进程,使得变异后的特征数据通过目标客户端的发包流程,发送给目标服务端。5监测目标服务端状态,如果监测到异常状态,则记录异常和变异信息,并报告一个安全漏洞。与现有技术相比,本发明可以大大提高未知网络协议的漏洞挖掘效率。

Description

一种网络协议漏洞挖掘方法
技术领域
本发明涉及一种网络协议漏洞挖掘方法,特别涉及一种基于特征数据动态变异的网络协议漏洞挖掘方法,属于软件工程和信息安全技术领域。
背景技术
模糊测试作为一项著名的漏洞挖掘技术,已经能成功的在许多大型软件中挖掘漏洞、查找bug。模糊测试的思路很简单:生成变异数据并且输入到需要测试的应用程序中,如果程序出现异常或者崩溃,则说明该应用程序存在一个潜在的漏洞。如今,已经有很大数量的软件漏洞是由模糊测试的方法挖掘出来。
在网络协议漏洞挖掘方面,也已经有许多运用模糊测试的原理,进行漏洞挖掘的方法及工具。主要有两类,一类是针对具体网络协议的专用测试工具,比如针对TFTP协议的fuzz工具、针对P2P协议的fuzz工具等;另一类是针对未知网络协议的,主要通过程序自动生成测试数据,或者通过截获原始数据进行变异生成测试数据。
目前这部分网络协议漏洞挖掘技术均存在一些缺点,由于网络协议一般都会设计数据有效性检测,比如校验算法、加密算法等,而且如今新设计的网络协议普遍开始使用多级校验或者动态加密算法。使得大量数据包因为无效而丢弃,导致现有的模糊测试工具对目标协议的测试覆盖范围很窄,效率甚低。而现在一些模糊测试方法,为了解决该问题,也仅仅复现目标协议的校验算法,仍采用生成或者截获数据的方式进行变异。操作过程复杂,对于复杂的校验算法复现难度太大,覆盖范围很窄,并且无法检测具有多重校验或者动态加密算法的网络协议。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分解决上述问题的针对未知网络协议的漏洞挖掘系统和漏洞挖掘方法。特别是当未知网络协议存在多级校验以及动态加密算法等安全机制的情况下,本发明依然能对目标网络协议进行有效测试。
本技术的提出,是利用采用未知网络协议的软件本身的客户端,绕过其未知网络协议的多级校验以及动态加密等安全机制,直接针对核心部分进行模糊测试,使得漏洞挖掘的覆盖范围更加全面深入。
本发明所提出的一种网络协议漏洞挖掘方法,其步骤包括:步骤1,配置针对目标客户端的正常数据输入模块;步骤2,配置针对目标服务端的异常状态监控模块;步骤3,构造一个具有特征码的正常数据,使用步骤1中的模块输入到目标客户端;步骤4,通过劫持系统调用,挂起目标客户端,扫描目标客户端的内存空间,记录特征数据的数量、偏移位置,同时记录目标客户端已执行系统调用的次数;步骤5,重新执行目标客户端,根据步骤4中记录的系统调用次数,挂起目标客户端,并修改所记录偏移地址的内存数值,对该内存数值进行动态变异;步骤6,继续执行目标客户端,通过目标客户端的后续发包流程,将数据发给目标服务端,使用步骤2中的监控模块进行结果监控;步骤7,当达到记录条件,记录变异数据方式以及发送的数据包内容,报告一个潜在漏洞,并且重新执行程序,重复步骤5、6,直到5中动态变异数据的情况全部尝试完成或者监控模块监控到异常行为,则结束。
进一步的,上述步骤1中,在配置客户端输入模块时,对控制台程序,使用命名管道通信的方法。在Windows系统中,使用系统函数CretePipe、ReadFile、WriteFile等系统调用,将系统输入,通过管道传递给目标客户端;对UI界面程序,采用系统消息的方法,在Windows系统中,使用SendMessage等系统调用,将系统输入,通过消息传递给目标客户端。
进一步的,上述步骤2中,在配置服务端异常状态监控模块时:
1)定时扫描系统进程列表,当目标进程不存在时,视为严重异常。
2)劫持系统异常调用,当目标程序调用系统异常时,视为物理异常。
3)对控制台程序,采用管道通信的方法,扫描目标程序输出;对UI界面程序,采用系统钩子的方法,监听目标程序输出。如果目标程序输出符合异常条件,视为逻辑异常。
进一步的,上述步骤5所述进行内存动态变异时,使用内存操作函数,修改对应的偏移位置中内存数值。变异时采取偏移地址由小到大,变异数值由小到大的方式,避免重复变异。
进一步的,上述动态变异方法,是按字节长度,对内存中原始值通过某种替换,变成一个新数据。该变异共有5种可选方式:
1)简单变异:快速的变异方法,对于需要快速检测的固定数据位,采用简单变异。即将该数据位直接替换为一个固定非原始值,如0x11。
2)简单随机变异:快速的变异方法,对于需要快速检测的固定数据位,且不确定其原始正常值,可以采用随机简单替换。方法1和方法2适合具有漏洞概率较小的数据位,比如原始值全是0的数据位,一旦有漏洞也可以通过这两类简单替换挖掘出来。
3)普通变异:实用的变异方法,普通漏洞都能够通过该变异挖掘出来。即将原始值分别替换为:原始值加1、原始值减1、0、255等4个数。
4)重点变异:较全面的变异方法,适用于数据值取值规律不确定的情况。将原始值替换为2^(0~16)-1等17个数。
5)完全变异:最全面的变异方法,同时也是速度最慢的变异方法。对于重要性很高的数据位,可以采用完全替换方式进行变异,即替换0~255等256个数。
附图说明
图1为本发明的实例的漏洞挖掘系统结构图。
图2为本发明的实例的漏洞挖掘系统流程图。
具体实施方式
为了更好的说明本发明的目的和优点,下面结合附图1和附图2,更详细的描述本发明的具体实施方式。本实施实例以已经开发完成的一套漏洞挖掘系统附图1作为工作系统,该系统分为客户端控制器10和服务端控制器20。并且以北京理工大学BFS实验室开发的BFSERP管理系统为漏洞挖掘目标,给出详细的实施方式和操作步骤,但本发明保护范围不限于本实施例。
BFSERP管理系统分为客户端12,服务端22。主要功能有学生管理、考勤、评分、周报、通知、聊天等等,其网络通信协议是基于TCP\IP协议,具有多次校验,并且基于AES对网络数据进行动态密钥的数据加密。使用本发明能够更全面的加强其安全性能。
主要实施步骤如下:
步骤1,配置针对BFSERP客户端12的数据输入模块11。
在配置客户端输入模块时,需要针对客户端不同情况,采取不同的接口方法:对于控制台程序,使用命名管道通信的方法。在Windows系统中,使用系统函数CretePipe、ReadFile、WriteFile等系统调用,将系统输入,通过管道传递给目标客户端;对UI界面程序,采用系统消息的方法,在Windows系统中,使用SendMessage等系统调用,将系统输入,通过消息传递给目标客户端。由于本例中的BFSERP客户端12为UI界面程序,所以采用系统消息的方法,将特征数据通过系统消息,输入到BFSERP客户端12中。
步骤2,配置针对BFSERP服务端22的异常状态监控模块21。通过步骤1和步骤2,后续循环过程不需要人工干预,完全由系统自动完成。
目标服务端异常状态一共有系统进程关闭,调用系统异常,目标程序异常输出等三种异常现象。因此针对三种不同的异常情况,采用三种不同的异常监听方法进行检测。
1)定时扫描系统进程列表,当BFSERP服务端进程不存在时,视为严重异常。2)劫持系统异常调用,当BFSERP服务端调用系统异常时,视为物理异常。3)对控制台程序,采用管道通信的方法,扫描目标程序输出;对UI界面程序,采用系统钩子的方法,监听目标程序输出。由于BFSERP服务端为控制台程序,所以采用管道通信的方法,使用CreatePipe创建命名管道进行通信,然后使用ReadFile读取BFSERP服务端所输出的内容。通过判断其输出的内容是否正常输出,作为检测条件,如果BFSERP服务端输出符合异常条件,视为逻辑异常。
步骤3,构造一个具有特征码的正常数据,比如构造一个输入字符流为tAInT,作为输入数据中一部分。特别指出该字符流,以二进制形式存在,并非一定要可见字符。只是为了方便手工调试,这里使用了Ascii码作为特征码。将具有特征码的特征数据,通过系统消息发送函数SendMessage,输入到BFSERP客户端。
步骤4,通过劫持系统调用,挂起目标程序,扫描目标客户端程序的内存空间,记录特征数据的数量、偏移位置,同时记录目标程序已执行系统调用的次数。具体操作流程为:
1)设置触发条件为执行SendMessage次数3次和拷贝特征数据次数3次。
2)采用线程注入的方法,劫持目标客户端所使用的系统调用,在执行SendMessage接口之后,挂起目标线程。
3)使用系统的内存操作函数ReadProcessMemory扫描内存,记录扫描结果中特征数据的数量、偏移位置信息。继续执行目标线程,直到BFSERP客户端进程中特征数据的数量大于或等于3个,或者步骤2中已执行的系统调用SendMessage3次。
4)将系统调用执行次数信息和特征数据的数量、偏移位置信息,发送给系统动态变异模块13进行处理。
特别指出,具体劫持的系统调用函数选择,以及系统调用次数和特征数据拷贝次数都与具体实例相关,本发明保护范围不限于此。
步骤5,重新执行BFSERP客户端,根据步骤4中记录的SendMessage调用次数,挂起BFSERP客户端进程。并由动态变异模块13修改步骤4中所记录偏移地址的内存数值,对该内存数值进行动态变异。
使用内存操作函数WriteProcessMemory,修改对应的偏移位置中内存数值。变异时采取偏移地址由小到大,变异数值由小到大的方式,避免重复变异。其中变异方法是按字节长度,对内存中原始值通过某种替换,变成一个新数据。该变异共有5种可选方式。
1)简单变异:快速的变异方法,对于需要快速检测的固定数据位,采用简单变异。即将该数据位直接替换为一个固定非原始值,如0x11。
2)简单随机变异:快速的变异方法,对于需要快速检测的固定数据位,且不确定其原始正常值,可以采用随机简单替换。方法1和方法2适合具有漏洞概率较小的数据位,比如原始值全是0的数据位,一旦有漏洞也可以通过这两类简单替换挖掘出来。
3)普通变异:实用的变异方法,普通漏洞都能够通过该变异挖掘出来。即将原始值分别替换为:原始值加1、原始值减1、0、255等4个数。
4)重点变异:较全面的变异方法,适用于数据值取值规律不确定的情况。将原始值替换为2^(0~16)等17个数。
5)完全变异:最全面的变异方法,同时也是速度最慢的变异方法。对于重要性很高的数据位,可以采用完全替换方式进行变异,替换为0~255等256个数。
本实例中,首先对所有数据位采用简单随机变异,检测完毕后,再采用普通变异的方式重新检测一遍。
步骤6,恢复BFSERP客户端进程,通过目标客户端程序的后续发包流程,将数据发送给BFSERP服务端。并使用步骤2中配置的监控模块进行结果监控。由于客户端控制器与服务端控制器,并不一定位于同一主机,所以客户端控制器,需要给出变异信息给服务端控制器进行记录。主要变异信息有,变异时间是在执行第几次系统调用时,变异方法是通过什么方法,用哪个数据,替换哪个数据位的值,得到的结果。
步骤7,结果记录模块23进行结果记录。当BFSERP服务端出现异常现象时,达到记录条件,记录此时变异数据方式以及发送的数据包内容,并且报告一个潜在漏洞。重新执行BFSERP客户端程序,重复步骤5、6,直到步骤5中动态变异数据的情况全部尝试完成或者监控模块监控到异常行为,则结束退出。

Claims (4)

1.一种网络协议的软件漏洞挖掘方法,其特征在于,所述方法包括以下步骤:步骤1,配置针对目标客户端的正常数据输入模块;步骤2,配置针对目标服务端的异常状态监控模块;步骤3,构造一个具有特征码的正常数据,使用步骤1中的模块输入到目标客户端;步骤4,通过劫持系统调用,挂起目标客户端,扫描目标客户端的内存空间,记录特征数据的数量、偏移位置,同时记录目标客户端已执行系统调用的次数;步骤5,重新执行目标客户端,根据步骤4中记录的系统调用次数,挂起目标客户端,并修改所记录偏移地址的内存数值,对该内存数值进行动态变异;步骤6,继续执行目标客户端,通过目标客户端的后续发包流程,将数据发给目标服务端,使用步骤2中的监控模块进行结果监控;步骤7,当达到记录条件,记录变异数据方式以及发送的数据包内容,报告一个潜在漏洞,并且重新执行目标客户端,重复步骤5、6,直到5中动态变异数据的情况全部尝试完成或者监控模块监控到异常行为,则结束。
2.根据权利要求1所述的方法,其特征在于,步骤4中挂起目标客户端程序的方法及步骤为:2.1)设置触发条件为,执行系统PostMessage调用次数n和拷贝特征数据次数m;2.2)采用线程注入的方法,劫持目标客户端所使用的系统调用,在执行i次系统调用之后,挂起目标线程,记录此时已执行的系统调用的次数i;2.3)使用系统的内存操作函数扫描内存,记录扫描结果中特征数据的数量、偏移位置信息,继续执行2.2),直到特征数据的数量大于或等于步骤1中所设置的拷贝次数m,或者2.2)已执行的系统调用次数i大于或等于2.1)中所设置的系统调用次数n;2.4)将系统调用执行次数信息和特征数据的数量、偏移位置信息,发送给系统动态变异模块进行处理。
3.根据权利要求1所述的方法,其特征在于,步骤5所述进行内存动态变异时,变异方法共有5类:3.1)简单随机变异:对于固定字符和0字符,可以采用随即简单替换,具有漏洞概率较小,一旦有漏洞也可以通过该替换挖掘出来;3.2)简单变异:对于需要快速检测的固定字符和0字符,采用简单替换,直接替换为17,即0x11;3.3)普通变异:对于简单字符和相似字符,可以采用普通替换方式,即分别替换为:本字符加1、本字符减1、0、255等4个数;3.4)重点变异:对于部分可视字符和特殊字符,可以采用重点替换,替换为2^(0~16)-1等17个数;3.5)完全变异:对于需求较高的网络软件,可以采用完全替换,替换为0~255等256个数。
4.根据权利要求1所述的方法,其特征在于,数据变异的时间,处于程序外部输入之后、内部数据包封装之前的中间动态运行时,跳过客户端程序的输入检测以及异常处理过程,同时通过客户端的加密、压缩、校验等流程与服务端通信。
CN201310075248.XA 2013-03-08 2013-03-08 一种网络协议漏洞挖掘方法 Expired - Fee Related CN103209173B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310075248.XA CN103209173B (zh) 2013-03-08 2013-03-08 一种网络协议漏洞挖掘方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310075248.XA CN103209173B (zh) 2013-03-08 2013-03-08 一种网络协议漏洞挖掘方法

Publications (2)

Publication Number Publication Date
CN103209173A CN103209173A (zh) 2013-07-17
CN103209173B true CN103209173B (zh) 2016-07-13

Family

ID=48756258

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310075248.XA Expired - Fee Related CN103209173B (zh) 2013-03-08 2013-03-08 一种网络协议漏洞挖掘方法

Country Status (1)

Country Link
CN (1) CN103209173B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104168288A (zh) * 2014-08-27 2014-11-26 中国科学院软件研究所 一种基于协议逆向解析的自动化漏洞挖掘系统及方法
CN105512025B (zh) * 2014-12-31 2019-01-15 哈尔滨安天科技股份有限公司 基于模拟消息的Fuzz引擎优化方法与系统
CN105991517B (zh) * 2015-01-28 2019-08-20 中国信息安全测评中心 漏洞发掘方法和装置
CN109347696B (zh) * 2018-09-30 2020-10-20 中国人民解放军国防科技大学 一种基于分级变异的网络协议模糊测试方法
CN109743333A (zh) * 2019-02-27 2019-05-10 南京众智维信息科技有限公司 一种全方位分析企业网络安全漏洞的系统
CN110365678B (zh) * 2019-07-15 2021-10-22 北京工业大学 一种基于反样本的工控网络协议漏洞挖掘方法
CN113098902A (zh) * 2021-04-29 2021-07-09 深圳融安网络科技有限公司 网络设备漏洞管理方法、装置、管理终端设备及存储介质
CN114070634B (zh) * 2021-11-22 2024-02-27 安天科技集团股份有限公司 一种基于smtp协议的窃密行为检测方法、装置及电子设备
CN116647845A (zh) * 2022-02-15 2023-08-25 中兴通讯股份有限公司 空口协议安全漏洞的挖掘方法、装置、移动终端

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101853200A (zh) * 2010-05-07 2010-10-06 北京大学 一种高效动态软件漏洞挖掘方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101853200A (zh) * 2010-05-07 2010-10-06 北京大学 一种高效动态软件漏洞挖掘方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Han Xing等.a mutation-based fuzz testing approach for network protocol vulnerability detection.《2012 2nd international conference on computer science and network technology 》.2012,全文. *
漏洞信息数据挖掘系统设计;葛先军等;《计算机工程与设计》;20090228;全文 *

Also Published As

Publication number Publication date
CN103209173A (zh) 2013-07-17

Similar Documents

Publication Publication Date Title
CN103209173B (zh) 一种网络协议漏洞挖掘方法
KR101519845B1 (ko) 안티디버깅 방법
US9438617B2 (en) Application security testing
CN112906010B (zh) 一种自动化攻击测试方法及基于此的自动化安全测试方法
WO2017185827A1 (zh) 用于确定应用程序可疑行为的方法和装置
CN110516448A (zh) 一种灰盒测试方法、装置、设备及可读存储介质
CN109948338B (zh) 基于静态分析的安卓应用敏感路径触发方法
CN110232012A (zh) 一种基于xml的模糊测试语言协议测试脚本和测试引擎
CN104732145A (zh) 一种虚拟机中的寄生进程检测方法和装置
CN113158191A (zh) 基于智能探针的漏洞验证方法及相关iast方法、系统
US11055416B2 (en) Detecting vulnerabilities in applications during execution
CN108073499A (zh) 应用程序的测试方法及装置
CN105453104B (zh) 系统保护用文件安全管理装置和管理方法
CN107741891B (zh) 对象的析构方法、介质、装置和计算设备
CN112100620B (zh) 代码安全检测方法、装置、设备和可读存储介质
KR20210132545A (ko) 이상행위 탐지 장치, 방법 및 이를 포함하는 시스템
CN101996287A (zh) 恶意软件清除方法、系统及计算机程序产品与存储媒体
CN109740351A (zh) 一种嵌入式固件的漏洞检测方法、装置及设备
CN111752819A (zh) 一种异常监控方法、装置、系统、设备和存储介质
CN116166535A (zh) 一种基于模糊测试自动化挖掘非易失内存堆漏洞的方法
KR20190051301A (ko) 퍼징 수행 시스템, 퍼징용 실행 흐름 정보 추출 장치 및 방법
US20140351643A1 (en) Smart terminal fuzzing apparatus and method using multi-node structure
CN114676436A (zh) 一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘系统及方法
CN111385253B (zh) 一种面向配电自动化系统网络安全的脆弱性检测系统
CN109743333A (zh) 一种全方位分析企业网络安全漏洞的系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160713

Termination date: 20170308

CF01 Termination of patent right due to non-payment of annual fee