首页> 中国专利> 一种针对智能设备固件的脆弱哈希函数的识别与破解方法

一种针对智能设备固件的脆弱哈希函数的识别与破解方法

摘要

本发明实施例提供一种针对智能设备固件的脆弱哈希函数的识别与破解方法,主要步骤包括:固件的预处理,获取待分析的二进制文件;提取不受架构和编译优化选项影响或受其影响小于预设阈值的脆弱哈希函数的共性特征,对特征进行数值化处理,对特征数据进行训练和测试,构建一个可靠的基于逻辑回归的神经网络模型,基于结构化匹配方法进行固件的脆弱哈希函数识别与定位;对脆弱哈希函数的代码进行结构划分和提取,将机器码或汇编代码转化为中间语言VEX IR语句,构建基于符号执行的Z3 SMT求解表达式,添加求解约束条件,逆向破解出碰撞值,验证碰撞值是否正确。本方法针对固件的脆弱哈希函数具有识别误报率低、定位准确、破解速率快的有益效果。

著录项

  • 公开/公告号CN109740347A

    专利类型发明专利

  • 公开/公告日2019-05-10

    原文格式PDF

  • 申请/专利权人 中国科学院信息工程研究所;

    申请/专利号CN201811406960.2

  • 发明设计人 石志强;张国栋;杨寿国;孙利民;

    申请日2018-11-23

  • 分类号

  • 代理机构北京路浩知识产权代理有限公司;

  • 代理人王莹

  • 地址 100093 北京市海淀区闵庄路甲89号

  • 入库时间 2024-02-19 10:06:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-10

    授权

    授权

  • 2019-06-04

    实质审查的生效 IPC(主分类):G06F21/56 申请日:20181123

    实质审查的生效

  • 2019-05-10

    公开

    公开

说明书

技术领域

本发明实施例涉及智能嵌入式设备固件的函数关联和二进制程序函数漏洞挖掘领域,具体涉及一种针对智能设备固件的脆弱哈希函数的识别与破解方法。

背景技术

近年来,由于智能设备固件漏洞攻击事件的频频发生,针对固件安全的研究与分析已经成为信息安全领域的研究重点和热点之一。由于嵌入式设备的运作讲究实效性,并且其计算能力有限,为了设备的性能优化,使用一些极为脆弱的哈希函数或者对标准哈希函数做了简化,导致了智能设备存在安全缺陷,造成了智能设备系统甚至整个网络安全空间安全面临巨大的威胁。因此,固件二进制文件的脆弱哈希函数存在的漏洞常成为“黑客”攻击者进行设备攻击和相关领域安全专家进行研究的主要入口点之一。例如,编号为CVE-2010-2967的VxWorks加密算法漏洞就是VxWorks 6.9之前的版本的系统中loginLib的loginDefaultEncrypt()脆弱哈希函数存在密码碰撞问题,导致密码哈希总数高达22万个,攻击者可以通过构建密码字典进行暴力破解telnet、ftp、rlogin等会话,从而获取系统控制权限,造成了很大的危害。因此,开展智能设备固件的脆弱哈希函数的识别与破解也变得至关重要。

目前针对智能设备固件的漏洞挖掘和检测技术,主要包括以下几种:基于固件源代码级漏洞挖掘技术、基于逆向工程的二进制代码级的静态审计技术、查找命令行注入漏洞技术、查找缓冲区溢出漏洞技术、固件漏洞函数关联技术等。

固件的哈希函数的识别方法,主要包括以下几种:通过比对同一哈希函数代码在不同设备、不同架构、不同编译优化选项下编译的不同二进制代码,寻求它们之间的相似点和不同点,从而寻找另一相同或同源的哈希函数;通过比特流对比,指令序列对比,采用滑动窗口获得01序列特征计算相似度,或者研究汇编语句的相似性进行函数关联。

常见的哈希函数碰撞破解方法有彩虹表法、生日攻击法、相等子串法、中间相遇法、差分攻击法、先行攻击法等。

从以往的技术发展来看,针对智能设备固件的哈希函数的漏洞挖掘研究基础还很浅显。目前,缺少一种实现简单的,针对智能设备固件的脆弱哈希函数的识别误报率低的、定位准确的、破解速率快的自动化分析方法。

发明内容

本发明实施例提供一种针对智能设备固件的脆弱哈希函数的识别与破解方法,用以解决现有缺少一种实现简单的和针对智能设备固件脆弱哈希函数的识别误报率低的、定位准确的、破解速率快的自动化分析方法的缺陷。

根据本发明实施例的第一个方面,提供一种针对智能设备固件的脆弱哈希函数的识别与破解方法,包括:

固件的预处理,获取待分析的二进制文件;

提取不受架构和编译优化选项影响或受其影响小于预设阈值的脆弱哈希函数的共性特征,对特征进行数值化处理,对特征数据进行训练和测试,构建一个可靠的基于逻辑回归的神经网络模型,基于结构化匹配方法进行固件的脆弱哈希函数识别与定位;

对脆弱哈希函数的代码进行结构划分和提取,将机器码或汇编代码转化为中间语言VEX IR语句,构建基于符号执行的Z3SMT求解表达式,添加求解约束条件,逆向破解出碰撞值,验证碰撞值是否正确。

进一步,对固件的预处理,获取待分析的二进制文件,包括:

固件爬取,开发固件网页爬虫,针对预选的智能设备厂商进行固件爬取;

固件储存,搭建MongoDB数据库对固件名、厂商名、产品名、固件版本号、产品类别、固件描述、固件下载链接等重要固件信息进行存储,编写固件下载脚本针对固件下载链接进行固件批量化下载,将下载的多个固件存储到服务器指定位置;

固件解码,编写脚本调用Binwalk等解压工具进行固件批量化的解码;

可执行反汇编二进制文件的过滤,获得待分析的固件的二进制文件。

进一步,提取不受架构和编译优化选项影响或受其影响小于预设阈值的脆弱哈希函数的共性特征,包括:

收集若干固件的脆弱哈希函数和其他函数的源码,将收集的源码在不同架构、不同编译优化选项下编译生成多个可执行反汇编的二进制文件;

通过IDA Pro插件对编译生成的多个可执行反汇编的二进制文件进行逆向分析,编写IDA Pro插件对脆弱哈希函数和其他函数的各项特征统计分析,提取出脆弱哈希函数区别于其他函数的较为明显的特征,主要包括:函数名、指令数量、指令类型数量、跳转指令数量、调用次数、异或数量、栈大小、代码基本块数量和是否含有循环的9个特征。

进一步,对脆弱哈希函数的共性特征进行数值化处理,包括:

对所述编译生成的多个可执行反汇编的二进制文件中的各个函数进行研究和分析,针对每个函数的基本块的每条指令进行分析,采用数值累加的方法,统计出各项特征的数值,同时标记哈希函数为正样本、其他函数为负样本。

进一步,对所述的特征数据进行训练和测试,构建一个可靠的基于逻辑回归的神经网络模型,包括:

通过python机器学习库sklearn的classification分类器和使用逻辑回归方法对产生的特征数据进行训练和测试,构建一个用于后续结构化匹配的神经网络模型;

使用准确率、召回率和综合评价指标f-measure值对数学模型进行评估。如若模型较好,则保存该模型;如若模型不够好,则增加收集的脆弱哈希函数和其他函数,同时增加提取的脆弱哈希函数特征或提取其他具有更高价值的脆弱哈希函数特征,反复实验,直到得到一个可靠的基于逻辑回归的神经网络模型。

进一步,基于结构化匹配方法进行固件脆弱哈希函数识别与定位,得到函数名和函数入口地址,包括:

将所述待分析的固件的可执行反汇编的二进制文件与所述可靠的基于逻辑回归的神经网络模型进行基于结构化匹配方法的函数关联,实现固件的脆弱哈希函数的识别与定位,得到脆弱哈希函数的函数名和函数入口地址。

进一步,对脆弱哈希函数的代码进行结构模块划分和提取,包括:

基于angr的子模块cle加载目标二进制文件,提取已被识别与定位的脆弱函数内部的控制流图CFG,基于深度优先算法和拓扑排序算法将脆弱函数拆分为初始化Block、循环体Block和末尾结束Block三个基本模块,并得到基本块入口地址和跳转地址。

进一步,将划分的各基本块的机器码或汇编代码转化为中间语言VEX IR语句,包括:

基于angr子模块pyvex将各模块的机器码或汇编代码转化为对应的中间语言VEXIR语句;

进一步,构建基于符号执行的Z3SMT约束求解表达式并添加求解约束条件,包括:

基于符号执行将变量值转化为符号值,构建Z3表达式,并确定函数中存在的循环次数;

将程序分析问题转化为约束求解问题,添加求解约束条件,使求解方式朝着目标方向进行,缩小暴力破解的搜索范围和提高函数破解速率。

进一步,求解碰撞值并验证碰撞值是否正确,包括:

对比原输入数据和碰撞值两者的脆弱哈希函数加密后的值是否相等,来判断固件脆弱哈希函数破解是否成功,相等则破解成功,不等则破解失败。

本发明提出一种针对智能设备固件的脆弱哈希函数的识别与破解方法,构建了一套从固件获取到固件的脆弱哈希函数的识别与定位再到固件的脆弱哈希函数的分析与破解的完整流程。更加准确和高效地识别和定位出固件的脆弱哈希函数,更加有效和快捷地破解固件中一些脆弱哈希函数原始输入数据的碰撞值。促进了智能嵌入式设备固件的函数关联和二进制程序函数漏洞挖掘领域的研究。

本发明可以获得以下有益效果:

本发明在脆弱哈希函数特征提取时,收集固件的脆弱哈希函数和其他函数源码,将这些函数源码编译为不同架构、不同编译优化选项的多个可执行反汇编的二进制文件,针对这些二进制文件进行研究和分析,提取不受架构和编译优化选项影响或受其影响小于预设阈值的脆弱哈希函数的共性特征,包括函数名、指令数量、指令类型数量、跳转指令数量、调用次数、异或数量、栈大小、代码基本块数量和是否有循环的9个特征,能够很好地区分脆弱哈希函数和其他函数,能够针对多种架构和编译优化选项编译的二进制文件进行研究分析,提高了对脆弱哈希函数的识别和定位的准确度,在多种二进制文件类型的哈希函数研究上节省了时间。

本发明在固件的脆弱哈希函数识别与定位时,提取脆弱哈希函数特征,并将其进行数值化处理,同时对特征数据进行训练和测试,构建一个可靠的基于逻辑回归的神经网络模型,该模型很够很好地被运用到基于结构化匹配方法的固件的脆弱哈希函数识别与定位,提高了脆弱哈希函数的识别与定位的效率。

本发明在对脆弱哈希函数代码结构进行研究和分析时,根据脆弱函数内部的控制流图CFG,基于深度优先算法和拓扑排序算法将脆弱函数拆分为初始化Block、循环体Block、末尾结束Block三个基本模块,同时将划分的各模块的机器码或汇编代码转化为中间语言VEX IR语句,有效地避免了受不同架构和不同编译优化选项的影响,这将使得对二进制代码的函数研究变得更为容易和简单。

本发明在对固件的脆弱哈希函数进行分析和破解时,构建基于符号执行的Z3SMT求解表达式,添加求解约束条件,使求解朝着目标方向进行,有效地缩小了暴力破解的搜索范围和提高了脆弱哈希函数的破解速率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1本发明针对智能设备固件的脆弱哈希函数的识别与破解方法的一具体实施例总体流程示意图;

图2为本发明针对智能设备固件的脆弱哈希函数的识别与破解方法的又一具体实施例固件的预处理过程示意图;

图3为本发明针对智能设备固件的脆弱哈希函数的识别与破解方法的再一具体实施例固件的脆弱哈希函数的识别与定位算法流程示意图;

图4为本发明针对智能设备固件的脆弱哈希函数的识别与破解方法的再一具体实施例脆弱哈希函数的分析与破解算法流程示意图;

图5为本发明针对智能设备固件的脆弱哈希函数的识别与破解方法的再一具体实施例验证求解碰撞值示意图;

图6为本发明一种电子设备实施例的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

针对固件的脆弱哈希函数识别误报率高、定位不准确、破解难度大等问题,本发明提供了一种针对智能设备固件的脆弱哈希函数的识别与破解方法,该方法可以快速有效地识别和定位出智能设备固件的二进制文件中的一些脆弱哈希函数,同时能够对一些极为脆弱的哈希函数进行有效地破解。该方法能够运用到多种不同架构和编译优化选项下编译的二进制文件的哈希函数研究和分析领域。

本发明设计的方法流程主要包括:固件的预处理、待检测二进制文件的过滤、固件的脆弱哈希函数和其他函数的收集和编译、提取不受架构和编译优化选项影响或受其影响小于预设阈值的脆弱哈希函数的共性特征、特征的数值化处理、对特征数据进行训练和测试、基于逻辑回归的神经网络模型的构建、基于结构化匹配方法的固件的脆弱哈希函数的识别与定位、脆弱哈希函数代码的结构划分和提取、机器码或汇编代码的中间语言VEX IR转化、基于符号执行的Z3SMT约束求解表达式的构建、添加求解约束求解条件、求解碰撞值、验证碰撞值是否正确等步骤。本发明的技术创新点在于通过对固件的脆弱哈希函数的研究分析提取出了不受架构和编译优化选项影响或受其影响小于预设阈值的脆弱哈希函数的共性特征,根据脆弱哈希函数特征信息训练了一个可靠的被运用于固件脆弱哈希函数结构化匹配的数学模型,对脆弱哈希函数进行结构划分并将划分的各模块的代码转化为中间语言VEXIR语句,采用基于符号执行的Z3SMT约束求解哈希函数的原始输入数据的碰撞值。本发明能很好地识别和定位出固件中的一些脆弱哈希函数和破解出一些极为脆弱的脆弱哈希函数的原始输入数据的碰撞值。

本发明具体实施例示出一种针对智能设备固件的脆弱哈希函数的识别与破解方法,包括:

S1,固件的预处理,获取待分析的二进制文件;

S2,提取不受架构和编译优化选项影响或受其影响小于预设阈值的脆弱哈希函数的共性特征,对特征进行数值化处理,对特征数据进行训练和测试,构建一个可靠的基于逻辑回归的神经网络模型,基于结构化匹配方法进行固件的脆弱哈希函数识别与定位;

S3,对脆弱哈希函数的代码进行结构划分和提取,将机器码或汇编代码转化为中间语言VEX IR语句,构建基于符号执行的Z3SMT求解表达式,添加求解约束条件,逆向破解出碰撞值,验证碰撞值是否正确。

在本发明任一上述具体实施例的基础上,提出一种针对智能设备固件的脆弱哈希函数的识别与破解方法,对固件的预处理,获取待分析的二进制文件,包括:

固件爬取,开发固件网页爬虫,针对预选的智能设备厂商进行固件爬取;

固件储存,搭建MongoDB数据库对固件名、厂商名、产品名、固件版本号、产品类别、固件描述、固件下载链接等重要固件信息进行存储,编写固件下载脚本针对固件下载链接进行固件批量化下载,将下载的多个固件存储到服务器指定位置;

固件解码,编写脚本调用Binwalk等解压工具进行固件批量化的解码;

可执行反汇编二进制文件的过滤,获得待分析的固件的二进制文件。

在本发明任一上述具体实施例的基础上,提出一种针对智能设备固件的脆弱哈希函数的识别与破解方法,提取不受架构和编译优化选项影响或受其影响小于预设阈值的脆弱哈希函数的共性特征,包括:

收集若干固件的脆弱哈希函数和其他函数的源码,将收集的源码在不同架构、不同编译优化选项下编译生成多个可执行反汇编的二进制文件;

通过IDA Pro插件对编译生成的多个可执行反汇编的二进制文件进行逆向分析,编写IDA Pro插件对脆弱哈希函数和其他函数的各项特征统计分析,提取出脆弱哈希函数区别于其他函数的较为明显的特征,主要包括:函数名、指令数量、指令类型数量、跳转指令数量、调用次数、异或数量、栈大小、代码基本块数量和是否含有循环的9个特征。

在本发明任一上述具体实施例的基础上,提出一种针对智能设备固件的脆弱哈希函数的识别与破解方法,对脆弱哈希函数的共性特征进行数值化处理,包括:

对所述编译生成的多个可执行反汇编的二进制文件中的各个函数进行研究和分析,针对每个函数的基本块的每条指令进行分析,采用数值累加的方法,统计出各项特征的数值,同时标记哈希函数为正样本、其他函数为负样本。

在本发明任一上述具体实施例的基础上,提出一种针对智能设备固件的脆弱哈希函数的识别与破解方法,对所述的特征数据进行训练和测试,构建一个可靠的基于逻辑回归的神经网络模型,包括:

通过python机器学习库sklearn的classification分类器和使用逻辑回归方法对产生的特征数据进行训练和测试,构建一个用于后续结构化匹配的神经网络模型;

使用准确率、召回率和综合评价指标f-measure值对数学模型进行评估。如若模型较好,则保存该模型;如若模型不够好,则增加收集的脆弱哈希函数和其他函数,同时增加提取的脆弱哈希函数特征或提取其他具有更高价值的脆弱哈希函数特征,反复实验,直到得到一个可靠的基于逻辑回归的神经网络模型。

在本发明任一上述具体实施例的基础上,提出一种针对智能设备固件的脆弱哈希函数的识别与破解方法,基于结构化匹配方法进行固件脆弱哈希函数识别与定位,得到函数名和函数入口地址,包括:

将所述待分析的固件的可执行反汇编的二进制文件与所述可靠的基于逻辑回归的神经网络模型进行基于结构化匹配方法的函数关联,实现固件的脆弱哈希函数的识别与定位,得到脆弱哈希函数的函数名和函数入口地址。

在本发明任一上述具体实施例的基础上,提出一种针对智能设备固件的脆弱哈希函数的识别与破解方法,对脆弱哈希函数的代码进行结构模块划分和提取,包括:

基于angr的子模块cle加载目标二进制文件,提取已被识别与定位的脆弱函数内部的控制流图CFG,基于深度优先算法和拓扑排序算法将脆弱函数拆分为初始化Block、循环体Block和末尾结束Block三个基本模块,并得到基本块入口地址和跳转地址。

在本发明任一上述具体实施例的基础上,提出一种针对智能设备固件的脆弱哈希函数的识别与破解方法,将划分的各基本块的机器码或汇编代码转化为中间语言VEX IR语句,包括:

基于angr子模块pyvex将各模块的机器码或汇编代码转化为对应的中间语言VEXIR语句;

在本发明任一上述具体实施例的基础上,提出一种针对智能设备固件的脆弱哈希函数的识别与破解方法,构建基于符号执行的Z3SMT约束求解表达式并添加求解约束条件,包括:

基于符号执行将变量值转化为符号值,构建Z3表达式,并确定函数中存在的循环次数;

将程序分析问题转化为约束求解问题,添加求解约束条件,使求解方式朝着目标方向进行,缩小暴力破解的搜索范围和提高函数破解速率。

在本发明任一上述具体实施例的基础上,提出一种针对智能设备固件的脆弱哈希函数的识别与破解方法,求解碰撞值并验证碰撞值是否正确,包括:

对比原输入数据和碰撞值两者的脆弱哈希函数加密后的值是否相等,来判断固件脆弱哈希函数破解是否成功,相等则破解成功,不等则破解失败。

在本发明任一上述具体实施例的基础上,提出一种针对智能设备固件的脆弱哈希函数的识别与破解方法的具体实施例,总体流程如图1所示,包括以下具体流程:

a)智能设备固件的预处流程,如图2所示,包括固件爬取、固件存储、固件解压、可执行反汇编二进制文件的过滤。固件爬取,对国内外知名智能设备厂商进行研究和分析,使用Python Scrapy框架技术开发固件网页爬虫,进行固件爬取;固件存储,使用MongoDB数据库对固件名、厂商名、产品名、固件版本号、产品类别、固件描述、固件下载链接等多种重要固件信息的存储,最主要存储的信息为固件下载链接url,编写固件下载脚本针对固件下载链接url进行批量化下载,将下载的固件存储到服务器的指定位置;固件解码,编写Python脚本调用Binwalk等工具进行固件批量化的自动化解压;可执行反汇编二进制文件的过滤,通过对解压后的多个二进制文件进行筛选,获得待分析的固件可执行反汇编的二进制文件。

b)收集多种开源的固件的脆弱哈希函数(如BKDRHash、BPHash等)和其他函数(如readdir、system等)的C语言代码。针对收集的这些函数源码,通过X86、ARM、MIPS等多种架构和-O0、-O1、-O2、-O3和-Os等多种编译优化选项编译生成多个不同的二进制文件。

c)通过IDA Pro对b)中的编译的二进制文件进行逆向分析,结合IDA Python脚本对脆弱哈希函数和其他函数进行特征提取分析,发现脆弱哈希函数存在有明显区别于其他函数的一些特征,主要包括函数名、指令数量、指令类型数量、跳转指令数量、调用次数、异或数量、栈大小、代码基本块数量和是否有循环的9个特征,当然也会存在很多特征混淆的非脆弱哈希函数。

d)对c)中的特征进行数值化处理,对编译的二进制文件中的各函数的基本块的每条指令进行分析,采用数值累加的方法,可以统计出各项特征的指令使用的次数,同时标记脆弱哈希函数为正样本、其他函数为负样本。

e)对d)中提取的特征数据进行随机地分为70%训练集和30%测试集,使用Python机器学习sklearn库的Logistic Regression模块对特征数据进行训练和测试,构建神经网络模型。在得到可靠的神经网络模型之前,先使用准确率、召回率和综合评价指标f-measure值等评价体系对实验分类器效果和数学模型的使用价值进行评价,如果分类效果较好、使用价值较高,则得到一个用于后续结构化匹配的固件脆弱哈希函数的可靠的数学模型,如果分类效果和使用效果较差,则需重新提取特征和重新模型训练,直到获取一个能用于脆弱哈希函数结构化匹配的可靠的数学模型。

f)将a)中获取的待分析可执行反汇编的二进制文件与e)中构建的数学模型进行基于结构化匹配方法的函数关联,实现固件脆弱哈希函数的识别与定位,得到脆弱哈希函数的函数名和函数入口地址,图3为固件的脆弱哈希函数的识别与定位算法流程示意图。

g)在机器语言中,通常间接转移指令引起的跳转会被视为一个分界线,从而把一个完整的函数结构分为几个不同的代码块。通过实验对f)中定位的脆弱哈希函数进行研究分析,对脆弱哈希函数的代码进行结构划分和提取,使用angr的子模块cle加载目标二进制文件,提取已识别与定位的脆弱函数内部的控制流图CFG。基于深度优先算法和拓扑排序算法将脆弱函数拆分为初始化Block、循环体Block、末尾结束Block三个基本模块,并得到基本块入口地址和跳转地址。

h)使用angr子模块pyvex将g)中划分的各模块的机器码或汇编代码转化为对应的中间语言VEX IR语句。

i)符号执行过程中,按照哈希函数代码的执行顺序转化为中间语言,在循环体中进行未知变量的符号值替换。符号执行时,需得到含有未知变量的Z3表达式。由于中间语言的有效语句都是等式,需要对等式两边进行分析。然后将其转化为Z3对应的变量。其中Z3变量也有自己的命名规则,以字母开头,并且只能由数字、大小写字母和下划线组成。具体过程为:用等号作为分隔符,得到等式两边的操作;提取左侧变量操作数;判断右侧操作类型,并提取操作数;判断所有提取的操作数是否已经进行变量声明,如若没有,使用上述Z3变量统一命名进行变量声明,对右侧的变量进行赋值;执行转化后的语句。

j)根据i)中得到的含有未知变量的Z3表达式,将变量值替换为符号值。使用b0,b1,...,bi-1,bi分别按位代替输入字符串的第1,第2,...,第i-1,第i位字符串的内容。在执行循环语句过程中,通过判断语句中的表达式的值是否等于参数寄存器的值来定位输入参数并替换为符号值。

k)将程序分析问题转化为约束求解问题,需要添加求解约束条件,使求解方式朝着目标方向进行,缩小暴力破解的搜索范围和提高函数破解速率。例如,设置了约束条件:假设原始输入数据由一系列的数字和大小写字母组成的字符串组成。在添加求解约束条件时,将破解字符限制在数字和大小写字母中;使j)中符号执行之后的含有未知量的Z3表达式的值等于原输入数据经使用的脆弱哈希函数加密后的输出值。图4为脆弱哈希函数的分析与破解算法流程示意图。

l)使用Z3的check()方法判断是否满足约束条件,如果s.check()==sat,说明至少存在一个值,然后调用model()方法,就可以进行求解碰撞值。若s.check()==unsat,则不存在解值。根据步骤k)中方法得到满足条件的输出解时,保存结果为ASCII码值,为了便于理解,需要将其转化为数字或者字母进而输出,通过调用Python内置函数chr(),将其结果转化为想要看到的结果,将字符按照b0至bi-1的顺序输出。

m)验证碰撞值,图5展示了验证求解碰撞值的示意图。通过对比原输入数据和碰撞值两者的脆弱哈希函数加密后的值是否相等判断l)中的逆向求解结果是否正确,进而判断固件脆弱哈希函数破解是否成功,相等则破解成功,不等则破解失败。继续验证下一个碰撞值,重复m)步骤。

举个例子如下:

图6示例了一种服务器的实体结构示意图,该服务器可以包括:处理器(processor)710、通信接口(Communications Interface)720、存储器(memory)730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储器730中的逻辑指令,以执行如下方法:固件的预处理,获取待分析的二进制文件;提取不受架构和编译优化选项影响或受其影响小于预设阈值的脆弱哈希函数的共性特征,对特征进行数值化处理,对特征数据进行训练和测试,构建一个可靠的基于逻辑回归的神经网络模型,基于结构化匹配方法进行固件的脆弱哈希函数识别与定位;对脆弱哈希函数的代码进行结构划分和提取,将机器码或汇编代码转化为中间语言VEX IR语句,构建基于符号执行的Z3SMT求解表达式,添加求解约束条件,逆向破解出碰撞值,验证碰撞值是否正确。

此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的传输方法,例如包括:固件的预处理,获取待分析的二进制文件;提取不受架构和编译优化选项影响或受其影响小于预设阈值的脆弱哈希函数的共性特征,对特征进行数值化处理,对特征数据进行训练和测试,构建一个可靠的基于逻辑回归的神经网络模型,基于结构化匹配方法进行固件的脆弱哈希函数识别与定位;对脆弱哈希函数的代码进行结构划分和提取,将机器码或汇编代码转化为中间语言VEX IR语句,构建基于符号执行的Z3SMT求解表达式,添加求解约束条件,逆向破解出碰撞值,验证碰撞值是否正确。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号