[发明专利]一种基于隐马尔可夫模型的汇编指令级漏洞检测方法无效

专利信息
申请号: 201010257022.8 申请日: 2010-08-19
公开(公告)号: CN101923618A 公开(公告)日: 2010-12-22
发明(设计)人: 王崑声;李宁;胡昌振;白昊 申请(专利权)人: 中国航天科技集团公司第七一○研究所;北京理工大学
主分类号: G06F21/00 分类号: G06F21/00
代理公司: 北京理工大学专利中心 11120 代理人: 付雷杰
地址: 100048*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明涉及一种基于隐马尔可夫模型的汇编指令级漏洞检测方法,属于信息安全技术领域;包括如下步骤:①构造漏洞指令库VIL;②针对步骤①中构造的漏洞指令库中的全部漏洞,分别为漏洞指令库中的每种漏洞选取多个含有该漏洞的可执行程序作为该漏洞的训练数据;③获取漏洞指令库中的每个漏洞的训练数据的汇编指令片段;④获取训练数据的数字码序列;⑤依次获得漏洞指令库中的每个漏洞对应的隐马尔科夫模型的参数λr={Ar,Br,πr};⑥对待测可执行程序进行漏洞识别。本发明提出的方法与已有技术相比较,有如下优点:首次将HMM应用于对存在上下文关联性的汇编指令进行建模并对漏洞特征进行识别;提高了漏洞检测的效率,同时降低了误报率和漏报率。
搜索关键词: 一种 基于 隐马尔可夫 模型 汇编 指令 漏洞 检测 方法
【主权项】:
一种基于隐马尔可夫模型的汇编指令级漏洞检测方法,其具体操作步骤如下:步骤一、构造漏洞指令库;漏洞指令库用来存储已知漏洞及已知漏洞的特征,一个漏洞包括3个属性:漏洞名称、汇编指令帧和数字码;每个汇编指令帧包括1条或多条汇编指令;每个数字码包括两部分,其中一部分为每个漏洞的唯一编码,另一部分为该漏洞对应的汇编指令帧中包含的汇编指令的顺序编号;对于每一个漏洞,其具体构造方法为:步骤1.1:针对包含一种软件漏洞的一个或一个以上的可执行程序使用静态反汇编分析工具进行反汇编,获得可执行程序中全部函数的函数结构图;将每个函数结构图称为一个汇编指令片段;步骤1.2:从步骤1.1中获得的汇编指令片段中提取出产生该漏洞的汇编指令片段;步骤1.3:使用动态反汇编分析工具从步骤1.2中得到的产生该漏洞的汇编指令片段中依次提取出产生该漏洞的汇编指令,将这些汇编指令组成的有序集合称为汇编指令帧;具体为:步骤1.3.1:在正常状态下运行步骤1.1中所述可执行程序,使用动态反汇编分析工具依次跟踪步骤1.2中提取出的产生该漏洞的汇编指令片段,记录下每个产生该漏洞的汇编指令片段中在此次运行过程中所执行的汇编指令,将这些执行的汇编指令组成的有序集合称为汇编指令集合1;步骤1.3.2:激活该漏洞,使用动态反汇编分析工具再次运行步骤1.1中所述可执行程序,跟踪步骤1.2中提取的产生该漏洞的汇编指令片段,依次记录下每个汇编指令片段中在此次运行过程中所执行的汇编指令,将这些执行的汇编指令组成的有序集合称为汇编指令集合2;步骤1.3.3:依次将汇编指令集合1和汇编指令集合2中的汇编指令进行匹配比对,并分为以下三种情况处理:情况1:对于同时出现在汇编指令集合1和汇编指令集合2中的汇编指令,视为不是触发该漏洞的汇编指令,做删除处理;情况2:对于在编指令集合1中出现,但是在汇编指令集合2中没有出现的汇编指令,做丢弃处理;做丢弃处理的这些汇编指令是可执行程序在正常运行时所执行的,而在触发漏洞时未执行的汇编指令,因此视为不是触发该漏洞的汇编指令;情况3:对于在汇编指令集合2中出现,但是在编指令集合1中没有出现的汇编指令组成的有序集合称为汇编指令帧;汇编指令帧中存储与触发漏洞有关的汇编指令;经过上述步骤的操作即可得到产生该漏洞的汇编指令帧;步骤1.4:构造漏洞指令库;按照步骤1.3得到的汇编指令帧中的汇编指令的依次提取顺序,为每条汇编指令增加一条数字码;通过重复执行步骤1.1到步骤1.4的操作,可构造包含多个漏洞的漏洞指令库;步骤二、针对步骤一中构造的漏洞指令库中的全部漏洞,分别为漏洞指令库中的每种漏洞选取多个含有该漏洞的可执行程序作为该漏洞的训练数据;漏洞指令库中的每种漏洞用Vi表示,该漏洞的训练数据用Ti表示;i代表漏洞指令库中每个漏洞的唯一编码;步骤三、获取漏洞指令库中的每个漏洞的训练数据的汇编指令片段;针对步骤二得到的漏洞指令库中的每个漏洞的训练数据使用静态反汇编分析工具进行反汇编,获得可执行程序中全部函数的函数结构图;将每个函数结构图称为一个汇编指令片段;步骤四、获取训练数据的数字码序列;依次对步骤三得到的漏洞指令库中的每个漏洞的训练数据的汇编指令片段中的汇编指令分别采用结构化处理方法进行处理,获得漏洞指令库中每个漏洞的训练数据的汇编指令片段的数字码序列;所述结构化处理方法的具体操作步骤为:步骤4.1:依次将漏洞指令库中的每一条汇编指令中的数字去掉,组成新字符串;漏洞指令库中的所有汇编指令分别用P1~Psum表示,其中,sum为正整数,表示漏洞指令库包含的汇编指令的数量;由漏洞指令库中的每一条汇编指令产生的新字符串分别用Q1~Qsum表示;步骤4.2:漏洞指令库包含的汇编指令的数量使用计数器A计数,计数器A的计数值用m表示,m≥1且m为正整数;设定m的初值为1;步骤4.3:判断计数器A的计数值m是否不大于第m个漏洞的训练数据的汇编指令片段的个数N,N为正整数;;如果该条件成立,则执行步骤4.4的操作;否则,结束操作;步骤4.4:将第m个漏洞的训练数据的汇编指令片段中的每一条汇编指令中的数字去掉,组成新字符串;第m个漏洞的训练数据的汇编指令片段中的每一条汇编指令分别用P′1~P′sum′表示,其中,sum′为正整数,表示第m个漏洞的训练数据的汇编指令片段中的汇编指令的数量;第m个漏洞的训练数据的汇编指令片段中的每一条汇编指令产生的新字符串分别用Q′1~Q′sum′表示;步骤4.5:第m个漏洞的训练数据的汇编指令片段中的汇编指令的数量用计数器B计数,计数器B的计数值用i表示,i为正整数;设定计数器B的计数值i的初值为1;步骤4.6:判断第m个漏洞的训练数据的汇编指令片段中的汇编指令的计数器B的计数值i是否不大于第m个漏洞的训练数据的汇编指令片段中的汇编指令的数量sum′,如果该条件成立,则执行步骤4.7的操作;否则,执行步骤4.9的操作;步骤4.7:依次将第m个漏洞的训练数据的汇编指令片段中的每一条汇编指令中的数字去掉,组成新字符串Q′i与步骤4.1得到的将漏洞指令库中的每一条汇编指令中的数字去掉,组成新字符串Q1~Qsum逐一对比,并采用字符匹配的方法计算字符串Q′i分别与字符串Q1~Qsum的相似度,分别用S1~Ssum表示;如果相似度S1~Ssum均小于某一预先设定的阈值,则字符串Q′i对应的数字码为0;否则,如果相似度S1~Ssum中仅有一个最大值Smax,则字符串Q′i对应的数字码为最大值Smax对应的汇编指令在漏洞指令库的数字码;否则,如果相似度S1~Ssum中的最大值Smax多于一个,即可随机选取任意一个最大值Smax,则字符串Q′i对应的数字码为该最大值Smax对应的汇编指令在漏洞指令库的数字码;步骤4.8:将第m个漏洞的训练数据的汇编指令片段中的汇编指令的计数器B的计数值i值增1,重复执行步骤4.6到步骤4.8;步骤4.9:将漏洞指令库包含的汇编指令的计数器A的计数值m的值增1,重复执行步骤4.3到步骤4.9;经过结构化处理方法的一次完整操作,即可得到属于漏洞指令库中的一个漏洞的数字码序列Or={o1,...,ok,...,oN},也称为该漏洞的一组观测序列;1≤k≤N且k为正整数,N为该漏洞的训练数据的汇编指令片段的个数,该漏洞的训练数据的汇编指令片段中的每一个汇编指令片段产生一个该漏洞的观测序列;1≤r≤N′,N′为漏洞指令库中包含的漏洞的数量,r和N′均为正整数;步骤五、依次获得漏洞指令库中的每个漏洞对应的隐马尔科夫模型的参数λr={Ar,Br,πr};分别利用漏洞指令库中的每个漏洞的训练数据训练隐马尔科夫模型,获得漏洞指令库中的每个漏洞对应的隐马尔科夫模型的参数λr={Ar,Br,πr};对于漏洞指令库中的每个漏洞的一组观测序列Or={o1,...,ok,...,oN},利用Baum Welch算法迭代调整隐马尔科夫模型模型的参数,得到最优的能够描述该类别漏洞的隐马尔科夫模型参数λr={Ar,Br,πr},即为漏洞指令库中的每个漏洞训练一个隐马尔科夫模型模型;步骤六、使用步骤五得到的漏洞指令库中的每个漏洞的隐马尔科夫模型模型对待测可执行程序进行漏洞识别;具体为:步骤6.1:针对待测可执行程序使用静态反汇编分析工具进行反汇编,并获得可执行程序中全部函数的函数结构图,并将每个函数结构图称为一个汇编指令片段;步骤6.2:依次对待测可执行程序的汇编指令片段中的汇编指令进行处理,获得待测可执行程序的数字码序列o′={v1,...,vt},也称为该待测可执行程序的观测序列;其中,v1,...,vt为该待测可执行程序的汇编指令片段中的一条汇编指令对应的数字码;t为正整数,表示待测可执行程序的汇编指令片段中的汇编指令的数量;具体操作步骤为:步骤6.2.1:待测可执行程序的汇编指令片段中的汇编指令的数量用计数器C计数,计数器C的计数值用j表示,j为正整数;设定计数器C的计数值j的初值为1;;步骤6.2.2:判断待测可执行程序的汇编指令片段中的汇编指令的计数器C的计数值j的值是否不大于待测可执行程序的汇编指令片段中的汇编指令的数量,如果该条件成立,则执行步骤6.2.3的操作;否则,执行步骤4.9的操作;步骤6.2.3:依次将待测可执行程序的汇编指令片段中的每一条汇编指令Cj中的数字去掉,组成新字符串C′j与步骤4.1得到的将漏洞指令库中的每一条汇编指令中的数字去掉,组成新字符串Q1~Qsum逐一对比,并采用字符匹配的方法计算字符串C′j分别与字符串Q1~Qsum的相似度,分别用S′1~S′sum表示;如果相似度S′1~S′sum均小于某一预先设定的阈值,则字符串C′j对应的数字码为0;否则,如果相似度S′1~S′sum中仅有一个最大值S′max,则字符串C′j对应的数字码为最大值S′max对应的汇编指令在漏洞指令库的数字码;否则,如果相似度S′1~S′sum中的最大值S′max多于一个,即可随机选取任意一个最大值S′max,则字符串C′j对应的数字码为该最大值S′max对应的汇编指令在漏洞指令库的数字码;步骤6.2.4:将表示待测可执行程序的汇编指令片段中的汇编指令的计数器C的计数值j值增1,重复执行步骤6.2.2到步骤6.2.4;经过步骤6.2.1到步骤6.2.4的操作,即可得到待测可执行程序的数字码序列o′={v1,...,vt};步骤6.3:根据步骤6.2中得到的待测可执行程序的数字码序列o′分别利用步骤五得到的漏洞指令库中的每个漏洞对应的隐马尔科夫模型的参数λr={Ar,Br,πr},计算该待测可执行程序的观察序列o′={v1,...,vt}在该隐马尔科夫模型λr={Ar,Br,πr}上发生的概率P(o′|λr),即得到P(o′|λ1)到P(o′|λN′);步骤6.4:取P(o′|λ1)到P(o′|λN′)中的最大值,如果该最大值大于某一个预先设定的阈值,则待测可执行程序含有该最大值对应的隐马尔科夫模型所表示的漏洞;经过上述步骤的操作,即可检测出待测可执行程序中存在的漏洞。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国航天科技集团公司第七一○研究所;北京理工大学,未经中国航天科技集团公司第七一○研究所;北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201010257022.8/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top