Windows惡意軟體API調用特徵分析
1.背景
目標:
1)找到病毒調用概率高的API2)找到病毒調用概率不高,但是當調用頻次高的時候,是病毒概率高的API。通常對病毒使用API的認識都是基於病毒工程師的經驗,但是我們並不知道每個API對於是否是病毒的貢獻有多大。通過對大量病毒樣本的統計分析,我們可以得出相關的數據。
從網上下載3000個樣本,1500個病毒,1500個無毒。用沙箱進行掃描,得到樣本調用API和是否是病毒。如下圖所示
取API的動態調用次數作為每個樣本的特徵,病毒類標記為1,非病毒類標記為0。如下所示:
{『LdrUnloadDll』:4, 『RegCloseKey』:45,…} 1n{『GetFileSize』:1, 『NtWriteFile』:4, ….} 0n
2. 分析
將樣本的API調用次數表示到折線圖和條形圖上,藍色表示正常樣本,綠色表示病毒樣本。如下圖所示:
條形圖按API調用的次數分布到5個區間1+(1~10),10+(10~100),100+(100~1000),1000+(1000~5000),5000+(5000~)。
通過對大量樣本的圖形的觀察發現,病毒比較常用的API(如:WriteProcessMemory,Process32NextW等)不管是折線圖還是條形圖,綠色線條所佔的比例都很大。
病毒使用率低的API,藍色線條占的比例比較大。
有些API的調用,折線圖綠線比例大,條形圖藍線比例比較大。這種情況下病毒對API的調用次數會很多(會有很多成千上萬次的調用),普通樣本對API調用次數很少(一般不超過100次)。
因此我們可以計算折線圖和條形圖中綠色像素所佔的比例來評估API對病毒的影響。
3. 方法
P1 = 折線圖佔用率:綠色像素/(綠色像素+藍色像素)
P2 = 條形圖佔用率:綠色像素/(綠色像素+藍色像素)
1) 計算API對病毒分類的貢獻(P1*P2)
對於最能表示病毒特徵的API,其被病毒調用的概率要比被正常樣本調用的概率大的多,同時高頻調用的次數也比正常樣本大的多。如Process32NextW
所以P1,P2的值也會很大。
對於最不可能被病毒調用的API,P1,P2的值都會很小。
因此可以用P1*P2來表示API對病毒分類的貢獻,進行排序後,數值會往兩端移動。
(上圖:貢獻度排序曲線)
2) 計算API的高頻調用對病毒分類的貢獻(P1-P2)
對於__exception__這樣的,P1值很大,但是P2值比較小。其高頻次調用的情況下是病毒的概率很高,無法單純的從是否調用來判斷是否為病毒。用P1-P2來評價高頻次調用。
4.結果
1)計算P1*P2,進行排序,部分結果如下。
數據結果分別為(API名,(貢獻值,API調用次數概率,調用API的樣本為病毒的概率,病毒樣本數量))
貢獻值為1的API,沒有被正常樣本調用過。(可能是由於樣本數量太小造成的,特別是病毒樣本數量只有幾次的API)。其圖像如下:
貢獻值比較大的API基本都是病毒常用的,經常用來識別病毒。如排在前10的有:
WriteProcessMemory,nNtGetContextThread,ngethostbyname,nCreateToolhelp32Snapshot,nNtSetContextThread,nProcess32NextW,nProcess32FirstW,nInternetOpenA,nGetComputerNameA,nGetFileSizeExn
其圖像如下
中間這部分數據用於下一節。
排在後面的都是比較沒有病毒特性的API,比如WriteConsoleA,WriteConsoleW,MessageBoxTimeoutW,InternetGetConnectedState,select等。圖像示例如下:
2)計算P1-P2,進行排序,部分結果如下。
這部分可以找到那些低頻次調用貢獻度下,但是高頻次調用貢獻度大的API。
數據格式(API名,(提升度,API調用次數概率,調用API的樣本為病毒的概率,正常樣本調用最大次數))
比如NtQueryAttributesFile,正常樣本使用這個API的可能性更大。但是正常樣本很少調用超過10次的。 因此超過10次調用NtQueryAttributesFile的樣本就很可能是病毒了。
GetFileAttributesW 超過100次調用則很有可能是病毒。
超過10次的__exception__調用時病毒的概率很大。
完整的數據整理看數據部分。
5.結論
1)通過計算貢獻度=病毒調用API概率*調用次數比例可以將API兩極化
結果會受樣本數量的影響,需要過濾掉次總數低的數據
2)通過(調用次數比例-病毒調用API概率)可以找到那些調用次數少時對病毒分析沒什麼幫助,但是調用次數多時幫助很大的API。
6.數據
1)對病毒識別影響大的API
2) 調用次數少難以區分,調用次數多可以用於識別病毒的API
本文為 change 原創稿件,授權嘶吼獨家發布,未經許可禁止轉載,如若轉載,請聯繫嘶吼編輯: Windows惡意軟體API調用特徵分析
推薦閱讀:
※初探域滲透神器Empire
※如何處理格式為ACE的惡意軟體文件?
※厚客戶端滲透測試實戰(三)
TAG:技术分析 | MicrosoftWindows |