惡意軟件可以說是我們現代生活的一大威脅,為了保護我們電子設備中的財產和資料安全,我們往往需要尋求安全軟件的幫助。前段時間,來自貝爾法斯特女王大學和亞利桑那州立大學的研究者提出并開源了一種使用神經網絡來幫助檢測安卓(Android)惡意軟件的方法。機器之心在本文中對該項目的介紹文檔和論文摘要進行了介紹。
- 論文地址:http://dl.acm.org/citation.cfm?id=3029823
- 項目地址:https://github.com/niallmcl/Deep-Android-Malware-Detection
我們使用了一種卷積神經網絡(CNN)來進行安卓惡意軟件分類。這種惡意軟件分類的執行方式是對安卓APK進行反匯編,然后對其原始操作碼序列(rawopcodesequence)進行靜態分析。其中,指示「惡意」的特征是從原始操作碼序列中自動學習到,因此無需人工設計惡意特征。該網絡運行在GPU上,可以快速掃描大量文件。
如果你使用此代碼,請引用以下論文:
如何運行本代碼
給定一個已有的數據集目錄(詳情見下),其中run.sh文件將會執行以下內容:
- 將數據集分割為訓練集和留存的測試集
- 訓練神經網絡
- 在測試集上對訓練后的網絡進行測試
準備工作
數據集結構
數據集所需目錄結構的例子可參看./dataset
本神經網絡需要格式正確的操作碼序列文件,并且數據集目錄中需要包含惡意和良性的操作碼序列文件的子目錄。
在./dataset中提供了一個數據目錄示例。該數據集目錄必須包含以下結構:
- 必須要有一個叫做「Benign」的目錄,其中包含了非惡意的操作碼序列文件。
- 其它目錄可以隨意命名,其中包含了惡意的操作碼序列文件。
操作碼序列文件(OpcodeSequencefiles)
操作碼序列文件可以使用操作碼序列創建工具從安卓APK中創建。該工具放在./opcodeseq_creator下。請參閱該目錄下的README文件了解更多。
設置
本神經網絡的代碼是使用Torch實現的。推薦使用GPU來實現測試和訓練加速。有關Torch安裝的更多詳情,請參閱:http://torch.ch/
其中操作碼序列創建工具需要APKTool:https://ibotpeaches.github.io/Apktool/
論文:深度安卓惡意軟件檢測(DeepAndroidMalwareDetection)
在這篇論文中,我們提出了一種使用深度卷積神經網絡(CNN)的全新安卓惡意軟件檢測系統。惡意軟件分類的執行是基于對反匯編的程序的原始操作碼序列進行靜態分析。指示惡意軟件的特征是從原始操作碼序列中自動學習到,因此無需人工設計惡意特征。我們提出的系統的訓練流程比已有的基于n-gram的惡意軟件檢測方法要簡單得多,因為該網絡是端到端地訓練來聯合學習適當的特征并執行分類,因此無需在訓練過程中明確枚舉數百萬n-gram。該網絡設計還允許使用特征這樣的長n-gram,而已有的方法卻無法在計算上做到這一點。訓練完成后,該網絡可以在一個GPU上得到有效的執行,從而可以快速掃描大量文件。