CN114925377A - 基于文件切片的加密固件识别方法 - Google Patents
基于文件切片的加密固件识别方法 Download PDFInfo
- Publication number
- CN114925377A CN114925377A CN202210375920.6A CN202210375920A CN114925377A CN 114925377 A CN114925377 A CN 114925377A CN 202210375920 A CN202210375920 A CN 202210375920A CN 114925377 A CN114925377 A CN 114925377A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- firmware
- calculating
- slices
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于文件切片的加密固件识别方法,包括如下步骤:将固件均分为大小相等的文件切片,并设定基准值和偏差值;对每个文件切片读取长度固定的二进制数据,再转化为十六进制数据,如果十六进制数据中包含连续多个相同字符,便将该组数据舍弃读取下一组,直至读取全部文件切片;计算获取到的十六进制数据的信息熵,之后计算所有熵值的方差;计算方差与基准值的偏差,如果偏差大于偏差值,可以直接判断是否为加密固件,否则搜索文件切片中的魔术字再进行判断。本发明使用信息熵判断固件数据的混淆程度,通过文件切片读取部分数据,实现加密固件的识别,具有实现简单、准确性高、检测速度快等优点,适用于大批量的固件核查。
Description
技术领域
本发明属于加密固件识别技术领域,具体涉及一种基于文件切片的加密固件识别方法。
背景技术
固件(Firmware)是运行在设备中的二进制程序,负责管理设备中的硬件外设以及实现设备的应用功能,根据固件中是否含有完整的文件系统,将固件分为有文件系统与无文件系统两种类型,分析有文件系统的固件时,通常需进行固件解包,提取完整的文件系统,再对提取到的文件进行分析,而针对无文件系统的固件,由于其中不包含文件系统,通常直接使用逆向分析软件进行分析。
“加密固件”是指使用加密软件和加密算法,对未加密的固件文件进行全部或部分加密后得到的文件,在物联网固件逆向分析过程中,如果固件由未知压缩算法进行压缩处理,由于无法直接使用现有工具进行逆向分析,因此将此类固件文件也归类为加密固件。
识别加密固件的方法一般有两种,第一种是通过搜索文件中出现的魔术字,魔术字也被称为文件签名,它是一串十六进制数据,用于标识文件格式或协议,通过搜索固件中的魔术字,可以判断固件中是否包含相应格式的文件,如果在遍历整个固件之后无法找到任何相匹配的魔术字,则将其视为加密固件;第二种方法是根据固件文件的熵值来判断,信息熵表示的是数据的不确定度大小,数据混淆程度越大,则信息熵越大,由于未加密文件中数据信息的分布是相对有序的,而加密文件则相反,数据的混淆程度会远大于加密文件,因此可以将文件的熵值作为判定加密性的参考依据。
但现有的加密固件识别方法存在检测速度慢、识别准确率低的问题,难以实现大批量的固件加密核查。
发明内容
解决的技术问题:针对上述技术问题,本发明提供了一种基于文件切片的加密固件识别方法,能够快速、准确地检测加密固件。
技术方案:基于文件切片的加密固件识别方法,包括步骤如下:
(1)文件切片阶段:利用文件切片技术将固件均分为大小相等的文件切片,并设定基准值和偏差值;
(2)读取数据阶段:对每个文件切片读取长度固定的二进制数据,将二进制数据转化为十六进制数据,如果十六进制数据中包含连续多个相同字符,便将该组数据舍弃读取下一组,直至读取全部文件切片;
(3)计算阶段:计算步骤(2)中获取到的十六进制数据的信息熵,之后计算所有熵值的方差;
(4)加密固件判断阶段:计算方差与基准值的偏差,如果偏差大于偏差值,可以直接判断是否为加密固件,否则搜索文件切片中的魔术字再进行判断。
优选的,所述步骤(1)中文件切片的数量为160。
优选的,所述步骤(1)中基准值为15%。
优选的,所述步骤(2)中读取的二进制数据长度为215。
优选的,所述步骤具体如下:
(1)文件切片阶段
以二进制数据流读入文件,计算出文件大小,将文件以逻辑方式均分为大小相等的N段切片,每段大小为size,设定基准值为base,偏差值为deviation;
(2)读取数据阶段
经由步骤(1)切分的文件切片为piece[1]、piece[2]、piece[3]…piece[N];
在读取第i个文件切片piece[i]中的数据时步骤如下:
步骤S2.1、将文件指针置于cursor[i] = size * (i -1);
步骤S2.2、从cursor[i]的位置读取长度为length的二进制数据流bytes[i];
步骤S2.3、将二进制bytes[i]转化为十六进制数据hex[i];
步骤S2.4、判断数据hex[i]中是否有连续多个相同字符,如果有则转到步骤S2.5,否则转到步骤S2.6;
步骤S2.5、将数据hex[i]舍弃,并将i置为i+1;
步骤S2.6、将i置为i+1;
循环步骤(2)直至i=N;
(3)数据计算阶段
步骤S3.1、计算出hex[j]的信息熵h[j],将h[j]添加到熵值列表;
步骤S3.3、计算熵值列表中所有数据的方差variance;
(4)加密固件判断阶段
步骤S4.1、如果|variance-base|>deviation,转到步骤S4.2,否则转到步骤S4.3;
步骤S4.2、如果variance>base,转到步骤S4.4,否则转到步骤S4.5;
步骤S4.3、从文件指针cursor=0的位置搜索魔术字,如果找到符合条件的魔术字,转到步骤S4.4,否则转到步骤S4.5;
步骤S4.4、输出固件为加密固件,结束;
步骤S4.5、输出固件为未加密固件,结束。
优选的,所述步骤S3.3中方差variance的计算方法如下:
其中h为步骤S3.1求得的所有h[i]的均值。
有益效果:本发明提供了一种基于文件切片的加密固件检测方法,使用多个信息熵的方差作为判断固件加密性的依据,可以快速、准确判断固件是否加密。
本发明结合了熵值判断和魔术字判断,可以在提高识别速率的基础上,对固件充分检测无遗漏。
附图说明
图1是本发明的加密固件识别方法流程图;
图2是本发明的具体算法流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步描述。
实施例1
如图1所示,本发明所述基于文件切片的加密固件检测算法包含4个阶段,文件切片阶段,读取数据阶段,数据计算阶段和加密固件判断阶段。
(1)文件切片阶段:将文件以二进制格式读入,并以逻辑方式均分为大小相等的文件切片,并设定基准值和偏差值;
(2)读取数据阶段:依次对每个文件切片读取长度固定的二进制数据,将二进制数据转化为十六进制数据,如果十六进制数据中包含连续多个相同字符,便将该组数据舍弃读取下一组,直至读取全部文件切片;
(3)计算阶段:计算步骤(2)中获取到的十六进制数据的信息熵,并将所有得到的熵值保存在列表中,之后计算所有熵值的方差;
(4)加密固件判断阶段:计算方差与基准值的偏差,如果偏差大于偏差值,可以直接判断是否为加密固件,否则搜索文件中的魔术字再进行判断。
由于将文件切分为多少切片,以及每段数据要读取的长度,这两项因素都会影响程序的运行时间和最终的结果:切分的切片数过多,会影响程序的运行时间,而切片过少则会影响读取数据的随机性,同样的,读取的数据过少时,不能很好的反应数据的混淆程度,结果不能作为判断加密固件的依据,而读取的数据过多同样会导致程序运行时间过长。因此,切片数pieces和读取的数据长度length的选择将影响结果的判定。
本实施例中将切片数pieces设置为160,读取的数据长度length设置为215。
下面给出本发明具体步骤实施例:
(1)文件切片阶段
以二进制数据流读入文件,计算出文件大小,将文件以逻辑方式均分为大小相等的N段切片,每段大小为size,设定基准值为base,偏差值为deviation;
(2)读取数据阶段
经由步骤(1)切分的文件切片为piece[1]、piece[2]、piece[3]…piece[N];
在读取第i个文件切片piece[i]中的数据时步骤如下:
步骤S2.1、将文件指针置于cursor[i] = size * (i -1);
步骤S2.2、从cursor[i]的位置读取长度为length的二进制数据流bytes[i];
步骤S2.3、将二进制bytes[i]转化为十六进制数据hex[i];
步骤S2.4、判断数据hex[i]中是否有连续多个相同字符,如果有则转到步骤S2.5,否则转到步骤S2.6;
步骤S2.5、将数据hex[i]舍弃,并将i置为i+1;
步骤S2.6、将i置为i+1;
循环步骤(2)直至i=N;
(3)数据计算阶段
步骤S3.3、计算熵值列表中所有数据的方差variance,计算方法如下:
其中h为步骤S3.1求得的所有h[i]的均值;
(4)加密固件判断阶段
步骤S4.1、如果|variance-base|>deviation,转到步骤S4.2,否则转到步骤S4.3;
步骤S4.2、如果variance>base,转到步骤S4.4,否则转到步骤S4.5;
步骤S4.3、从文件指针cursor=0的位置搜索魔术字,如果找到符合条件的魔术字,转到步骤S4.4,否则转到步骤S4.5;
步骤S4.4、输出固件为加密固件,结束;
步骤S4.5、输出固件为未加密固件,结束。
由于实际的基准值需要根据固件数据集的不同进行设置,准确反映出数据的差异程度即为合理的基准值,本实施例中采用15%为基准值。
将本实施例与binwalk检测软件对比,分别分析1262款路由器固件,其检测结果对比如下:
选项 | 加密固件数 | 未加密固件数 | 检测错误数 | 误报率 | 检测时间/秒 |
本实施例 | 108 | 1154 | 1 | 0.079% | 78.265 |
binwalk | 114 | 1148 | 8 | 0.634% | 577.043 |
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (7)
1.基于文件切片的加密固件识别方法,其特征在于,包括步骤如下:
(1)文件切片阶段:利用文件切片技术将固件均分为大小相等的文件切片,并设定基准值和偏差值;
(2)读取数据阶段:对每个文件切片读取长度固定的二进制数据,将二进制数据转化为十六进制数据,如果十六进制数据中包含连续多个相同字符,便将该组数据舍弃读取下一组,直至读取全部文件切片;
(3)计算阶段:计算步骤(2)中获取到的十六进制数据的信息熵,之后计算所有熵值的方差;
(4)加密固件判断阶段:计算方差与基准值的偏差,如果偏差大于偏差值,可以直接判断是否为加密固件,否则搜索文件切片中的魔术字再进行判断。
2.根据权利要求1所述的基于文件切片的加密固件识别方法,其特征在于,所述步骤(1)中文件切片的数量为160。
3.根据权利要求1所述的基于文件切片的加密固件识别方法,其特征在于,所述步骤(1)中基准值为15%。
4.根据权利要求1所述的基于文件切片的加密固件识别方法,其特征在于,所述步骤(2)中读取的二进制数据长度为215。
5.根据权利要求1所述的基于文件切片的加密固件识别方法,其特征在于,所述步骤具体如下:
(1)文件切片阶段
以二进制数据流读入文件,计算出文件大小,将文件以逻辑方式均分为大小相等的N段切片,每段大小为size,设定基准值为base,偏差值为deviation;
(2)读取数据阶段
经由步骤(1)切分的文件切片为piece[1]、piece[2]、piece[3]…piece[N];
在读取第i个文件切片piece[i]中的数据时步骤如下:
步骤S2.1、将文件指针置于cursor[i] = size * (i -1);
步骤S2.2、从cursor[i]的位置读取长度为length的二进制数据流bytes[i];
步骤S2.3、将二进制bytes[i]转化为十六进制数据hex[i];
步骤S2.4、判断数据hex[i]中是否有连续多个相同字符,如果有则转到步骤S2.5,否则转到步骤S2.6;
步骤S2.5、将数据hex[i]舍弃,并将i置为i+1;
步骤S2.6、将i置为i+1;
循环步骤(2)直至i=N;
(3)数据计算阶段
步骤S3.1、计算出hex[j]的信息熵h[j],将h[j]添加到熵值列表;
步骤S3.3、计算熵值列表中所有数据的方差variance;
(4)加密固件判断阶段
步骤S4.1、如果|variance-base|>deviation,转到步骤S4.2,否则转到步骤S4.3;
步骤S4.2、如果variance>base,转到步骤S4.4,否则转到步骤S4.5;
步骤S4.3、从文件指针cursor=0的位置搜索魔术字,如果找到符合条件的魔术字,转到步骤S4.4,否则转到步骤S4.5;
步骤S4.4、输出固件为加密固件,结束;
步骤S4.5、输出固件为未加密固件,结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210375920.6A CN114925377A (zh) | 2022-04-11 | 2022-04-11 | 基于文件切片的加密固件识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210375920.6A CN114925377A (zh) | 2022-04-11 | 2022-04-11 | 基于文件切片的加密固件识别方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114925377A true CN114925377A (zh) | 2022-08-19 |
Family
ID=82805593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210375920.6A Pending CN114925377A (zh) | 2022-04-11 | 2022-04-11 | 基于文件切片的加密固件识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114925377A (zh) |
-
2022
- 2022-04-11 CN CN202210375920.6A patent/CN114925377A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20140236952A1 (en) | Media identification system with fingerprint database balanced according to search loads | |
CN111538642B (zh) | 一种异常行为的检测方法、装置、电子设备及存储介质 | |
US20120330931A1 (en) | Database management method, computer, sensor network system and database search program | |
AU2015206487B2 (en) | Database key identification | |
Upchurch et al. | Malware provenance: code reuse detection in malicious software at scale | |
WO2014132611A1 (ja) | システム分析装置、及び、システム分析方法 | |
CN113298162A (zh) | 一种基于K-means算法的桥梁健康监测方法及系统 | |
CN111291824A (zh) | 时间序列的处理方法、装置、电子设备和计算机可读介质 | |
CN110990603B (zh) | 用于分段图像数据的格式识别的方法和系统 | |
Sivadasan et al. | Kmerlight: fast and accurate k-mer abundance estimation | |
CN114925377A (zh) | 基于文件切片的加密固件识别方法 | |
CN113515450A (zh) | 一种环境异常检测方法和系统 | |
CN102098346B (zh) | 一种在未知流量中识别p2p流媒体流量的方法 | |
KR20210082390A (ko) | 시퀀싱 리드 그루핑 및 콜랩싱을 위한 시스템 및 방법 | |
CN111063394A (zh) | 基于基因序列的物种快速查找及建库方法、系统和介质 | |
CN114577988B (zh) | 一种纯蒸汽取样方法及系统 | |
CN107508764B (zh) | 一种网络数据流量类型识别方法和装置 | |
CN111984515B (zh) | 多源异构日志分析方法 | |
WO2018122889A1 (ja) | 異常検出方法、システムおよびプログラム | |
CN111936636B (zh) | 核苷酸序列变体的频率分布的确定 | |
JP2014215902A (ja) | データ名称抽出装置及びプログラム | |
US11593245B2 (en) | System, device and method for frozen period detection in sensor datasets | |
KR101907443B1 (ko) | 구성 요소 기반 악성 파일 유사성 분석 장치 및 방법 | |
WO2020230397A1 (ja) | 理論質量の外れ値検出方法 | |
CN111796758A (zh) | 数据记录与分析系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |