內容簡介
本書是國內首部機器學習套用於Web安全的作品,作者是百度安全專家,他用風趣幽默的語言詮釋了超過15種的機器學習算法,及其在Web安全領域中的實際套用,非常實用,包括所有案例原始碼,以及公開的測試數據,可極大地降低學習成本,使讀應灑悼者快速上手實踐。在現今的網際網路公司中,產品線綿延複雜,安全防禦體系無時無刻不在應對新的挑戰。哪怕是擁有豐富工作經驗的安全從業者,在面對層出不窮的攻擊手段和海量日誌數據時也會
望洋興嘆。機器學習是這些問題天然契合的解決方案,在數據量以指數級不府樂斷增長的未來,甚至有可能是唯一的出路。
《Web安全之機器學習入門》由百度安全專家撰寫,零基礎學習智慧型化Web安全技術指南,二十多位業界專家聯袂推薦。本書首先介紹主流的機器學習工具,以及Python套用於機器學習的優勢,並介紹Scikit-Learn環境搭建、TensorFlow環境搭建。接著介紹機器學習的基本概念和Web安全基礎知識。然後深入講解幾個
機器學習算法在Web安全領域的實際套用探采墓,如K近鄰、決策樹、
樸素貝葉斯、邏輯回歸、
支持向量機、K-Means算法、FP-growth、隱式馬爾可夫、有向圖、神經網路等,還介紹了深度學習算法CNN、RNN。本書針對每一個算法都給出了具體案例,理論結合實際,講解清晰,文筆幽默,適合有信息安全基礎知識的網路開發與運維技術人員參考。
作者簡介
作者為劉焱,百度安全Web防護產品線負責人,負責百度安全的Web安全產品,包括防DDoS、
Web套用防火牆、Web威脅感知、伺服器安全以及安全數據分析等,具有近十年雲安全及企業安全從業經歷,全程參與了百度企業安全建設。研究興趣包括機器學習、Web安全、殭屍網路、威脅情報等。他是FreeBuf專欄作家、i春秋知名講師,多次在OWASP 、電子學會年會等發表演講,參與編寫了《大數據安全標準白皮書》。他還建立了微信公眾號:“兜哥帶你學安全”,發布了大量信息安全技術知識。
目錄
第1章 通向智慧型安全的旅程
1.1 人工智慧、機器學習與深度學習 1
1.2 人凳才煉工智慧型的發展 2
1.3 國內外網路安全形勢 3
1.4 人工智慧在安全領域的套用 5
1.5 算法和數據的辯證關係 9
1.6 本章小結 9
參考資源 10
第2章 打造機器學習工具箱
2.1 Python在機器學習領域的優勢 11
2.1.1 NumPy 11
2.1.2 SciPy 15
2.1.3 NLTK 16
2.1.4 Scikit-Learn 17
2.2 TensorFlow簡介與環境搭建 18
2.3 本章小結乃格霉芝 19
參考資源 20
第3章 機器學習概述
3.1 機器學習基本概念 21
3.2 數據集 22
3.2.1 KDD 99數據 22
3.2.2 HTTP DATASET CSIC 2010 26
3.2.3 SEA數據集 26
3.2.4 ADFA-LD數據集 27
3.2.5 Alexa域名數據 29
3.2.6 Scikit-Learn數據集 29
3.2.7 MNIST數據集 30
3.2.8 Movie Review Data 31
3.2.9 SpamBase數據集 32
3.2.10 Enron數據集 33
3.3 特徵提取 35
3.3.1 數字型特徵提取 35
3.3.2 文本照驗虹遙型特徵提取 36
3.3.3 數據讀取 37
3.4 效果驗證 38
3.5 本章小結 40
參考資源 40
第4章 Web安全基礎
4.1 XSS攻擊概述 41
4.1.1 XSS的分類 43
4.1.2 XSS特殊攻擊方式 48
4.1.3 XSS平台簡介 50
4.1.4 近年典型XSS攻擊事件分析 51
4.2 SQL注入概述 53
4.2.2 常見SQL注入攻擊載荷 55
4.2.3 SQL常見工具 56
4.2.4 近年典型SQL注入事件分析 60
4.3 WebShell概述 63
4.3.1 WebShell功能 64
4.3.2 常見WebShell 64
4.4 殭屍網路概述 67
4.4.1 殭屍網路的危害 68
4.4.2 近年典型殭屍網路攻擊事件分析 69
4.5 本章小結 72
參考資源 72
第5章 K近鄰算法
5.1 K近鄰算法概述 74
5.2 示例:hello world!K近鄰 75
5.3 示例:使用K近鄰算法檢測異常操作(一) 76
5.4 示例:使用K近慨促再鄰算法檢測異常操作(二) 80
5.5 示例:使用K近鄰算法檢測Rootkit 81
5.6 示例:使用K近鄰算法檢測WebShell 83
5.7 本章小結 85
參考資源 86
第6章 決策樹與隨機森林算法
6.2 示例:hello world!決策樹 88
6.3 示例:使用決策樹算法檢測POP3暴力破解 89
6.4 示例:使用決策樹算法檢測FTP暴力破解 91
6.5 隨機森林算法概述 93
6.6 示例:hello world!隨機森林 93
6.7 示例:使用隨機森林算法檢測FTP暴力破解 95
6.8 本章小結 96
參考資源 96
第7章 樸素貝葉斯算法
7.1 樸素貝葉斯算法概述 97
7.2 示例:hello world!樸素貝葉斯 98
7.3 示例:檢測異常操作 99
7.4 示例:檢測WebShell(一) 100
7.5 示例:檢測WebShell(二) 102
7.6 示例:檢測DGA域名 103
7.7 示例:檢測針對Apache的DDoS攻擊 104
7.8 示例:識別驗證碼 107
7.9 本章小結 108
參考資源 108
第8章 邏輯回歸算法
8.1 邏輯回歸算法概述 109
8.2 示例:hello world!邏輯回歸 110
8.3 示例:使用邏輯回歸算法檢測Java溢出攻擊 111
8.4 示例:識別驗證碼 113
8.5 本章小結 114
參考資源 114
第9章 支持向量機算法
9.1 支持向量機算法概述 115
9.2 示例:hello world!支持向量機 118
9.3 示例:使用支持向量機算法識別XSS 120
9.4 示例:使用支持向量機算法區分殭屍網路DGA家族 124
9.4.1 數據蒐集和數據清洗 124
9.4.2 特徵化 125
9.4.3 模型驗證 129
9.5 本章小結 130
參考資源 130
第10章K-Means與DBSCAN算法
10.1 K-Means算法概述 131
10.2 示例:hello world!K-Means 132
10.3 示例:使用K-Means算法檢測DGA域名 133
10.4 DBSCAN算法概述 135
10.5 示例:hello world!DBSCAN 135
10.6 本章小結 137
參考資源 137
第11章Apriori與FP-growth算法
11.1 Apriori算法概述 138
11.2 示例:hello world!Apriori 140
11.3 示例:使用Apriori算法挖掘XSS相關參數 141
11.4 FP-growth算法概述 143
11.5 示例:hello world!FP-growth 144
11.6 示例:使用FP-growth算法挖掘疑似殭屍主機 145
11.7 本章小結 146
參考資源 146
第12章 隱式馬爾可夫算法
12.1 隱式馬爾可夫算法概述 147
12.2 hello world! 隱式馬爾可夫 148
12.3 示例:使用隱式馬爾可夫算法識別XSS攻擊(一) 150
12.4 示例:使用隱式馬爾可夫算法識別XSS攻擊(二) 153
12.5 示例:使用隱式馬爾可夫算法識別DGA域名 159
12.6 本章小結 162
參考資源 162
第13章 圖算法與知識圖譜
13.1 圖算法概述 163
13.2 示例:hello world!有向圖 164
13.3 示例:使用有向圖識別WebShell 169
13.4 示例:使用有向圖識別殭屍網路 173
13.5 知識圖譜概述 176
13.6 示例:知識圖譜在風控領域的套用 177
13.6.1 檢測疑似賬號被盜 178
13.6.2 檢測疑似撞庫攻擊 179
13.6.3 檢測疑似刷單 181
13.7 示例:知識圖譜在威脅情報領域的套用 183
13.7.1 挖掘後門檔案潛在聯繫 184
13.7.2 挖掘域名潛在聯繫 185
13.8 本章小結 187
參考資源 187
第14章 神經網路算法
14.1 神經網路算法概述 188
14.2 示例:hello world!神經網路 190
14.3 示例:使用神經網路算法識別驗證碼 190
14.4 示例:使用神經網路算法檢測Java溢出攻擊 191
14.5 本章小結 193
參考資源 194
第15章 多層感知機與DNN算法
15.1 神經網路與深度學習 195
15.2 TensorFlow編程模型 196
15.2.1 操作 197
15.2.2 張量 197
15.2.3 變數 198
15.2.4 會話 198
15.3 TensorFlow的運行模式 198
15.4 示例:在TensorFlow下識別驗證碼(一) 199
15.5 示例:在TensorFlow下識別驗證碼(二) 202
15.6 示例:在TensorFlow下識別驗證碼(三) 205
15.7 示例:在TensorFlow下識別垃圾郵件(一) 207
15.8 示例:在TensorFlow下識別垃圾郵件(二) 209
15.9 本章小結 210
參考資源 210
第16章 循環神經網路算法
16.1 循環神經網路算法概述 212
16.2 示例:識別驗證碼 213
16.3 示例:識別惡意評論 216
16.4 示例:生成城市名稱 220
16.5 示例:識別WebShell 222
16.6 示例:生成常用密碼 225
16.7 示例:識別異常操作 227
16.8 本章小結 230
參考資源 230
第17章 卷積神經網路算法
17.1 卷積神經網路算法概述 231
17.2 示例:hello world!卷積神經網路 234
17.3 示例:識別惡意評論 235
17.4 示例:識別垃圾郵件 237
17.5 本章小結 240
參考資源 242
3.2.1 KDD 99數據 22
3.2.2 HTTP DATASET CSIC 2010 26
3.2.3 SEA數據集 26
3.2.4 ADFA-LD數據集 27
3.2.5 Alexa域名數據 29
3.2.6 Scikit-Learn數據集 29
3.2.7 MNIST數據集 30
3.2.8 Movie Review Data 31
3.2.9 SpamBase數據集 32
3.2.10 Enron數據集 33
3.3 特徵提取 35
3.3.1 數字型特徵提取 35
3.3.2 文本型特徵提取 36
3.3.3 數據讀取 37
3.4 效果驗證 38
3.5 本章小結 40
參考資源 40
第4章 Web安全基礎
4.1 XSS攻擊概述 41
4.1.1 XSS的分類 43
4.1.2 XSS特殊攻擊方式 48
4.1.3 XSS平台簡介 50
4.1.4 近年典型XSS攻擊事件分析 51
4.2 SQL注入概述 53
4.2.2 常見SQL注入攻擊載荷 55
4.2.3 SQL常見工具 56
4.2.4 近年典型SQL注入事件分析 60
4.3 WebShell概述 63
4.3.1 WebShell功能 64
4.3.2 常見WebShell 64
4.4 殭屍網路概述 67
4.4.1 殭屍網路的危害 68
4.4.2 近年典型殭屍網路攻擊事件分析 69
4.5 本章小結 72
參考資源 72
第5章 K近鄰算法
5.1 K近鄰算法概述 74
5.2 示例:hello world!K近鄰 75
5.3 示例:使用K近鄰算法檢測異常操作(一) 76
5.4 示例:使用K近鄰算法檢測異常操作(二) 80
5.5 示例:使用K近鄰算法檢測Rootkit 81
5.6 示例:使用K近鄰算法檢測WebShell 83
5.7 本章小結 85
參考資源 86
第6章 決策樹與隨機森林算法
6.2 示例:hello world!決策樹 88
6.3 示例:使用決策樹算法檢測POP3暴力破解 89
6.4 示例:使用決策樹算法檢測FTP暴力破解 91
6.5 隨機森林算法概述 93
6.6 示例:hello world!隨機森林 93
6.7 示例:使用隨機森林算法檢測FTP暴力破解 95
6.8 本章小結 96
參考資源 96
第7章 樸素貝葉斯算法
7.1 樸素貝葉斯算法概述 97
7.2 示例:hello world!樸素貝葉斯 98
7.3 示例:檢測異常操作 99
7.4 示例:檢測WebShell(一) 100
7.5 示例:檢測WebShell(二) 102
7.6 示例:檢測DGA域名 103
7.7 示例:檢測針對Apache的DDoS攻擊 104
7.8 示例:識別驗證碼 107
7.9 本章小結 108
參考資源 108
第8章 邏輯回歸算法
8.1 邏輯回歸算法概述 109
8.2 示例:hello world!邏輯回歸 110
8.3 示例:使用邏輯回歸算法檢測Java溢出攻擊 111
8.4 示例:識別驗證碼 113
8.5 本章小結 114
參考資源 114
第9章 支持向量機算法
9.1 支持向量機算法概述 115
9.2 示例:hello world!支持向量機 118
9.3 示例:使用支持向量機算法識別XSS 120
9.4 示例:使用支持向量機算法區分殭屍網路DGA家族 124
9.4.1 數據蒐集和數據清洗 124
9.4.2 特徵化 125
9.4.3 模型驗證 129
9.5 本章小結 130
參考資源 130
第10章K-Means與DBSCAN算法
10.1 K-Means算法概述 131
10.2 示例:hello world!K-Means 132
10.3 示例:使用K-Means算法檢測DGA域名 133
10.4 DBSCAN算法概述 135
10.5 示例:hello world!DBSCAN 135
10.6 本章小結 137
參考資源 137
第11章Apriori與FP-growth算法
11.1 Apriori算法概述 138
11.2 示例:hello world!Apriori 140
11.3 示例:使用Apriori算法挖掘XSS相關參數 141
11.4 FP-growth算法概述 143
11.5 示例:hello world!FP-growth 144
11.6 示例:使用FP-growth算法挖掘疑似殭屍主機 145
11.7 本章小結 146
參考資源 146
第12章 隱式馬爾可夫算法
12.1 隱式馬爾可夫算法概述 147
12.2 hello world! 隱式馬爾可夫 148
12.3 示例:使用隱式馬爾可夫算法識別XSS攻擊(一) 150
12.4 示例:使用隱式馬爾可夫算法識別XSS攻擊(二) 153
12.5 示例:使用隱式馬爾可夫算法識別DGA域名 159
12.6 本章小結 162
參考資源 162
第13章 圖算法與知識圖譜
13.1 圖算法概述 163
13.2 示例:hello world!有向圖 164
13.3 示例:使用有向圖識別WebShell 169
13.4 示例:使用有向圖識別殭屍網路 173
13.5 知識圖譜概述 176
13.6 示例:知識圖譜在風控領域的套用 177
13.6.1 檢測疑似賬號被盜 178
13.6.2 檢測疑似撞庫攻擊 179
13.6.3 檢測疑似刷單 181
13.7 示例:知識圖譜在威脅情報領域的套用 183
13.7.1 挖掘後門檔案潛在聯繫 184
13.7.2 挖掘域名潛在聯繫 185
13.8 本章小結 187
參考資源 187
第14章 神經網路算法
14.1 神經網路算法概述 188
14.2 示例:hello world!神經網路 190
14.3 示例:使用神經網路算法識別驗證碼 190
14.4 示例:使用神經網路算法檢測Java溢出攻擊 191
14.5 本章小結 193
參考資源 194
第15章 多層感知機與DNN算法
15.1 神經網路與深度學習 195
15.2 TensorFlow編程模型 196
15.2.1 操作 197
15.2.2 張量 197
15.2.3 變數 198
15.2.4 會話 198
15.3 TensorFlow的運行模式 198
15.4 示例:在TensorFlow下識別驗證碼(一) 199
15.5 示例:在TensorFlow下識別驗證碼(二) 202
15.6 示例:在TensorFlow下識別驗證碼(三) 205
15.7 示例:在TensorFlow下識別垃圾郵件(一) 207
15.8 示例:在TensorFlow下識別垃圾郵件(二) 209
15.9 本章小結 210
參考資源 210
第16章 循環神經網路算法
16.1 循環神經網路算法概述 212
16.2 示例:識別驗證碼 213
16.3 示例:識別惡意評論 216
16.4 示例:生成城市名稱 220
16.5 示例:識別WebShell 222
16.6 示例:生成常用密碼 225
16.7 示例:識別異常操作 227
16.8 本章小結 230
參考資源 230
第17章 卷積神經網路算法
17.1 卷積神經網路算法概述 231
17.2 示例:hello world!卷積神經網路 234
17.3 示例:識別惡意評論 235
17.4 示例:識別垃圾郵件 237
17.5 本章小結 240
參考資源 242