Skip to content
《Web安全之强化学习与GAN》
Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
code
paper add Nov 29, 2017
photo Add files via upload Apr 2, 2018
.gitignore add Nov 28, 2017
README.md

README.md

《Web安全之强化学习与GAN》

logo

京东链接

https://item.jd.com/12335258.html

主要内容

  本书是作者AI领域三部曲的三部,重点介绍强化学习和生成对抗网络的基础知识和实际应用,是在领域中攻防建设的实际应用。全书共14章,从AI攻防的基础知识,到智能工具的打造,全面介绍如何使用AI做建设的方法。内容包括如何衡量机器学习算法的性能以及集成学习的基本知识,强化学习中单智能体的强化学习,Keras下强化学习算法的一种实现:Keras-rl,强化学习领域经常使用的OpenAIGym环境;基于机器学习的恶意程序识别技术以及常见的恶意程序免杀方法,如何使用强化学习生成免杀程序,并进一步提升杀毒软件的检测能力,提升WAF的防护能力,提升反垃圾邮件的检测能力;生成对抗网络的基础知识,以及针对机器学习、强化学习的几种攻击方式。

目录

对本书的赞誉

前言

1章 AI安全之攻与防1

1.1 AI设备的安全2

1.2 AI模型的安全3

1.3 使用AI进行安全建设4

1.4 使用AI进行攻击9

1.5 本章小结9

2章 打造机器学习工具箱11

2.1 TensorFlow11

2.2 Keras13

2.3 Anaconda14

2.4 OpenAI Gym19

2.5 Keras-rl19

2.6 XGBoost19

2.7 GPU服务器20

2.8 本章小结23

3章 性能衡量与集成学习24

3.1 常见性能衡量指标24

3.1.1 测试数据24

3.1.2 混淆矩阵25

3.1.3 准确率与召回率25

3.1.4 准确度与F1-Score26

3.1.5 ROC与AUC27

3.2 集成学习28

3.2.1 Boosting算法29

3.2.2 Bagging算法31

3.3 本章小结32

4章 Keras基础知识34

4.1 Keras简介34

4.2 Keras常用模型35

4.2.1 序列模型35

4.2.2 函数式模型35

4.3 Keras的网络层36

4.3.1 模型可视化36

4.3.2 常用层38

4.3.3 损失函数44

4.3.4 优化器44

4.3.5 模型的保存与加载45

4.3.6 基于全连接识别MNIST45

4.3.7 卷积层和池化层47

4.3.8 基于卷积识别MNIST49

4.3.9 循环层49

4.3.10 基于LSTM进行IMDB情感分类52

4.4 本章小结54

5章 单智力体强化学习55

5.1 马尔可夫决策过程55

5.2 Q函数56

5.3 贪婪算法与-贪婪算法57

5.4 Sarsa算法59

案例5-1:使用Sarsa算法处理金币问题60

5.5 Q Learning算法62

案例5-2:使用Q Learning算法处理金币问题63

5.6 Deep Q Network算法64

案例5-3:使用DQN算法处理CartPole问题65

5.7 本章小结71

6章 Keras-rl简介72

6.1 Keras-rl智能体介绍73

6.2 Keras-rl智能体通用API73

6.3 Keras-rl常用对象75

案例6-1:在Keras-rl下使用SARSA算法处理CartPole问题75

案例6-2:在Keras-rl下使用DQN算法处理CartPole问题77

案例6-3:在Keras-rl下使用DQN算法玩Atari游戏78

6.4 本章小结86

7章 OpenAI Gym简介87

7.1 OpenAI87

7.2 OpenAI Gym88

7.3 Hello World!OpenAI Gym89

7.4 编写OpenAI Gym环境92

7.5 本章小结98

8章 恶意程序检测99

8.1 PE文件格式概述100

8.2 PE文件的节104

8.3 PE文件特征提取107

8.4 PE文件节的特征提取119

8.5 检测模型121

8.6 本章小结129

9章 恶意程序免杀技术130

9.1 LIEF库简介130

9.2 文件末尾追加随机内容 132

9.3 追加导入表132

9.4 改变节名称133

9.5 增加节134

9.6 节内追加内容135

9.7 UPX加壳135

9.8 删除签名137

9.9 删除debug信息138

9.10 置空可选头的交验和138

9.11 本章小结138

10章 智能提升恶意程序检测能力139

10.1 Gym-Malware简介139

10.2 Gym-Malware架构141

10.2.1 PEFeatureExtractor141

10.2.2 Interface143

10.2.3 MalwareManipulator143

10.2.4 DQNAgent144

10.2.5 MalwareEnv145

10.3 恶意程序样本148

10.4 本章小结149

11章 智能提升WAF的防护能力150

11.1 常见XSS攻击方式151

11.2 常见XSS防御方式152

11.3 常见XSS绕过方式153

11.4 Gym-WAF架构155

11.4.1 Features类156

11.4.2 Xss_Manipulator类156

11.4.3 DQNAgent类160

11.4.4 WafEnv_v0类161

11.4.5 Waf_Check类162

11.5 效果验证163

11.6 本章小结164

12章 智能提升垃圾邮件检测能力165

12.1 垃圾邮件检测技术166

12.1.1 数据集166

12.1.2 特征提取168

12.1.3 模型训练与效果验证171

12.1.4 模型的使用172

12.2 垃圾邮件检测绕过技术173

12.2.1 随机增加TAB174

12.2.2 随机增加回车174

12.2.3 大小写混淆175

12.2.4 随机增加换行符175

12.2.5 随机增加连字符176

12.2.6 使用错别字176

12.3 Gym-Spam架构177

12.3.1 Features类178

12.3.2 Spam_Manipulator类178

12.3.3 DQNAgent类179

12.3.4 SpamEnv_v0类181

12.4 效果验证182

12.5 本章小结183

13章 生成对抗网络184

13.1 GAN基本原理184

13.2 GAN系统架构185

13.2.1 噪音源185

13.2.2 Generator186

13.2.3 Discriminator187

13.2.4 对抗模型188

13.3 GAN188

13.4 DCGAN194

13.5 ACGAN202

13.6 WGAN210

13.7 本章小结217

14章 攻击机器学习模型218

14.1 攻击图像分类模型218

14.1.1 常见图像分类模型219

14.1.2 梯度算法和损失函数222

14.1.3 基于梯度上升的攻击原理224

14.1.4 基于梯度上升的算法实现226

14.1.5 基于FGSM的攻击原理228

14.1.6 基于FGSM攻击的算法实现229

14.2 攻击其他模型231

案例14-1:攻击手写数字识别模型233

案例14-2:攻击自编码器240

案例14-3:攻击差分自编码器249

14.3 本章小结262

前言

​ 网络安全一直和AI相伴相生,从网络安全诞生的那一天起,人们就一直试图使用自动化的方式去解决安全问题。网络安全专家一直试图把自己对网络威胁的理解转换成机器可以理解的方式,比如黑白名单、正则表达式,然后利用机器强大的计算能力,夜以继日地从流量、日志、文件中寻找似曾相识的各类威胁。似乎这一切就是那么天经地义并无懈可击。但事情似乎又没有那么简单,机器其实并没有完全学到人的经验,网络安全专家一眼就可以识破的变形,对于机器却难以理解;更可怕的是,恶意程序数量呈指数级增长,各类新型攻击方式层出不穷,0day的出现早已超过一线明星出现在新闻头条的频率,依靠极其有限的网络专家总结的经验和几个安全厂商所谓的样本交换,已经难以应付现在的网络安全威胁。如果安全专家一眼就可以识破的威胁,机器也能够自动化发现甚至做出相应的响应,这已经是很大的进步;如果让机器可以像阿尔法狗理解围棋一样理解网络威胁,那将是巨大进步。事情又回到最初的那个问题,如何能让机器可以真正学会识别安全威胁?机器学习可能是一个不错的答案。 本书面向信息安全从业人员、大专院校计算机相关专业学生以及信息安全爱好者、机器学习爱好者,对于想了解人工智能的CTO、运维总监、架构师同样也是一本不错的科普书籍。如果读者看完本书,在工作学习中遇到问题时可以想起一到两种算法,那么我觉得就达到效果了;如果读者读完本书,可以像使用printf一样使用SVM、朴素贝叶斯等算法,那么这本书就相当成功了。 我写本书的初衷是帮助信息安全从业者了解机器学习,可以动手使用简单的机器学习算法解决实际问题。在写作中尽量避免生硬的说教,能用文字描述的尽量不用冷冰冰的公式,能用图和代码说明的尽量不用多余的文字。正如霍金所言“多写1个公式,少一半读者”,希望反之亦然。 机器学习应用于安全领域遇到的最大问题就是缺乏大量的黑样本,即所谓的攻击样本,尤其相对于大量的正常业务访问,攻击行为尤其是成功的攻击行为是非常少的,这就给机器学习带来了很大挑战。本书很少对不同算法进行横向比较,也是因为在不同场景下不同算法的确表现差别很大,很难说深度学习就一定比朴素贝叶斯好,也很难说支持向量机就比不过卷积神经网络,拿某个具体场景进行横评意义不大,毕竟选择算法不像购买SUV,可以拿几十个参数评头论足,最后还是需要大家结合实际问题去选择。 本书的第1章主要介绍了如何打造自己的深度学习工具箱,介绍了本书使用的TensorFlow、TFLearn等深度学习库的安装以及使用方法。第2章和第3章介绍了卷积神经网络和循环神经网络这两大深度学习算法的基础知识。第4章介绍在生产环境搭建机器学习平台需要使用的开源组件,包括Logstash、Kafka、Storm、Spark等,并且介绍了GPU和TPU的基础知识。第5章到第15章,介绍了11个使用机器学习技术解决实际安全问题的案例,包括验证码识别、垃圾邮件识别、负面评论识别、骚扰短信识别、Linux后门检测、用户行为分析与恶意行为检测、WebShell检测、智能扫描器、DGA域名检测、恶意程序分类识别、反信用卡欺诈,每个案例都使用互联网公开的数据集并配有基于Python的代码,代码和数据集可以在本书配套的GitHub下载。 本书是我所著机器学习三部曲的第二部,第一部主要以机器学习常见算法为主线,利用生活中的例子和具体安全场景来介绍机器学习常见算法,是机器学习入门书籍,便于读者可以快速上手。全部代码都能在普通PC上运行。本书将重点介绍深度学习,并以具体的11个案例介绍机器学习的应用,定位是面向具有一定机器学习基础或者致力于使用机器学习解决工作中问题的读者,本书将重点放在问题的解决而不是算法的介绍。由于深度学习通常计算量已经超过了PC的能力,部分代码需要在服务器甚至GPU上运行,不过这不影响大家的阅读与学习。第三部将重点介绍强化学习和对抗网络,并利用若干虚构安全产品或者项目来介绍如何让机器真正具备阿尔法狗级别的智能。遗憾的是,深度学习的优势发挥需要大量精准标注的训练样本,但是由于各种各样的原因,我只能在书中使用互联网上已经公开的数据集,这些数据量级往往很难发挥深度学习的优势,对于真正想在生产环境中验证想法的读者需要搜集更多样本。 致谢 这里我要感谢我的家人对我的支持,本来工作就很忙,没有太多时间处理家务,写书更是花费了我大量的休息时间,我的妻子无条件承担起了全部家务,尤其是照料孩子等繁杂事务。我很感谢我的女儿,写书这段时间几乎没有时间陪她玩,她很懂事地自己玩,我想用这本书作为她的生日礼物送给她。我还要感谢吴怡编辑对我的支持和鼓励,让我可以坚持把这本书写完。最后还要感谢各位业内好友尤其是我boss对我的支持,排名不分先后:马杰@百度安全、冯景辉@百度安全、Tony@京东安全、程岩@京东安全、简单@京东安全、林晓东@百度基础架构、黄颖@百度IT、李振宇@百度AI、Lenx@百度安全、黄正@百度安全、郝轶@百度云、云鹏@百度无人车、阿文@丁牛、赵林林@微步在线、张宇平@数盟、谢忱@Freebuf、李新@Freebuf、李琦@清华、徐恪@清华、王宇@蚂蚁金服、王珉然@蚂蚁金服、王龙@蚂蚁金服、周涛@启明星辰、姚志武@借贷宝、刘静@安天、刘袁君@医渡云、廖威@易宝支付、尹毅@sobug、宋文宽@联想、团长@宜人贷、齐鲁@搜狐安全、吴圣@58安全、康宇@新浪安全、幻泉@i春秋、雅驰@i春秋、王庆双@i春秋、张亚同@i春秋、王禾@微软、李臻@paloalto、西瓜@四叶草、郑伟@四叶草、朱利军@四叶草、土夫子@XSRC、英雄马@乐视云、sbilly@360、侯曼@360、高磊@滴滴、高磊@爱加密、高渐离@华为、刘洪善@华为云、宋柏林@一亩田、张昊@一亩田、张开@安恒、李硕@智联、阿杜@优信拍、李斌@房多多、李程@搜狗、姚聪@face+、李鸣雷@金山云、吴鲁加@小密圈,最后我还要感谢我的亲密战友陈燕、康亮亮、蔡奇、哲超、新宇、子奇、月升、王磊、碳基体、刘璇、钱华钩、刘超、王胄、吴梅、冯侦探、冯永校。 我平时在Freebuf专栏以及i春秋分享企业安全建设以及人工智能相关经验与最新话题,同时也运营我的微信公众号“兜哥带你学安全”、知识星球(原名小密圈)“Web安全之机器学习”,欢迎大家关注并在线交流。之前没有使用过知识星球的读者可以在各类应用市场上搜索。 本书使用的代码和数据均在GitHub上发布,地址为:https://github.com/duoergun0729/3book 代码层面任何疑问可以在GitHub上直接反馈。

​ 我的公众号二维码为:

img

​ 我的i春秋专栏二维码为:

img

You can’t perform that action at this time.