未知通信协议安全漏洞自动化挖掘方法当前位置:首页 > 科学技术 > 研究进展

未知通信协议安全漏洞自动化挖掘方法

文章来源:科技信息中心编辑室   时间:2018-02-07

 共1页  1 


 

通信协议的安全是用户敏感信息传输保护的基础,如何及时发现网络对抗场景下诸多未公开协议的安全问题,一直都是攻防双方关注的焦点,也使得当前基于模糊测试的自动化安全漏洞挖掘成为了一个重要研究方向。但模糊测试本身只具备自动地随机生成测试用例输入并发现程序运行异常点的功能,只是自动化漏洞挖掘的一个中间环节,至少还需要向后解决异常点的漏洞类型及可利用性判定问题,向前解决测试用例的安全敏感路径导向生成问题。而在本研究中,还要首先解决未知协议的识别问题,才能按照协议的数据帧格式和状态转换模型产生测试用例生成的基础规则。

本研究在上述三个方面问题上开展了一定的探索,主要成果包括从网络通信数据流逆向识别通信协议、采用遗传算法提升模糊测试用例生成的安全敏感路径导向性、对单字节栈溢出类型漏洞及其可利用性判定的相应方法。

1  面向通信数据的未知协议逆向识别方法

在未知协议自动化识别方面,本研究面向经过信号解调、解码后的二进制通信比特数据流,形成了一套通信协议逆向识别方法(见图1),包含:从“杂乱”的比特数据中查找频繁特征序列,通过固定模式特征序列的频繁出现规律确定帧头位置的帧切分方法;在频繁特征序列中挖掘序列间关联规则,并聚类帧头特征近似数据帧的帧分类方法;引入基因序列比对算法进行数据帧相应字段对齐,并进行字段变化率、优势数据占比等特征量统计分析的帧头格式解析方法;以协议状态字段取值分布的分布(DDV)作为基本统计量提取状态相关字段,并按字段取值定义帧状态、结合帧出现次序逆构协议状态转换过程的状态模型推断方法。

未知通信协议安全漏洞自动化挖掘方法

以一个CCSDS协议族的通信过程比特流为输入,即各层分别采用TM SCCAOSIPv4TCPCFDP协议的一次TIFF格式图片文件传输过程,进行了上述方法的功能自动化联通测试,测试结果表明:已能够以单一类型协议(每一层均只有一种协议)的通信比特数据流为输入,逆向解析出字节级的帧头格式、构造出字段驱动型的协议状态转换模型。

2  基于遗传算法的模糊测试用例生成方法

在模糊测试用例自动生成的安全敏感路径导向性提升方面,针对传统漏洞挖掘Fuzzing存在的只能有单个输入和不能求解非线性解的问题,提出了一种基于遗传算法的漏洞挖掘测试用例生成新方法。模糊测试用例的适应度函数如公式(1),其中:N为程序控制流的基本块;Nmax为最大数目;D为控制流的危险函数基本块;Dmax为最大数目。设危险函数D的权值比重是程序基本块Nk倍,本研究的安全敏感路径导向即是将测试用例往危险函数路径上导向;遗传算法中多维度输入交叉变异方法的轮盘选择策略是先产生一个0~1的随机数,由于每一代中种群个数为n*2+2(n为输入变量个数),对每一组种群分别分配一个在0~1的取值区间,例如第一组种群的取值区间为0~dist(1),第二代为dist(1)dist(1) +dist(2),算法如公式3

         

未知通信协议安全漏洞自动化挖掘方法 

        本研究选取一个100行左右的小程序进行实验分析,包含4个独立不相关的输入:sig(0)sig(1)sig(2)sig(3),含有20个分支语句(即程序块)5个危险函数块(并设k=5),其中一些分支的判断条件是线性的,另一些分支判断条件[sig(2)/sig(1)>5]是非线性的,满足多维度输入和非线性判断条件的验证目的。

典型实验结果表15个危险函数均被执行一次以上的10次测试效率比较,采用随机生成的测试用例个数(即迭代次数)约为用遗传算法的15倍以上。从图2可以看出,在危险函数执行次数相当时(不一定全部5),随机生成测试用例的迭代次数约为20倍以上,且在采用该遗传算法时,约在200代之后的收敛趋势明显。

未知通信协议安全漏洞自动化挖掘方法

3  单字节栈溢出类型漏洞及可利用判定方法

在安全漏洞及其可利用性的自动化判定方面,选择单字节栈溢出(off-by-one)作为试点漏洞类型,针对其漏洞分析难以定位溢出字节和可能导致程序产生不同运行异常表现的两个难点,深入分析其漏洞形成原理(见图3),提出了可根据畸形EBP及当前EIP状态识别出程序运行的off-by-one异常,并在此基础上设计了一种用于自动判定off-by-one类型漏洞及其可利用性的黑盒分析方法,如图4所示,首先,根据畸形EBPEIP特征判定异常由off-by-one栈溢出导致;之后,不断地变异异常样本并收集程序运行信息,直至获得易于异常点定位与漏洞利用判定的样本;最后,通过比较EIP与样本内容是否匹配判定漏洞的可利用性。

未知通信协议安全漏洞自动化挖掘方法

该方法无需深入分析程序内部逻辑、可实现特定类型漏洞的自动化判定。本研究对Winamp5.12Apache 2.0.58两款存在off-by-one漏洞的真实软件进行了的有效性验证,在仅获得一个off-by-one初始异常样本的情况下,通过该方法的不断变异,可自动获得EIP被输入控制的样本,进而正确判定漏洞的存在及可利用性。

延伸阅读