基于def-use数据依赖图的IPSec协议状态变化标识方法技术

技术编号:38470927 阅读:11 留言:0更新日期:2023-08-11 14:47
本发明专利技术提供一种基于def

【技术实现步骤摘要】
基于def

use数据依赖图的IPSec协议状态变化标识方法


[0001]本专利技术涉及网络安全
,尤其涉及一种基于def

use数据依赖图的IPSec协议状态变化标识方法。

技术介绍

[0002]IPSec(Internet Protocol Security,互联网安全协议)是VPN(Virtual Private Network,虚拟专用网)中一种广泛应用的技术,它为 IP 数据报提供了高质量的、可互操作的、基于密码学的安全性,从而实现在Internet非安全信道中的保密通讯。出于不同应用场景的需求,IPSec拥有不同的具体实现,包括StrongSwan、OpenSwan、LibreSwan等开源软件以及Cisco、Juniper等众多厂商的闭源产品,可以运行于主机、服务器、路由器、防火墙网关等多类型设备环境。
[0003]IPSec是一个协议族,由IKE、AH、ESP、IPSec DOI等一系列子协议构成,定义了一套复杂的协议状态转换关系,以实现对IP报文数据完整性检测、加密保护和身份验证等诸多安全特性。如,IKE负责协商加密密钥和验证密钥以保护私有数据;AH协议提供数据完整性验证,但不提供加密服务。这些子协议自身的设计与实现安全是整个IPSec VPN系统安全的基石,因此研究IPSec协议的安全性,挖掘协议可能存在的安全漏洞,具有十分重要的意义。
[0004]当前,模糊测试技术是IPSec协议安全测试分析的主流技术,其面临的一大技术挑战是如何有效标识IPSec协议工作状态并进行反馈引导,从而提高协议渗透深度和模糊测试效率。
[0005]现有协议状态提取方法主要有三大类。一类是基于模式生成的方法,如Peach、BooFuzz、SPFuzz、PavFuzz等,通过人工阅读分析协议规范说明文档,采用自定义的模式(如xml)描述消息格式和状态转换关系,自主生成测试用例;其局限性在于,依赖大量专家知识和人工分析,且不同协议实现细节的差异导致协议状态模型描述不准确。第二类是基于推理学习的方法,如AFLnet、SnapFuzz、SNPSFuzzer,ICS3Fuzzer、DTLS

Fuzzer等,基于网络流量截包,采用主、被动学习方法,从交互数据中推理获得协议状态变化信息;其局限性在于,黑盒测试模式,协议测试渗透深度不够,同时依赖通信I/O数据,网络通信延迟严重限制测试吞吐量。第三类是基于运行信息提取的方法,如FirmHunter、StateAFL、StateInspector等,通过运行时动态插桩或者快照方式,分析内存、I/O、寄存器等上下文数据,获得协议状态变化信息;其局限性在于,运行时动态插桩增加了内存和CPU开销,降低了测试效率。

技术实现思路

[0006]为解决现有协议状态提取方法存在依赖人工分析、协议测试渗透深度不足以及测试效率低的问题,本专利技术提供一种基于def

use数据依赖图的IPsec协议状态变化标识方法。
[0007]本专利技术提供一种基于def

use数据依赖图的IPSec协议状态变化标识方法,包括:步骤1:获取实现IPSec协议的目标二进制程序;
步骤2:对所述目标二进制程序进行重写插桩来实现基本块的标识和定位;步骤3:对重写插桩后的目标二进制程序进行扫描以获取所有函数指针间接调用指令,并生成包含所有函数指针间接调用指令所在位置索引的指针函数字典;步骤4:遍历所述目标二进制程序中的所有函数,为每个函数生成对应的def

use数据依赖图;步骤5:遍历所述目标二进制程序中所有结构体变量赋值指令,根据每条赋值指令所在函数的def

use数据依赖图和所述指针函数字典标识出协议状态变化操作所在代码的位置。
[0008]进一步地,其特征在于,步骤2具体包括:对所述目标二进制程序进行反汇编并生成中间语言;基于所述中间语言,采用二进制重写工具在目标二进制程序的数据段中插入一个全局共享数组和一个全局整型变量,以及在代码段中的每个基本块起始位置均插入两条特征指令;其中一条特征指令用于为所在基本块生成一个随机数,并采用该随机数作为下标对全局共享数组进行计数操作来基本块的标识,另一条特征指令采用魔数对全局整型变量进行赋值来实现基本块定位。
[0009]进一步地,步骤3具体包括:使用反汇编工具对重写插桩后的目标二进制程序进行反汇编得到汇编代码;基于所述汇编代码对代码段进行全空间扫描,正向搜索具有预设特征的指令语句作为函数指针间接调用指令;其中,具有预设特征的指令语句为“call[base+func_offset]”类型,base表示结构体变量地址,func_offset表示函数指针偏移量;对于每条函数指针间接调用指令,从其所在位置开始,反向搜索并提取该函数指针间接调用指令所在基本块对应的随机数,将该随机数和该函数指针间接调用指令所在位置组成二元组信息,将该二元组信息存入以函数指针偏移量func_offset为key值的指针函数字典。
[0010]进一步地,步骤4中,通过IDAPython使用miasm插件遍历所述目标二进制程序中的所有函数,生成以函数为单位的def

use数据依赖图。
[0011]进一步地,步骤5具体包括:将满足预设约束条件的指令语句作为结构体变量赋值指令,所述预设约束条件包括:指令语句为“mov [base+dst_offset],src_value”类型,且目的操作数[base+dst_offset]中的base地址值属性为内存地址、dst_offset值是非0立即数,且源操作数src_value的值为立即数或者值传递自一个立即数,且在程序控制流中存在以[base+dst_offset]为地址的结构体变量被引用;判断源操作数src_value的值类型属于函数内部初始定义、函数直接调用参数传入和函数指针间接调用参数传入三种模式中的何种模式;根据源操作数src_value的值类型所属模式,采取对应的标识方式标识出协议状态变化操作所在代码的位置。
[0012]进一步地,所述的根据源操作数src_value的值类型所属模式,采取对应的标识方式标识出协议状态变化操作所在代码的位置,具体包括:步骤A1:针对函数内部初始定义模式,继续判断src_value的值类型:若值为立即
数,则直接按照<基本块标识,状态变量偏移,状态值立即数,赋值类型, 所在函数名称>五元组格式记录该赋值指令位置,即为协议状态变化操作所在代码的位置;若值传递自一个立即数,则在函数代码区域内依据对应函数的def

use数据依赖图,遍历所有路径,以该赋值指令所在位置为起点,回溯追踪src_value的值传递过程,直至追踪到定义立即数初值的位置,则按照<基本块标识,状态变量偏移,状态值立即数,赋值类型, 所在函数名称>记录该立即数初值定义的位置,即为本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于def

use数据依赖图的IPSec协议状态变化标识方法,其特征在于,包括:步骤1:获取实现IPSec协议的目标二进制程序;步骤2:对所述目标二进制程序进行重写插桩来实现基本块的标识和定位;步骤3:对重写插桩后的目标二进制程序进行扫描以获取所有函数指针间接调用指令,并生成包含所有函数指针间接调用指令所在位置索引的指针函数字典;步骤4:遍历所述目标二进制程序中的所有函数,为每个函数生成对应的def

use数据依赖图;步骤5:遍历所述目标二进制程序中所有结构体变量赋值指令,根据每条赋值指令所在函数的def

use数据依赖图和所述指针函数字典标识出协议状态变化操作所在代码的位置。2.根据权利要求1所述的基于def

use数据依赖图的IPSec协议状态变化标识方法,其特征在于,步骤2具体包括:对所述目标二进制程序进行反汇编并生成中间语言;基于所述中间语言,采用二进制重写工具在目标二进制程序的数据段中插入一个全局共享数组和一个全局整型变量,以及在代码段中的每个基本块起始位置均插入两条特征指令;其中一条特征指令用于为所在基本块生成一个随机数,并采用该随机数作为下标对全局共享数组进行计数操作来基本块的标识,另一条特征指令采用魔数对全局整型变量进行赋值来实现基本块定位。3.根据权利要求2所述的基于def

use数据依赖图的IPSec协议状态变化标识方法,其特征在于,步骤3具体包括:使用反汇编工具对重写插桩后的目标二进制程序进行反汇编得到汇编代码;基于所述汇编代码对代码段进行全空间扫描,正向搜索具有预设特征的指令语句作为函数指针间接调用指令;其中,具有预设特征的指令语句为“call[base+func_offset]”类型,base表示结构体变量地址,func_offset表示函数指针偏移量;对于每条函数指针间接调用指令,从其所在位置开始,反向搜索并提取该函数指针间接调用指令所在基本块对应的随机数,将该随机数和该函数指针间接调用指令所在位置组成二元组信息,将该二元组信息存入以函数指针偏移量func_offset为key值的指针函数字典。4.根据权利要求1所述的基于def

use数据依赖图的IPSec协议状态变化标识方法,其特征在于,步骤4中,通过IDAPython使用miasm插件遍历所述目标二进制程序中的所有函数,生成以函数为单位的def

use数据依赖图。5.根据权利要求3所述的基于def

use数据依赖图的IPSec协...

【专利技术属性】
技术研发人员:董卫宇雷久刚王瑞敏林键唐永鹤刘春玲娄睿王奕森王焕伟
申请(专利权)人:中国人民解放军战略支援部队信息工程大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1