一种针对二进制文件的漏洞定位发掘系统和方法与流程

文档序号:17090947发布日期:2019-03-13 23:27阅读:180来源:国知局
一种针对二进制文件的漏洞定位发掘系统和方法与流程

一种针对二进制文件的漏洞定位发掘系统和方法,用于检测二进制补丁对,可自动化的进行漏洞定位;属于计算机漏洞检测技术领域。



背景技术:

二进制程序逆向分析和漏洞挖掘一直是软件安全领域研究的首要和关键问题。对刚修复的漏洞,具体细节不会很快公布,如果我们想对此进行深入研究,则往往需要借助补丁比对的方法来定位程序中的漏洞点。补丁比对,是揭示差异信息的常用方法。然而目前针对补丁比对进行漏洞发掘定位的系统并未有。

在文献《基于动态二进制平台的缓冲区溢出过程分析》中,董鹏程等研究者基于二进制平台对应用程序的缓冲区漏洞进行分类和定位,该方法有较大局限性,仅能分析在windows上运行的程序。文献《automaticvulnerabilitylocatinginbinarypatches》比较补丁前后二进制文件的控制流图,根据它们的结构性差异定位漏洞,但不适用不在差异性位置的漏洞。文献《基于标志位差异分析的整数溢出漏洞》通过对标志位差异结合污点分析方法定位整数溢出漏洞。在文献《一种基于补丁比对和静态污点分析的漏洞定位技术研究》中,达小文等研究者主要是针对开源的有源码的软件进行的补丁比对及静态污点分析,初步对缓冲区漏洞匹配建模定位,但是无法有效针对二进制无源码的软件的漏洞发掘与定位。此外还有业界研究者提出一些二进制漏洞分析框架,比如song等人提出的bitblaze。bitblaze是结合动态分析和静态分析的的统一的二进制分析平台。shoshitaishvili等人提出来一个多架构的二进制分析框架angr,具备对二进制程序的动态符号执行能力和静态分析能力。起初是用于ctf比赛中的二进制自动化分析工具,用来发现程序中的后门,现在可以应用在漏洞分析领域,但是还无法进行完整的漏洞分析。符号执行部分angr提供程序路径信息,后续分析仍需人工辅助进行;目前angr针对符号执行部分较为强大,还未集成其他分析技术。



技术实现要素:

针对上述研究的问题,本发明的目的在于提供一种针对二进制文件的漏洞定位发掘系统和方法,解决现有技术中的方法不能够高效的针对发布补丁的软件进行漏洞发掘与定位问题,帮助完善漏洞信息构建漏洞库工作、帮助构造poc代码,方便分析人员并减轻重复操作实现自动化。本发明可以针对二进制文件补丁比对有效的缩小漏洞范围;通过翻译到中间语言,可以有效屏蔽架构差异,可以实现多平台的漏洞分析工作;通过结合静态污点分析技术,可以高效定位特定类型漏洞位置。

为了达到上述目的,本发明采用如下技术方案:

一种针对二进制文件的漏洞定位发掘系统,其特征在于,包括:

反汇编模块:用于对输入的二进制样本和对应的补丁后的文件分别进行二进制到汇编语言的反汇编操作,得到汇编代码;

补丁比对模块:用于对汇编代码进行函数级细粒度的结构化比对分析,得到符合要求的函数对;

中间语言翻译模块:用于根据函数对、能够处理的中间语言类型、二进制补丁对的机器指令类型,将机器指令翻译为中间语言,二进制补丁对指的是二进制样本和对应的补丁后的文件;

静态污点传播检测模块:用于对由函数对翻译来的中间语言的语义,即函数对进行污点源的标记后,对污点源传播的数据流进行分析,得到辅助定位存在的漏洞类型及位置;

漏洞匹配定位模块:用于根据是否有辅助定位存在的漏洞类型及位置分别进行不同漏洞模型匹配,定位到最终的漏洞位置及漏洞类型。

进一步,所述反汇编模块的反汇编操作采用线性扫描算法或递归下降算法中的一种。

进一步,所述补丁比对模块的结构化比对分析包括字符串相似性比较算法、字符串引用匹配算法、指令数目匹配算法、哈希匹配算法、调用引用匹配算法、边匹配算法、出入口匹配算法中的一种或多种计算后给出的综合比对之后的结果。

进一步,所述静态污点传播检测模块的具体实现步骤为:

选取不可信的输入作为函数对的污点源;

跟踪污点源的传播,通过数据流分析技术对污点源传播的数据流进行分析;

根据分析结果,检测污点源传播的数据流是否存在非法使用的情况,若有,则得到辅助定位存在的漏洞类型及位置。

进一步,所述漏洞匹配定位模块的具体实现步骤为:判断是否有辅助定位存在的漏洞类型及位置;

若有辅助定位存在的漏洞类型及位置,将辅助定位存在的漏洞类型及位置分别与缓冲区溢出漏洞模型、格式化字符串漏洞模型进行匹配,定位到最终的漏洞位置及漏洞类型;

若没有辅助定位存在的漏洞类型及位置,将中间语言与分析抽象出的常见漏洞类型的中间语言形式模型进行模式匹配定位到最终的漏洞位置及漏洞类型。

一种针对二进制文件的漏洞定位发掘方法,其特征在于,包括如下步骤:

s1、用于对输入的二进制样本和对应的补丁文件分别进行二进制到汇编语言的反汇编操作,得到汇编代码;

s2、用于对汇编代码进行函数级细粒度的结构化比对分析,得到符合要求的函数对;

s3、用于根据函数对、能够处理的中间语言类型和二进制补丁对的机器指令类型,将s2获得的函数对的机器指令翻译为中间语言;

s4、用于对中间语言的语义,即函数对进行污点源的标记后,对污点源传播的数据流进行分析,得到辅助定位存在的漏洞类型及位置;

s5、用于根据是否有辅助定位存在的漏洞类型及位置分别进行不同漏洞模型匹配,定位到最终的漏洞位置及漏洞类型;

s6、若是单一的二进制样本和对应的补丁后的文件分析,输出步骤s5得到的结果,否则跳转到s1,进行下一个二进制样本和对应的补丁后的文件的分析,直到达到停止条件,输出定位的所有结果。

进一步,所述步骤s1中,反汇编操作采用线性扫描算法或递归下降算法中的一种。

进一步,所述步骤s2中,结构化比对分析包括字符串相似性比较算法、字符串引用匹配算法、指令数目匹配算法、哈希匹配算法、调用引用匹配算法、边匹配算法、出入口匹配算法中的一种或多种计算后给出的综合比对之后的结果。

进一步,所述步骤s4的具体步骤为:

s41、选取不可信的输入作为函数对的污点源;

s42、跟踪污点源的传播,通过数据流分析技术对污点源传播的数据流进行分析;

s43、根据步骤s42的分析结果,检测污点源传播的数据流是否存在非法使用的情况,若有,则得到辅助定位存在的漏洞类型及位置。

进一步,所述步骤s5的具体步骤为:s51、判断是否有辅助定位存在的漏洞类型及位置,若有,转到步骤s52,若否,转到步骤s53;

s52、将辅助定位存在的漏洞类型及位置分别与缓冲区溢出漏洞模型、格式化字符串漏洞模型进行匹配,定位到最终的漏洞位置及漏洞类型;

s53、将步骤s3得到的中间语言与分析抽象出的常见漏洞类型的中间语言形式模型进行模式匹配定位到最终的漏洞位置及漏洞类型。

本发明同现有技术相比,其有益效果表现在:

一、本发明对原始文件和对原始文件补丁后的文件分别进行反汇编,然后对反汇编后的文件依次经过补丁比对、中间语言翻译,再通过辅助定位进行判断做比较,找出其中的差异,从而发现潜在的漏洞;即对补丁对二进制样本和对应的补丁文件进行归类后,规范化输入输出,可以方便分析人员并实现自动化的大批量的分析漏洞,从而可以构建漏洞库,完善漏洞信息,也可以单独针对某个新的补丁进行分析,有助于poc或漏洞利用代码构建;

二、本发明中基于补丁比对的方式可以有效缩减需要匹配定位的内容,再通过静态污点传播检测进行目的性较强的检测,可以有效发掘这一类漏洞,可加快漏洞定位,方便在没有漏洞细节的情况下加快分析,构建漏洞库,可以半自动化挖掘漏洞;

三、本发明中,基于中间语言的漏洞模块构建,有效屏蔽了不同操作系统不同机器指令架构上的差异信息,可以扩展到更多平台比如对windows、linux等平台的可执行程序进行漏洞检测分析定位;

四、本发明利用现有的中间语言翻译模块,根据需要,将机器指令翻译为中间语言形式,因此本发明不需要被测软件的源代码,可以适用于非开源软件漏洞定位。

附图说明

图1是本发明的流程框架示意。

具体实施方式

下面将结合附图及具体实施方式对本发明作进一步的描述。

实施例

可以针对windows的补丁,比如ms04-11的lsasrv.dll二进制样本及对应的补丁后文件。具体的系统实现方式如下:

一种针对二进制文件的漏洞定位发掘系统,包括:

反汇编模块:采用线性扫描算法或递归下降算法中的一种方式,对输入的ms04-11的lsasrv.dll二进制样本和对应的补丁后的文件分别进行二进制到汇编语言的反汇编操作,得到汇编代码;

补丁比对模块:用于对汇编代码进行函数级细粒度的结构化比对分析,得到符合要求的函数对,结构化比对分析采用字符串相似性比较算法、字符串引用匹配算法、指令数目匹配算法,、哈希匹配算法、调用引用匹配算法、边匹配算法、出入口匹配算法中的一种或多种计算后给出的综合比对之后的结果;

中间语言翻译模块:用于根据函数对、能够处理的中间语言类型、二进制补丁对的机器指令类型,将机器指令翻译为中间语言,二进制补丁对指的是二进制样本和对应的补丁后的文件,即将函数对翻译成中间语言;

静态污点传播检测模块:用于对由函数对翻译来的中间语言的语义,即函数对进行污点源的标记后,对污点源传播的数据流进行分析,得到辅助定位存在的漏洞类型及位置;具体实现步骤为:

选取不可信的输入作为函数对的污点源,如来自网络的数据、来自文件、用户i/o流等;

跟踪污点源的传播,通过数据流分析技术对污点源传播的数据流进行分析;

根据分析结果,检测污点源传播的数据流是否存在非法使用的情况,如危险函数、跳转目标被更改、返回地址被更改、函数指针移位等,若有,则得到辅助定位存在的漏洞类型及位置。

漏洞匹配定位模块:用于根据是否有辅助定位存在的漏洞类型及位置分别进行不同漏洞模型匹配,定位到最终的漏洞位置及漏洞类型。

具体实现步骤为:判断是否有辅助定位存在的漏洞类型及位置;

若有辅助定位存在的漏洞类型及位置,将辅助定位存在的漏洞类型及位置分别与缓冲区溢出漏洞模型、格式化字符串漏洞模型进行匹配,定位到最终的漏洞位置及漏洞类型;

若没有辅助定位存在的漏洞类型及位置,将中间语言与分析抽象出的常见漏洞类型的中间语言形式模型进行模式匹配定位到最终的漏洞位置及漏洞类型。

一种针对二进制文件的漏洞定位发掘方法,包括如下步骤

s1、用于对输入的ms04-11的lsasrv.dll二进制样本和对应的补丁文件分别进行二进制到汇编语言的反汇编操作,得到汇编代码,反汇编操作采用线性扫描算法或递归下降算法中的一种。;

s2、用于对汇编代码进行函数级细粒度的结构化比对分析,得到符合要求的函数对,结构化比对分析包括字符串相似性比较算法,字符串引用匹配算法,指令数目匹配算法,哈希匹配算法,调用引用匹配算法,边匹配算法,出入口匹配算法中的一种或多种计算后给出的综合比对之后的结果;

s3、用于根据函数对、能够处理的中间语言类型和二进制补丁对的机器指令类型,将s2获得的函数对的机器指令翻译为中间语言;

s4、用于对中间语言的语义,即函数对进行污点源的标记后,对污点源传播的数据流进行分析,得到辅助定位存在的漏洞类型及位置;具体步骤为:

s41、选取不可信的输入作为函数对的污点源,如来自网络的数据、来自文件、用户i/o流等;

s42、跟踪污点源的传播,通过数据流分析技术对污点源传播的数据流进行分析;

s43、根据步骤s42的分析结果,检测污点源传播的数据流是否存在非法使用的情况,如危险函数、跳转目标被更改、返回地址被更改、函数指针移位等,若有,则得到辅助定位存在的漏洞类型及位置。

s5、用于根据是否有辅助定位存在的漏洞类型及位置分别进行不同漏洞模型匹配,定位到最终的漏洞位置及漏洞类型;

具体步骤为:

s51、判断是否有辅助定位存在的漏洞类型及位置,若有,转到步骤s52,若否,转到步骤s53;

s52、将辅助定位存在的漏洞类型及位置分别与缓冲区溢出漏洞模型、格式化字符串漏洞模型进行匹配,定位到最终的漏洞位置及漏洞类型;

s53、将步骤s3得到的中间语言与分析抽象出的常见漏洞类型的中间语言形式模型进行模式匹配定位到最终的漏洞位置及漏洞类型。

s6、若是单一的二进制样本和对应的补丁后的文件分析,输出步骤s5得到的结果,否则跳转到s1,进行下一个二进制样本和对应的补丁后的文件的分析,直到达到停止条件,输出定位的所有结果。

本发明能够针对补丁文件加快漏洞定位,方便在没有漏洞细节的情况下加快分析,构建漏洞库,可以半自动化挖掘漏洞。

以上仅是本发明众多具体应用范围中的代表性实施例,对本发明的保护范围不构成任何限制。凡采用变换或是等效替换而形成的技术方案,均落在本发明权利保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1