新四季網

一種跨架構的二進位程序漏洞函數關聯方法與流程

2023-06-07 00:24:31

本發明涉及二進位程序漏洞挖掘與逆向分析領域,具體涉及一種跨架構的二進位程序漏洞函數關聯方法,屬電腦程式檢測
技術領域:
:。
背景技術:
::隨著全球信息技術的高速發展和信息化系統、信息化產品的迅速普及,計算機軟體已經成為世界經濟、科技、軍事和社會發展的重要組成。實踐表明,絕大部分的信息安全事件都是攻擊者藉助軟體漏洞發起。因此,安全漏洞是直接影響信息安全系統的決定性因素,有必要對軟體漏洞進行分析與利用。漏洞分析按被分析的對象可分為源碼級與二進位級。源碼級的漏洞分析技術是直接對用高級語言編寫的程序進行分析。分析者可以利用原始碼中豐富完整的語義信息,通過一系列漏洞分析技術,發現程序中的編碼錯誤以及設計缺陷。但在實際應用中大量商業軟體均以二進位代碼形式存在,原始碼卻難以獲取。因此,二進位程序漏洞分析逐漸成為了信息安全領域的一個重要分支。函數關聯技術主要基於二進位代碼相似性檢測。早期的應用場景是計算針對同架構編譯的兩個二進位文件的相似度來進行函數關聯,由於是針對同架構進行編譯,反彙編後得到的彙編程序是同一個指令集的,因此可以將彙編程序看成是字符串,直接進行相似性分析和處理。2013年,arunlakhotia提出了一種語義模板的方法用於相似代碼片段的快速定位。2014年,yanivdavid採用字符編譯距離來計算基本塊的相似程度。然而,研究人員發現,如果編譯二進位文件時採用的編譯優化選項不同,那麼即使是同一段源碼反彙編得到的彙編程序也存在很大差異,這就意味著對彙編程序表現形式依賴較強的方法對編譯優化選項敏感,所以研究人員將研究點轉向了對彙編程序表現形式依賴較低的語義信息,開始提取程序片段的語義信息作為特徵。2014年,jannikpewny提出了一種基於語義籤名的漏洞關聯算法,將基本塊內指令轉化為表達式,並存儲為樹結構,採用樹編譯距離計算相似度,並實現了原型tedem。同年,manuelegele提出了一種基於動態插裝技術的二進位代碼相似性檢測方法,主要是模擬函數動態運行環境作為函數的特徵來進行代碼檢索,它通過從函數入口基本塊開始沿某執行路線再次執行來保證每個基本塊至少被執行一次,並實現了原型blex。後來,越來越多的iot廠家將第三方代碼庫編譯並部署在不同的cpu平臺上,這就意味著能夠在針對任意架構編譯的二進位文件中搜索漏洞函數的需求將會越來越大。已有的函數關聯技術或由於方法局限(例如基於檢測彙編程序字符串相似程度的函數關聯技術)、或由於工具局限(例如動態插裝工具pin只面對x86平臺)並不能直接應用到跨架構的場景中來。2015年jannikpewny在s&p上發表了cross-architecturebugsearchinbinaryexecutables。該論文首次提出了跨架構這個應用場景,採用提升中間語言表示、數值採樣和最小哈希等方法實現了跨架構的(x86,arm,mips)基本塊語義信息提取。但該方法的準確率並不理想,使用該方法用來比較分別針對arm架構和mips架構的openssl固件的函數相似程度時rank1剛達到32.4%。因此有必要對跨架構的漏洞關聯技術進行研究,提出一種準確率較高的關聯方法。目前,缺少一種實現簡單的,準確率高的,跨架構的二進位程序漏洞關聯技術。技術實現要素:本發明目的在於提供一種跨架構的二進位程序漏洞函數關聯方法。本發明涉及的方法流程主要包括:對二進位文件進行逆向分析獲得待測函數庫,計算待測函數與漏洞函數的數值相似度;從函數調用圖中截取待比較的兩個函數的局部結構信息構成兩個結構子圖;將兩個結構子圖分層抽象為賦權二部圖,採用二部圖匹配算法計算賦權二部圖最大權匹配,加權求和作為兩個函數的整體相似度,並據此進行排序;基於roc曲線計算判定閾值,相似度大於判定閾值的函數被判定為疑似漏洞函數,進行下一步分析,反之判定為正常函數,不作處理。本發明的技術創新點在於計算相似度時重構函數控制流圖算法和計算整體相似度時結構化匹配算法。本發明融合了函數的數值信息與結構信息,特徵的提取不依賴特定的指令集,可以對不同架構下的二進位文件進行函數關聯,結果準確率高,實現簡單。為實現上述目的,本發明採用如下技術方案:一種跨架構的二進位程序漏洞函數關聯方法,主要包含以下3個步驟:1)計算待測函數與漏洞函數的數值相似度。首先對二進位文件進行逆向分析獲得待測函數庫;提取待測函數間調用關係信息(即函數調用圖)、函數內控制流圖信息、函數基本屬性信息三方面信息進行數值化處理,作為函數的特徵向量;採用自編譯的、多平臺、帶符號表的函數集作為訓練樣本,對集成分類器進行訓練;計算待測函數與漏洞函數的各特徵的相似度構成相似度向量,帶入集成分類器中進行預測,得到數值相似度。2)構造賦權二部圖,採用二部圖算法計算整體相似度。從函數調用圖中截取待比較的兩個函數的局部結構信息構成兩個結構子圖,截取的層數可以根據實際需要來確定。將兩個結構子圖分層抽象為賦權二部圖,其中節點集為兩個結構子圖對應層包含的函數,邊集為任意兩個函數的相似程度,邊權為上一步計算得到數值相似度,然後採用二部圖匹配算法分層計算賦權二部圖的最大權匹配,加權求和作為待測函數與漏洞函數的整體相似度。3)根據基於roc曲線計算的判定閾值進行判定。獲得待測函數集與漏洞函數的整體相似度向量繪製roc曲線,取y-x曲線的最高點對應的閾值作為判定閾值,相似度大於判定閾值的函數被判定為疑似漏洞函數,反之判定為正常函數。構成roc曲線的每個點為(x,y),那麼(x,y-x)構成的曲線即為基於roc曲線的y-x曲線,其中x定義域為m。本發明可以獲得以下有益效果:本發明在計算待測函數與漏洞函數的數值相似度時,主要考慮了調用關係特徵、棧空間特徵、字符串特徵、代碼規模特徵、路徑序列特徵、路徑基本特徵,度序列特徵、度基本特徵,圖規模特徵等9個方面特徵,較為完整的反映了一個函數的典型特徵,特徵的提取不依賴特定的指令集,因此本發明可以對針對兩個不同架構編譯的二進位文件進行漏洞關聯。同時,在提取特徵時,採用編寫ida插件的方式從ida分析結果中進行提取,而ida本身對不同架構的二進位文件進行逆向分析構造函數控制流圖時具有差異,本發明提出了函數控制流圖重構算法,一定程度上還原了函數控制流圖的真實結構,提高了函數特徵提取的準確度。本發明在在融合函數的數值信息和結構信息時,採用了截取函數調用圖,構造賦權二部圖計算最大權匹配的方法。假設距離待檢函數越近的函數節點對匹配的貢獻越大,按距離待檢函數的跳數對函數節點進行分層,使用kuhn-munkres算法對單層函數節點進行最小二分圖匹配得到單層的相似度,最後將各層的相似度加權求和得到函數整體相似度。該方法在計算待匹配函數的整體相似度時,基於函數間的調用信息,考慮到了其他函數對的相似程度對待匹配函數對的影響。相比僅用數值的方法,更為客觀和準確。本發明與現有的技術比,不依賴特定的指令集,可以對不同架構的二進位文件進行漏洞關聯,實現簡單,易於推廣。附圖說明圖1為方案流程示意圖;圖2為ida對不同架構下的函數分析的cfg圖差異較大示意圖,其中(a)針對arm架構編譯的busybox-1.20.0的mencap_main函數的cfg圖,(b)針對mips架構編譯的busybox-1.20.0的mencap_main函數的cfg圖;圖3為重構函數控制流圖示意圖;圖4為結構子圖分層示意圖;圖5為構造賦權二部圖示意圖;圖6為基於roc曲線確定最佳閾值示意圖。具體實施方式一種跨架構的二進位程序漏洞關聯方法,具體實施方式如下:1)編寫ida插件對二進位文件進行逆向分析,獲得待測函數庫以及函數基本屬性、函數調用圖和函數控制流圖。2)計算待測函數與漏洞函數的數值相似度。整個過程包括數值特徵提取,相似度計算和神經網絡預測相似度三個步驟。在數值特徵提取階段,分別從函數基本屬性、函數調用圖和函數控制流圖三個方面進行數值特徵提取。主要提取待測函數的調用關係特徵、字符串特徵、棧空間特徵、代碼規模特徵、路徑序列特徵、路徑基本特徵,度序列特徵、度基本特徵,圖規模特徵等九方面特徵。這九方面特徵較為完整地反映了一個函數的典型屬性。分析函數調用圖,計算每一待測函數被其他函數調用的次數、計算該函數調用其他函數的次數及去重後的次數,構成了調用關係特徵。分析函數基本屬性,計算棧空間,構成棧空間特徵;計算跳轉指令個數、指令個數,代碼量,構成代碼規模特徵;計算調用的字符串數量和調用的字符串集合,構成字符串特徵。在對函數控制流圖進行分析之前,對不能直接採用ida分析的函數控制流圖(cfg圖)進行特徵提取。在少數情況下,同一函數在不同架構下的cfg圖會有很大不同,比如busybox的memcap_main函數,它在arm架構和mips架構下的cfg圖有很大差別,如圖2所示。這是由於,每種平臺的cpu指令集都由對應的ida處理器模塊負責處理。但各平臺處理器模塊生成cfg圖的策略並不相同,例如busybox的rmdir_main函數,arm平臺bl指令對基本塊進行劃分,而mips平臺下的jal(同為函數調用指令)不對基本塊進行劃分。為了統一cfg圖的的基本塊劃分規則,我們需要對cfg圖進行重建,重構算法如下a)識別函數所有基本塊的頭尾地址和原始邊端點地址。b)按基本塊頭地址升序順序對所有基本塊進行排序,統計每個基本塊的入度和出度。c)按基本塊頭地址升序順序對基本塊從小到大進行掃描。如果第n個基本塊的出度為0且第n+1個基本塊入度為0,則合併這兩個基本塊為新的第n個基本塊,刪除原第n個和原第n+1個基本塊,並對以原第n+1個基本塊的頭地址為端點地址的邊進行重置,改為以第n個基本塊的頭地址作為端點地址;如果第n個基本塊的出度為0且第n+1個基本塊入度不為0,則添加一條由第n個基本塊指向第n+1個基本塊的邊,其端點信息為第n個基本塊的頭地址和端點信息為第n個基本塊的頭地址。d)直至掃描到最後一個基本塊,重構過程結束。用python實現的重構cfg圖算法源碼如下,其中輸入參數bblist指所有基本塊的頭尾構成的列表,edgelist是ida分析的所有原始邊的列表,startpoint是該函數入口地址,其中輸出todic是重建cfg圖所有邊構成的字典,bbdic是重建cfg圖後所有基本塊構成的字典。對busybox的memcap_main函數重建效果如圖3所示。分析函數控制流圖,計算每個節點(即基本塊)的出入度,構造cfg有向圖鄰接矩陣,將函數控制流圖轉化為無向圖,計算每個節點的度,構造cfg無向圖鄰接矩陣。對cfg有向圖鄰接矩陣和cfg無向圖鄰接矩陣進行度分析。基於cfg有向圖鄰接矩陣計算入度升序序列、出度升序序列,基於cfg無向圖鄰接矩陣計算度升序序列,三者構成度序列特徵。基於度升序序列,計算最大度、平均度和度的概率序列。基於度的概率序列計算圖的熵,構造度基本特徵;對cfg無向圖鄰接矩陣進行路徑分析,通過floyd算法或dijkstra算法計算任意兩個節點(即基本塊)的最小距離,構造路徑序列特徵;計算圖平均路徑長度、圖直徑和圖半徑,構成路徑基本特徵。對cfg有向圖鄰接矩陣進行基本屬性分析,計算節點數、邊數、圖的鏈路相率、圖密度、圖的聚類係數,構成cfg圖規模特徵。按以上步驟操作,總共提取函數的調用關係特徵、字符串特徵、棧空間特徵、代碼規模特徵、路徑序列特徵、路徑基本特徵,度序列特徵、度基本特徵和圖規模特徵。在特徵相似度計算階段,基於特徵的表現形式,採用數值型相似度計算方法、基於字符串編輯距離算法的序列相似度計算方法和基於jaccard相似度的集合相似度計算方法,計算待比較函數的每個特徵的相似程度作為集成分類器的輸入向量。在集成分類器預測整體相似度階段,首先採用自編譯的、多平臺、帶符號表的函數集作為訓練樣本,訓練集成分類器。具體方法是:選擇同一份源碼,選擇不同的編譯器,不同的優化選項,針對不同的架構進行編譯,獲得多份二進位可執行文件。對每一份二進位可執行文件進行逆向分析,得到一函數庫並提取每個函數的多維特徵。基於特徵,對不同函數庫間的每兩個函數計算相似度作為集成分類器的輸入向量。如果兩個函數名稱相同,則標籤為1,作為正樣本,如果兩個函數名稱不同,則標籤為0,作為負樣本。建立若干初始分類器。從初始樣本集中有放回的抽取80%的樣本構造若干獨立同分布的子訓練樣本集,作為每個分類器的訓練樣本。將對應的子訓練樣本集輸入分類器進行訓練,根據預測結果,調整分類器的參數直至預測結果符合要求,此時分類器訓練完畢。然後採用訓練好的集成分類器對數值相似度進行預測。對該漏洞函數和每個待測函數提取特徵,計算相似度向量,作為測試樣本。用已經訓練好的集成分類器中若干分類器進行預測得到若干預測值,取其加權平均作為最終預測值作為數值相似度。比如,如果需要得到mips-o2→arm-o2這種匹配模式的訓練樣本。步驟一:對openssl源碼針對mips架構,採用-o2優化選項編譯一份二進位文件,命名為openssl-mips-o2;對openssl源碼針對arm架構,採用-o2優化選項編譯一份二進位文件,命名為openssl-arm-o2。步驟二:對這兩份二進位文件分別進行逆向分析得到兩個函數庫。設openssl-mips-o2的函數庫共有m個函數,名稱為x1-mips-o2,x2-mips-o2,……,xm-mips-o2;openssl-arm-o2的函數庫共有n個函數,名稱為y1-arm-o2,x2-arm-o2,……,yn-arm-o2。對這兩個庫的所有函數計算特徵,一共得到m+n條特徵。步驟三:計算庫間函數相似度向量,得到m×n個相似度向量,如果xi=yj,那麼可以認為openssl-mips-o2庫的函數xi-mips-o2與openssl-arm-o2庫的函數yj-arm-o2是同一個函數,則標籤列為1,是正樣本,反之,認為是負樣本。步驟四:為了正負樣本均衡同時也為了增速,每次對100個openssl-mips-o2的函數和100個openssl-arm-o2的函數,進行兩兩相似度計算和標籤標記,那麼會得到100個正樣本和9900個負樣本。收集全部的正樣本和從9900個負樣本中隨機抽取100個作為負樣本。這樣就得到了min(m,n)個正樣本和同樣數量的負樣本,作為mips-o2→arm-o2這種匹配模式的初始樣本集。3)構造賦權二部圖,採用二部圖匹配算法(例如kuhn-munkres算法)計算整體相似度。整個算法步驟如下:a)從函數調用圖中截取待比較函數的局部結構信息構成兩個結構子圖,其中,截取的層數可以根據實驗效果來確定。b)將截取的結構子圖按離待比較函數的跳數分層(其中,如果結構子圖來自漏洞函數所在的二進位文件的函數調用圖,此處的待比較函數指漏洞函數;如果結構子圖來自待測函數所在的二進位文件的函數調用圖,此處的待比較函數指待測函數),並按對待比較函數的重要程度來賦權重,如圖4所示。c)將兩個子圖對應層抽象為賦權完全二部圖,其中節點集為對應層包含的函數,邊集為節點集中任意兩個函數的相似關係,邊權為對應兩函數的數值相似度,如圖5所示。這樣便得到了多個賦權二部圖。d)對每個賦權二部圖採用二部圖匹配算法分層計算每一層對應的最大權匹配作為對應層的相似度。e)對每層的相似度加權求和作為待比較函數的整體相似度。4)根據基於roc曲線計算的判定閾值進行判定。獲得待測函數集與漏洞函數的整體相似度向量繪製roc曲線。其中roc曲線橫軸是假陽率,即偽正例的比率(fp/(fp+tn));縱軸是真陽率,即真正例的比率(tp/(tp+fn))。roc曲線給出的是當閾值變化時假陽率和真陽率的變化情況,它可用於比較分類器的性能。理想情況下,最佳分類器應位於左上角,意味著分類器在假陽率很低時獲得了高的真陽率,即將真正的漏洞函數檢測了出來,而將很少的正常函數誤判為漏洞函數。越靠近左上角的roc曲線的點是錯誤最少的最佳閾值,其在訓練集上的假陽性和假陰性總數最少,即y-x最大的點,如圖6所示。因此我們將y-x曲線的最高點對應的閾值作為判定閾值,相似度大於判定閾值的函數被判定為疑似漏洞函數,反之判定為正常函數。綜上所述,本發明公開了一種跨架構的二進位程序漏洞關聯技術。上面描述的應用場景及實施例,並非用於限定本發明,任何本領域技術人員,在不脫離本發明的精神和範圍內,可作各種更動和潤飾。因此,本發明的保護範圍視權利要求範圍所界定。當前第1頁12當前第1頁12

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀