基於數據科學的惡意軟件分析

Joshua Saxe

買這商品的人也買了...

商品描述

每年都有數百萬個惡意軟件文件被創建,每天都會產生大量與安全相關的數據,
安全已經成為一個“大數據”問題。所以,當防範惡意軟件時,為什麼不像數據科學家那樣思考呢?

 在本書中,安全數據科學家約書亞·薩克斯和希拉里·桑德斯展示了在構建自己的檢測和情報系統時,
如何應用機器學習、統計和數據可視化等技術。
在概述了靜態和動態分析等基礎逆向工程概念之後,你將學習如何度量惡意軟件樣本中的代碼相似性,
並使用scikit-learn和Keras等機器學習框架構建和訓練你自己的檢測器。

 通過閱讀本書,你將學習如何: 

 © 通過共享代碼分析,識別由相同攻擊組織編寫的新惡意軟件
 © 通過建立自己的機器學習檢測系統來捕獲0day惡意軟件
 © 使用ROC曲線來度量惡意軟件檢測器的準確性,以幫助你選擇解決安全問題的途徑
 © 使用數據可視化技術來識別和探討惡意軟件攻擊活動、演變趨勢和相互關係
 © 使用Python實現基於深度神經網絡的檢測系統

 無論你是一位想要為現有武器庫豐富能力的惡意軟件分析師,
還是一位對攻擊檢測和威脅情報感興趣的數據科學家,本書都將幫助你保持領先地位。

作者簡介

Joshua Saxe

是專業安全企業Sophos的首席數據科學家,他在Sophos公司負責領導一個安全數據科學研究團隊。
他還是Sophos公司基於神經網絡的惡意軟件檢測器的主要發明者,
它可以保護數以千萬計的Sophos客戶防範惡意軟件。
在加入Sophos之前,他花了5年時間來管理美國國防高級研究計劃局資助的美國政府安全數據研究項目。

 Hillary Sanders

是Sophos公司的高級軟件工程師和數據科學家,她在為Sophos公司發明和產品化神經網絡、
機器學習和惡意軟件相似性分析安全技術方面發揮了關鍵作用。
在加入Sophos之前,希拉里是Premise數據公司的數據科學家。
她經常在Black Hat USA和BSides Las Vegas等安全會議上發表演講。

目錄大綱

譯者序

前言
致謝
作者簡介
評審專家簡介
1章惡意軟件靜態分析基礎 1
1.1 微軟Windows可移植可執行文件格式 2
1.1.1 PE頭 3
1.1.2 可選頭 3
1.1.3 節頭 3
1.2 使用pef?ile解析PE文件格式 5
1.3 檢查惡意軟件的圖片 7
1.4 檢查惡意軟件的字符串 8
1.4.1 使用字符串程序 8
1.4.2 分析鏡像字符串 8
1.5 小結 10

第2章基礎靜態分析進階:x86反彙編 11
2.1 反彙編方法 11
2.2 x86彙編語言基礎 12
2.2.1 CPU寄存器 13
2.2.2 算術指令 14
2.2.3 數據傳送指令 15
2.3 使用peffile和capstone反彙編ircbot.exe 19
2.4 限制靜態分析的因素 21
2.4.1 加殼 21
2.4.2 資源混淆 22
2.4.3 反彙編技術 22
2.4.4 動態下載數據 22
2.5 小結 23

第3章動態分析簡介 24
3.1 為什麼使用動態分析 24
3.2 惡意軟件數據科學的動態分析 25
3.3 動態分析的基本工具 25
3.3.1 典型的惡意軟件行為 26
3.3.2 在malwr.com上加載文件 26
3.3.3 在malwr.com上分析結果 27
3.4 基本動態分析的局限 32
3.5 小結 32

第4章利用惡意軟件網絡識別攻擊活動 33
4.1 節點和邊 34
4.2 二分網絡 35
4.3 惡意軟件網絡可視化 37
4.3.1 失真問題 37
4.3.2 力導向算法 38
4.4 使用NetworkX構建網絡 38
4.5 添加節點和邊 39
4.5.1 添加屬性 40
4.5.2 將網絡保存到磁盤 41
4.6 使用GraphViz實現網絡可視化 41
4.6.1 使用參數調整網絡 42
4.6.2 GraphViz命令行工具 43
4.6.3 向節點和邊添加可視屬性 47
4.7 構建惡意軟件網絡 50
4.8 構建共享圖像關係網絡 53
4.9 小結 57

第5章共享代碼分析 58
5.1 通過特徵提取對樣本進行比較 61
5.1.1 特徵袋模型如何工作 61
5.1.2 N-gram 62
5.2 使用Jaccard係數量化相似性 63
5.3 使用相似性矩陣評價惡意軟件共享代碼估計方法 65
5.3.1 基於指令序列的相似性 66
5.3.2 基於字符串的相似性 68
5.3.3 基於導入地址表的相似性 69
5.3.4 基於API動態調用的相似性 70
5.4 構建相似圖 71
5.5 擴展相似性比較 76
5.5.1 minhash概述 77
5.5.2 minhash詳述 77
5.6 構建持續的惡意軟件相似性搜索系統 79
5.7 運行相似性搜索系統 84
5.8 小結 86

第6章理解基於機器學習的惡意軟件檢測方法 87
6.1 基於機器學習的檢測引擎構建步驟 88
6.1.1 收集訓練樣本 88
6.1.2 提取特徵 89
6.1.3 設計好的特徵 90
6.1.4 訓練機器學習系統 90
6.1.5 測試機器學習系統 91
6.2 理解特徵空間和決策邊界 91
6.3 是什麼決定了模型的好和壞:過擬合與欠擬合 96
6.4 機器學習算法的主要類型 99
6.4.1 邏輯回歸 100
6.4.2 k近鄰算法 103
6.4.3 決策樹 106
6.4.4 隨機森林 112
6.5 小結 114

第7章評價惡意軟件檢測系統 115
7.1 四種可能的檢測結果 115
7.1.1 檢出率和誤報率 116
7.1.2 檢出率和誤報率之間的關係 117
7.1.3 ROC曲線 118
7.2 在評價中考慮基准率 119
7.2.1 基准率如何影響精確度 120
7.2.2 在部署環境中評價精確度 120
7.3 小結 122

第8章構建基於機器學習的檢測器 123
8.1 術語和概念 124
8.2 構建一個基於決策樹的檢測器雛形 125
8.2.1 訓練你的決策樹分類器 126
8.2.2 可視化決策樹 127
8.2.3 完整的示例代碼 129
8.3 使用sklearn構建實際的機器學習檢測器 130
8.3.1 實際的特徵提取 130
8.3.2 為什麼不能使用所有可能的特徵 134
8.3.3 使用哈希技巧壓縮特徵 134
8.4 構建工業級的檢測器 138
8.4.1 特徵提取 138
8.4.2 訓練檢測器 139
8.4.3 運行檢測器檢測新的二進製文件 141
8.4.4 至此我們實現了什麼 142
8.5 評價檢測器的性能 144
8.5.1 使用ROC曲線評價檢測器的功效 144
8.5.2 計算ROC曲線 144
8.5.3 將數據拆分為訓練集和測試集 146
8.5.4 計算ROC曲線 147
8.5.5 交叉驗證 148
8.6 下一步工作 151
8.7 小結 152

第9章可視化惡意軟件趨勢 153
9.1 為什麼可視化惡意軟件數據很重要 153
9.2 理解我們的惡意軟件數據集 155
9.2.1 將數據加載到pandas中 156
9.2.2 使用pandas DataFrame 157
9.2.3 使用條件過濾數據 159
9.3 使用matplotlib可視化數據 160
9.3.1 繪製惡意軟件大小和反病毒引擎檢測之間的關係 161
9.3.2 繪製勒索軟件檢出率 162
9.3.3 繪製勒索軟件和蠕蟲檢測率 163
9.4 使用seaborn可視化數據 166
9.4.1 繪製反病毒引擎檢出的分佈圖 167
9.4.2 創建小提琴圖 170
9.5 小結 172

10章深度學習基礎 173
10.1 深度學習的定義 174
10.2 神經網絡是如何工作的 175
10.2.1 神經元剖析 175
10.2.2 神經元網絡 178
10.2.3 通用近似定理 178
10.2.4 構建自己的神經網絡 179
10.2.5 向網絡中添加一個新的神經元 182
10.2.6 自動生成特徵 184
10.3 訓練神經網絡 185
10.3.1 利用後向傳播優化神經網絡 186
10.3.2 路徑爆炸 188
10.3.3 梯度消失 189
10.4 神經網絡的類型 189
10.4.1 前饋神經網絡 189
10.4.2 卷積神經網絡 190
10.4.3 自編碼神經網絡 191
10.4.4 生成式對抗網絡 192
10.4.5 循環神經網絡 192
10.4.6 殘差網絡 193
10.5 小結 193


11章使用Keras構建神經網絡惡意軟件檢測器 194
11.1 定義模型的架構 195
11.2 編譯模型 197
11.3 訓練模型 198
11.3.1 提取特徵 198
11.3.2 創建數據生成器 199
11.3.3 與驗證數據協作 203
11.3.4 保存和加載模型 204
11.4 模型評價 205
11.5 使用回調強化模型訓練過程 206
11.5.1使用內置回調 207
11.5.2 使用自定義回調函數 208
11.6 小結 210

12章成為數據科學家 211
12.1 成為安全數據科學家之路 211
12.2 安全數據科學家的一天 212
12.3 高效安全數據科學家的特徵 214
12.3.1 開放的心態 214
12.3.2 無窮的好奇心 214
12.3.3 對結果的痴迷 215
12.3.4 對結果的懷疑 215
12.4 未來的工作 215
附錄數據集和工具概述 217