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

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

A Recognition and Cracking Method of Fragile Hash Function for Intelligent Device Firmware

【技术实现步骤摘要】
一种针对智能设备固件的脆弱哈希函数的识别与破解方法
本专利技术实施例涉及智能嵌入式设备固件的函数关联和二进制程序函数漏洞挖掘领域,具体涉及一种针对智能设备固件的脆弱哈希函数的识别与破解方法。
技术介绍
近年来,由于智能设备固件漏洞攻击事件的频频发生,针对固件安全的研究与分析已经成为信息安全领域的研究重点和热点之一。由于嵌入式设备的运作讲究实效性,并且其计算能力有限,为了设备的性能优化,使用一些极为脆弱的哈希函数或者对标准哈希函数做了简化,导致了智能设备存在安全缺陷,造成了智能设备系统甚至整个网络安全空间安全面临巨大的威胁。因此,固件二进制文件的脆弱哈希函数存在的漏洞常成为“黑客”攻击者进行设备攻击和相关领域安全专家进行研究的主要入口点之一。例如,编号为CVE-2010-2967的VxWorks加密算法漏洞就是VxWorks6.9之前的版本的系统中loginLib的loginDefaultEncrypt()脆弱哈希函数存在密码碰撞问题,导致密码哈希总数高达22万个,攻击者可以通过构建密码字典进行暴力破解telnet、ftp、rlogin等会话,从而获取系统控制权限,造成了很大的危害。因此,开展智能设备固件的脆弱哈希函数的识别与破解也变得至关重要。目前针对智能设备固件的漏洞挖掘和检测技术,主要包括以下几种:基于固件源代码级漏洞挖掘技术、基于逆向工程的二进制代码级的静态审计技术、查找命令行注入漏洞技术、查找缓冲区溢出漏洞技术、固件漏洞函数关联技术等。固件的哈希函数的识别方法,主要包括以下几种:通过比对同一哈希函数代码在不同设备、不同架构、不同编译优化选项下编译的不同二进制代码,寻求它们之间的相似点和不同点,从而寻找另一相同或同源的哈希函数;通过比特流对比,指令序列对比,采用滑动窗口获得01序列特征计算相似度,或者研究汇编语句的相似性进行函数关联。常见的哈希函数碰撞破解方法有彩虹表法、生日攻击法、相等子串法、中间相遇法、差分攻击法、先行攻击法等。从以往的技术发展来看,针对智能设备固件的哈希函数的漏洞挖掘研究基础还很浅显。目前,缺少一种实现简单的,针对智能设备固件的脆弱哈希函数的识别误报率低的、定位准确的、破解速率快的自动化分析方法。
技术实现思路
本专利技术实施例提供一种针对智能设备固件的脆弱哈希函数的识别与破解方法,用以解决现有缺少一种实现简单的和针对智能设备固件脆弱哈希函数的识别误报率低的、定位准确的、破解速率快的自动化分析方法的缺陷。根据本专利技术实施例的第一个方面,提供一种针对智能设备固件的脆弱哈希函数的识别与破解方法,包括:固件的预处理,获取待分析的二进制文件;提取不受架构和编译优化选项影响或受其影响小于预设阈值的脆弱哈希函数的共性特征,对特征进行数值化处理,对特征数据进行训练和测试,构建一个可靠的基于逻辑回归的神经网络模型,基于结构化匹配方法进行固件的脆弱哈希函数识别与定位;对脆弱哈希函数的代码进行结构划分和提取,将机器码或汇编代码转化为中间语言VEXIR语句,构建基于符号执行的Z3SMT求解表达式,添加求解约束条件,逆向破解出碰撞值,验证碰撞值是否正确。进一步,对固件的预处理,获取待分析的二进制文件,包括:固件爬取,开发固件网页爬虫,针对预选的智能设备厂商进行固件爬取;固件储存,搭建MongoDB数据库对固件名、厂商名、产品名、固件版本号、产品类别、固件描述、固件下载链接等重要固件信息进行存储,编写固件下载脚本针对固件下载链接进行固件批量化下载,将下载的多个固件存储到服务器指定位置;固件解码,编写脚本调用Binwalk等解压工具进行固件批量化的解码;可执行反汇编二进制文件的过滤,获得待分析的固件的二进制文件。进一步,提取不受架构和编译优化选项影响或受其影响小于预设阈值的脆弱哈希函数的共性特征,包括:收集若干固件的脆弱哈希函数和其他函数的源码,将收集的源码在不同架构、不同编译优化选项下编译生成多个可执行反汇编的二进制文件;通过IDAPro插件对编译生成的多个可执行反汇编的二进制文件进行逆向分析,编写IDAPro插件对脆弱哈希函数和其他函数的各项特征统计分析,提取出脆弱哈希函数区别于其他函数的较为明显的特征,主要包括:函数名、指令数量、指令类型数量、跳转指令数量、调用次数、异或数量、栈大小、代码基本块数量和是否含有循环的9个特征。进一步,对脆弱哈希函数的共性特征进行数值化处理,包括:对所述编译生成的多个可执行反汇编的二进制文件中的各个函数进行研究和分析,针对每个函数的基本块的每条指令进行分析,采用数值累加的方法,统计出各项特征的数值,同时标记哈希函数为正样本、其他函数为负样本。进一步,对所述的特征数据进行训练和测试,构建一个可靠的基于逻辑回归的神经网络模型,包括:通过python机器学习库sklearn的classification分类器和使用逻辑回归方法对产生的特征数据进行训练和测试,构建一个用于后续结构化匹配的神经网络模型;使用准确率、召回率和综合评价指标f-measure值对数学模型进行评估。如若模型较好,则保存该模型;如若模型不够好,则增加收集的脆弱哈希函数和其他函数,同时增加提取的脆弱哈希函数特征或提取其他具有更高价值的脆弱哈希函数特征,反复实验,直到得到一个可靠的基于逻辑回归的神经网络模型。进一步,基于结构化匹配方法进行固件脆弱哈希函数识别与定位,得到函数名和函数入口地址,包括:将所述待分析的固件的可执行反汇编的二进制文件与所述可靠的基于逻辑回归的神经网络模型进行基于结构化匹配方法的函数关联,实现固件的脆弱哈希函数的识别与定位,得到脆弱哈希函数的函数名和函数入口地址。进一步,对脆弱哈希函数的代码进行结构模块划分和提取,包括:基于angr的子模块cle加载目标二进制文件,提取已被识别与定位的脆弱函数内部的控制流图CFG,基于深度优先算法和拓扑排序算法将脆弱函数拆分为初始化Block、循环体Block和末尾结束Block三个基本模块,并得到基本块入口地址和跳转地址。进一步,将划分的各基本块的机器码或汇编代码转化为中间语言VEXIR语句,包括:基于angr子模块pyvex将各模块的机器码或汇编代码转化为对应的中间语言VEXIR语句;进一步,构建基于符号执行的Z3SMT约束求解表达式并添加求解约束条件,包括:基于符号执行将变量值转化为符号值,构建Z3表达式,并确定函数中存在的循环次数;将程序分析问题转化为约束求解问题,添加求解约束条件,使求解方式朝着目标方向进行,缩小暴力破解的搜索范围和提高函数破解速率。进一步,求解碰撞值并验证碰撞值是否正确,包括:对比原输入数据和碰撞值两者的脆弱哈希函数加密后的值是否相等,来判断固件脆弱哈希函数破解是否成功,相等则破解成功,不等则破解失败。本专利技术提出一种针对智能设备固件的脆弱哈希函数的识别与破解方法,构建了一套从固件获取到固件的脆弱哈希函数的识别与定位再到固件的脆弱哈希函数的分析与破解的完整流程。更加准确和高效地识别和定位出固件的脆弱哈希函数,更加有效和快捷地破解固件中一些脆弱哈希函数原始输入数据的碰撞值。促进了智能嵌入式设备固件的函数关联和二进制程序函数漏洞挖掘领域的研究。本专利技术可以获得以下有益效果:本专利技术在脆弱哈希函数特征提取时,收集固件的脆弱哈希函数和其他本文档来自技高网
...

【技术保护点】
1.一种针对智能设备固件的脆弱哈希函数的识别与破解方法,其特征在于,包括:固件的预处理,获取待分析的二进制文件;提取不受架构和编译优化选项影响或受其影响小于预设阈值的脆弱哈希函数的共性特征,对特征进行数值化处理,对特征数据进行训练和测试,构建一个可靠的基于逻辑回归的神经网络模型,基于结构化匹配方法进行固件的脆弱哈希函数识别与定位;对脆弱哈希函数的代码进行结构划分和提取,将机器码或汇编代码转化为中间语言VEX IR语句,构建基于符号执行的Z3 SMT求解表达式,添加求解约束条件,逆向破解出碰撞值,验证碰撞值是否正确。

【技术特征摘要】
1.一种针对智能设备固件的脆弱哈希函数的识别与破解方法,其特征在于,包括:固件的预处理,获取待分析的二进制文件;提取不受架构和编译优化选项影响或受其影响小于预设阈值的脆弱哈希函数的共性特征,对特征进行数值化处理,对特征数据进行训练和测试,构建一个可靠的基于逻辑回归的神经网络模型,基于结构化匹配方法进行固件的脆弱哈希函数识别与定位;对脆弱哈希函数的代码进行结构划分和提取,将机器码或汇编代码转化为中间语言VEXIR语句,构建基于符号执行的Z3SMT求解表达式,添加求解约束条件,逆向破解出碰撞值,验证碰撞值是否正确。2.如权利要求1所述的方法,其特征在于,对固件的预处理,获取待分析的二进制文件,主要流程包括:固件爬取,开发固件网页爬虫,针对预选的智能设备厂商进行固件爬取;固件储存,搭建MongoDB数据库对固件名、厂商名、产品名、固件版本号、产品类别、固件描述和固件下载链接的固件信息进行存储,编写固件下载脚本针对固件下载链接进行固件批量化下载,将下载的多个固件存储到服务器指定位置;固件解码,编写脚本调用Binwalk解压工具进行固件批量化的解码;可执行反汇编二进制文件的过滤,获得待分析的固件的二进制文件。3.如权利要求1所述的方法,其特征在于,提取不受架构和编译优化选项影响或受其影响小于预设阈值的脆弱哈希函数的共性特征,包括:收集若干固件的脆弱哈希函数和其他函数的源码,将收集的源码在不同架构、不同编译优化选项下编译生成多个可执行反汇编的二进制文件;通过IDAPro插件对编译生成的多个可执行反汇编的二进制文件进行逆向分析,编写IDAPro插件对脆弱哈希函数和其他函数的各项特征统计分析,提取出脆弱哈希函数区别于其他函数的较为明显的特征,包括:函数名、指令数量、指令类型数量、跳转指令数量、调用次数、异或数量、栈大小、代码基本块数量和是否含有循环的9个特征。4.如权利要求3所述的方法,其特征在于,对脆弱哈希函数的共性特征进行数值化处理,包括:对编译生成的多个可执行反汇编的二进制文件中的各个函数进行研究和分析,针对每个函数的基本块的每条指令进行分析,采用数值累加的方...

【专利技术属性】
技术研发人员:石志强张国栋杨寿国孙利民
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京,11

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

1