---
# System prepended metadata

title: '[Does Every Second Count? Time-based Evolution of Malware Behavior in Sandboxes](http://www.s3.eurecom.fr/docs/ndss21_kuechler.pdf)'
tags: [paper]

---

# [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`