整合 VirusTotal API 提供未知樣本做病毒檢測提高惡意程式知識庫精確度

記得使用 Python 2.6.6,最下方有用了另個軟體來跑新的樣本 (總計 7042隻)報表
PS: 神級大師開示說樣本數多沒啥用,要能 Ming 出之間關聯性才是重點

VirusTotal 是一項免費服務,可分析可疑檔案和網址,並有助於快速偵測病毒、蠕蟲、特洛伊木馬和所有種類的惡意軟體。


這應該是另一個有在研究 Security 的人都知道的網站了
因為它搜集了近 42 家防毒軟體廠商的病毒碼來做判斷 ~ 更特別的是他被 Google大神給收購了啊 !!!
之前我曾經嘗試過直接使用它的判斷結果當 Fuzzy 的變數輸入

H. D. Huang, C. S. Lee, M. H. Wang, and H. Y. Kao, "IT2FS-based ontology with soft-computing mechanism for malware behavior analysis," Soft Computing, vol. 18, no. 2, pp. 267-284, 2014.

H. D. Huang, C. S. Lee, M. H. Wang, and H. Y. Kao, "IT2FLS-based Malware Analysis Mechanism: Malware Analysis Network in Taiwan (MiT)" in Proceeding of the 2013 IEEE International Conference on Systems, Man, and Cybernetics (IEEE SMC 2013), Manchester, United-Kingdom, Oct. 13-16, 2013. (http://goo.gl/m3cuvg)

不過認真看起來跟實際還是有點落差,於是這次改再加上防毒軟體的評價,畢竟有的防毒軟體就是如大家所想像的略弱 ! 囧

AV-Comparatives - Independent Tests of Anti-Virus Software - Real World Protection Test Overviewhttp://chart.av-comparatives.org/chart1.php


採用評比的網站便是跟據上面的網站


取其中18家來以其偵測率以及誤判率來做排名


這是因為 virustotal 提供的報表實在是太豐富了,初期實在用不到那麼多資訊


接著也馬上寫信給 VirusTotal 申請 Private API

不過從信上來看,似乎我的需求算很輕,所以他們很快的就回信通知幫我把我的Public API給增加其限量



然後就在機器上裝了這個套件 (Open Source 果然是王道啊)


https://github.com/Gawen/virustotal


關於 GIT 多好用您也可以參考一下這一篇

GitHub for Windows on GitHub and SourceForge

這時也意外發現了這個東西


EICAR 標準防毒測試檔案

EICAR,或稱歐洲電腦防毒研究協會 (European Institute of Computer Anti-virus Research),與防毒軟體廠商一同開發此測試檔案,目的在於協助使用者測試防毒軟體的安裝情形。我們建議廠商偵測此檔案。

https://imperia.trendmicro-europe.com/tw/support/virus-primer/eicar-test-files/index.html



到這邊已經可以自己產出這樣的報表 .... 再用 script 加工一下




依據目前全部搜集到要當做 baseline 以及 experiment 的總計有計算出來;其中 baseline 94 + 900 隻 = 994 隻 裡有 80 + 880 = 880 隻 計算出來,experiment 50 + 140 + 30 + 20 = 240 隻 有 50 + 135 + 22 + 20 =  227 隻計算出來;所謂的計算出來就是指每個樣本在 VirusTotal 上有查到上面所提的 18 有相關測試排名的軟體

Acer 提供的 (有毒):94隻有80隻 以及 50 隻有 50 隻

Malwaretips 下載的 (有毒):900隻有880隻

Gmail 上的廣告信 (未知):140隻有135隻

過去搜集的 (有毒) 30 隻有 22 隻

咱家 LeeCS 寄的 (無毒):20 隻有 20 隻

== 這邊補充重新整理相關樣本數後重新計算的結果 ==

總計只有 7042 隻的已知病毒 ... 根據神級大師開示我想應該很夠用 !!! xD ... 而新的做法產出的報表也是很清楚,方便自動辨識是否有病毒這樣 ! 此外,新增了個直接前後統計比對感染前後的檔案異動 ... 接著再將該異動的 hash 值自動上傳 VirusTotal,以及直接跟手邊的已知病毒做相似度比較 !!! 報表的產製一整個花了好長的時間都還沒跑完 ...

更有趣的是有的檔案會在 VirusTotal 上找不到 ! 囧 ... 因為在跑 data 時,發現手邊一些病毒沒人上傳到 VirusTotal 過 (就好比你裝的防毒但病毒碼沒更新要怎辦 ) ? 



所以就想說試試早早就聽聞他們 (Xecure Lab: http://www.xecure-lab.com) 超勵害,實際玩了以後發現一整個真的超強 ... 附圖是我簡單丟了幾個 pdf 上去,結果 VT 上都是找不到,但是在 Xecure Lab 我猜樣本數應該沒 VT 多,可是都可以很快判斷出來 ... 實在是好勵害啊 !!!


最後就是計算其分佈的區域,也就是指各家防毒軟體廠商是否判讀為病毒的結果,給予一特定的權重;最後一步就是將其陸續建置至 Ontology 裡,目前進度仍在持續分析產生其相關報表,然後統整至分析系統裡,預計會先釋出分析系統的建置方法



過去是透過軟體來監控電腦在感染病毒後的變化,但是這會有兩個問題 ... 1. 如果要細部比對那就得靠 dd 來將整個磁碟分割做映像檔 (非常耗時);2. 需要透過 samba 來監控,雖然在 AD 環境下ok,但是整個流程有點繁瑣 ... 所以現在的做法是直接用 md5 來比對感染前後的變化,如果有變化,那就把變化的 md5 值拿來跟手邊現有的 7042 隻病毒比對相似度,另一方面也同時將 md5 值送到 VirusTotal .... 最後有圖有真相囉 ... VirusTotal 跟 相似度的資料庫正如火如荼的製造中 ! xD


關於這一塊大家可以參考下面這一頁
http://mit.twman.org/mit/approach-model

不過,最後要補充的是 ... 這東西跟想法還是一整個追不上 ... Xecure Lab ... 連車尾燈都看不到 ! 嘆 !

啊 ! 對了,嗯 ~ 今天是我唸 No.05@輔仁大學進修部會計系 時,一個蠻關鍵的人的生日 ! 雖然早就沒聯絡,而且我猜她應該是不會看到啦 ,但該記得的 ~ 生日快樂 ~ 怎可以漏掉呢 ? XD (0904_vivian)