【技术实现步骤摘要】
基于状态与消息感知的网络协议模糊测试方法及系统
[0001]本专利技术属于网络协议安全检测
,具体涉及基于状态与消息感知的网络协议模糊测试方法及系统。
技术介绍
[0002]随着互联网技术的发展,网络通信安全已经成为一项重要的研究工作。在互联网的服务中使用网络协议可以使得用户更有效地、更可靠地与远程服务器进行通信。因此,为了保证网络协议实体的安全,去发现其潜在的安全漏洞是至关重要的。网络协议规定了两个或多个网络参与者之间可以交换的消息的正确顺序和结构。但是,这种可以从世界任何地方与服务器通信的能力给攻击者对远程代码进行攻击提供了机会。攻击者甚至不需要物理访问服务器。OpenSSL是用于在SSL/TLS协议中保证通信安全的协议实体,其中著名的“心脏滴血(Heartbleed)”就是OpenSSL中的一个安全漏洞。
[0003]目前主流的网络协议(简称“协议”)模糊测试技术包括基于变异的灰盒模糊测试技术和基于生成的黑盒模糊测试技术。其中最先进的基于变异的灰盒模糊测试技术AFLNET,该协议模糊测试工具主要思想是结合AFL的覆盖引导和变异生成的灰盒模糊测试技术与自学习协议实体中状态信息来引导协议模糊测试工具不断地变异来生成新的消息序列,从而提高网络协议模糊测试的效率。
[0004]协议模糊测试所发送的消息序列是有顺序性和结构性的,协议实体很容易因为收不到特定的消息而导致拒绝接收后续的一系列消息,从而降低整个消息序列的有效性和被接受率,以及很难覆盖协议实体更深层次的状态和逻辑代码。基于变异的协议模糊测试
【技术保护点】
【技术特征摘要】
1.基于状态与消息感知的网络协议模糊测试方法,其特征在于,包括四个阶段:测试准备阶段、协议模糊测试阶段、结果信息反馈阶段,构建特定于状态的消息池阶段。2.根据权利要求1所述的基于状态与消息感知的网络协议模糊测试方法,其特征在于,所述的测试准备阶段,包括以下子步骤:步骤1
‑
1,编译插桩:对被测协议实体使用AFLNET自带的afl
‑
clang
‑
fast++进行编译插桩,生成被测协议的目标代码,便于收集协议实体运行时的代码覆盖信息;步骤1
‑
2构建初始语料库:首先分别启动客户端与被测协议目标代码,并进行通信;然后利用数据包嗅探工具tcpdump去监听协议实体的端口的所有流量,并将捕获到的所有请求数据包和响应数据包保存在traffic.pcap文件中;最后,使用消息序列解析器对traffic.pcap文件进行解析并提取出所有的请求消息序列,并将其作为初始语料库InitialMessagePool;初始语料库是消息序列的集合,即InitialMessagePool={M1,..,Mi,...,Md},i=1,...,d,其中d为消息序列总数,而消息序列是消息的链表,即Mi=mi,1
‑
>...
‑
>mi,k
‑
>...
‑
>mi,q,mi,k表示第i个消息序列的第k个消息,k=1,...,q,其中q为Mi的消息总个数。3.根据权利要求2所述的基于状态与消息感知的网络协议模糊测试方法,其特征在于,所述的协议模糊测试阶段,包括以下子步骤:步骤2
‑
1.初始化利用AFLNET的preform_dry_run()函数对初始语料库中的每个消息序列执行一遍协议模糊测试,收集产生的协议状态并保存在全局变量state_ids数组中,state_ids={S1,...,Si,...,Sn},Si表示第i个协议状态,i=1,...,n,n为协议状态总数;收集产生的状态转换保存到state_transition二维数组中,state_transition[i][j]=1表示状态state_ids[i]能够到达状态state_ids[j],state_transition[i][j]=0表示状态state_ids[i]不能够到达状态state_ids[j],其中i,j=1,...,n,n为协议状态总数;步骤2
‑
2.选择目标状态步骤2
‑2‑
1.初始时,对state_ids数组中采用轮询的方式挑选出一个状态作为协议模糊测试的目标状态Sp,p=1,...,n,n为协议状态总数;如果轮询次数小于等于L次(通常经验取值为10),就跳转至步骤2
‑
3,否则跳转至步骤2
‑2‑
2;步骤2
‑2‑
2.采用AFLNET中的update_scores_and_select_next_state()函数选出下一个模糊的目标状态Sp,p=1,...,n,n为协议状态总数;步骤2
‑
3.选择消息序列根据步骤2
‑
2中选定的目标状态Sp,从InitialMessagePool中选出能使被测协议实体到达目标状态Sp的消息序列M,用于进一步消息序列的变异;步骤2
‑
4.变异消息序列根据步骤2
‑
3中选定的消息序列M,利用AFLNET的划分方法将M划分为三个子序列:前缀消息序列(M1)、中缀消息序列(M2)、后缀消息序列(M3),即M=<M1,M2,M3>;其中M1是能使协议实体到达目标状态Sp的消息序列,M2是等待变异的候选消息序列,M3是剩余的消息序列;
然后,根据目标状态Sp所对应的消息池TargetMessagePool是否为空,对M2采用不同的变异策略。4.根据权利要求3所述的基于状态与消息感知的网络协议模糊测试方法,其特征在于:所述的协议模糊测试阶段中步骤2
‑
4:对M2采用不同的变异策略,包括:1)如果TargetMessagePool为空,则对M2采用位级别和字节级别的变异策略来生成新的M2
’
,即M=<M1,M2
’
,M3>,用于进一步的协议测试;2)否则TargetMessagePool不为空,则对M2采用消息级别的变异策略:首先,从TargetMessagePool={M
p,1
(value1),M
p,2
(value2),...,M
p,...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。