两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于路徑驅(qū)動的可執(zhí)行程序安全性檢測方法及系統(tǒng)的制作方法

文檔序號:6353937閱讀:460來源:國知局
專利名稱:基于路徑驅(qū)動的可執(zhí)行程序安全性檢測方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種可執(zhí)行程序的安全性檢測方法及系統(tǒng),特別是涉及一 種基于路徑驅(qū)動的可執(zhí)行程序安全性檢測方法及系統(tǒng)。背景技術(shù)
惡意代碼已經(jīng)成為對互聯(lián)計算機系統(tǒng)的一種嚴重威脅,每年都 會造成巨大的經(jīng)濟損失,更為嚴重的是惡意代碼撰寫已經(jīng)形成了一種特有的經(jīng)濟利益鏈。 安全分析人員每天都會發(fā)現(xiàn)大量的惡意代碼,以及變異進化后的惡意代碼,使得更加難以 被檢測或者是逃避分析。目前常用的檢測機制仍然是基于特征匹配的傳統(tǒng)檢測手段,這種 方法的致命弱點是檢測效果的滯后性和單一性。一種新型的病毒出現(xiàn)以后,只有在其發(fā)作 一段時間后才能提取特征,實施檢測防控。另外,一個過時的惡意代碼進行深度變異后也很 難被有效地檢測出來。采用基于行為的惡意代碼分析檢測技術(shù)目前還不是很成熟,程序的 某個操作行為究竟是否帶有惡意很難判斷,大多數(shù)情況下某個操作是否允許都是交給用戶 自行判斷處理,容易造成較多的漏判和誤判。因此,就很有必要探尋更加實用有效的惡意代 碼行為分析檢測技術(shù),輔助研究分析人員有效進行惡意代碼的檢測。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是克服現(xiàn)有技術(shù)的缺陷,提供一種基于路徑驅(qū)動的可執(zhí)行 程序安全性檢測方法及系統(tǒng),本發(fā)明可以大大減小安全分析人員的代碼分析工作量。本發(fā)明的技術(shù)方案
一種基于路徑驅(qū)動的可執(zhí)行程序安全性檢測方法,首先根據(jù)系統(tǒng)的正常功能定義目標 待分析程序的正常行為約束,而非直接定義針對該系統(tǒng)的惡意行為,然后采用靜態(tài)程序分 析和動態(tài)程序執(zhí)行相結(jié)合的方法獲得目標待分析程序完成系統(tǒng)正常功能所需要的最大工 作閉環(huán)和冗余路徑,最后,對冗余路徑上的程序行為進行語義解釋,根據(jù)系統(tǒng)正常行為約束 判斷冗余路徑中是否存在針對該系統(tǒng)的惡意攻擊行為。根據(jù)系統(tǒng)的正常功能定義目標待分析程序的正常行為約束的過程如下 第一、根據(jù)產(chǎn)品功能說明書和操作行為規(guī)范說明書列舉系統(tǒng)的正常功能;
第二、根據(jù)產(chǎn)品功能說明書和操作行為規(guī)范說明書列舉系統(tǒng)在特殊情況下的表現(xiàn); 第三、將系統(tǒng)的正常功能和特殊情況下的表現(xiàn)用形式化的語言描述,形成系統(tǒng)正常行 為約束集。形式化的語言為LTL線性時態(tài)邏輯語言,或為CTL計算樹邏輯語言。采用靜態(tài)程序分析和動態(tài)執(zhí)行相結(jié)合的方法獲得目標待分析程序完成系統(tǒng)正常 功能所需要的最大工作閉環(huán)和冗余路徑的過程如下
步驟一、利用程序靜態(tài)分析技術(shù)獲得目標待分析程序的關(guān)鍵信息,這些關(guān)鍵信息含有 目標待分析程序的基本操作單元劃分、基本操作單元之間的邏輯跳轉(zhuǎn)關(guān)系、路徑分支點和 路徑條件;
步驟二、執(zhí)行目標待分析程序,根據(jù)路徑條件對“污點”變量賦值; 步驟三、在路徑分支點中的第一個分支節(jié)點處中斷執(zhí)行,判斷該分支節(jié)點處的分支是 否涉及“污點”變量;如果該分支節(jié)點處的分支涉及“污點”變量,則在分支處對系統(tǒng)做“快照”處理;如果該分支節(jié)點處的分支不涉及“污點”變量,則繼續(xù)執(zhí)行目標待分析程序,并進 入相應(yīng)的路徑分支,如果相應(yīng)的路徑分支涉及“污點,,變量,則在相應(yīng)的路徑分支處對系統(tǒng) 做“快照”處理,直到該條路徑探測完畢;
步驟四、一條路徑探測完畢,對該路徑上的語義進行解釋,判斷該路徑上主要做了什么 操作,并對操作做記錄;
步驟五、按照深度優(yōu)先原則向上回溯至前一分支節(jié)點,加載該分支節(jié)點處的系統(tǒng)“快 照”,在保證系統(tǒng)運行內(nèi)存一致性的前提下修改該分支節(jié)點上的“污點”變量,將程序驅(qū)動至 其他路徑分支,挖掘該路徑分支上的行為;
步驟六、判斷該路徑分支上的行為是否覆蓋了系統(tǒng)的正常行為?如不是,重新回到步 驟二;如是,則找到了該目標待分析程序的最大工作閉環(huán),未執(zhí)行到的路徑分支為冗余路 徑。如今各行各業(yè)的各種電子設(shè)備幾乎都要用到控制程序,而各個程序運行的環(huán)境、 處理器平臺又各不相同。因此針對功能、品種、設(shè)計方法互不相同的電子設(shè)備,惡意行為可 以視為一個無限膨脹的集合,很難給出準確的定義,或者界定其范圍。然而,系統(tǒng)的正常功 能范圍是可以認知的,正常功能多是一些基本操作行為的重新組合,這些基本操作行為需 要按照某種規(guī)范進行,所以系統(tǒng)的正常行為在某種條件下是可以被充分認識的有限集合。本發(fā)明通過在線提取和系統(tǒng)初步分析的方法,確定系統(tǒng)正常運行時表現(xiàn)出來的行 為特征,以此為基礎(chǔ)形成對系統(tǒng)正常功能的約束集,然后遍歷目標程序的可執(zhí)行路徑。在遍 歷執(zhí)行的過程中監(jiān)測程序是否有違反系統(tǒng)正常功能約束集的行為,定義該種行為為越界行 為,并在程序控制流圖上對越界行為進行著色標記。最后再通過識別行為特征、邏輯推理的 方法進一步地確定可疑攻擊路徑。
按照本發(fā)明的基于路徑驅(qū)動的可執(zhí)行程序安全性檢測方法設(shè)計出的基于路徑驅(qū)動的 可執(zhí)行程序安全性檢測系統(tǒng)的工作過程如下
步驟a、首先利用產(chǎn)品功能說明書和操作行為規(guī)范說明書獲得所檢系統(tǒng)的正 常功能,并將該正常功能用形式化的語言表示出來,作為所檢系統(tǒng)正常行為約束輸入 到惡意行為分析系統(tǒng)中;
步驟b、提取核心控制芯片內(nèi)部的目標控制程序(二進制代碼),將其反匯編成可調(diào)試的 源碼,作為惡意行為分析系統(tǒng)的原始輸入數(shù)據(jù),也就是分析對象;
步驟C、惡意行為分析系統(tǒng)對源碼進行分析預(yù)處理,并將不同結(jié)構(gòu)的源碼用統(tǒng)一的中間 語言表示,以便于分析,同時提取目標控制程序的控制流圖;提取出來的控制流圖包含了目 標控制程序所有的可執(zhí)行路徑和每條路徑上的操作節(jié)點;每個操作節(jié)點代表目標控制程序 中的一個操作基本單元,操作基本單元是按照跳轉(zhuǎn)語句來劃分的; 步驟d、對目標控制程序進行靜態(tài)分析;
步驟e、動態(tài)地執(zhí)行目標控制程序,形成所檢系統(tǒng)正常工作情況下的最大工作狀態(tài)閉 環(huán)和越界行為集;針對越界行為集中的操作路徑做深度行為特征挖掘,根據(jù)所檢系統(tǒng)正常 行為約束,綜合推理判斷越界行為集中是否包含有對所檢系統(tǒng)狀態(tài)進行修改或者破壞的行 為,進而判斷目標控制程序是否含有可疑攻擊行為。步驟d中的靜態(tài)分析含有三個基礎(chǔ)性的工作
第一.對目標控制程序按照操作基本單元進行語義解釋,明確每個操作基本單元對所檢系統(tǒng)究竟做了什么樣的操作;
第二 .建立每個操作基本單元與程序執(zhí)行空間的內(nèi)存映射表,明確每個操作基本單元 對應(yīng)在內(nèi)存中的起始地址和末尾地址;建立各個操作基本單元之間的跳轉(zhuǎn)關(guān)系,這種跳轉(zhuǎn) 關(guān)系與控制流圖是等價的,前者相較于后者更便于定位查找;
第三.計算程序中各個分支點上的路徑條件,形成一個全路徑條件集合;全路徑條件 集合明確地表明目標控制程序中存在多少條路徑,以及將程序驅(qū)動至該路徑上需要滿足什 么樣的輸入條件。步驟e中,通過動態(tài)執(zhí)行目標控制程序發(fā)現(xiàn)所檢系統(tǒng)正常工作情況下的最大工作 狀態(tài)閉環(huán)需要遍歷到程序內(nèi)部的所有路徑,即全路徑探測,其過程如下
步驟e 1.確定程序分支點首先需要通過對目標控制程序做靜態(tài)分析,找目標控制 程序中的分支點;分支點是在控制流圖中決定程序執(zhí)行哪一條路徑的關(guān)鍵結(jié)點,其在程序 分析中占重要地位;
步驟e 2.確定“污點”輸入變量集“污點”輸入變量是指能夠決定程序分支的變量, “污點”輸入變量集是“污點”輸入變量的集合;
步驟e 3.在程序運行到分支點時,對所檢系統(tǒng)作“快照處理”,保存當(dāng)前處理器運行到 這個分支點的所有所檢系統(tǒng)狀態(tài),所檢系統(tǒng)狀態(tài)包括相關(guān)內(nèi)存空間的數(shù)據(jù)和關(guān)鍵寄存器中 的數(shù)據(jù);確定該分支點所依賴的變量,即該分支點的有效“污點”輸入變量,依據(jù)路徑條件對 其賦值,將程序驅(qū)動至某條路徑分支。步驟e 4.在路徑分支上的操作都執(zhí)行完后,對該路徑分支上的操作進行語義解 釋,對操作行為的功能屬性進行挖掘;
步驟e 5.按照深度優(yōu)先原則,使處理器回溯至前一個分支點;回溯操作主要是通過 加載步驟e 3所做的“快照處理”來實現(xiàn);回溯到指定分支點后按照前面記錄的路徑條件修 改該分支點所對應(yīng)的有效“污點”輸入變量的值,將程序驅(qū)動至其它路徑分支;
步驟e 6.重復(fù)執(zhí)行步驟e 4、步驟e 5直至該路徑分支上的行為覆蓋了所檢系統(tǒng)的正 常行為后程序執(zhí)行完畢。步驟e 2中的“污點”輸入變量集中含有鍵盤接口、溫度傳感、時間控制模塊、無線 通信接口、網(wǎng)絡(luò)接口、注冊表讀寫函數(shù)和文件讀寫函數(shù)。步驟e 5中修改該分支點所對應(yīng)的有效“污點”輸入變量的值時需保證處理器的 內(nèi)存一致,保證處理器的內(nèi)存一致的方法如下
第一、通過對目標控制程序的靜態(tài)分析,建立內(nèi)存“污點”映射表和逆映射表;在內(nèi)存 “污點”映射表里對感興趣的“污點”輸入變量的名稱和內(nèi)存地址進行符號標記,在逆映射 表里記錄某個符號所關(guān)聯(lián)到的所有內(nèi)存地址;
第二、在對目標控制程序進行動態(tài)執(zhí)行分析的時候,使用一系列符號公式來表示“污 點”輸入變量之間的依賴關(guān)系或者構(gòu)建符號約束系統(tǒng);
第三、在分支點處修改某個“污點”輸入變量的值,以驅(qū)動目標控制程序到特定路徑 時,要首先找到所有與此“污點”輸入變量的符號標記相關(guān)聯(lián)的符號及符號公式,形成符號 約束公式組;
第四、利用約束求解器對該符號約束公式組進行求解,根據(jù)求解的結(jié)果進行相關(guān)“污 點”輸入變量的修改。
惡意行為分析系統(tǒng)主要含有如下幾部分1.目標程序執(zhí)行環(huán)境;2.目標程序靜態(tài) 分析工具;3.目標程序控制流圖提取工具;4.目標程序執(zhí)行控制及狀態(tài)通信接口;5.目標 程序行為分析環(huán)境。目標程序靜態(tài)分析工具和目標程序控制流圖提取工具在整個系統(tǒng)中起 到基礎(chǔ)性的作用,其中目標程序控制流圖提取工具提取目標控制程序的控制流圖,作為行 為分析的主要操作對象;目標程序靜態(tài)分析工具對目標控制程序作初步分析確定程序路徑 分支點,控制基本塊之間的邏輯跳轉(zhuǎn)關(guān)系以及局部性的路徑條件。目標程序執(zhí)行環(huán)境主要 提供正確的執(zhí)行空間。本發(fā)明的有益效果
1、本發(fā)明對目標控制程序采用靜態(tài)分析和動態(tài)執(zhí)行相結(jié)合的方法,先通過靜態(tài)分析法 對目標控制程序劃分操作基本單元,對操作基本單元進行語義解釋,構(gòu)建基本塊之間的邏 輯跳轉(zhuǎn)關(guān)系圖,以及分支點路徑條件;然后再通過對目標控制程序動態(tài)執(zhí)行的方法找出目 標控制程序完成系統(tǒng)正常功能所需要的最大工作閉環(huán),與系統(tǒng)正常行為約束相比較得到越 界行為集。這可以大大減小安全分析人員的代碼分析工作量。2、本發(fā)明在動態(tài)分析過程中采用了基于回溯機制全路徑探測執(zhí)行方法,可以做到 全路徑搜索,有效應(yīng)對那些基于觸發(fā)機制的惡意代碼;在路徑條件修改時通過建立“污點” 輸入變量約束系統(tǒng)和約束求解,以達到在不改變系統(tǒng)內(nèi)存一致性的情況下修改路徑變量, 有力地支持了全路徑探測。

圖1為程序安全性檢測過程示意圖; 圖2為程序安全性檢測系統(tǒng)功能模塊組成示意圖; 圖3為示例程序控制流結(jié)構(gòu)圖。具體實施例方式
一種基于路徑驅(qū)動的可執(zhí)行程序安全性檢測方法,首先根據(jù)系統(tǒng)的正常功能定義目標 待分析程序的正常行為約束,然后采用靜態(tài)程序分析和動態(tài)程序執(zhí)行相結(jié)合的方法獲得目 標待分析程序完成系統(tǒng)正常功能所需要的最大工作閉環(huán)和冗余路徑,最后,對冗余路徑上 的程序行為進行語義解釋,根據(jù)系統(tǒng)正常行為約束判斷冗余路徑中是否存在針對該系統(tǒng)的 惡意攻擊行為。根據(jù)系統(tǒng)的正常功能定義目標待分析程序的正常行為約束的過程如下 第一、根據(jù)產(chǎn)品功能說明書和操作行為規(guī)范說明書列舉系統(tǒng)的正常功能;
第二、根據(jù)產(chǎn)品功能說明書和操作行為規(guī)范說明書列舉系統(tǒng)在特殊情況下的表現(xiàn); 第三、將系統(tǒng)的正常功能和特殊情況下的表現(xiàn)用形式化的語言描述,形成系統(tǒng)正常行 為約束集。形式化的語言為LTL線性時態(tài)邏輯語言,或為CTL計算樹邏輯語言。采用靜態(tài)程序分析和動態(tài)執(zhí)行相結(jié)合的方法獲得目標待分析程序完成系統(tǒng)正常 功能所需要的最大工作閉環(huán)和冗余路徑的過程如下
步驟一、利用程序靜態(tài)分析技術(shù)獲得目標待分析程序的關(guān)鍵信息,這些關(guān)鍵信息含有 目標待分析程序的基本操作單元劃分、基本操作單元之間的邏輯跳轉(zhuǎn)關(guān)系、路徑分支點和 路徑條件;
步驟二、執(zhí)行目標待分析程序,根據(jù)路徑條件對“污點”變量賦值;步驟三、在路徑分支點中的第一個分支節(jié)點處中斷執(zhí)行,判斷該分支節(jié)點處的分支是 否涉及“污點”變量;如果該分支節(jié)點處的分支涉及“污點”變量,則在分支處對系統(tǒng)做“快 照”處理;如果該分支節(jié)點處的分支不涉及“污點”變量,則繼續(xù)執(zhí)行目標待分析程序,并進 入相應(yīng)的路徑分支,如果相應(yīng)的路徑分支涉及“污點,,變量,則在相應(yīng)的路徑分支處對系統(tǒng) 做“快照”處理,直到該條路徑探測完畢;
步驟四、一條路徑探測完畢,對該路徑上的語義進行解釋,判斷該路徑上主要做了什么 操作,并對操作做記錄;
步驟五、按照深度優(yōu)先原則向上回溯至前一分支節(jié)點,加載該分支節(jié)點處的系統(tǒng)“快 照”,在保證系統(tǒng)運行內(nèi)存一致性的前提下修改該分支節(jié)點上的“污點”變量,將程序驅(qū)動至 其他路徑分支,挖掘該路徑分支上的行為;
步驟六、判斷該路徑分支上的行為是否覆蓋了系統(tǒng)的正常行為?如不是,重新回到步 驟二;如是,則找到了該目標待分析程序的最大工作閉環(huán),未執(zhí)行到的路徑分支為冗余路 徑。
按照本發(fā)明的基于路徑驅(qū)動的可執(zhí)行程序安全性檢測方法設(shè)計出的基于路徑驅(qū)動的 可執(zhí)行程序安全性檢測系統(tǒng)的工作過程如下
步驟a、首先利用產(chǎn)品功能說明書和操作行為規(guī)范說明書獲得所檢系統(tǒng)的正常功能,并 將該正常功能用形式化的語言表示出來,作為所檢系統(tǒng)正常行為約束輸入到惡意行為分析 系統(tǒng)中;
步驟b、提取核心控制芯片內(nèi)部的目標控制程序(二進制代碼),將其反匯編成可調(diào)試的 源碼,作為惡意行為分析系統(tǒng)的原始輸入數(shù)據(jù),也就是分析對象;
步驟C、惡意行為分析系統(tǒng)對源碼進行分析預(yù)處理,并將不同結(jié)構(gòu)的源碼用統(tǒng)一的中間 語言表示,以便于分析,同時提取目標控制程序的控制流圖;提取出來的控制流圖包含了目 標控制程序所有的可執(zhí)行路徑和每條路徑上的操作節(jié)點;每個操作節(jié)點代表目標控制程序 中的一個操作基本單元,操作基本單元是按照跳轉(zhuǎn)語句來劃分的; 步驟d、對目標控制程序進行靜態(tài)分析;
步驟e、動態(tài)地執(zhí)行目標控制程序,形成所檢系統(tǒng)正常工作情況下的最大工作狀態(tài)閉 環(huán)和越界行為集;針對越界行為集中的操作路徑做深度行為特征挖掘,根據(jù)所檢系統(tǒng)正常 行為約束,綜合推理判斷越界行為集中是否包含有對所檢系統(tǒng)狀態(tài)進行修改或者破壞的行 為,進而判斷目標控制程序是否含有可疑攻擊行為。步驟d中的靜態(tài)分析含有三個基礎(chǔ)性的工作
第一.對目標控制程序按照操作基本單元進行語義解釋,明確每個操作基本單元對所 檢系統(tǒng)究竟做了什么樣的操作;
第二 .建立每個操作基本單元與程序執(zhí)行空間的內(nèi)存映射表,明確每個操作基本單元 對應(yīng)在內(nèi)存中的起始地址和末尾地址;建立各個操作基本單元之間的跳轉(zhuǎn)關(guān)系,這種跳轉(zhuǎn) 關(guān)系與控制流圖是等價的,前者相較于后者更便于定位查找;
第三.計算程序中各個分支點上的路徑條件,形成一個全路徑條件集合;全路徑條件 集合明確地表明目標控制程序中存在多少條路徑,以及將程序驅(qū)動至該路徑上需要滿足什 么樣的輸入條件。步驟e中,通過動態(tài)執(zhí)行目標控制程序發(fā)現(xiàn)所檢系統(tǒng)正常工作情況下的最大工作狀態(tài)閉環(huán)需要遍歷到程序內(nèi)部的所有路徑,即全路徑探測,其過程如下
步驟e 1.確定程序分支點首先需要通過對目標控制程序做靜態(tài)分析,找目標控制 程序中的分支點;分支點是在控制流圖中決定程序執(zhí)行哪一條路徑的關(guān)鍵結(jié)點,其在程序 分析中占重要地位;
步驟e 2.確定“污點”輸入變量集“污點”輸入變量是指能夠決定程序分支的變量, “污點”輸入變量集是“污點”輸入變量的集合;
步驟e 3.在程序運行到分支點時,對所檢系統(tǒng)作“快照處理”,保存當(dāng)前處理器運行到 這個分支點的所有所檢系統(tǒng)狀態(tài),所檢系統(tǒng)狀態(tài)包括相關(guān)內(nèi)存空間的數(shù)據(jù)和關(guān)鍵寄存器中 的數(shù)據(jù);確定該分支點所依賴的變量,即該分支點的有效“污點”輸入變量,依據(jù)路徑條件對 其賦值,將程序驅(qū)動至某條路徑分支。步驟e 4.在路徑分支上的操作都執(zhí)行完后,對該路徑分支上的操作進行語義解 釋,對操作行為的功能屬性進行挖掘;
步驟e 5.按照深度優(yōu)先原則,使處理器回溯至前一個分支點;回溯操作主要是通過 加載步驟e 3所做的“快照處理”來實現(xiàn);回溯到指定分支點后按照前面記錄的路徑條件修 改該分支點所對應(yīng)的有效“污點”輸入變量的值,將程序驅(qū)動至其它路徑分支;
步驟e 6.重復(fù)執(zhí)行步驟e 4、步驟e 5直至該路徑分支上的行為覆蓋了所檢系統(tǒng)的正 常行為后程序執(zhí)行完畢。步驟e 2中的“污點”輸入變量集中含有鍵盤接口、溫度傳感、時間控制模塊、無線 通信接口、網(wǎng)絡(luò)接口、注冊表讀寫函數(shù)和文件讀寫函數(shù)。步驟e 5中修改該分支點所對應(yīng)的有效“污點”輸入變量的值時需保證處理器的 內(nèi)存一致,保證處理器的內(nèi)存一致的方法如下
第一、通過對目標控制程序的靜態(tài)分析,建立內(nèi)存“污點”映射表和逆映射表;在內(nèi)存 “污點”映射表里對感興趣的“污點”輸入變量的名稱和內(nèi)存地址進行符號標記,在逆映射 表里記錄某個符號所關(guān)聯(lián)到的所有內(nèi)存地址;
第二、在對目標控制程序進行動態(tài)執(zhí)行分析的時候,使用一系列符號公式來表示“污 點”輸入變量之間的依賴關(guān)系或者構(gòu)建符號約束系統(tǒng);
第三、在分支點處修改某個“污點”輸入變量的值,以驅(qū)動目標控制程序到特定路徑 時,要首先找到所有與此“污點”輸入變量的符號標記相關(guān)聯(lián)的符號及符號公式,形成符號 約束公式組;
第四、利用約束求解器對該符號約束公式組進行求解,根據(jù)求解的結(jié)果進行相關(guān)“污 點”輸入變量的修改。惡意行為分析系統(tǒng)主要含有如下幾部分1.目標程序執(zhí)行環(huán)境;2.目標程序靜態(tài) 分析工具;3.目標程序控制流圖提取工具;4.目標程序執(zhí)行控制及狀態(tài)通信接口;5.目標 程序行為分析環(huán)境。目標程序靜態(tài)分析工具和目標程序控制流圖提取工具在整個系統(tǒng)中起 到基礎(chǔ)性的作用,其中目標程序控制流圖提取工具提取目標控制程序的控制流圖,作為行 為分析的主要操作對象;目標程序靜態(tài)分析工具對目標控制程序作初步分析確定程序路徑 分支點,控制基本塊之間的邏輯跳轉(zhuǎn)關(guān)系以及局部性的路徑條件。目標程序執(zhí)行環(huán)境主要 提供正確的執(zhí)行空間。下面根據(jù)具體應(yīng)用進一步說明本發(fā)明的技術(shù)方案(參見圖1 圖2),我們針對一個目標待分析程序首先要將機器代碼反匯編為人類可以較容易識別的匯編代碼或者更高 級的語言,接著對高級語言代碼進行靜態(tài)分析和動態(tài)行為分析。這里為了表述上的方便我 們使用C語言描述的程序為例介紹基于路徑驅(qū)動的可執(zhí)行程序安全性檢測方法的主要實 施步驟。以下面這個示例程序為分析對象,其控制流結(jié)構(gòu)圖如圖3所示。0:int χ;
1 χ = read_input ();
2:if (x>0)
3:if (x<2)
4:printf( “OK”);
5:else printf( “BAD”);
6: end if
7:else Write_RegEdit(); 8: end if 9:exit (0);
如上述代碼片段所示,由示例代碼這個特殊的程序我們可以歸納總結(jié)出程序的一般結(jié) 果或者稱之為規(guī)律,即程序可以視作一系列執(zhí)行點的組合,在某些節(jié)點會出現(xiàn)執(zhí)行分支,而 且下一步執(zhí)行什么操作完全由某些變量的取值決定。具體分析過程可以分為三個階段
首先第一階段是通過產(chǎn)品說明書和操作規(guī)范書對系統(tǒng)的正常功能和特殊情況下的系 統(tǒng)功能及表現(xiàn)進行充分理解認識,并用形式化的語言進行表述記錄。具體到這個程序它的 正常功能就是打印“0K”或者打印“BAD”,可以用原子操作pi和p2表示。分析的第二階段對目標程序的源碼做靜態(tài)分析,確定程序的分支點、“污點”輸入 集、程序基本塊之間的邏輯跳轉(zhuǎn)關(guān)系、以及分支點的局部路徑條件,并對“污點”變量進行標 記。在上述示例代碼中分支點有兩個,分別為第2行和第3行;標記“污點”變量χ為L0,并 確定在第一個分支點的路徑條件是LO > 0,第二個分支點的路徑條件是LO < 2;由于該代 碼段中沒有跳轉(zhuǎn)語句,因此整個代碼段只有一個基本單元,不存在基本單元之間的邏輯跳 轉(zhuǎn)。分析的第三階段是在靜態(tài)分析的基礎(chǔ)上進行動態(tài)執(zhí)行,探測尋找目標程序在系統(tǒng) 正常工作情況下的最大工作閉環(huán),以及冗余程序執(zhí)行分支。接著對冗余程序執(zhí)行分支進行 語義解釋,挖掘其行為特征,參考系統(tǒng)的正常行為約束判定該冗余程序執(zhí)行分支是否包含 針對該系統(tǒng)的惡意攻擊行為。其主要操作過程如下
(1)執(zhí)行目標待分析程序,根據(jù)靜態(tài)分析的路徑條件對“污點”變量賦值,令x=2。中間 如果遇到“污點”χ參與了某個操作運算,則記錄該“污點”的擴散過程。(2)在第一個分支節(jié)點處中斷執(zhí)行,判斷該分支是否涉及“污點”變量,由于分支 路徑條件用到了“污點”χ,所以在這里對系統(tǒng)做“快照”處理,記做Si ;繼續(xù)執(zhí)行,并進入左 邊分支。(3)在第二個分支節(jié)點判斷處,由于分支路徑條件也用到了“污點”X,所以再次對 系統(tǒng)做“快照”處理,記做S2,繼續(xù)執(zhí)行,并進入右邊分支,退出。這個時候一條路徑Pl已經(jīng) 探測完畢,對該路徑上的語義進行解釋,判斷該路徑Pl上主要做了打印“BAD”的操作。
(4)這時候還有兩條可行路徑P2和P3沒有探測到,按照深度優(yōu)先規(guī)則(算法), 將處理器定點復(fù)位到S2狀態(tài),即加載前面的系統(tǒng)“快照”。在S2狀態(tài)對路徑條件進行
判斷時都用到了被標記為LO的變量X,綜合地對變量χ進行約束求解得到0<x<2。在Sl狀 態(tài)對變量χ的值進行重新賦值,令x=l,繼續(xù)執(zhí)行,退出。這個時候另一條路徑P2已經(jīng)探測 完畢,對該路徑上的語義進行解釋,判斷該路徑主要做了打印“0K”的操作。這個時候系統(tǒng) 正常工作情況下的最大工作閉環(huán)已經(jīng)找到,即Pl和P2。而P3為冗余路徑,該路徑上是否包 含有對系統(tǒng)的惡意攻擊行為需要進一步分析檢測。(5)按照深度優(yōu)先規(guī)則(算法),將處理器定點復(fù)位到Sl狀態(tài),對χ重新賦值,令其 為SO狀態(tài)的Pl路徑的反值χ = _2,繼續(xù)執(zhí)行,發(fā)現(xiàn)程序改寫了注冊表的某個鍵值,這個行 為屬于該系統(tǒng)的敏感操作,可能會對系統(tǒng)造成重大影響,因此判斷目標待分析程序的該路 徑分支包含有惡意攻擊行為。(6)分析結(jié)束。
權(quán)利要求
1.一種基于路徑驅(qū)動的可執(zhí)行程序安全性檢測方法,其特征是首先根據(jù)系統(tǒng)的正常 功能定義目標待分析程序的正常行為約束,然后采用靜態(tài)程序分析和動態(tài)程序執(zhí)行相結(jié)合 的方法獲得目標待分析程序完成系統(tǒng)正常功能所需要的最大工作閉環(huán)和冗余路徑,最后, 對冗余路徑上的程序行為進行語義解釋,根據(jù)系統(tǒng)正常行為約束判斷冗余路徑中是否存在 針對該系統(tǒng)的惡意攻擊行為。
2.根據(jù)權(quán)利要求1所述的基于路徑驅(qū)動的可執(zhí)行程序安全性檢測方法,其特征是所 述根據(jù)系統(tǒng)的正常功能定義目標待分析程序的正常行為約束的過程如下第一、根據(jù)產(chǎn)品功能說明書和操作行為規(guī)范說明書列舉系統(tǒng)的正常功能; 第二、根據(jù)產(chǎn)品功能說明書和操作行為規(guī)范說明書列舉系統(tǒng)在特殊情況下的表現(xiàn); 第三、將系統(tǒng)的正常功能和特殊情況下的表現(xiàn)用形式化的語言描述,形成系統(tǒng)正常行 為約束集。
3.根據(jù)權(quán)利要求2所述的基于路徑驅(qū)動的可執(zhí)行程序安全性檢測方法,其特征是所 述形式化的語言為LTL線性時態(tài)邏輯語言,或為CTL計算樹邏輯語言。
4.根據(jù)權(quán)利要求1所述的基于路徑驅(qū)動的可執(zhí)行程序安全性檢測方法,其特征是所 述采用靜態(tài)程序分析和動態(tài)執(zhí)行相結(jié)合的方法獲得目標待分析程序完成系統(tǒng)正常功能所 需要的最大工作閉環(huán)和冗余路徑的過程如下步驟一、利用程序靜態(tài)分析技術(shù)獲得目標待分析程序的關(guān)鍵信息,這些關(guān)鍵信息含有 目標待分析程序的基本操作單元劃分、基本操作單元之間的邏輯跳轉(zhuǎn)關(guān)系、路徑分支點和 路徑條件;步驟二、執(zhí)行目標待分析程序,根據(jù)路徑條件對“污點”變量賦值; 步驟三、在路徑分支點中的第一個分支節(jié)點處中斷執(zhí)行,判斷該分支節(jié)點處的分支是 否涉及“污點”變量;如果該分支節(jié)點處的分支涉及“污點”變量,則在分支處對系統(tǒng)做“快 照”處理;如果該分支節(jié)點處的分支不涉及“污點”變量,則繼續(xù)執(zhí)行目標待分析程序,并進 入相應(yīng)的路徑分支,如果相應(yīng)的路徑分支涉及“污點,,變量,則在相應(yīng)的路徑分支處對系統(tǒng) 做“快照”處理,直到該條路徑探測完畢;步驟四、一條路徑探測完畢,對該路徑上的語義進行解釋,判斷該路徑上主要做了什么 操作,并對操作做記錄;步驟五、按照深度優(yōu)先原則向上回溯至前一分支節(jié)點,加載該分支節(jié)點處的系統(tǒng)“快 照”,在保證系統(tǒng)運行內(nèi)存一致性的前提下修改該分支節(jié)點上的“污點”變量,將程序驅(qū)動至 其他路徑分支,挖掘該路徑分支上的行為;步驟六、判斷該路徑分支上的行為是否覆蓋了系統(tǒng)的正常行為?如不是,重新回到步 驟二;如是,則找到了該目標待分析程序的最大工作閉環(huán),未執(zhí)行到的路徑分支為冗余路 徑。
5.一種基于路徑驅(qū)動的可執(zhí)行程序安全性檢測系統(tǒng),其特征是該惡意行為分析系統(tǒng) 的具體工作過程如下步驟a、首先利用產(chǎn)品功能說明書和操作行為規(guī)范說明書獲得所檢系統(tǒng)的正 常功能,并將該正常功能用形式化的語言表示出來,作為所檢系統(tǒng)正常行為約束輸入 到惡意行為分析系統(tǒng)中;步驟b、提取核心控制芯片內(nèi)部的目標控制程序,將其反匯編成可調(diào)試的源碼,作為惡意行為分析系統(tǒng)的原始輸入數(shù)據(jù);步驟C、惡意行為分析系統(tǒng)對源碼進行分析預(yù)處理,并將不同結(jié)構(gòu)的源碼用 統(tǒng)一的中間語言表示,以便于分析,同時提取目標控制程序的控制流圖;提取出來的控 制流圖包含了目標控制程序所有的可執(zhí)行路徑和每條路徑上的操作節(jié)點;每個操作節(jié)點代 表目標控制程序中的一個操作基本單元,操作基本單元是按照跳轉(zhuǎn)語句來劃分的; 步驟d、對目標控制程序進行靜態(tài)分析;步驟e、動態(tài)地執(zhí)行目標控制程序,形成所檢系統(tǒng)正常工作情況下的最大工 作狀態(tài)閉環(huán)和越界行為集;針對越界行為集中的操作路徑做深度行為特征挖掘,根據(jù) 所檢系統(tǒng)正常行為約束,綜合推理判斷越界行為集中是否包含有對所檢系統(tǒng)狀態(tài)進行修改 或者破壞的行為,進而判斷目標控制程序是否含有可疑攻擊行為。
6.根據(jù)權(quán)利要求5所述的基于路徑驅(qū)動的可執(zhí)行程序安全性檢測系統(tǒng),其特征是所 述步驟d中的靜態(tài)分析含有三個基礎(chǔ)性的工作第一.對目標控制程序按照操作基本單元進行語義解釋,明確每個操作基本單元對所 檢系統(tǒng)究竟做了什么樣的操作;第二 .建立每個操作基本單元與程序執(zhí)行空間的內(nèi)存映射表,明確每個操作基本單元 對應(yīng)在內(nèi)存中的起始地址和末尾地址;建立各個操作基本單元之間的跳轉(zhuǎn)關(guān)系,這種跳轉(zhuǎn) 關(guān)系與控制流圖是等價的;第三.計算程序中各個分支點上的路徑條件,形成一個全路徑條件集合;全路徑條件 集合明確地表明目標控制程序中存在多少條路徑,以及將程序驅(qū)動至該路徑上需要滿足什 么樣的輸入條件。
7.根據(jù)權(quán)利要求5所述的基于路徑驅(qū)動的可執(zhí)行程序安全性檢測系統(tǒng),其特征是所 述步驟e中,通過動態(tài)執(zhí)行目標控制程序發(fā)現(xiàn)所檢系統(tǒng)正常工作情況下的最大工作狀態(tài)閉 環(huán)需要遍歷到程序內(nèi)部的所有路徑,其過程如下步驟e 1.確定程序分支點首先需要通過對目標控制程序做靜態(tài)分析,找目標控制 程序中的分支點;分支點是在控制流圖中決定程序執(zhí)行哪一條路徑的關(guān)鍵結(jié)點;步驟e 2.確定“污點”輸入變量集“污點”輸入變量是指能夠決定程序分支的變量, “污點”輸入變量集是“污點”輸入變量的集合;步驟e 3.在程序運行到分支點時,對所檢系統(tǒng)作“快照處理”,保存當(dāng)前處理器運行到 這個分支點的所有所檢系統(tǒng)狀態(tài),所檢系統(tǒng)狀態(tài)包括相關(guān)內(nèi)存空間的數(shù)據(jù)和關(guān)鍵寄存器中 的數(shù)據(jù);確定該分支點所依賴的變量,即該分支點的有效“污點”輸入變量,依據(jù)路徑條件對 其賦值,將程序驅(qū)動至某條路徑分支;步驟e 4.在路徑分支上的操作都執(zhí)行完后,對該路徑分支上的操作進行語義解釋,對 操作行為的功能屬性進行挖掘;步驟e 5.按照深度優(yōu)先原則,使處理器回溯至前一個分支點;回溯操作主要是通過 加載步驟e 3所做的“快照處理”來實現(xiàn);回溯到指定分支點后按照前面記錄的路徑條件修 改該分支點所對應(yīng)的有效“污點”輸入變量的值,將程序驅(qū)動至其它路徑分支;步驟e 6.重復(fù)執(zhí)行步驟e 4、步驟e 5直至該路徑分支上的行為覆蓋了所檢系統(tǒng)的正 常行為后程序執(zhí)行完畢。
8.根據(jù)權(quán)利要求7所述的基于路徑驅(qū)動的可執(zhí)行程序安全性檢測系統(tǒng),其特征是所述步驟e 2中的“污點”輸入變量集中含有鍵盤接口、溫度傳感、時間控制模塊、無線通信接 口、網(wǎng)絡(luò)接口、注冊表讀寫函數(shù)和文件讀寫函數(shù)。
9.根據(jù)權(quán)利要求7所述的基于路徑驅(qū)動的可執(zhí)行程序安全性檢測系統(tǒng),其特征是所 述步驟e 5中修改該分支點所對應(yīng)的有效“污點”輸入變量的值時需保證處理器的內(nèi)存一 致,保證處理器的內(nèi)存一致的方法如下第一、通過對目標控制程序的靜態(tài)分析,建立內(nèi)存“污點”映射表和逆映射表;在內(nèi)存 “污點”映射表里對感興趣的“污點”輸入變量的名稱和內(nèi)存地址進行符號標記,在逆映射 表里記錄某個符號所關(guān)聯(lián)到的所有內(nèi)存地址;第二、在對目標控制程序進行動態(tài)執(zhí)行分析的時候,使用一系列符號公式來表示“污 點”輸入變量之間的依賴關(guān)系或者構(gòu)建符號約束系統(tǒng);第三、在分支點處修改某個“污點”輸入變量的值,以驅(qū)動目標控制程序到特定路徑 時,要首先找到所有與此“污點”輸入變量的符號標記相關(guān)聯(lián)的符號及符號公式,形成符號 約束公式組;第四、利用約束求解器對該符號約束公式組進行求解,根據(jù)求解的結(jié)果進行相關(guān)“污 點”輸入變量的修改。
全文摘要
本發(fā)明涉及一種基于路徑驅(qū)動的可執(zhí)行程序安全性檢測方法及系統(tǒng);基于路徑驅(qū)動的可執(zhí)行程序安全性檢測方法為首先根據(jù)系統(tǒng)的正常功能定義目標待分析程序的正常行為約束,然后采用靜態(tài)程序分析和動態(tài)程序執(zhí)行相結(jié)合的方法獲得目標待分析程序完成系統(tǒng)正常功能所需要的最大工作閉環(huán)和冗余路徑,最后,對冗余路徑上的程序行為進行語義解釋,根據(jù)系統(tǒng)正常行為約束判斷冗余路徑中是否存在針對該系統(tǒng)的惡意攻擊行為;按照本發(fā)明的檢測方法可以設(shè)計出基于路徑驅(qū)動的可執(zhí)行程序安全性檢測系統(tǒng);本發(fā)明可以大大減小安全分析人員的代碼分析工作量。
文檔編號G06F21/22GK102073825SQ20111003121
公開日2011年5月25日 申請日期2011年1月28日 優(yōu)先權(quán)日2011年1月28日
發(fā)明者張平, 徐冰, 李清寶, 牛小鵬 申請人:李清寶
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
张家口市| 海南省| 青岛市| 博罗县| 五大连池市| 平泉县| 任丘市| 开封市| 若尔盖县| 永修县| 新绛县| 方山县| 龙岩市| 建瓯市| 扎囊县| 梅州市| 马公市| 衢州市| 陵水| 郎溪县| 铁力市| 平利县| 安塞县| 山西省| 台东县| 灵宝市| 耿马| 浦城县| 邹平县| 晋宁县| 全椒县| 石首市| 盐源县| 新龙县| 易门县| 杭锦后旗| 鹤山市| 陕西省| 綦江县| 重庆市| 自贡市|