天天看點

《Web安全之機器學習入門》一 1.4 人工智能在安全領域的應用

人工智能在安全領域的應用還屬于起步階段,各大安全公司以及網際網路巨頭都投入大量的人力物力,試圖使用人工智能的技術來颠覆安全這個行業,目前在黃反鑒定、惡意連結、業務風控領域、病毒分析、APT檢測方面都取得了不錯的進展,典型案例的就是2015年的一次資料挖掘比賽。

2015年,微軟在Kaggle上發起了一個惡意代碼分類的比賽,并提供了超過500G的原始資料。有意思的是,取得第一名的隊伍三個人都不是搞安全出身的,所采用的方法與我們常見的方法存在很大不同,展現了機器學習在安全領域的巨大潛力。早期的反病毒軟體大都單一的采用特征比對的方法,簡單的利用特征串完成檢測。随着惡意代碼技術的發展,惡意代碼開始在傳播過程中進行變形以躲避清除,此時同一個惡意代碼的變種數量急劇提升,形态較本體也發生了較大的變化,反病毒軟體已經很難提取出一段代碼作為惡意代碼的特征碼。Kaggle比賽中最重要的環節就是特征工程,特征的好壞直接決定了比賽成績。在這次Kaggle的比賽中冠軍隊伍選取了三個“黃金”特征:惡意代碼圖像、 OpCode n-gram 和 Headers 個數,其他一些特征包括 ByteCode n-gram ,指令頻數等。機器學習部分采用了随機森林算法,并用到了 xgboost 和 pypy 加快訓練速度,最終他們檢測的效果超過了常見傳統檢測方式,取得了冠軍。

1.惡意代碼圖像

這個概念最早是2011年由加利福尼亞大學的 Nataraj 和 Karthikeyan 在他們的論文 Malware Images: Visualization and Automatic Classification 中提出來的,思路非常新穎,把一個二進制檔案以灰階圖的形式展現出來,利用圖像中的紋理特征對惡意代碼進行聚類。此後,有許多研究人員在這個思路基礎上進行了改進和探索。就目前發表的文章來看,惡意代碼圖像的形式并不固定,研究人員可根據實際情況進行調整和創新。

OpCode n-gram

n-gram 是自然語言處理領域的概念,早期的語音識别技術和統計語言模型與它密不可分。 n-gram 基于一個簡單的假設,即認為一個詞出現的機率僅與它之前的n-1個詞有關,這個機率可從大量語料中統計得到。例如“吃”的後面出現“蘋果”或“披薩”的機率就會比“公路”的機率大(正常的語料中基本不會出現“吃公路”這種組合),可以看出 n-gram 在一定程度上包含了部分語言特征。

将 n-gram應用于惡意代碼識别的想法最早由Tony等人在2004年的論文 N-gram-based Detection of New Malicious Code 中提出,不過他們的方法是基于 ByteCode 的。2008年 Moskovitch 等人的論文 Unknown Malcode Detection Using OPCODE Representation 中提出利用 OpCode 代替 ByteCode 更加科學,如圖1-6所示。

《Web安全之機器學習入門》一 1.4 人工智能在安全領域的應用

在移動應用領域,使用類似的思路也取得了不錯的成績,我的同僚王磊使用深度學習識别惡意APK,準确率達到99.96%,召回率達到了80%,2016年,反映該研究成果的論文“AI Based Antivirus: Can Alphaav Win The Battle in Which Man Has Failed?”被享譽國内外的Blackhat會議收錄并做了相關演講。

惡意APK伴随移動網際網路井噴式的發展,其數量在近幾年幾何級别增長,如圖1-7所示。傳統的基于規則的檢測技術已經無法覆寫如此大量的惡意程式。

《Web安全之機器學習入門》一 1.4 人工智能在安全領域的應用

王磊團隊在大量的人工分析惡意APK的工作中發現,人工分析的過程很類似圖像識别的過程。深度學習在圖像識别領域有着成熟的應用,是否可以通過提取APK特征,通過深度學習的方法來自動化識别惡意APK呢?如圖1-8所示。

《Web安全之機器學習入門》一 1.4 人工智能在安全領域的應用

王磊團隊對APK的特征提取主要分為三大類特征:

結構化特征,包括APK申請的權限的個數,資源檔案中包含的圖像檔案個數和參數大于20的函數的個數等。

統計類特征,包括近千條統計特征。

長期惡意APK檢測的經驗總結的特征,包括資源檔案中是否包含可執行檔案,assets檔案夾中是否包含APK檔案等。

特征提取過程如圖1-9所示。

《Web安全之機器學習入門》一 1.4 人工智能在安全領域的應用

歸一化處理一千多個特征,取值控制在-1和1之間,如圖1-10所示。

《Web安全之機器學習入門》一 1.4 人工智能在安全領域的應用

使用深度學習網絡訓練,訓練過程如圖1-11所示。

《Web安全之機器學習入門》一 1.4 人工智能在安全領域的應用

整個訓練過程中使用超過了15萬個樣本,訓練使用了百度開源的深度學習架構Paddle。本書的第二部中關于深度學習的案例也主要使用Paddle和TensorFlow架構編寫。