CN114925377A - 基于文件切片的加密固件识别方法 - Google Patents

基于文件切片的加密固件识别方法 Download PDF

Info

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
Application number
CN202210375920.6A
Other languages
English (en)
Inventor
随唐
吴礼发
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University of Posts and Telecommunications
Original Assignee
Nanjing University of Posts and Telecommunications
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University of Posts and Telecommunications filed Critical Nanjing University of Posts and Telecommunications
Priority to CN202210375920.6A priority Critical patent/CN114925377A/zh
Publication of CN114925377A publication Critical patent/CN114925377A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting 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.2、如果
Figure DEST_PATH_IMAGE002
,将j置为j+1,转到步骤S3.1,否则转到步骤S3.3;
步骤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.1中信息熵h[j]的计算方法为:
Figure DEST_PATH_IMAGE004
优选的,所述步骤S3.3中方差variance的计算方法如下:
Figure DEST_PATH_IMAGE006
Figure DEST_PATH_IMAGE008
其中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.1、使用熵值计算公式:
Figure 820385DEST_PATH_IMAGE004
,计算出hex[j]的信息熵h[j],将h[j]添加到熵值列表;
步骤S3.2、如果
Figure 41282DEST_PATH_IMAGE002
,将j置为j+1,转到步骤S3.1,否则转到步骤S3.3;
步骤S3.3、计算熵值列表中所有数据的方差variance,计算方法如下:
Figure DEST_PATH_IMAGE006A
Figure DEST_PATH_IMAGE008A
其中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.2、如果
Figure DEST_PATH_IMAGE001
,将j置为j+1,转到步骤S3.1,否则转到步骤S3.3;
步骤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、输出固件为未加密固件,结束。
6.根据权利要求5所述的基于文件切片的加密固件识别方法,其特征在于,所述步骤 S3.1中信息熵h[j]的计算方法为:
Figure 627972DEST_PATH_IMAGE002
7.根据权利要求5所述的基于文件切片的加密固件识别方法,其特征在于,所述步骤S3.3中方差variance的计算方法如下:
Figure 810691DEST_PATH_IMAGE004
Figure 262533DEST_PATH_IMAGE006
其中h为步骤S3.1求得的所有h[i]的均值。
CN202210375920.6A 2022-04-11 2022-04-11 基于文件切片的加密固件识别方法 Pending CN114925377A (zh)

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)

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