有關機器學習Malware分類器的那些事

有關機器學習Malware分類器的那些事

來自專欄嘶吼RoarTalk5 人贊了文章

0x00、前言

從2015年開始,機器學習預測方法在很多行業都得到了應用,特別是2017年一年,信息安全領域特別是殺毒軟體領域,已經出來完全取締特徵碼的方式判斷惡意軟體,進入2018年,Top靜態代碼殺毒公司已經完全淘汰基於yara方法的多特徵靜態代碼判斷惡意軟體的方式,完全使用機器學習分類器做為唯一判斷依據。目前,比較成熟的商用靜態惡意軟體檢測分類器引擎主要包括:Endgame、Cylance、SentinelOne、Sophos ML、CrowdStrike Falcon,那麼它們都使用那些數據研究、使用那些機器學習演算法做研究?接下來我們討論一下。

0x01、安全領域分類器受關注程度

安全領域的分類可以通過監督的學習模型訓練文件屬性之間的複雜關係來區分惡意和良性樣本, 但是,在公開研究中沒有得到過多的關注。下面是Neural Information Processing Systems (NIPS) 從1987年到2017年12月份所有paper的研究方向統計

·手寫數字分類(MNIST [445 papers])

·圖像標記(CIFAR [195 papers]或ImageNet [172 papers])

·交通標誌檢測(VGG [96 papers])

·語音識別(TIMIT [71 papers])

在這裡並沒有找到很多papers,其它可參考的文獻也沒有更多papers

究其原因主要是沒有一個很好用的研究的數據集。那麼,問題在哪呢?我想挑戰主要集中在以下幾個方面

·法律上的限制

惡意的二進位文件共享可以通過像VirusShare和VX Heaven,但良性的二進位文件共享的有版權和法律的限制。良性和惡意二進位文件需要通過付費服務才能內部使用,例如:virustotal。

·標註的挑戰

針對圖像,文本和語音,這些可能會相對來說很快的被標記,針對安全數據標註,很多情況下非安全專家標註惡意還是良性文件是一個耗時的問題,甚至還需要培訓。標註工作可以通過自動化軟體標註(人類經驗編碼),VirusTotal這樣的服務特別限制了供應商的共享反惡意軟體標籤。

·安全風險責任

發送大量的數據到非信息安全標註者,同時也不習慣例如沙箱的預防措施。

所以,通過endgame發布樣本文件的SHA256哈希,使用開源的計算程序提取了PE 文件特徵寫入到每個樣本中。

0x02、安全數據集

1、靜態惡意軟體檢測歷史

靜態惡意軟體檢測嘗試將樣本分類為惡意或良性而不執行它們,而不是動態的根據惡意軟體檢測惡意軟體其運行時行為包括時間相關序列的系統調用分析,基於機器學習的靜態PE惡意軟體檢測器至少自2001年以來一直在使用,研究成果包括:RIPPER、樸素貝葉斯和整體分類器、byte-level N-grams NLP處理方法。

儘管端到端的深度學習預測方法在對象狀態分類、機器翻譯、語音識別方面有了質的飛躍,在許多這些方法中,原始圖像,文本或語音波形被用作機器學習模型的輸入,可以獲得很有用的預測模型。但是,儘管在其他領域取得了成功,最近

惡意軟體分類的端到端深度學習示例在[22]中進行了討論,我們重新實現了這一點與第4節中的基準模型相比較

2、Demo測試

PE-Miner旨在生成基於機器學習的惡意軟體檢測器超過99%的真陽性率(TPR)以小於1%的誤報率(FPR)和運行時間可與當天基於簽名的掃描器相媲美

它在操作上訓練了1 447個良性文件的數據集系統(從未發布),10,339個惡意PE文件VX Heaven 以及Malfease的5586個惡意PE文件,PE-Miner使用包含二元指示符的189個功能對於引用的特定DLL,各個部分的大小,來自COFF部分的摘要信息,摘要資源表等

3、virustotal數據集製作

收集2016年12月~2017年12月大約110萬個樣本包900K訓練樣本(300K惡意,300K良性,300K無標籤)200K測試樣本(100K惡意,100K良性)。

在製作EMBER數據集時,我們考慮需要解決

·比較惡意軟體檢測相關的機器學習模型。

·量化模型退化和概念漂移時間。

·研究可解釋的機器學習。

·比較惡意軟體分類的功能,特別是在EMBER中未表示的新特徵數據集。 這需要一個可擴展的數據集。

·比較無特性提取的NLP深度學習。這可能需要從代碼中提取特徵新數據集或shas256哈希來構建一個原始二進位文件數據集以匹配EMBER。

·研究針對機器學習攻擊的惡意軟體和相應的防禦策略。

EMBER數據集由JSON行集合組成文件,每行包含一個JSON對象。每對象在數據中包含以下類型:

·原始文件的sha256散列作為唯一標識符;

·粗略的時間信息(月份解析度)建立文件第一次的估計可見;

·標籤,對於良性可能為0,對於惡意可能為1或-1表示未標記

·八組原始特徵,包括兩個分析過的值以及格式不可知的直方圖。

Byte Histogram:每個位元組出現次數的簡單計數

Byte Entropy Histogram:滑動窗口熵計算

Section Information:從導入的函數名稱導入的每個庫

Import Information:導入函數名

Export Information:導出函數名

String Information :字元串信息

General Information:包含:導入,導出,符號的數量以及文件是否有重定位,資源或簽名

Header Information:關於文件編譯的機器的詳細信息。 連接器的版本,

圖像和操作系統。

0x03、靜態惡意軟體分類器模型驗證

良性和惡意樣本可以分布在特徵空間中(使用文件大小和導入次數等屬性)

單一的yara規則只能區分兩類,簡單的yara是不可推廣的

機器學習模型可以定義更好的邊界,從而做出更準確的預測

模型:使用LightGBM使用默認模型參數訓練的梯度增強決策樹(GBDT)

import lightgbm as lgb X_train, y_train = read_vectorized_features(data_dir, subset="train」) train_rows = (y_train != -1) lgbm_dataset = lgb.Dataset(X_train[train_rows], y_train[train_rows]) lgbm_model = lgb.train({"application": "binary"}, lgbm_dataset)

Model Performance:

ROC AUC: 0.9991123269999999

Threshold: 0.871

False Positive Rate: 0.099%

False Negative Rate: 7.009%

Detection Rate: 92.991% ,商業模型一般都達到99%

0x04、總結

@1、這只是試驗模型,真正商業化還需要長時間的參數調優工作。

@2、機器學習判斷固然好,但是針對加密、加殼PE程序這種方法完全沒用,還需要藉助傳統安全廠商的檢測手段。

參考文獻:arxiv.org/pdf/1508.0309

本文為 bt0sea 原創稿件,授權嘶吼獨家發布,如若轉載,請註明原文地址: 4hou.com/technology/117 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

NO.4 Android反編譯傻瓜三件套
系統管理員如何快速高效的部署SSL和TLS?
「查找我的iPhone」功能被濫用,成黑客鎖定Mac電腦勒索幫凶
繞過AppLocker系列之MSBuild的利用
零知識證明與公鑰密碼體制有何聯繫,是不是公鑰密碼體制本身的簽名就是一種零知識證明?

TAG:機器學習 | 信息安全 |