一种基于匹配的物联网固件库函数识别方法技术

技术编号:21453801 阅读:34 留言:0更新日期:2019-06-26 04:44
本发明专利技术涉及软件逆向技术领域,具体是一种基于匹配的物联网固件库函数识别方法,包括以下步骤:1)物联网固件加载地址识别;2)构造库函数特征库;3)固件函数特征提取;4)函数特征匹配;5)已识别函数的子函数匹配。本发明专利技术能从函数签名、汇编指令、字符串信息等多个维度抽取二进制函数代码特征,分别为固件和函数库构造特征数据库;再利用基于特征匹配的方法识别固件中的库函数;通过自动匹配已识别函数的子函数,进一步提高库函数识别效率和准确率。本发明专利技术的技术方案可以实现物联网固件分析中库函数的快速准确识别,改善固件自动化分析以及漏洞挖掘结果的正确性和可读性。

【技术实现步骤摘要】
一种基于匹配的物联网固件库函数识别方法
本专利技术涉及软件逆向
,具体是一种基于匹配的物联网固件库函数识别方法。
技术介绍
近年来物联网产业发展迅速,越来越多的设备进入到公众的生活中。物联网设备已涵盖个人穿戴、家庭安防、交通物流、智能家居等各个行业,为人们的生活提供了巨大的遍历。但与此同时,这些设备也容易遭受攻击者的恶意攻击。攻击者通过利用设备固件中的漏洞控制设备,监控用户行为、窃取用户隐私,严重危害用户的隐私和财产安全。因此为了抵抗恶意攻击,许多安全研究人员对固件进行二进制分析。但由于物联网设备存储和计算资源限制,编译固件时往往去掉了符号表信息。在二进制漏洞挖掘过程中,无法发现特殊的库函数,导致无法准确分析程序的运行状态和漏洞情况。目前对库函数的分析主要基于函数签名识别。使用哈希算法对函数特征进行签名,在进行函数识别时,只需加载对应的签名文件即可完成识别工作。签名机制避免了不必要的匹配,大大提高了函数是别的效率。然而基于签名的库函数识别方法与编译器和编译优化联系紧密,编译选项的微小差异将导致两个函数签名的巨大改变,增加了库函数识别的漏报率,也增加了自动化识别的难度。为了减小库函数识别中的阻碍,势必需要高准确率和低漏报率的库函数识别方法。因此,针对以上现状,迫切需要开发一种基于匹配的物联网固件库函数识别方法,以克服当前实际应用中的不足。
技术实现思路
本专利技术的目的在于提供一种基于匹配的物联网固件库函数识别方法,以解决上述
技术介绍
中提出的问题。为实现上述目的,本专利技术提供如下技术方案:一种基于匹配的物联网固件库函数识别方法,包括以下步骤:1)物联网固件加载地址识别:通过检索固件中字符串的芯片型号信息以及匹配各芯片型号对应的特征码,确定物联网固件的正确加载地址以及分块信息,该步骤是保证函数特征正确的前提;2)构造库函数特征库:(2a)选择反汇编引擎:根据步骤1)中获得的芯片型号,搜集对应的函数库,根据芯片结构选择合适的反汇编引擎加载函数库备用;(2b)提取函数代码特征:使用反汇编引擎提取函数的特征,所需要的特征包括:函数名、函数地址、函数汇编代码、函数指令集合、函数代码哈希、函数数字常量、函数间接引用的字符串;(2c)提取函数调用流特征:通过检索跳转指令,提取函数调用过程中子函数信息,将每个函数视为一个节点,该函数调用的函数视为子节点,将整个函数库构造成一个完整的调用流图,并记录此图的每个节点的函数名、子节点、出度和入度信息;(2d)构造特征数据库:将函数代码特征以及函数调用流特征以数据库的形式保存,并构造不同的表单;3)固件函数特征提取:根据步骤1)中所得到的固件加载地址以及固件分块信息,加载固件,根据步骤2)中所述方法提取固件中每个函数的特征和整个固件调用流图信息;4)函数特征匹配:对步骤2)、3)中提取的特征进行匹配,对比特征数据库中的每一项特征,并根据每项特征不同的权重制定匹配规则;5)已识别函数的子函数匹配:默认每个已经匹配的函数,调用子函数的顺序是相同的,为了提高库函数匹配速度,直接匹配子函数,将已识别的函数的子函数进行匹配,根据特征数据库中的调用流信息,对每个子节点根据调用顺序进行排序级匹配,完成库函数识别工作。作为本专利技术进一步的方案:步骤1)中,所述物联网固件包括ARM、MIPS、Xtensa架构的物联网设备固件和基于Linux系统的物联网设备固件。作为本专利技术进一步的方案:步骤(2a)中,反汇编引擎包括IDAPro、Radare2。作为本专利技术进一步的方案:步骤(2c)中,跳转指令包括BL、B和BLX跳转指令。作为本专利技术进一步的方案:步骤(2d)中,数据库类型包括MySQL和Sqlite3。与现有技术相比,本专利技术的有益效果是:本专利技术能从函数签名、汇编指令、字符串信息等多个维度抽取二进制函数代码特征,分别为固件和函数库构造特征数据库;再利用基于特征匹配的方法识别固件中的库函数;通过自动匹配已识别函数的子函数,进一步提高库函数识别效率和准确率,从而实现物联网固件分析中库函数的快速准确识别,改善固件自动化分析以及漏洞挖掘结果的正确性和可读性,为固件的自动化分析和漏洞挖掘提供了知识基础,将代码特征和代码签名相结合,解决了目前单一库函数签名漏报率高的缺陷。附图说明图1为基于匹配的物联网固件库函数识别方法的示意流程图。图2为基于匹配的物联网固件库函数识别方法中美满芯片固件头部中的固件分块信息以及加载地址信息结构示意图。图3为基于匹配的物联网固件库函数识别方法中函数库中wdt_drv_init函数调用流图。图4为基于匹配的物联网固件库函数识别方法中固件中wdt_drv_init函数调用流图。具体实施方式下面结合具体实施方式对本专利的技术方案作进一步详细地说明。下面详细描述本专利的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本专利,而不能理解为对本专利的限制。在本专利的描述中,需要理解的是,术语“中心”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本专利和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本专利的限制。在本专利的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“设置”应做广义理解,例如,可以是固定相连、设置,也可以是可拆卸连接、设置,或一体地连接、设置。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本专利中的具体含义。请参阅图1-4,一种基于匹配的物联网固件库函数识别方法,包括以下步骤:1)物联网固件加载地址识别:通过检索固件中字符串的芯片型号信息以及匹配各芯片型号对应的特征码,确定物联网固件的正确加载地址以及分块信息,固件加载地址和分块信息在反汇编引擎加载固件时使用;所述的物联网固件包括但不限于ARM、MIPS、Xtensa架构的物联网设备固件和基于Linux系统的物联网设备固件,具体的,本实施中,物联网固件为美满芯片固件,固件头部中的固件分块信息以及加载地址信息具体如下:前4个字节“MRVL”为美满芯片固件特征码;第12-16字节为一个32位数字,标志着固件中的分块数量,;紧接着第21-24字节标志着段1的类型;第25-28字节为段1在文件中的起始位置;第29-32字节为段1的长度;第33-16字节为段1在固件中的加载地址。2)构造库函数特征库:(2a)选择反汇编引擎:物联网设备架构各异,为了兼容ARM、MIPS、Xtensa架构等使用不同的指令集,选择合适的反汇编引擎,本实施例中,反汇编引擎包括但不限于IDAPro、Radare2,根据固件芯片架构选择合适的参数,加载到反汇编引擎中备用;(2b)提取函数代码特征:使用反汇编引擎提取函数的特征,所需要的特征包括:函数名、函数地址、函数汇编代码、函数指令集合、函数代码哈希、函数数字常量、函数间接引用的字符串;本实施例中,所述函数采用QSPI_WriteByte函数,QSPI_WriteByte本文档来自技高网...

【技术保护点】
1.一种基于匹配的物联网固件库函数识别方法,其特征在于,包括以下步骤:1)物联网固件加载地址识别:通过检索固件中字符串的芯片型号信息以及匹配各芯片型号对应的特征码,确定物联网固件的正确加载地址以及分块信息;2)构造库函数特征库:(2a)选择反汇编引擎:根据步骤1)中获得的芯片型号,搜集对应的函数库,根据芯片结构选择合适的反汇编引擎加载函数库备用;(2b)提取函数代码特征:使用反汇编引擎提取函数的特征,所需要的特征包括:函数名、函数地址、函数汇编代码、函数指令集合、函数代码哈希、函数数字常量、函数间接引用的字符串;(2c)提取函数调用流特征:通过检索跳转指令,提取函数调用过程中子函数信息,将每个函数视为一个节点,该函数调用的函数视为子节点,将整个函数库构造成一个完整的调用流图,并记录此图的每个节点的函数名、子节点、出度和入度信息;(2d)构造特征数据库:将函数代码特征以及函数调用流特征以数据库的形式保存,并构造不同的表单;3)固件函数特征提取:根据步骤1)中所得到的固件加载地址以及固件分块信息,加载固件,根据步骤2)中所述方法提取固件中每个函数的特征和整个固件调用流图信息;4)函数特征匹配:对步骤2)、3)中提取的特征进行匹配,对比特征数据库中的每一项特征,并根据每项特征不同的权重制定匹配规则;5)已识别函数的子函数匹配:将已识别的函数的子函数进行匹配,根据特征数据库中的调用流信息,对每个子节点根据调用顺序进行排序级匹配,完成库函数识别工作。...

【技术特征摘要】
1.一种基于匹配的物联网固件库函数识别方法,其特征在于,包括以下步骤:1)物联网固件加载地址识别:通过检索固件中字符串的芯片型号信息以及匹配各芯片型号对应的特征码,确定物联网固件的正确加载地址以及分块信息;2)构造库函数特征库:(2a)选择反汇编引擎:根据步骤1)中获得的芯片型号,搜集对应的函数库,根据芯片结构选择合适的反汇编引擎加载函数库备用;(2b)提取函数代码特征:使用反汇编引擎提取函数的特征,所需要的特征包括:函数名、函数地址、函数汇编代码、函数指令集合、函数代码哈希、函数数字常量、函数间接引用的字符串;(2c)提取函数调用流特征:通过检索跳转指令,提取函数调用过程中子函数信息,将每个函数视为一个节点,该函数调用的函数视为子节点,将整个函数库构造成一个完整的调用流图,并记录此图的每个节点的函数名、子节点、出度和入度信息;(2d)构造特征数据库:将函数代码特征以及函数调用流特征以数据库的形式保存,并构造不同的表单;3)固件函数特征提取:根据步骤1)中所得到的固件加载地址以及固件分块信息,加载固件,根据步...

【专利技术属性】
技术研发人员:朱立鹏
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西,61

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

1