基于数据流特征的比较函数识别系统及识别方法技术方案

技术编号:34768020 阅读:22 留言:0更新日期:2022-08-31 19:23
本发明专利技术属于比较函数识别技术领域,具体涉及一种基于数据流特征的比较函数识别系统及识别方法。本发明专利技术通过分析函数的控制流,从中提取循环路径和分支路径,构建数据流并检测数据流特征是否匹配,通过将路径中的指令转为中间语言VEX IR指令,支持ARM、MIPS、PPC和x86指令集,不依赖源码等信息,并且受编译器选项、编译器版本以及优化等级的影响较小,对glibc库和自定义实现的比较类函数都有很好的识别效果。经实验评估表明,当缺少源码、函数名等信息时,相比于FLIRT和SaTC,CMPSeek有着更高的精准率和召回率。准率和召回率。准率和召回率。

【技术实现步骤摘要】
基于数据流特征的比较函数识别系统及识别方法


[0001]本专利技术属于比较函数识别
,具体涉及一种基于数据流特征的比较函数识别系统及识别方法。

技术介绍

[0002]随着物联网的快速发展,越来越多的嵌入式设备走进我们的生活,它们往往出现于安全领域的关键位置和靠近终端的隐私场所,如路由器、交换机和打印机等设备。然而,最近的研究表明市场上有很多嵌入式设备存在后门,后门是指一种用于秘密绕过软件、计算机系统、密码机制等正常认证流程,获取计算机系统的访问权限或经密码系统加密后的明文的程序方法。其中披露最多的为硬编码后门(即口令后门)。如2013年在D

Link路由器中发现的口令后门:浏览器 User

Agent设置为"xmlset_roodkcableoj28840ybtide"后就可以远程控制路由器;2016年在Fortinet的防火墙中发现的SSH后门,硬编码的密码口令为"FGTAbc11*xy+Qqz27";2021年在合勤科技公司Zyxel 的防火墙、VPN等设备中发现的管理员级别账户{username:"zyfwp", password:"PrOw!aN_fXp"},使用该账户就可以通过Web管理面板对设备进行访问。
[0003]口令后门为最常见的后门之一,其危害严重,影响深远,造成的损失不可估量。在口令后门触发过程中,比较类函数不可或缺,因此有不少方法借助比较类函数检测口令后门。
[0004]在嵌入式设备中基于比较类函数的漏洞挖掘技术研究颇多。2015 年Yan等提出的二进制分析框架Firmalice就需要借助于strcmp和 strncmp等函数来定位关键路径,对关键路径进行切片,通过静态符号执行来判断是否存在确定性约束,若存在则有后门。2017年Thomas 等提出的基于静态数据权重比较的后门识别方法Stringer,原理为定位strcmp、memcmp和strstr等函数来查找定位参与比较的字符串,然后按提出的算法计算字符串的权重,根据权重比较识别出二进制程序的口令后门。2020年Redini等提出的静态污点分析框架Karonte 通过建模和跟踪多二进制文件交互来分析固件,在二进制文件之间传播污点信息以识别不安全的交互并识别漏洞,但其仍需要借助strcmp 和strncmp等函数的信息静态跟踪和传播污点数据。2021年,Chen 等人提出的定向模糊测试工具SaTC匹配前端的关键字和后端的输入项,对敏感输入进行污点分析来识别漏洞,但SaTC同样需要strcmp 和strncmp等函数来定位敏感输入。
[0005]当前对剥除函数名等信息的二进制文件函数识别技术以静态分析方法为主。如IDA Pro中的库文件快速识别与鉴定技术(Fast LibraryIdentification and Recognition Technology,FLIRT),首先分析二进制程序,找到程序使用的库函数名称和版本信息,然后在GitHub或其他开源平台下载源码,编译库函数为目标程序架构,选取函数的二进制代码的前若干位字节制作函数签名,最后根据签名匹配的方式识别程序中的函数;然而FLIRT方法需要源码,函数识别效果会受到编译器类型、编译器版本、优化等级、优化选项等影响。在Karonte和SaTC 中都提出了基于特征匹配的静态函数识别方法,但所采取的
特征较为简单:1)有循环结构;2)循环中有比较指令。然而满足上述条件的函数不一定具有比较字符串的功能,具有较高的误报率和漏报率。
[0006]而实际上,在嵌入式设备中,出于商业竞争或者软件安全的需要,厂商往往不公布开发文档或源码,而是以二进制的形式发行软件,甚至会剥除程序中的函数名、符号表等信息。在此情况下,比较类函数识别对口令后门的发现和修复具有重大意义和价值。但是当前函数识别方法存在以下问题:FLIRT方法需要源码制作函数签名,识别效果依赖编译环境,而二进制程序往往不公开源码,因此FLIRT难以识别程序中的比较类函数,尤其是自定义实现的比较类函数;Karonte 和SaTC方法采用的函数特征较为简单,具有较高的误报率和漏报率。

技术实现思路

[0007]针对目前的比较类函数识别方法存在误报率和漏报率高的缺陷和问题,本专利技术提供一种基于数据流特征的比较函数识别方法。
[0008]本专利技术解决其技术问题所采用的方案是:一种基于数据流特征的比较函数识别系统,该系统包括CFG提取和循环检测模块、循环指令提取模块、比较操作分支模块、VEX IR指令生成模块、数据流构建模块、数据流分析模块和比较类函数识别模块;所述CFG提取和循环检测模块分析函数中是否包含循环路径;所述循环指令提取模块和比较操作分支模块分别用于提取循环块内和循环内比较操作分支到函数返回的指令;所述VEX IR指令生成模块借助于开源库pyvex 将二进制代码转换为中间语言VEX IR指令,方便系统支持多种指令集架构;所述数据流构建和数据流分析模块从VEX IR指令中提取数据流中变量关系,生成数据流DFG并进行分析;所述比较类函数识别模块根据数据流特征检测循环路径和分支路径是否匹配,从而判断函数是否为比较类函数。
[0009]本专利技术还一种基于数据流特征的比较函数识别方法,包括以下步骤:
[0010]步骤一、提取函数的控制流CFG,将基本块视为顶点v,基本块之间的跳转关系视为有向边e,将函数CFG转为有向拓扑图G,
[0011]G={V,E}
[0012]其中:V={v1,v2,

,v
n
},E={e1,e2,

,e
m
},
[0013]e
k
=(v
i
,v
j
)(1≤k≤m,1≤i,j≤n)
[0014]步骤二、识别有向图G中是否存在循环;
[0015](1)若有向图G中不存在循环路径,直接认为其为非比较类函数;
[0016](2)若有向图G中包含循环路径,提取循环路径和从循环跳出到函数返回的分支路径,将循环路径和分支路径转换为中间语言 VEX IR指令,构建数据流DFG;然后根据数据流DFG特征是否匹配,若匹配则认为是比较类函数识别,否则认定为非比较类函数。
[0017]上述的基于数据流特征的比较函数识别方法,步骤一中调用IDAPro内置IDAPython插件的FlowChart()类和self.succs()函数获取V和 E。
[0018]上述的基于数据流特征的比较函数识别方法,步骤二中使用开源库NetworkX的DiGraph()函数快速构建有向图G,并调用 simple_circles()识别图G中是否存在循环。
[0019]上述的一种基于数据流特征的比较函数识别方法,步骤二中若数据流DFG同时满足以下特征则识别为比较类函数,
[0020](1)数据流上存在环结构,并且环上存在比较运算和算术运算;
[0021](2)数据流上存在C本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于数据流特征的比较函数识别系统,其特征在于:该系统包括CFG提取和循环检测模块、循环指令提取模块、比较操作分支模块、VEX IR指令生成模块、数据流构建模块、数据流分析模块和比较类函数识别模块;所述CFG提取和循环检测模块分析函数中是否包含循环路径;所述循环指令提取模块和比较操作分支模块分别用于提取循环块内和循环内比较操作分支到函数返回的指令;所述VEX IR指令生成模块借助于开源库pyvex将二进制代码转换为中间语言VEX IR指令,方便系统支持多种指令集架构;所述数据流构建和数据流分析模块从VEX IR指令中提取数据流中变量关系,生成数据流DFG并进行分析;所述比较类函数识别模块根据数据流特征检测循环路径和分支路径是否匹配,从而判断函数是否为比较类函数。2.一种基于数据流特征的比较函数识别方法,其特征在于:包括以下步骤:步骤一、提取函数的控制流CFG,将基本块视为顶点v,基本块之间的跳转关系视为有向边e,将函数CFG转为有向拓扑图G,G={V,E}其中:V={v1,v2,

,v
n
},E={e1,e2,

,e
m
},e
k
=(v
i
,v

【专利技术属性】
技术研发人员:刘胜利胡安祥蔡瑞杰杨启超郭世臣尹小康刘明
申请(专利权)人:中国人民解放军战略支援部队信息工程大学
类型:发明
国别省市:

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

1