一种嵌入式设备固件解压成功的判断方法
【技术领域】
[0001] 本发明设及嵌入式设备固件漏桐挖掘与逆向分析领域,具体设及一种嵌入式设备 固件解压成功的判断方法。
【背景技术】
[0002] 随着物联网的兴起,工业4.0的稳步推进,中国制造2025概念的提出,嵌入式设备 将会在未来发挥愈来愈重要的作用。然而,由于传统的工控厂商普遍缺乏安全意识,设备生 产尤W可用性为前提,由此导致的安全问题也就越来越多,如2010年出现的Stuxnet病毒, 2011年出现的Duqu病毒,2012年被发现的Flame病毒等,均给工控企业和国家带来了巨大的 损失。因此,对嵌入式设备的漏桐挖掘也就变得至关重要。
[0003] 嵌入式设备固件是将软件(程序代码或资料)烧录在存储器(化A甜、MEMORY或ROM) 上,而后通过采用某种压缩算法(如lzma,gzip,xz,zUb等)进行压缩处理,使得在不知晓具 体压缩算法的情况下,无法获取固件内部的程序代码或资料,也就无法对固件的漏桐进行 挖掘。固件"解压"即是通过判断其采用的压缩算法,而后采用相应的解压缩算法,将固件内 部的程序代码或资料提取出来,通过对其程序代码进行反汇编处理,即可进行漏桐挖掘。
[0004] 目前,对嵌入式设备的漏桐挖掘主要靠人工借助binwalk、IDAPro等工具来分析, 包括固件解压、固件反汇编、固件漏桐挖掘等几个步骤。运几个步骤有着既定的顺序,如果 固件不能成功解压,则其就不能进行反汇编(一般情况下,能够解压成功,即可进行反汇 编);若没有进行反汇编,那么,对固件的漏桐挖掘也就成了空谈。现在,针对嵌入式设备固 件的解压主要有人工解压和使用工具解压两种,若是批量、大规模对固件实施解压,则只能 通过binwalk、BAT等工具或编写自动化解压脚本执行。一般情况下,如果固件能够成功解 压,则解压后的可执行文件即可进行反汇编;反之,则不能进行反汇编。目前,缺少一种嵌入 式设备固件解压成功的判断方法,给大规模、批量化的固件漏桐挖掘带来了困难。
【发明内容】
[0005] 由此可见,如何判断固件是否解压成功显得异常重要。本发明旨在提供一种嵌入 式设备固件解压成功的判断方法。
[0006] 本发明设及的方法流程主要包括:样本集固件收集、固件赌谱获取、固件赌谱特征 提取、特征标准化处理、分类器训练、固件解压成功判断等步骤。本发明的技术创新点在于 巧妙地将处理图像信号的方法应用于固件赌谱,提取了固件赌谱的多域(空域、DCT域、DWT 小波域等)综合特征,一定程度上兼顾了固件赌谱各域的特性;此外,采用机器学习的思想, 并辅W交叉验证的方法,通过分类器进行多次重复训练,确保了所训练分类器的可靠性和 稳定性。而后任选一非试验样本集固件,按要求提取其赌谱及赌谱特征,并将此导入已训练 好的各分类器,采用加权统计的思想对各分类器的判断结果进行计算,并比较各判断结果 (解压成功或失败)出现的加权次数,W次数较多者作为最终的判定结果,亦在一定程度上 确保了所得结果的可靠性与正确性。
[0007] 为实现上述目的,本发明采用如下技术方案:
[0008] -种嵌入式设备固件解压成功的判断方法,包括W下步骤:
[0009] 1)收集嵌入式设备的固件(包括未解压成功的固件和人工认定已解压成功的固 件,且已知每个样本固件是否已解压成功),并将其作为试验样本集;
[0010] 2)提取步骤1)中试验样本集中所有固件的信息赌谱(简称为固件赌谱);
[0011] 3)提取步骤2)中所获取的固件赌谱的指纹特征;
[0012] 4)针对步骤3)中提取的固件赌谱的指纹特征作标准化处理;
[0013] 5)采用机器学习的思想,辅W交叉验证的方法,通过分类器对步骤4)中标准化处 理后的固件赌谱的指纹特征进行交叉验证重复训练,即可得到一组训练好的分类器,并统 计各分类器的判断准确率;
[0014] 6)任选取一个非试验样本集固件(或称为待测试固件,未知其是否解压成功),依 据步骤2)~3)提取其赌谱及赌谱指纹特征,并将其作为测试样本导入上述训练好的各分类 器,记录各分类器的判断结果;而后依据各分类器的判断准确率对其所判断结果进行加权 计算(各分类器所占权重依据其在试验样本集中的判断表现而定),统计加权计算后解压成 功或失败的次数;若解压成功次数居多,则认为该固件已成功解压;反之,认为该固件未解 压成功。
[001引进一步地,步骤2)中,提取固件的信息赌谱,主要通过编写自动化脚本程序来批量 化提取固件的信息赌谱。
[0016] 进一步地,步骤3)中,提取步骤2)中所获取固件信息赌谱的特征时,计算步骤2)中 所获取的固件赌谱的梯度能量,并将其作为固件赌谱的空域特征。
[0017] 进一步地,步骤3)中,提取步骤2)中所获取固件信息赌谱的特征时,对步骤2)中所 获取的固件赌谱作DCT变换(离散余弦变换),并选择计算DCT系数中拉普拉斯分布尺度参数 的方差作为固件赌谱的DCT特征。
[0018] 进一步地,步骤3)中,提取步骤2)中所获取固件信息赌谱的特征时,对步骤2)中所 获取的固件赌谱作二级小波变换,并选择其变换后6个高频子带化Hi,化1,皿1,L此,化2,Η出) 的四阶统计矩(期望,方差,偏斜度,峰度)作为固件赌谱的小波域特征。
[0019] 进一步地,步骤3)中,提取步骤2)中所获取固件信息赌谱的特征时,设定固件赌值 的上界和下界,采用施密特触发器算法将固件赌谱二值化,将二值化后高赌段的占比亦作 为固件赌谱的特征。
[0020] 进一步地,步骤4)中,采用Z-Score标准化方法对步骤3)中所提取到的各域固件赌 谱特征作标准化处理,一定程度上简化了计算,消除了量纲带来的影响。
[0021] 进一步地,步骤5)中,采用机器学习的思想,辅WK折交叉验证的方法,通过分类器 交叉重复训练,即会得到一组训练好的分类器,并统计各分类器的分类准确率。
[0022] 进一步地,步骤6)中,采用加权统计的思想对各分类器的判断结果进行计算,比较 各判断结果中(解压成功或失败)出现的加权次数,并W次数较多者作为固件是否解压成功 的最终判定结果。
[0023] 本发明可W获得W下有益效果:
[0024] 本发明在提取固件赌谱的特征时,巧妙地将处理图像信号的方法应用于固件赌 谱,从多个角度分析固件赌谱的特性,选择提取梯度能量、DCT系数中拉普拉斯分布尺度参 数的方差、二级小波变换后6个高频子带的四阶统计矩共计26维属性作为固件赌谱的特征, 扩展了赌谱特征的维度,一定程度上增强了所得结果的可靠性与稳定性。
[0025] 本发明在提取固件赌谱施密特二值化后的高赌段的占比特征时,通过设置正向赌 阔值和负向赌阔值,利用正向赌阔值和负向赌阔值之间的回差有效避免了赌值在多次穿越 单一阔值时所产生的干扰。
[0026] 本发明在对固件赌谱特征进行处理时,采用Z-Score标准化方法对固件赌谱特征 作标准化处理,简化了计算,消除了量纲带来的影响,减弱了编译器、处理器等的异构性带 来的干扰。
[0027] 本发明在训练分类器时,采用机器学习的思想,并辅WK折交叉验证的方法,对其 进行多次交叉重复训练,确保了所训练分类器的稳定性与可靠性;而后再通过加权统计的 方法计算各判断结果的累计加权次数,选择W次数居多者作为对固件是否解压成功的最终 判定结果,亦保证了所得结果的准确性。
【附图说明】
[0028] 图1为本发明所提出方法的原理框图。
[0029] 图2(a)为本发明所提出方法中分类器训练的流程框图,图2(b)为本发明所提出方 法中判断某未知固件是否解压成功的流程框图。
[0030] 图3为360某安全路由的固件解压前的赌谱。
[0031] 图4为360某安全路由的固件解压成功后的赌谱。
[0032] 图5为360某安全路由的固件赌谱进行施密特二值化后的赌谱。
[0033] 图6为二级化ar小波变换后的频域分解示意图。
[0034] 图7为SVM分类器(寻找最优超平面)的原理示意图。
【具体实施方式】
[0035] 下面结合示例性实施例对本发明作出具体说明。
[0036] 该方法的总体流程框图如图2所示。主要包括:
[0037] a)首先,收集嵌入式设备的固件(包括未解压成功的固件和人工认定已解压成功 的固件,且已知每个样本固件是否已解压成功),并将其作为试验样本集。
[0038] b)通过binwalk的-E命令批量获取每一个样本固件的赌谱。图3为360某安全路由 的固件解压前的赌谱,图4为该固件成功解压后的赌谱,在计算样本固件的赌值时,须将固 件划分为多个分片(如每个分片取64Bytes),而后对每一分片计算信息赌,图中横坐标 Of f set表示当前分片的偏移地址,纵坐标化tropy表示对应偏移地址的赌值。
[0039] C)计算b)中所获取固件赌谱的梯度能量,将其作为固件赌谱的空域特征。
[0040] 对于函数f(i,j),其坐标(i,j)处的梯度定义为:
[0041]
[0042] 对于离散图像信号(本发明将步骤C)中得到的赌谱作为图像信号来处理)I(i,j), 可用差分近似上述公式:
[0043]
[0044] 梯度反映的是信号变化率,固件压缩与解压缩前后,其赌谱的梯度将发生比较明 显的变化,因此可选择梯度作为空域特征。提取过程如下:
[0045] 1)计算垂直方向的梯度能量GEv:
[0046]
[0047] 其中,Nh和佩分别表示图像I的高和宽(像素数),I(x,y)表示图像I中坐标为(x,y) 处的像素值。
[0048] 2)计算水平方向梯度能量GEh:
[0049]
[0050] 3)计算总的梯度能量fi:
[0化1] fi = GEv+GEH
[0052] 本质上,运种梯度计算方法是通过考查固件压缩与解压缩前后其赌谱图像空间平 滑度的
变化来对赌谱进行分析。
[0053] d)对b)中所得固件赌谱作DCT变换,计算DCT系数宏块中拉普拉斯分布的尺度参数 的方差,将其作为固件赌谱的DCT域特征。
[0054] -般认为,图像信号进行DCT变换后,其宏块内DCT系数服从拉普拉斯分布;其中, 每个宏块由4个相连的8X8小块构成,拉普拉斯分布的尺度参数的方差在固件压缩与解压 缩前后其赌谱将会发生变化;因此,选取参数的方差作为固件赌谱的DCT域特征。
[0化5]对一个宏块化:
化中除DC(直流)系数外的所有DCT系数t月良 从拉普拉斯分布,则t的概率密度函数为:
[0化6]
[0057]式中,λ是拉普拉斯分布的尺度参数。
[0化引设Ρ (t) = Ρ (ti,t2,…,tK)为宏块化中Κ个DCT系数t j (非直流系数)的联合概率密度 函数,其中K = 4X(64-l)=252,则似然函数LH(λi)为;
[0化9]
[0060] 运样,λι的最大似然估计值£,可由下面对数似然方程解得:
[0061]
[0062]可得;
[0063]
[0064] DCT域特征的提取过程如下:
[00化]1)根据上式计算图像中所有宏块的拉普拉斯尺度参数向1 = μ, ,其中L 是图像中宏块的个数。
[0066] 2)计算拉普拉斯尺度参数向量的期望了;
[0067]
[0068] 3)计算拉普拉斯尺度参数向量的方差化Γ(λ):
[0069]
[0070] 4)令DCT域上的特征值为Fdct:
[0071] 时別二化八入)
[0072] 本发明即选取拉普拉斯尺度参数向量的方差作为固件赌谱DCT域的特征。
[0073] e)对b)中所得固件赌谱作二级化ar小波变换,得到6个高频子带化出,化1,皿1, L出,化2,HH2),分别对其计算四阶统计矩(期望,方差,偏斜度,峰度),将得到的24维特征作 为固件赌谱的小波域特征。具体提取过程如下:
[0074] 1)先对图像进行两级化ar小波变换,得至化个高频子带:LHi、化1、皿1、L出、化2及皿2 (如图6所示)。
[0075] 2)分别对6个字带上的小波系数计算四阶统计矩:期望、方差、偏斜度和峰度,运样 共有24维特征。对子带小波系数,其期望E(x)、方差化r(x)、偏斜度S(x)和峰度Κ(χ)的计算 公式如下:
[0080] 其中,X是子带小波系数值,运样就可W得到小波域的特征,共24维,记为时WT。
[0081] f)在通过binwalk的-Ε命令获取固件的信息赌谱时,可添加用于设定固件赌值的 上界和下界(默认赌值上界为0.95,下界为0.85)的参数选项,而后采用施密特触发器算法 将其分段二值化为高赌段和低赌段,计算高赌段的占比,将其作为固件赌谱的特征。
[0082] 图5为图4中360某安全路由的固件解压后的赌谱进行施密特二值化(此处设定的 固件赌值的上界和下界分别为0.7和0.6)后的结果,由此可计算高赌段的占比约为76%。
[0083] 综合步骤d)~f),共计得到27维固件赌谱特征。
[0084] g)对步骤d)~f)中得到27维特征进行Z-Score标准化处理。具体处理过程如下:
[0085] 记训练样本和测试样本的固件赌谱特征为F_TR,F_TE,相应的空域、DCT域和DWT域 特征分别记为F_TRspa,F_T化CT,F_TRdwt,F_TEspa,F_TEdct,F_TEdwt。为更好地保留固件赌谱的 各域特征,本发明拟计算固件赌谱各域的期望和方差,对高赌段占比特征则暂不做任何处 理。
[0086]
[0087]其中,表示训练样本中第i幅固件赌谱的*域特征值(i = l,2,…,N,N为训 练样本的数量)。E_TRspa,E_TRdct,E_TRdwt分别表示空域、DCT域和DWT域特征的期望,Var_ TOspa,,A^lTRdwt分别表示空域、DCT域和DWT域特征的方差。
[008引而后,对训练样本特征F_TR和测试样本特征F_TE同时按域进行如下缩放操作:
[0092] 即可得到缩放后的训练样本各域特征值和测试样本各域特征值。
[0093] 将缩放后的Ξ域特征进行综合,再加上固件赌谱进行施密特二值化后的高赌段的 占比,则对每一个固件赌谱可得到一个27维的特征向量。
[0094] h)采用机器学习的思想,并辅WK折交叉验证的方法(即将提取的到的特征分为K 份,选取其中1份作为测试集,其余K-1份作为训练集),通过SVM分类器交叉验证重复训练K 次(确保每一份样本验证一次),即可得到K个SVM分类器,并计算各分类器的分类准确率。图 7为特征向量为二维情况下的SVM分类器原理示意图,图中小圆圈、小圆点均代表样本点, yi、y2分别表示样本点的特征值;H、出、此均表示分隔超平面(也叫分离超平面),其中,Η为最 优分隔超平面;b表示样本点到分隔平面的距离,其中,距离超平面距离最近的样本点被称 为支持向量,即图中黑色小圆点为支持向量。
[0095] i)任选一非试验样本集固件(未知其是否被解压或解压成功),依据步骤b)~f)提 取其赌谱及赌谱指纹特征,并将其作为待测样本导入h)中已训练好的K个SVM分类器,分别 统计各判断结果(解压成功或失败)出现的加权次数;若解压成功次数居多,则认为该固件 已被成功解压;否则,认为该固件未解压成功。
[0096] 综上所述,本发明公开了一种嵌入式设备固件解压成功的判断方法。上面描述的 应用场景和实施例,并非用于限定本发明,任何本领域技术人员,在不脱离本发明的精神和 范围内,可作各种更动和润饰。因此,本发明的保护范围视权利要求范围所界定。
【主权项】
1. 一种嵌入式设备固件解压成功的判断方法,其特征在于,包括以下步骤: 1) 收集嵌入式设备的固件,包括未解压成功的固件和人工认定已解压成功的固件,且 已知每个样本固件是否解压成功,并将收集的固件作为试验样本集; 2) 提取步骤1)中试验样本集中所有固件的信息熵谱; 3) 提取步骤2)中所获取的固件熵谱的指纹特征; 4) 针对步骤3)中提取的固件熵谱的指纹特征作标准化处理; 5) 通过分类器对步骤4)中标准化处理后的固件熵谱特征进行交叉验证重复训练,得到 一组训练好的分类器,并统计各分类器的分类准确率; 6) 任选取一个非试验样本集固件,依据步骤2)~3)提取其熵谱及熵谱指纹特征,并将 其作为测试样本导入上述训练好的各分类器,记录各分类器的判断结果;而后依据各分类 器判断准确率对其所判断结果进行加权计算,统计加权计算后解压成功或失败的次数;若 解压成功次数居多,则认为该固件已成功解压;反之,认为该固件未解压成功。2. 如权利要求1所述的一种嵌入式设备固件解压成功的判断方法,其特征在于,步骤3) 中,在提取固件熵谱的指纹特征时,计算步骤2)中所获取的固件熵谱的梯度能量,并将其作 为固件熵谱的空域特征。3. 如权利要求1所述的一种嵌入式设备固件解压成功的判断方法,其特征在于,步骤3) 中,在提取固件熵谱的指纹特征时,对步骤2)中所获取的固件熵谱作DCT变换,并选择计算 DCT系数中拉普拉斯分布尺度参数的方差作为固件熵谱的DCT特征。4. 如权利要求1所述的一种嵌入式设备固件解压成功的判断方法,其特征在于,步骤3) 中,在提取固件熵谱的指纹特征时,对步骤2)中所获取的固件熵谱作二级小波变换,并选择 其变换后6个高频子带的四阶统计矩作为固件熵谱的小波域特征,所述四阶统计矩包括期 望、方差、偏斜度和峰度。5. 如权利要求1所述的一种嵌入式设备固件解压成功的判断方法,其特征在于,步骤3) 中,在提取固件熵谱的指纹特征时,设定固件熵值的上界和下界,采用施密特触发器算法将 固件熵谱二值化,将二值化后高熵段的占比亦作为固件熵谱的特征。6. 如权利要求2~5中任一项所述的一种嵌入式设备固件解压成功的判断方法,其特征 在于,步骤3)在提取固件熵谱的指纹特征时,从多个角度分析熵谱的特征,兼顾熵谱的各域 特性,并将处理图像信号的方法应用于固件熵谱,以扩展所提取的熵谱指纹特征的维度。7. 如权利要求1所述的一种嵌入式设备固件解压成功的判断方法,其特征在于,步骤4) 中,采用Z-Score标准化方法对步骤3)中所提取到的各域固件熵谱特征作标准化处理。8. 如权利要求1所述的一种嵌入式设备固件解压成功的判断方法,其特征在于,步骤5) 中,所述交叉验证为K折交叉验证,即将提取的到的特征分为K份,选取其中1份作为测试集, 其余K-1份作为训练集,通过分类器交叉验证重复训练K次,即可得到K个分类器,并计算各 分类器的分类准确率。9. 如权利要求1所述的一种嵌入式设备固件解压成功的判断方法,其特征在于,步骤6) 中,采用加权统计的方法对各分类器的判断结果进行计算,比较各判断结果中解压成功或 失败出现的加权次数,并以次数较多者作为固件是否解压成功的最终判定结果。
【专利摘要】本发明涉及一种嵌入式设备固件解压成功的判断方法,其主要步骤包括:试验样本集固件收集、固件熵谱获取、固件熵谱指纹特征提取、分类器训练及固件是否解压成功的判断。该方法采用处理图像信号的方法对固件熵谱作相应处理,提取了固件熵谱的多域综合特征;利用正向熵阈值和负向熵阈值之间的回差有效避免了熵值在多次穿越单一阈值时所产生的干扰;在训练分类器时,首先对固件熵谱特征作Z-Score标准化处理,再采用机器学习的思想和K折交叉验证的方法对分类器进行多次交叉重复训练;对于待测试固件,通过加权统计的方法对各分类器判断结果进行累计加权统计,以次数居多者作为对固件是否解压成功的最终判定结果,保证了所得结果的准确性。
【IPC分类】G06K9/62
【公开号】CN105488531
【申请号】CN201510855073
【发明人】石志强, 刘中金, 王猛涛, 陈昱, 常青, 孙利民
【申请人】中国科学院信息工程研究所
【公开日】2016年4月13日
【申请日】2015年11月30日