?

綜合性惡意代碼分析平臺設計?

2019-03-26 08:44李程瑜齊玉東孫明瑋丁海強
計算機與數字工程 2019年3期
關鍵詞:調用次數函數

李程瑜 齊玉東 孫明瑋 丁海強

(海軍航空工程學院 煙臺 264001)

1 引言

隨著計算機、網絡、信息等技術的飛速發展,人類社會已經進入信息化時代。信息化帶給人們極大便捷的同時,也帶來了隱私泄露等信息安全問題,其中惡意代碼對信息安全構成的威脅最為嚴重。惡意代碼指故意編制或設置的、對網絡或系統會產生威脅或潛在威脅的計算機代碼。隨著網絡技術高速發展,惡意代碼[1]傳播方式也在迅速地演化,從引導區傳播,到郵件傳播、網絡傳播,發作和流行時間越來越短。然而相比于惡意代碼的發展,解決惡意代碼問題的技術手段缺乏實時性和敏銳性。為解決這一問題以及更好地了解惡意代碼的行為,本文提出了綜合性的惡意代碼行為分析平臺。

2 平臺概述

2.1 背景分析

惡意代碼(惡意代碼是對病毒、木馬、蠕蟲以及僵尸程序等的統稱,在本文中暫只考慮Windows平臺下的惡意代碼)是黑客們實施入侵、維持入侵的基礎。傳統研究人員通過對惡意代碼進行反匯編,在匯編代碼層次上,對惡意代碼展開詳細分析。但這有兩個前提條件:一是具備深厚的匯編技術基礎;二是分析效率要足以應付惡意代碼的不斷更新和變異。但在惡意代碼普遍加殼、變種不斷涌現的情況下,上述兩個條件都很難滿足。

自動惡意代碼行為分析方法[2]提供了一種新的視角來分析惡意代碼,它不再對惡意代碼本身實行靜態解析,而是讓惡意代碼運行在一個可控環境中,通過對惡意代碼所觸發的行為[3]來認識惡意代碼。更為重要的是,這種分析可在無人工干預的情況下自動化進行,通稱這種可控的環境為沙箱[4](Sandbox)。類似的系統有:CWSandbox Anubis、Norman、ThreatExpert等。但這些系統只提供單個惡意代碼的分析功能[5],對惡意代碼的大小、類型具有限制。經研究,由于部分沙箱工具沒有解釋其實現原理和技術框架,在對P2P僵尸程序樣本進行分析時,很多工具并不能有效提供分析報告。同時,研究者也不可能有耐心使用瀏覽器完成數百上千次惡意代碼的提交,并在郵箱中等待報告。這些系統并沒有提供源代碼或者安裝程序來實現自行部署,故需要一種替代方案基于本地,自行部署惡意代碼行為分析系統,并根據需求隨時調整分析過程。

2.2 相關工作

最早由Raymond W.Lo提出針對惡意代碼的靜態代碼檢測方法[6]:通過提取惡意代碼靜態代碼中帶有惡意行為趨向的標示來檢測其他樣本。該方法被Christodorescu、Preda等擴展為基于語義的惡意代碼檢測方法[7]。與此相反的是,Szor、Popov等提出利用混淆(obfuscation)技術[8]來應對靜態代碼檢測的方法已在目前惡意代碼發展中得到不斷深入應用,惡意代碼加殼和加密均屬其常見類別。Royal,Martignoni等為了解決加殼帶來的阻礙,通過一種半動態半靜態方法執行分析。其基本思想在于將惡意代碼進行動態調試執行,當樣本執行到完成外殼步驟時,開始對惡意代碼進行靜態分析,繞開復雜脫殼工作。盡管這些方法構造精巧,但靜態分析的效率和健壯性問題仍不能得到有效解決。故基于惡意代碼行為的動態分析方法開始涌現,“代碼可隱,行為難隱”成為其基本前提。

先 后 出 現 的 Anubis,BitBlaze,Norman,CWSandbox等沙盒系統,均可將惡意代碼執行在精心構造的虛擬環境中,通過技術手段獲取惡意代碼行為蹤跡。但CWSandbox等以網頁形式應用且不開源,無法讓研究者離線獨立運行。故本文提出一種優化方案:以開源形式實現CWSandbox對惡意代碼行為分析功能?;诖?,本文設計并實現了綜合性惡意代碼行為分析平臺,在以下幾個方面做了積極地探索:

1)針對開源軟件 Cuckoo Sandbox[9]在分析處理惡意代碼時存在API監控種類較少、難以統計等不足,對其進行了針對性的改進開發。通過重新編譯DLL添加監控的API函數種類,擴展了對惡意代碼的分析范圍。

2)本作品應用虛擬機技術架設“沙箱”,構建惡意代碼行為監控環境。經過課題組測試,發現當惡意行為發現軟件運行環境和惡意代碼監控環境一致時,存在不安全性和未知性。故此提出在Linux系統下應用加載Windows系統的虛擬機構建“沙箱”,為惡意代碼分析提供了一個安全、可控環境,并使作品軟件程序更加輕量級。

3)惡意代碼都有數個進程,分析其行為時每個進程各產生一組API調用[10]子序列,該類型分析報告包含惡意代碼特征過于抽象,不利于后續研究展開。故此,本作品提出了整合API調用序列、統計API調用次數算法。對同一惡意代碼所有進程的API調用子序列按其第一個API調用時間先后順序排序整合,并統計每個API調用次數,生成總體報告。該算法從統計角度提取了惡意代碼部分特征,為敏感API選取提供了參考依據。

3 結構設計及關鍵技術

3.1 方案設計

本平臺擬實現對各類惡意代碼行為的分析,具體方案設計如圖1所示。

圖1 模塊化設計結構圖

1)虛擬機:構建惡意代碼行為監測環境;

2)惡意代碼行為分析:實現惡意代碼行為監測、跟蹤和捕獲功能;

3)報告生成模塊:合并API調用子序列,生成行為分析報告;

4)API調用次數統計模塊:統計惡意代碼調用API函數次數。

3.2 關鍵處理過程

為實現監測、分析多種惡意代碼功能,本平臺融合沙箱技術、API Hook技術、DLL編寫技術、注入技術等,成功構建綜合性惡意代碼分析平臺。其原理及關鍵處理過程如下所述。

1)沙箱技術:本平臺基于沙箱(這里的沙箱采用虛擬機實現)技術,構建惡意代碼的動態行為分析平臺。沙箱是一種按照安全策略限制程序行為的執行環境。沙箱技術指根據系統中每一個可執行程序的訪問資源及其系統賦予的權限,建立應用程序“沙箱”,限制惡意代碼運行。每個應用程序都運行在自己的“沙箱”中,不會對其它程序的運行產生影響。同樣,操作系統與驅動程序也存活在自己的“沙箱”之中,故這些程序也不會影響其正常運行。針對每個應用程序,沙箱均準備了一個配置文件,限制該文件能夠訪問的資源與系統賦予的權限。這些策略允許選擇系統管理應用程序的方式:應用程序既可被“限制運行”,也可被“禁止運行”。通過在“沙箱”中執行不受信任的代碼與腳本,系統可以限制甚至防止惡意代碼對系統完整的破壞。

2)API Hook[11]技術:所有程序的啟動都要調用API函數,包括惡意代碼在內。API Hook技術是一種用于改變API執行結果的技術。本平臺利用API Hook技術,對惡意代碼API函數調用進行捕獲,進而改變系統API的原有功能。

3)DLL 編寫、注入技術[12]:DLL(Dynamic Link Library)是一個包含可由多個程序同時使用的代碼數據庫,不是可執行文件。它提供了一種方法,使進程可以調用不屬于其可執行代碼的函數。DLL注入將一個DLL放進某進程的地址空間,使其成為該進程的一部分。

3.3 軟件實現

平臺在 VS2010、gcc for windows、gdb for windows和mingw下開發完成。主要工作體現在以下兩方面:

1)編寫DLL函數增添API函數種類。

要增加監控的API函數,需對API Hook實現過程有一定了解。本平臺利用mingw編寫cuckoomon.dll用以完成API Hook的主要流程,如圖2所示。為方便更新,設計并編譯一個通用組件chook.dll負責具體API函數指針的保存、轉移和返回,在cuckoomon.dll中嵌套調用[13]。

2)獲取API調用總序列、統計API調用次數。

把每個進程API調用子序列提出后作為整體,按照每個子序列中第一個函數的調用時間點進行排序,合并形成總序列。在此基礎上建立統計報告對API調用次數進行統計,整合所有API函數調用次數情況,并與其他惡意代碼分析平臺相互比對,驗證本平臺實用性,如圖3所示。

圖3 API調用次數統計流程圖

本平臺總體軟件實現步驟如下:

第1步,判斷是否安裝Linux操作系統,安裝則跳過此步;未安裝則建議安裝兼容性好、內核穩定的通用發行版本ubuntu。

第2步,在Linux系統下加載綜合性惡意代碼分析模塊。

第3步,在Linux系統里加載裝有XP的虛擬機。完成后將可疑文件(常為惡意代碼)導入虛擬機中,對其監測分析,得到分析結果并生成分析結果報告。如圖4所示。

4 軟件測試與結果分析

4.1 測試方案

本平臺擬從三個方面進行效能測試和功能性測試。

實驗1:在惡意代碼分析平臺中注入已知API調用序列的惡意代碼,測試分析平臺的試用性與正確性。

實驗2:與CWSandbox對比。CWSandbox分析功能較為全面,故將本平臺生成的分析報告從API調用序列報告之間的幾何距離和API調用數目兩方面與CWSandbox所得報告相比較,通過比較結果檢測本平臺分析功能的完備性。

實驗3:監測新增API函數、統計API調用次數。本平臺將對某惡意代碼調用的每一個API函數次數進行統計,由多至少排列。該實驗從統計學角度提取了部分特征并判斷本平臺擴展的監控種類實用性大小。

4.2 測試數據

為了能更好檢驗本平臺的惡意代碼行為分析功能,選用從德國蜜罐[14]組織獲取的3131個惡意代碼為實例數據集(可從網站www.mlsec.org/Malheur/獲得),這些惡意代碼經6個獨立的反病毒廠商分析,共分為24個類別,共包含41個僵尸程序變種,具體如圖4所示。

圖4 惡意代碼數據類

4.3 結果分析

1)實驗1:惡意代碼行為分析準確性檢驗。用分析平臺對上述已知類型的惡意代碼進行跟蹤檢測,生成惡意代碼特征分析報告。報告顯示數據與預期客觀數據基本保持一致,一定程度上客觀、準確地反應了惡意代碼某些數據與特性,說明本平臺具有對普遍惡意代碼的跟蹤分析能力。

2)實驗2:與CWSandbox對比。在此實驗中,主要統計本平臺和CWSandbox對惡意代碼數據集分析結果中11個重要系統行為類別的API調用數目,如圖5所示(每一類中的第一列對應CWSandbox,第二列對應本平臺)。由圖5可知多數類別中本平臺所獲取的數目、對應統計結果大小分布與CWSandbox基本保持一致。

3)實驗3:監測新增API函數、統計API調用次數。應用本平臺對某惡意代碼進行檢測分析,生成行為分析報告,對本平臺新增API監控函數進行標記。記錄該惡意代碼所有進程的API調用序列,并統計每個API調用次數,按照由多至少順序排列,如表1所示。

圖5 API調用數目對比圖

表1 某惡意代碼API調用次數統計表

由數據可看出,本平臺新增API函數調用次數均排列于統計表前列,證明本平臺擴展的API監控種類具有實用性。

5 結語

本文設計實現的綜合性惡意代碼分析平臺有效克服了傳統分析平臺[15]的局限性、模糊性,在惡意代碼分析的深度和廣度上均有擴展,主要具有以下優點:

1)以開源為宗旨,在Linux系統下進行平臺開發和實現。運行形式為命令行,使平臺軟件程序更加輕量級。

2)采用在Linux系統下應用Windows虛擬機構建“沙箱”技術,為惡意代碼分析提供安全、可控環境。

3)核心函數以DLL形式編譯、存儲,便于開源代碼的改進、更新和維護。

本平臺為用戶提供了一個完備動態行為分析綜合解決方案。根據監控對象和目的,可靈活調整設置、改造沙箱技術并捕獲API函數種類。本平臺針對性強、可操性強、覆蓋范圍廣,具有良好的實用性和適用性。

猜你喜歡
調用次數函數
2020年,我國汽車召回次數同比減少10.8%,召回數量同比增長3.9%
最后才吃梨
俄羅斯是全球閱兵次數最多的國家嗎?
基于Android Broadcast的短信安全監聽系統的設計和實現
關于函數的一些補充知識
高中數學中二次函數應用舉隅オ
無獨有偶 曲徑通幽
利用RFC技術實現SAP系統接口通信
C++語言中函數參數傳遞方式剖析
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合