一種嵌入式設備固件解壓成功的判斷方法
【技術領域】
[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] 本質上,運種梯度計算方法是通過考查固件壓縮與解壓縮前后其賭譜圖像空間平 滑度的