1. 程式人生 > >深度安卓惡意軟體檢測系統:用卷積神經網路保護你的手機

深度安卓惡意軟體檢測系統:用卷積神經網路保護你的手機

惡意軟體可以說是我們現代生活的一大威脅,為了保護我們電子裝置中的財產和資料安全,我們往往需要尋求安全軟體的幫助。前段時間,來自貝爾法斯特女王大學和亞利桑那州立大學的研究者提出並開源了一種使用神經網路來幫助檢測安卓(Android)惡意軟體的方法。機器之心在本文中對該專案的介紹文件和論文摘要進行了介紹。

我們使用了一種卷積神經網路(CNN)來進行安卓惡意軟體分類。這種惡意軟體分類的執行方式是對安卓 APK 進行反彙編,然後對其原始操作碼序列(raw opcode sequence)進行靜態分析。其中,指示「惡意」的特徵是從原始操作碼序列中自動學習到,因此無需人工設計惡意特徵。該網路執行在 GPU 上,可以快速掃描大量檔案。


如果你使用此程式碼,請引用以下論文:

@inproceedings{mclaughlin2017codaspy,
title = "Deep Android Malware Detection",
author = "Niall McLaughlin and {Martinez del Rincon}, Jesus and BooJoong Kang and Suleiman Yerima and Paul Miller and Sakir Sezer and Yeganeh Safaeisemnani and Erik Trickel and Ziming Zhao and Adam Doupé and {Joon Ahn}, Gail"
, year = "2016", month = "12", booktitle = "Proceeding of the ACM Conference on Data and Applications Security and Privacy (CODASPY) 2017", publisher = "Association for Computing Machinery (ACM)", }

如何執行本程式碼

給定一個已有的資料集目錄(詳情見下),其中 run.sh 檔案將會執行以下內容:

  1. 將資料集分割為訓練集和留存的測試集
  2. 訓練神經網路
  3. 在測試集上對訓練後的網路進行測試

準備工作

資料集結構

資料集所需目錄結構的例子可參看 ./dataset

本神經網路需要格式正確的操作碼序列檔案,並且資料集目錄中需要包含惡意和良性的操作碼序列檔案的子目錄。

在 ./dataset 中提供了一個數據目錄示例。該資料集目錄必須包含以下結構:

  1. 必須要有一個叫做「Benign」的目錄,其中包含了非惡意的操作碼序列檔案。
  2. 其它目錄可以隨意命名,其中包含了惡意的操作碼序列檔案。

操作碼序列檔案(Opcode Sequence files)

操作碼序列檔案可以使用操作碼序列建立工具從安卓 APK 中建立。該工具放在 ./opcodeseq_creator 下。請參閱該目錄下的 README 檔案瞭解更多。

設定

本神經網路的程式碼是使用 Torch 實現的。推薦使用 GPU 來實現測試和訓練加速。有關 Torch 安裝的更多詳情,請參閱:http://torch.ch/

論文:深度安卓惡意軟體檢測(Deep Android Malware Detection)

在這篇論文中,我們提出了一種使用深度卷積神經網路(CNN)的全新安卓惡意軟體檢測系統。惡意軟體分類的執行是基於對反彙編的程式的原始操作碼序列進行靜態分析。指示惡意軟體的特徵是從原始操作碼序列中自動學習到,因此無需人工設計惡意特徵。我們提出的系統的訓練流程比已有的基於 n-gram 的惡意軟體檢測方法要簡單得多,因為該網路是端到端地訓練來聯合學習適當的特徵並執行分類,因此無需在訓練過程中明確列舉數百萬 n-gram。該網路設計還允許使用特徵這樣的長 n-gram,而已有的方法卻無法在計算上做到這一點。訓練完成後,該網路可以在一個 GPU 上得到有效的執行,從而可以快速掃描大量檔案。