基于深度学习的控制流完整性检测方法技术

技术编号:24498324 阅读:40 留言:0更新日期:2020-06-13 03:57
本发明专利技术公开了一种基于深度学习的控制流完整性检测方法,包括获取训练程序及其可执行文件;反汇编可执行文件并构建粗粒度控制流图;监测程序的控制流并收集地址信息;构建训练程序的细粒度控制流图并切分得到训练数据;训练分类器得到控制流完整性检测分类器;获取待检测程序的地址信息;构建待检测程序的gadget链编码;采用控制流完整性检测分类器进行检测并完成待检测程序的控制流的完整性检测。本发明专利技术构建精确的控制流图,然后拆分控制流图用于神经网络训练,并在程序运行时实时获取分支信息,并通过神经网络模型进行检测;本发明专利技术能够较好的进行程序的控制流完整性检测,而且可靠性高、检测准确率高且实施方便。

Control flow integrity detection method based on deep learning

【技术实现步骤摘要】
基于深度学习的控制流完整性检测方法
本专利技术属于计算机安全领域,具体涉及一种基于深度学习的控制流完整性检测方法。
技术介绍
随着经济技术的发展和人们生活水平的提高,计算机已经广泛应用于人们的生产和生活当中,给人们的生产和生活带来了无尽的便利。而随着智能、大数据时代的到来,人们对于计算机的安全问题越来越关注。不安全的系统编程语言(例如C和C++)的使用,会导致软件中存在大量漏洞。根据最近的安全威胁报告,近10年来漏洞数量呈现明显上升趋势。代码复用攻击(如ROP和JOP)利用内存溢出漏洞,在不注入任何恶意代码的情况下利用程序中的分支指令劫持程序控制流,并将其重新定向到程序中已有的以分支指令结尾的微小代码片段(gadget),通过构造和执行这些gadget,达到恶意攻击的目的。这种攻击已经扩展到PowerPC、AtmelAVR、SPARC、Harward和ARM等多种不同的平台,且已显示其强大的攻击力。甚至AdobeReader、AdobeFlashPlayer以及QuickTimePlayer等众多著名的商业软件也已被代码复用攻击成功攻击。控制流完整性(controlflowintegrity,CFI)是当前防御代码复用攻击(codereuseattack,CRA)的主流防御技术之一。CFI将程序的控制流转移限制在该程序的控制流图(controlflowgraph,CFG)范围内。控制流完整性有基于软件和硬件辅助软件两种实现方式。基于软件的CFI向可执行文件中插入检测标签指令或添加程序运行时监测机制,从而达到检测控制流的目的,该方式具有易部署,无需硬件支持等优点,但存在修改二进制代码或修改编译器等问题。基于硬件辅助的CFI通过添加特定的控制流指令或者额外的硬件模块,从而有效减少性能开销。然而,硬件辅助防御机制同样需要扩展指令集、修改编译器,并且需要较大的空间开销。
技术实现思路
本专利技术的目的在于提供一种可靠性高、检测准确率高且实施方便的基于深度学习的控制流完整性检测方法。本专利技术提供的这种基于深度学习的控制流完整性检测方法,包括如下步骤:训练阶段:S1.获取训练程序的可执行文件;S2.对步骤S1获取的可执行文件进行反汇编,并以gadget为单位构建粗粒度控制流图;S3.对步骤S1获取的训练程序,采用英特尔分支追踪(IntelProcessorTrace,IPT)监测程序的控制流,从而收集地址信息;S4.根据步骤S2得到的粗粒度控制流图和步骤S3得到的地址信息,构建程序的细粒度控制流图;S5.对步骤S4得到的细粒度控制流图进行切分,得到良性gadget链和恶意gadget链,并作为训练数据;S6.采用步骤S5得到的训练数据对分类器进行训练,从而得到最终的控制流完整性检测分类器;检测阶段:S7.对于待检测程序,采用IPT监测程序的控制流,从而收集地址信息;S8.根据步骤S7得到的地址信息,构建待检测程序的gadget链编码;S9.采用步骤S6得到的控制流完整性检测分类器,对步骤S8得到的待检测程序的gadget链编码进行分类检测,从而将待检测程序的gadget链编码分类为正常控制流和CRA攻击,完成待检测程序的控制流的完整性检测。步骤S4所述的根据步骤S2得到的粗粒度控制流图和步骤S3得到的地址信息,构建训练程序的细粒度控制流图,具体为采用如下步骤构建细粒度控制流图:A.静态分析程序的可执行文件,得到程序所有的直接分支信息;B.采用IPT监测程序的控制流,并在IPT生成的所有IPT包中获取TNT(TakenNot-Taken)包;C.根据步骤B得到的TNT包,获取程序所有的直接条件分支信息;D.生成若干种不同的输入数据并输入到程序中,采用IPT监测程序的控制流,并在IPT生成的所有IPT包中获取TIP(TargetIP)包;E.根据步骤D获取的不同的输入数据情况下程序的TIP包,获取程序所有的间接分支信息;F.将步骤A获取的直接分支信息、步骤C获取的直接条件分支信息和步骤E获取的间接分支信息与粗粒度控制流图结合,在原有的粗粒度控制流图上添加合法的控制流转移路径,从而得到最终的细粒度控制流图。步骤S5所述的对步骤S4得到的细粒度控制流图进行切分,得到良性gadget链和恶意gadget链,具体为采用如下规则进行切分:对于间接分支的控制流转移,以一条边为单位对细粒度控制流图进行拆分,从而得到第一良性Gadget链;对于直接分支的控制流转移,以N条边为单位对细粒度控制流图进行拆分,从而得到第二良性Gadget链;第一良性Gadget链和第二良性Gadget链一同构成良性Gadget链;任意连接细粒度控制流图中的M个节点构成Gadget链,且保证所得到的Gadget链不在良性Gadget链中,从而将构成的上述所有Gadget链构成恶意Gadget链;所述的N和M均为大于1的正整数。步骤S5所述的训练数据,具体为采用如下步骤处理训练数据:a.将得到的良性gadget链和恶意gadget链中的每一条指令均表示为十六进制;b.将步骤a得到的十六进制数据以4位为单位进行拆分,从而得到单个的数值;c.将步骤b得到的所有数值按照指令的先后顺序排列;d.采用nop指令,在步骤c的数据末尾,将所有数据补齐到等长,从而将一个Gadget转换为神经网络可识别的数据。步骤S6所述的分类器,具体为深度神经网络模型。所述的深度神经网络模型,具体为六层深度神经网络模型;所述六层深度神经网络模型包括一个输入层、四个隐藏层和一个输出层;四个隐藏层的节点数分别为1024、512、128和32;对于每一个隐藏层,采用线性修正单元ReLU作为激活函数;设置dropout为50%,从而加快练速度和防止过拟合;通过softmax将结果转化为0到1之间的概率值;在训练深度神经网络模型时,设置模型的学习率为0.01,并采用随机梯度下降法对模型进行优化;对于每一次训练,均采用反向传播算法更新网络每一层的权值,并不断重复优化过程直到误差收敛。本专利技术提供的这种基于深度学习的控制流完整性检测方法,克服了传统控制流完整性需要扩展指令集、修改编译器和性能开销大等问题,利用IPT构建精确的控制流图,然后拆分控制流图用于神经网络训练,并在程序运行时实时获取分支信息,并通过神经网络模型进行检测;因此本专利技术方法能够较好的进行程序的控制流完整性检测,而且可靠性高、检测准确率高且实施方便。附图说明图1为本专利技术方法的方法流程示意图。图2为本专利技术方法的控制流图的切分实例示意图。图3为本专利技术方法的训练数据的数据表示实例示意图。具体实施方式本专利技术假设系统已经部署了DEP等基础防御机制,以防攻击者不能注入恶意代码;控制者可以任意读/写数据段,但只能读/执行代码段;假设应用程序是可信的;然而本文档来自技高网
...

【技术保护点】
1.一种基于深度学习的控制流完整性检测方法,包括如下步骤:/n训练阶段:/nS1.获取训练程序及其对应的可执行文件;/nS2.对步骤S1获取的可执行文件进行反汇编,并以gadget为单位构建粗粒度控制流图;/nS3.对步骤S1获取的训练程序,采用英特尔分支追踪监测程序的控制流,从而收集地址信息;/nS4.根据步骤S2得到的粗粒度控制流图和步骤S3得到的地址信息,构建程序的细粒度控制流图;/nS5.对步骤S4得到的细粒度控制流图进行切分,得到良性gadget链和恶意gadget链,并作为训练数据;/nS6.采用步骤S5得到的训练数据对分类器进行训练,从而得到最终的控制流完整性检测分类器;/n检测阶段:/nS7.对于待检测程序,采用IPT监测程序的控制流,从而收集地址信息;/nS8.根据步骤S7得到的地址信息,构建待检测程序的gadget链编码;/nS9.采用步骤S6得到的控制流完整性检测分类器,对步骤S8得到的待检测程序的gadget链编码进行分类检测,从而将待检测程序的gadget链编码分类为正常控制流和CRA攻击,完成待检测程序的控制流的完整性检测。/n

【技术特征摘要】
1.一种基于深度学习的控制流完整性检测方法,包括如下步骤:
训练阶段:
S1.获取训练程序及其对应的可执行文件;
S2.对步骤S1获取的可执行文件进行反汇编,并以gadget为单位构建粗粒度控制流图;
S3.对步骤S1获取的训练程序,采用英特尔分支追踪监测程序的控制流,从而收集地址信息;
S4.根据步骤S2得到的粗粒度控制流图和步骤S3得到的地址信息,构建程序的细粒度控制流图;
S5.对步骤S4得到的细粒度控制流图进行切分,得到良性gadget链和恶意gadget链,并作为训练数据;
S6.采用步骤S5得到的训练数据对分类器进行训练,从而得到最终的控制流完整性检测分类器;
检测阶段:
S7.对于待检测程序,采用IPT监测程序的控制流,从而收集地址信息;
S8.根据步骤S7得到的地址信息,构建待检测程序的gadget链编码;
S9.采用步骤S6得到的控制流完整性检测分类器,对步骤S8得到的待检测程序的gadget链编码进行分类检测,从而将待检测程序的gadget链编码分类为正常控制流和CRA攻击,完成待检测程序的控制流的完整性检测。


2.根据权利要求1所述的基于深度学习的控制流完整性检测方法,其特征在于步骤S4所述的根据步骤S2得到的粗粒度控制流图和步骤S3得到的地址信息,构建训练程序的细粒度控制流图,具体为采用如下步骤构建细粒度控制流图:
A.静态分析程序的可执行文件,得到程序所有的直接分支信息;
B.采用IPT监测程序的控制流,并在IPT生成的所有IPT包中获取TNT包;
C.根据步骤B得到的TNT包,获取程序所有的直接条件分支信息;
D.生成若干种不同的输入数据并输入到程序中,采用IPT监测程序的控制流,并在IPT生成的所有IPT包中获取TIP包;
E.根据步骤D获取的不同的输入数据情况下程序的TIP包,获取程序所有的间接分支信息;
F.将步骤A获取的直接分支信息、步骤C获取的直接条件分支信息和步骤E获取的间接分支信息与粗粒度控制流图结合,在原有的粗粒度控制流图上添加合法的控制流转移路径,从而得到最终的细粒度控制流图。


3.根据权利要求2所述的...

【专利技术属性】
技术研发人员:王湘奇张吉良
申请(专利权)人:湖南第一师范学院
类型:发明
国别省市:湖南;43

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

1