# [Does Every Second Count? Time-based Evolution of Malware Behavior in Sandboxes](http://www.s3.eurecom.fr/docs/ndss21_kuechler.pdf) ## Abstract * 執行樣本的時間量是惡意軟體分析的一大重點,太高浪費時間,太低降低數據量。 * 本論文的重點在於透過大規模的研究找到好的時間。 * 方法是用機器學習。 ## Introduction * 沙盒分析惡意軟體是常見的做法,而執行時間是最簡單的參數之一,卻沒有研究衡量時間對數據造成的影響。 * 時間對於惡意軟體的分析是很複雜的,因為惡意行為不一定在最開始就表現,且不一定要蒐集完整的資訊才能分析(只需要有足夠重要的即可) * 這些因素都導向時間越長越好,但沒有研究表示多長就夠了。 * 使用PANDA(建立在QEMU上,可記錄、回放系統)收集資訊、ML分類器來判斷是否為惡意程式。 * 結論:執行時間不超過2分鐘或10分鐘,程式碼覆蓋率就落在10%~40%。 ## Motivation * 研究人員和公司不同,前者目標是改良沙盒,所以關注較小的資料,且長時間分析;後者需要面對大量資料,因此分析時間短。 * 研究人員的部分,他們挑了幾篇和沙盒有關的論文,發現時間落在30秒~1小時之間,卻很少論文討論為什麼是這些值,且沒有進行實驗支持他們的選擇。 * 公司的部分,因為沒有公司願意透漏實作細節,因此透過VirusTotal,上傳一份定時ping自己server的檔案,發現分析時間落在30秒~4分鐘。 ## Experiment * 正確測量行為和時間是我們關注的兩個重點。 ### Measuring Runtime Behavior * 基本上就是觀察syscalls,但有加工: 1. 查看syscalls。 2. 查看high-level行為(影響網路流量、filesystem或registry operations等)。 3. 加上實際code的資訊。 4. 機器學習分類器是否準確度上升。 ### Behavioral Metrics * 得到上面的資訊後,如何進一步分析時間與他們的關係? 1. 相對程式碼覆蓋率 2. 相對syscalls覆蓋率 3. 絕對程式碼覆蓋率 ### Measuring Time * Sleep常被惡意軟體作為反分析的媒介,但沙盒可以使用timewarping跳過所有睡眠操作,達到數據最大化的目標。 * 論文中的系統可以重新引入延遲,評估出timewarping的重要。 ### Sample Selection * 為了達到和公司等級相同的樣本,下載給VirusTotal的新樣本,每日2K個,直到10W筆樣本。 * 86K惡意樣本、14K良性樣本。 ## Implementation * 希望收集syscalls外,還可以知道執行的指令。 * 因為要知道絕對程式碼覆蓋率,需要提取內存。 * 使用PANDA來完成,雖然降低了系統的擴展性,但資訊量夠多。 ### System Overview * 根據前面的調查,將樣本放到PANDA後執行`15`分鐘作為最高值。 * syscalls可透過PANDA的syscalls2插件直接拿到,而high-level的操作則要透過分析內存。 * PANDA有方法可以得到每個process的basic block,可用於分析程式碼覆蓋率。 ## Results * 執行了590W分鐘的惡意軟體,收集了2.05e個syscalls和8400W個不同的BB。 ### Filter * 避免反分析的樣本造成誤差,刪除了syscalls<50和BB<4000的樣本。 * 刪除了8402個惡意樣本和1456個良性樣本。 ### Execution Time ![](https://i.imgur.com/B6JmFIj.png) ![](https://i.imgur.com/8rqSHec.png) * 分為兩類,要不就3分鐘內結束,不然就超過13分鐘。 * 不管哪類,覆蓋率大概落在25%。 ### Behavior evolution ![](https://i.imgur.com/s14zdrg.png) * BB基本上在執行3分鐘後,就可以觀察到超過90%,但syscalls只有16%。 ![](https://i.imgur.com/hQjFWMd.png) * 14%的惡意樣本和6%的良性樣本使用了sleep,然而睡眠時間對覆蓋率幾乎沒影響,檢查後發現75%的sleep執行不到一分鐘。 ### Intra-Family Variability ![](https://i.imgur.com/VJNMv8P.png) * 分別對不同種類的樣本做測試,發現雖然不同種類的確有偏好的表現時間,但還是很難知道執行時間將觸發的程式碼數量(即便已經知道種類)。 ## Impact on Malware Classification * 即便前幾分鐘好像就表現很多行為,但可能只是init等行為,不一定有價值。 * 透過測量對分類器準確度的影響來評估。 * 模型使用梯度樹(cascaded boosted tree model)。 ![](https://i.imgur.com/DOhzZwn.png) * 上面是使用前一分鐘、前兩分鐘...的資料分別去訓練,而下面是單獨使用第一分鐘、第二分鐘...的資料去訓練。 * 不管哪個,都顯示出前幾分鐘的資料就夠了,更多只會影響模型判斷。 ## Disscusstion * 雖然過濾了一些可能有反分析的樣本,但不排除有沒發現的樣本。 * 收集資料的能力會根據沙盒而異,但基本上這篇盡量模仿當前的研究。 --- * 前面說過,學術界論文研究惡意軟體的時間從30秒到1小時都有,但結果證明大多數的情況下,兩分鐘就可以觀察大部分的行為。 * 短時間分析更多的樣本,會比減少dataset長時間執行來的好。 ###### tags: `paper`