一種嵌入式設(shè)備固件解壓成功的判斷方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及嵌入式設(shè)備固件漏桐挖掘與逆向分析領(lǐng)域,具體設(shè)及一種嵌入式設(shè)備 固件解壓成功的判斷方法。
【背景技術(shù)】
[0002] 隨著物聯(lián)網(wǎng)的興起,工業(yè)4.0的穩(wěn)步推進(jìn),中國制造2025概念的提出,嵌入式設(shè)備 將會(huì)在未來發(fā)揮愈來愈重要的作用。然而,由于傳統(tǒng)的工控廠商普遍缺乏安全意識(shí),設(shè)備生 產(chǎn)尤W可用性為前提,由此導(dǎo)致的安全問題也就越來越多,如2010年出現(xiàn)的Stuxnet病毒, 2011年出現(xiàn)的Duqu病毒,2012年被發(fā)現(xiàn)的Flame病毒等,均給工控企業(yè)和國家?guī)砹司薮蟮?損失。因此,對嵌入式設(shè)備的漏桐挖掘也就變得至關(guān)重要。
[0003] 嵌入式設(shè)備固件是將軟件(程序代碼或資料)燒錄在存儲(chǔ)器(化A甜、MEMORY或ROM) 上,而后通過采用某種壓縮算法(如lzma,gzip,xz,zUb等)進(jìn)行壓縮處理,使得在不知曉具 體壓縮算法的情況下,無法獲取固件內(nèi)部的程序代碼或資料,也就無法對固件的漏桐進(jìn)行 挖掘。固件"解壓"即是通過判斷其采用的壓縮算法,而后采用相應(yīng)的解壓縮算法,將固件內(nèi) 部的程序代碼或資料提取出來,通過對其程序代碼進(jìn)行反匯編處理,即可進(jìn)行漏桐挖掘。
[0004] 目前,對嵌入式設(shè)備的漏桐挖掘主要靠人工借助binwalk、IDAPro等工具來分析, 包括固件解壓、固件反匯編、固件漏桐挖掘等幾個(gè)步驟。運(yùn)幾個(gè)步驟有著既定的順序,如果 固件不能成功解壓,則其就不能進(jìn)行反匯編(一般情況下,能夠解壓成功,即可進(jìn)行反匯 編);若沒有進(jìn)行反匯編,那么,對固件的漏桐挖掘也就成了空談?,F(xiàn)在,針對嵌入式設(shè)備固 件的解壓主要有人工解壓和使用工具解壓兩種,若是批量、大規(guī)模對固件實(shí)施解壓,則只能 通過binwalk、BAT等工具或編寫自動(dòng)化解壓腳本執(zhí)行。一般情況下,如果固件能夠成功解 壓,則解壓后的可執(zhí)行文件即可進(jìn)行反匯編;反之,則不能進(jìn)行反匯編。目前,缺少一種嵌入 式設(shè)備固件解壓成功的判斷方法,給大規(guī)模、批量化的固件漏桐挖掘帶來了困難。
【發(fā)明內(nèi)容】
[0005] 由此可見,如何判斷固件是否解壓成功顯得異常重要。本發(fā)明旨在提供一種嵌入 式設(shè)備固件解壓成功的判斷方法。
[0006] 本發(fā)明設(shè)及的方法流程主要包括:樣本集固件收集、固件賭譜獲取、固件賭譜特征 提取、特征標(biāo)準(zhǔn)化處理、分類器訓(xùn)練、固件解壓成功判斷等步驟。本發(fā)明的技術(shù)創(chuàng)新點(diǎn)在于 巧妙地將處理圖像信號的方法應(yīng)用于固件賭譜,提取了固件賭譜的多域(空域、DCT域、DWT 小波域等)綜合特征,一定程度上兼顧了固件賭譜各域的特性;此外,采用機(jī)器學(xué)習(xí)的思想, 并輔W交叉驗(yàn)證的方法,通過分類器進(jìn)行多次重復(fù)訓(xùn)練,確保了所訓(xùn)練分類器的可靠性和 穩(wěn)定性。而后任選一非試驗(yàn)樣本集固件,按要求提取其賭譜及賭譜特征,并將此導(dǎo)入已訓(xùn)練 好的各分類器,采用加權(quán)統(tǒng)計(jì)的思想對各分類器的判斷結(jié)果進(jìn)行計(jì)算,并比較各判斷結(jié)果 (解壓成功或失?。┏霈F(xiàn)的加權(quán)次數(shù),W次數(shù)較多者作為最終的判定結(jié)果,亦在一定程度上 確保了所得結(jié)果的可靠性與正確性。
[0007] 為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
[0008] -種嵌入式設(shè)備固件解壓成功的判斷方法,包括W下步驟:
[0009] 1)收集嵌入式設(shè)備的固件(包括未解壓成功的固件和人工認(rèn)定已解壓成功的固 件,且已知每個(gè)樣本固件是否已解壓成功),并將其作為試驗(yàn)樣本集;
[0010] 2)提取步驟1)中試驗(yàn)樣本集中所有固件的信息賭譜(簡稱為固件賭譜);
[0011] 3)提取步驟2)中所獲取的固件賭譜的指紋特征;
[0012] 4)針對步驟3)中提取的固件賭譜的指紋特征作標(biāo)準(zhǔn)化處理;
[0013] 5)采用機(jī)器學(xué)習(xí)的思想,輔W交叉驗(yàn)證的方法,通過分類器對步驟4)中標(biāo)準(zhǔn)化處 理后的固件賭譜的指紋特征進(jìn)行交叉驗(yàn)證重復(fù)訓(xùn)練,即可得到一組訓(xùn)練好的分類器,并統(tǒng) 計(jì)各分類器的判斷準(zhǔn)確率;
[0014] 6)任選取一個(gè)非試驗(yàn)樣本集固件(或稱為待測試固件,未知其是否解壓成功),依 據(jù)步驟2)~3)提取其賭譜及賭譜指紋特征,并將其作為測試樣本導(dǎo)入上述訓(xùn)練好的各分類 器,記錄各分類器的判斷結(jié)果;而后依據(jù)各分類器的判斷準(zhǔn)確率對其所判斷結(jié)果進(jìn)行加權(quán) 計(jì)算(各分類器所占權(quán)重依據(jù)其在試驗(yàn)樣本集中的判斷表現(xiàn)而定),統(tǒng)計(jì)加權(quán)計(jì)算后解壓成 功或失敗的次數(shù);若解壓成功次數(shù)居多,則認(rèn)為該固件已成功解壓;反之,認(rèn)為該固件未解 壓成功。
[001引進(jìn)一步地,步驟2)中,提取固件的信息賭譜,主要通過編寫自動(dòng)化腳本程序來批量 化提取固件的信息賭譜。
[0016] 進(jìn)一步地,步驟3)中,提取步驟2)中所獲取固件信息賭譜的特征時(shí),計(jì)算步驟2)中 所獲取的固件賭譜的梯度能量,并將其作為固件賭譜的空域特征。
[0017] 進(jìn)一步地,步驟3)中,提取步驟2)中所獲取固件信息賭譜的特征時(shí),對步驟2)中所 獲取的固件賭譜作DCT變換(離散余弦變換),并選擇計(jì)算DCT系數(shù)中拉普拉斯分布尺度參數(shù) 的方差作為固件賭譜的DCT特征。
[0018] 進(jìn)一步地,步驟3)中,提取步驟2)中所獲取固件信息賭譜的特征時(shí),對步驟2)中所 獲取的固件賭譜作二級小波變換,并選擇其變換后6個(gè)高頻子帶化Hi,化1,皿1,L此,化2,Η出) 的四階統(tǒng)計(jì)矩(期望,方差,偏斜度,峰度)作為固件賭譜的小波域特征。
[0019] 進(jìn)一步地,步驟3)中,提取步驟2)中所獲取固件信息賭譜的特征時(shí),設(shè)定固件賭值 的上界和下界,采用施密特觸發(fā)器算法將固件賭譜二值化,將二值化后高賭段的占比亦作 為固件賭譜的特征。
[0020] 進(jìn)一步地,步驟4)中,采用Z-Score標(biāo)準(zhǔn)化方法對步驟3)中所提取到的各域固件賭 譜特征作標(biāo)準(zhǔn)化處理,一定程度上簡化了計(jì)算,消除了量綱帶來的影響。
[0021] 進(jìn)一步地,步驟5)中,采用機(jī)器學(xué)習(xí)的思想,輔WK折交叉驗(yàn)證的方法,通過分類器 交叉重復(fù)訓(xùn)練,即會(huì)得到一組訓(xùn)練好的分類器,并統(tǒng)計(jì)各分類器的分類準(zhǔn)確率。
[0022] 進(jìn)一步地,步驟6)中,采用加權(quán)統(tǒng)計(jì)的思想對各分類器的判斷結(jié)果進(jìn)行計(jì)算,比較 各判斷結(jié)果中(解壓成功或失敗)出現(xiàn)的加權(quán)次數(shù),并W次數(shù)較多者作為固件是否解壓成功 的最終判定結(jié)果。
[0023] 本發(fā)明可W獲得W下有益效果:
[0024] 本發(fā)明在提取固件賭譜的特征時(shí),巧妙地將處理圖像信號的方法應(yīng)用于固件賭 譜,從多個(gè)角度分析固件賭譜的特性,選擇提取梯度能量、DCT系數(shù)中拉普拉斯分布尺度參 數(shù)的方差、二級小波變換后6個(gè)高頻子帶的四階統(tǒng)計(jì)矩共計(jì)26維屬性作為固件賭譜的特征, 擴(kuò)展了賭譜特征的維度,一定程度上增強(qiáng)了所得結(jié)果的可靠性與穩(wěn)定性。
[0025] 本發(fā)明在提取固件賭譜施密特二值化后的高賭段的占比特征時(shí),通過設(shè)置正向賭 闊值和負(fù)向賭闊值,利用正向賭闊值和負(fù)向賭闊值之間的回差有效避免了賭值在多次穿越 單一闊值時(shí)所產(chǎn)生的干擾。
[0026] 本發(fā)明在對固件賭譜特征進(jìn)行處理時(shí),采用Z-Score標(biāo)準(zhǔn)化方法對固件賭譜特征 作標(biāo)準(zhǔn)化處理,簡化了計(jì)算,消除了量綱帶來的影響,減弱了編譯器、處理器等的異構(gòu)性帶 來的干擾。
[0027] 本發(fā)明在訓(xùn)練分類器時(shí),采用機(jī)器學(xué)習(xí)的思想,并輔WK折交叉驗(yàn)證的方法,對其 進(jìn)行多次交叉重復(fù)訓(xùn)練,確保了所訓(xùn)練分類器的穩(wěn)定性與可靠性;而后再通過加權(quán)統(tǒng)計(jì)的 方法計(jì)算各判斷結(jié)果的累計(jì)加權(quán)次數(shù),選擇W次數(shù)居多者作為對固件是否解壓成功的最終 判定結(jié)果,亦保證了所得結(jié)果的準(zhǔn)確性。
【附圖說明】
[0028] 圖1為本發(fā)明所提出方法的原理框圖。
[0029] 圖2(a)為本發(fā)明所提出方法中分類器訓(xùn)練的流程框圖,圖2(b)為本發(fā)明所提出方 法中判斷某未知固件是否解壓成功的流程框圖。
[0030] 圖3為360某安全路由的固件解壓前的賭譜。
[0031] 圖4為360某安全路由的固件解壓成功后的賭譜。
[0032] 圖5為360某安全路由的固件賭譜進(jìn)行施密特二值化后的賭譜。
[0033] 圖6為二級化ar小波變換后的頻域分解示意圖。
[0034] 圖7為SVM分類器(尋找最優(yōu)超平面)的原理示意圖。
【具體實(shí)施方式】
[0035] 下面結(jié)合示例性實(shí)施例對本發(fā)明作出具體說明。
[0036] 該方法的總體流程框圖如圖2所示。主要包括:
[0037] a)首先,收集嵌入式設(shè)備的固件(包括未解壓成功的固件和人工認(rèn)定已解壓成功 的固件,且已知每個(gè)樣本固件是否已解壓成功),并將其作為試驗(yàn)樣本集。
[0038] b)通過binwalk的-E命令批量獲取每一個(gè)樣本固件的賭譜。圖3為360某安全路由 的固件解壓前的賭譜,圖4為該固件成功解壓后的賭譜,在計(jì)算樣本固件的賭值時(shí),須將固 件劃分為多個(gè)分片(如每個(gè)分片取64Bytes),而后對每一分片計(jì)算信息賭,圖中橫坐標(biāo) Of f set表示當(dāng)前分片的偏移地址,縱坐標(biāo)化tropy表示對應(yīng)偏移地址的賭值。
[0039] C)計(jì)算b)中所獲取固件賭譜的梯度能量,將其作為固件賭譜的空域特征。
[0040] 對于函數(shù)f(i,j),其坐標(biāo)(i,j)處的梯度定義為:
[0041]
[0042] 對于離散圖像信號(本發(fā)明將步驟C)中得到的賭譜作為圖像信號來處理)I(i,j), 可用差分近似上述公式:
[0043]
[0044] 梯度反映的是信號變化率,固件壓縮與解壓縮前后,其賭譜的梯度將發(fā)生比較明 顯的變化,因此可選擇梯度作為空域特征。提取過程如下:
[0045] 1)計(jì)算垂直方向的梯度能量GEv:
[0046]
[0047] 其中,Nh和佩分別表示圖像I的高和寬(像素?cái)?shù)),I(x,y)表示圖像I中坐標(biāo)為(x,y) 處的像素值。
[0048] 2)計(jì)算水平方向梯度能量GEh:
[0049]
[0050] 3)計(jì)算總的梯度能量fi:
[0化1] fi = GEv+GEH
[0052] 本質(zhì)上,運(yùn)種梯度計(jì)算方法是通過考查固件壓縮與解壓縮前后其賭譜圖像空間平 滑度的