- Web安全之機器學(xué)習(xí)入門
- 劉焱
- 1524字
- 2019-01-05 10:21:42
1.4 人工智能在安全領(lǐng)域的應(yīng)用
人工智能在安全領(lǐng)域的應(yīng)用還屬于起步階段,各大安全公司以及互聯(lián)網(wǎng)巨頭都投入大量的人力物力,試圖使用人工智能的技術(shù)來顛覆安全這個行業(yè),目前在黃反鑒定、惡意鏈接、業(yè)務(wù)風(fēng)控領(lǐng)域、病毒分析、APT檢測方面都取得了不錯的進展,典型案例的就是2015年的一次數(shù)據(jù)挖掘比賽。
2015年,微軟在Kaggle上發(fā)起了一個惡意代碼分類的比賽,并提供了超過500G的原始數(shù)據(jù)。有意思的是,取得第一名的隊伍三個人都不是搞安全出身的,所采用的方法與我們常見的方法存在很大不同,展現(xiàn)了機器學(xué)習(xí)在安全領(lǐng)域的巨大潛力。早期的反病毒軟件大都單一的采用特征匹配的方法,簡單的利用特征串完成檢測。隨著惡意代碼技術(shù)的發(fā)展,惡意代碼開始在傳播過程中進行變形以躲避查殺,此時同一個惡意代碼的變種數(shù)量急劇提升,形態(tài)較本體也發(fā)生了較大的變化,反病毒軟件已經(jīng)很難提取出一段代碼作為惡意代碼的特征碼。Kaggle比賽中最重要的環(huán)節(jié)就是特征工程,特征的好壞直接決定了比賽成績。在這次Kaggle的比賽中冠軍隊伍選取了三個“黃金”特征:惡意代碼圖像、OpCode n-gram和Headers個數(shù),其他一些特征包括ByteCode n-gram,指令頻數(shù)等。機器學(xué)習(xí)部分采用了隨機森林算法,并用到了xgboost和pypy加快訓(xùn)練速度,最終他們檢測的效果超過了常見傳統(tǒng)檢測方式,取得了冠軍。
1.惡意代碼圖像
這個概念最早是2011年由加利福尼亞大學(xué)的Nataraj和Karthikeyan在他們的論文Malware Images∶ Visualization and Automatic Classification中提出來的,思路非常新穎,把一個二進制文件以灰度圖的形式展現(xiàn)出來,利用圖像中的紋理特征對惡意代碼進行聚類。此后,有許多研究人員在這個思路基礎(chǔ)上進行了改進和探索。就目前發(fā)表的文章來看,惡意代碼圖像的形式并不固定,研究人員可根據(jù)實際情況進行調(diào)整和創(chuàng)新。
2.OpCode n-gram
n-gram是自然語言處理領(lǐng)域的概念,早期的語音識別技術(shù)和統(tǒng)計語言模型與它密不可分。n-gram基于一個簡單的假設(shè),即認為一個詞出現(xiàn)的概率僅與它之前的n-1個詞有關(guān),這個概率可從大量語料中統(tǒng)計得到。例如“吃”的后面出現(xiàn)“蘋果”或“披薩”的概率就會比“公路”的概率大(正常的語料中基本不會出現(xiàn)“吃公路”這種組合),可以看出n-gram在一定程度上包含了部分語言特征。
將n-gram應(yīng)用于惡意代碼識別的想法最早由Tony等人在2004年的論文N-gram-based Detection of New Malicious Code中提出,不過他們的方法是基于ByteCode的。2008年Moskovitch等人的論文Unknown Malcode Detection Using OPCODE Representation中提出利用OpCode代替ByteCode更加科學(xué),如圖1-6所示。

圖1-6 二進制文件的OpCode n-gram
在移動應(yīng)用領(lǐng)域,使用類似的思路也取得了不錯的成績,我的同事王磊使用深度學(xué)習(xí)識別惡意APK,準確率達到99.96%,召回率達到了80%,2016年,反映該研究成果的論文“AI Based Antivirus∶ Can Alphaav Win The Battle in Which Man Has Failed? ”被享譽國內(nèi)外的Blackhat會議收錄并做了相關(guān)演講。
惡意APK伴隨移動互聯(lián)網(wǎng)井噴式的發(fā)展,其數(shù)量在近幾年幾何級別增長,如圖1-7所示。傳統(tǒng)的基于規(guī)則的檢測技術(shù)已經(jīng)無法覆蓋如此大量的惡意程序。

圖1-7 惡意APK數(shù)量猛增
王磊團隊在大量的人工分析惡意APK的工作中發(fā)現(xiàn),人工分析的過程很類似圖像識別的過程。深度學(xué)習(xí)在圖像識別領(lǐng)域有著成熟的應(yīng)用,是否可以通過提取APK特征,通過深度學(xué)習(xí)的方法來自動化識別惡意APK呢?如圖1-8所示。

圖1-8 惡意APK分析與圖像識別
王磊團隊對APK的特征提取主要分為三大類特征:
● 結(jié)構(gòu)化特征,包括APK申請的權(quán)限的個數(shù),資源文件中包含的圖像文件個數(shù)和參數(shù)大于20的函數(shù)的個數(shù)等。
● 統(tǒng)計類特征,包括近千條統(tǒng)計特征。
● 長期惡意APK檢測的經(jīng)驗總結(jié)的特征,包括資源文件中是否包含可執(zhí)行文件,assets文件夾中是否包含APK文件等。
特征提取過程如圖1-9所示。

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

圖1-10 歸一化APK特征
使用深度學(xué)習(xí)網(wǎng)絡(luò)訓(xùn)練,訓(xùn)練過程如圖1-11所示。

圖1-11 APK深度學(xué)習(xí)訓(xùn)練過程
整個訓(xùn)練過程中使用超過了15萬個樣本,訓(xùn)練使用了百度開源的深度學(xué)習(xí)框架Paddle。本書的第二部中關(guān)于深度學(xué)習(xí)的案例也主要使用Paddle和TensorFlow框架編寫。
Paddle主頁為:http://www.paddlepaddle.org/
- Wireshark 2 Quick Start Guide
- Penetration Testing with Perl
- Falco云原生安全:Falco原理、實踐與擴展
- 信息安全案例教程:技術(shù)與應(yīng)用(第2版)
- 軟件安全保障體系架構(gòu)
- 電腦安全與攻防入門很輕松(實戰(zhàn)超值版)
- End to End GUI Development with Qt5
- 網(wǎng)絡(luò)服務(wù)安全與監(jiān)控
- Cybersecurity Threats,Malware Trends,and Strategies
- 云計算安全:關(guān)鍵技術(shù)、原理及應(yīng)用
- 信息系統(tǒng)安全等級化保護原理與實踐
- 黑客攻防從入門到精通:實戰(zhàn)篇(第2版)
- Web安全之機器學(xué)習(xí)入門
- 隱私計算與密碼學(xué)應(yīng)用實踐
- Hack-A-Sat太空信息安全挑戰(zhàn)賽深度題解