本书是作者机器学习三部曲的第三部,重点介绍强化学习和生成对抗网络的基础知识和实际应用,特别是在安全领域中攻防建设中的实际应用。共13章,第1章主要介绍了如何打造自己的深度学习工具箱,介绍了AI安全的攻与防,介绍了针对AI设备和AI模型的攻击,以及使用AI做安全建设和攻击。第2章介绍了如何打造深度学习的攻击箱,第3章介绍了如何衡量机器学习算法的性能以及集成学习的基本知识。第4章介绍了Keras的基本知识以及使用方法,这章是后面章节学习开发的基础。第5章介绍了强化学习,重点介绍了单智能体的强化学习。第6章介绍了Keras下强化学习算法的一种实现Keras-rl。第7章介绍了强化学习领域经常使用的OpenAI Gym环境。第8章到第10章,介绍了基于机器学习的恶意程序识别技术以及常见的恶意程序免杀方法,最后介绍了如何使用强化学习生成免杀程序,并进一步提升杀毒软件的检测能力。第11章介绍如何使用强化学习提升WAF的防护能力,第12章介绍如何使用强化学习提升反垃圾邮件的检测能力。第13章介绍了生成对抗网络的基础知识,介绍针对机器学习模型的几种攻击方式,包括如何欺骗图像识别模型让其指鹿为马。每个案例都使用互联网公开的数据集并配有基于Python的代码,代码和数据集可以在本书配套的GitHub下载。
百度安全专家撰写,Web安全工具智能化升级
网络安全一直和AI相伴相生,从网络安全诞生的那一天起,人们就一直试图使用自动化的方式去解决安全问题。网络安全专家一直试图把自己对网络威胁的理解转换成机器可以理解的方式,比如黑白名单、正则表达式,然后利用机器强大的计算能力,夜以继日地从流量、日志、文件中寻找似曾相识的各类威胁。似乎这一切就是那么天经地义并无懈可击。事情似乎又没有那么简单,机器其实并没有完全学到人的经验,网络安全专家一眼就可以识破的变形,对于机器却难以理解;更可怕的是,恶意程序数量呈指数增长,各类新型攻击方式层出不穷,0day(零日攻击)的出现早已超过一线明星出现在新闻头条的频率,依靠极其有限的网络专家总结的经验和几个安全厂商所谓的样本交换,已经难以应付现在的网络安全威胁。如果安全专家一眼就可以识破的威胁,机器也能够自动化发现甚至做出相应的响应,这已经是很大的进步;如果让机器可以像AlphaGo理解围棋一样,能够理解网络威胁,那将是巨大进步。事情又回到最初的那个问题,如何能让机器真正学会识别安全威胁?机器学习可能是一个不错的答案。
目标读者
本书面向信息安全从业人员、大专院校计算机相关专业学生以及信息安全爱好者、机器学习爱好者,对于想了解人工智能的CTO、运维总监、架构师,本书同样也是一本不错的科普书籍。如果看完本书,可以让读者在工作学习中遇到问题时想起一到两种算法,那么我觉得就达到效果了;如果可以让读者像使用printf一样使用SVM、朴素贝叶斯等算法,那么这本书就相当成功了。
我写本书的初衷是帮助安全爱好者以及信息安全从业者了解机器学习,可以动手使用简单的机器学习算法解决实际问题。在写作中尽量避免生硬的说教,能用文字描述的尽量不用冷冰冰的公式,能用图和代码说明的尽量不用多余的文字,正如霍金说言,“多写一个公式,少一半读者”,希望反之亦然。
机器学习应用于安全领域遇到的最大问题就是缺乏大量的黑样本,即所谓的攻击样本,尤其相对于大量的正常业务访问,攻击行为尤其是成功的攻击行为是非常少的,这就给机器学习带来了很大挑战。本书很少对不同算法进行横向比较,也是因为在不同场景下不同算法的表现差别的确很大,很难说深度学习就一定比朴素贝叶斯好,也很难说支持向量机就不如卷积神经网络,拿某个具体场景进行横评意义不大,毕竟选择算法不像购买SUV,可以拿几十个参数评头论足,最后还是需要大家结合实际问题去选择。
如何使用本书
本书的第1章主要介绍了如何打造自己的深度学习工具箱,介绍了AI安全的攻与防,介绍了针对AI设备和AI模型的攻击,以及使用AI进行安全建设和攻击。第2章介绍了如何打造深度学习的工具箱。第3章介绍了如何衡量机器学习算法的性能以及集成学习的基本知识。第4章介绍了Keras的基本知识以及使用方法,这章是后面章节学习开发的基础。第5章介绍了强化学习,重点介绍了单智力体的强化学习。第6章介绍了Keras下强化学习算法的一种实现Keras-rl。第7章介绍了强化学习领域经常使用的OpenAI Gym环境。第8章~第10章,介绍了基于机器学习的恶意程序识别技术以及常见的恶意程序免杀方法,最后介绍了如何使用强化学习生成免杀程序,并进一步提升杀毒软件的检测能力。第11章介绍如何使用强化学习提升WAF的防护能力,第12章介绍如何使用强化学习提升反垃圾邮件的检测能力。第13章介绍了对抗生成网络的基础知识,第14章介绍了针对机器学习模型的几种攻击方式,包括如何欺骗图像识别模型让其指鹿为马。每个案例都使用互联网公开的数据集并配有基于Python的代码,代码和数据集可以在本书配套的GitHub下载。
本书是我机器学习三部曲的第三部,在第一部中,主要以机器学习常见算法为主线,以生活中的例子和具体安全场景介绍机器学习常见算法,定位为机器学习入门书籍,便于大家快速上手。全部代码都可以在普通PC电脑上运行。在第二部中,重点介绍深度学习,并以具体的11个案例介绍机器学习的应用,面向的是具有一定机器学习基础或者致力于使用机器学习解决工作中问题的读者。本书重点介绍强化学习和对抗网络,并介绍了AI安全的攻与防。一直有个遗憾的地方:深度学习的优势发挥需要大量精准标注的训练样本,但是由于各种各样的原因,我只能在书中使用互联网上已经公开的数据集,数据量级往往很难发挥深度学习的优势,对于真正想在生产环境中验证想法的读者需要搜集更多样本。
致谢
这里我要感谢我的家人对我的支持,本来工作就很忙,没有太多时间处理家务,写书以后更是花费了我大量的休息时间,我的妻子无条件承担起了全部家务,尤其是照料孩子方面的繁杂事务。我很感谢我的女儿,写书这段时间几乎没有时间陪她玩,她也很懂事地自己玩,我也想用这本书作为生日礼物送给她。我还要感谢编辑吴怡对我的支持和鼓励,让我可以坚持把这本书写完。最后还要感谢各位业内好友尤其是我boss对我的支持,排名不分先后:马杰@百度安全、冯景辉@百度安全、Tony@京东安全、程岩@京东安全、简单@京东安全、林晓东@百度基础架构、黄颖@百度IT、李振宇@百度AI、Lenx@百度安全、黄正@百度安全、郝轶@百度云、云鹏@百度无人车、赵林林@微步在线、张宇平@数盟、谢忱@Freebuf、李新@Freebuf、李琦@清华、徐恪@清华、王宇@蚂蚁金服、王泯然@蚂蚁金服、王龙@蚂蚁金服、周涛@启明星辰、姚志武@借贷宝、刘静@安天、刘元军@医渡云、廖威@易宝支付、尹毅@sobug、宋文宽@联想、团长@宜人贷、齐鲁@搜狐安全、吴圣@58安全、康宇@新浪安全、幻泉@i春秋、雅驰@i春秋、王庆双@i春秋、张亚同@i春秋、王禾@微软、李臻@paloalto、西瓜@四叶草、郑伟@四叶草、朱利军@四叶草、土夫子@XSRC、英雄马@乐视云、sbilly@360、侯曼@360、高磊@滴滴、高磊@爱加密、高渐离@华为、刘洪善@华为云、宋柏林@一亩田、张昊@一亩田、张开@安恒、李硕@智联、阿杜@优信拍、李斌@房多多、李程@搜狗、姚聪@face+、李鸣雷@金山云、吴鲁加@小密圈,最后我还要感谢我的亲密战友陈燕、康亮亮、蔡奇、哲超、新宇、子奇、月升、王磊、碳基体、刘璇、钱华沟、刘超、王胄、吴梅、冯侦探、冯永校。
我平时在Freebuf专栏以及“i春秋”分享企业安全建设以及人工智能相关经验与最新话题,同时也运营我的微信公众号“兜哥带你学安全”,欢迎大家关注并在线交流。
本书使用的代码和数据均在GitHub上发布,地址为:https://github.com/duoergun 0729/3book,代码层面任何疑问可以在GitHub上直接反馈。
计算机\安全
本书重点介绍强化学习和生成对抗网络的基础知识和实际应用,特别是在安全领域中攻防建设的实际应用。从AI安全攻防的基础知识,到智能工具的打造,全面介绍如何使用AI技术提升Web安全。本书作者有丰富的实战经验,他在书中用风趣幽默的语言描述了实际工作的体会,包含大量案例,每个案例都使用互联网公开的数据集并配有基于Python的代码,代码和数据集可以在本书配套的GitHub下载,可帮助读者降低学习门槛,快速将最新人工智能成果应用到实际工作中。
本书所有示例代码均可在GitHub下载,网址为:https://github.com/duoergun0729/3book。
主要内容包括:
AI安全的攻防知识
基于机器学习的恶意程序识别技术
常见的恶意程序免杀方法
如何使用强化学习生成免杀程序
如何使用强化学习提升WAF的防护能力
如何使用强化学习提升反垃圾邮件的检测能力
针对图像分类模型的攻击方法
针对强化学习的攻击方法
刘焱 编著:
刘焱 百度安全Web防护产品线负责人,负责百度安全Web安全产品,包括防DDoS、Web应用防火墙、Web威胁感知、服务器安全以及安全数据分析等,具有近十年云安全及企业安全从业经历,全程参与了百度企业安全建设。研究兴趣包括机器学习、Web安全、僵尸网络、威胁情报等。他是FreeBuf专栏作家、i春秋知名讲师,多次在OWASP 、电子学会年会等发表演讲,参与编写了《大数据安全标准白皮书》。他还建立了微信公众号:“兜哥带你学安全”,发布了大量信息安全技术知识。
目录
前言
第1章 AI安全之攻与防
1.1 AI设备的安全
1.2 AI模型的安全
1.3 使用AI做安全建设
1.4 使用AI做攻击
1.5 本章小结
第2章 打造机器学习工具箱
2.1 TensorFlow
2.2 Karas
2.3 Anaconda
2.4 OpenAI Gym
2.5 Keras-rl
2.6 XGBoost
2.7 GPU服务器
2.8 本章小结
第3章 性能衡量与集成学习
3.1 常见性能衡量指标
3.1.1 测试数据
3.1.2 混淆矩阵
3.1.3 准确率与召回率
3.1.4 准确度与F1-Score
3.1.5 ROC与AUC
3.2 集成学习
3.2.1 Boosting算法
3.2.2 Bagging算法
3.3 本章小结
第4章 Keras基础知识
4.1 Keras简介
4.2 Keras常用模型
4.2.1 序列模型
4.2.2 函数式模型
4.3 Keras的网络层
4.3.1 模型可视化
4.3.2 常用层
4.3.3 损失函数
4.3.4 优化器
4.3.5 模型的保存与加载
4.3.6 基于全连接识别MNIST
4.3.7 卷积层和池化层
4.3.8 基于卷积识别MNIST
4.3.9 循环层
4.3.10 基于LSTM做IMDB情感分类
4.3.11 本章小节
第5章 单智力体强化学习
5.1 马尔可夫决策过程
5.2 Q函数
5.3 贪婪算法与?-贪婪算法
5.4 Sarsa算法
5.5 案例一:使用Sarsa算法处理金币问题
5.6 Q Learning算法
5.7 案例二:使用Q Learning算法处理金币问题
5.8 Deep Q Network算法
5.9 案例三:使用DQN算法处理CartPole问题
5.9.1 定义DQNAgent类
5.9.2 创建深度学习网络
5.9.3 实现记忆以及回放功能
5.9.4 实现?-贪婪算法
5.9.5 使用DQN进行强化学习
5.10 本章小结
第6章 Keras-rl简介
6.1 Keras-rl智能体介绍
6.2 Keras-rl智能体通用API
6.2.1 Fit函数
6.2.2 Test函数
6.2.3 Compile函数
6.3 Keras-rl常用对象
6.3.1 记忆体SequentialMemory
6.3.2 选择策略Policy
6.4 案例一:在Keras-rl下使用SARSA算法处理CartPole问题
6.4.1 初始化环境
6.4.2 构造深度神经网络
6.4.1 创建SARSAAgent
6.4.2 训练和测试
6.5 案例二:在Keras-rl下使用DQN算法处理CartPole问题
6.5.1 初始化环境
6.5.2 构造深度神经网络
6.5.3 创建DQNAgent
6.5.4 训练和测试
6.6 案例三:在Keras-rl下使用DQN算法玩Atari游戏
6.6.1 Pong环境简介
6.6.2 初始化环境
6.6.3 图像处理
6.6.4 构造深度神经网络
6.6.5 创建DQNAgent
6.6.6 训练和测试
6.7 本章小节
第7章 OpenAI Gym简介
7.1 OpenAI
7.2 OpenAI Gym
7.3 Hello Wolrd!OpenAI Gym
7.4 编写OpenAI Gym环境
7.5 本章小结
第8章 恶意程序检测
8.1 PE文件格式概述
8.2 PE文件的节
8.3 PE文件特征提取
8.4 PE文件节的特征提取
8.5 检测模型
8.6 本章小结
第9章 恶意程序免杀技术
9.1 LIEF库简介
9.2 文件末尾追加随机内容
9.3 追加导入表
9.4 改变节名称
9.5 增加节
9.6 节内追加内容
9.7 UPX加壳
9.8 删除签名
9.9 删除debug信息
9.10 置空可选头的交验和
9.11 本章小结
第10章 智能提升恶意程序检测能力
10.1 Gym-Malware简介
10.2 Gym-Malware架构
10.3 PEFeatureExtractor
10.4 Interface
10.5 MalwareManipulator
10.6 DQNAgent
10.7 MalwareEnv
10.8 恶意程序样本
10.9 本章小结
第11章 智能提升WAF的防护能力
11.1 常见XSS攻击方式
11.2 常见XSS防御方式
11.3 常见XSS绕过方式
11.4 Gym-WAF架构
11.5 Features类
11.6 Xss_Manipulator类
11.7 DQNAgent类
11.8 WafEnv_v0类
11.9 Waf_Check类
11.10 效果验证
11.11 本章小结
第12章 智能提升垃圾邮件检测能力
12.1 垃圾邮件检测技术
12.1.1 数据集
12.1.2 特征提取
12.1.3 模型训练与效果验证
12.1.4 模型的使用
12.2 垃圾邮件检测绕过技术
12.2.1 随机增加TAB
12.2.2 随机增加回车
12.2.3 大小写混淆
12.2.4 随机增加换行符
12.2.5 随机增加连字符
12.2.6 使用错别字
12.3 Gym-Spam架构
12.1 Features类
12.2 Spam_Manipulator类
12.3 DQNAgent类
12.4 SpamEnv_v0类
12.5 效果验证
12.6 本章小结
第13章 生成对抗网络
13.1 GAN基本原理
13.2 GAN系统架构
13.2.1 噪音源
13.2.2 Generator
13.2.3 Discriminator
13.2.4 对抗模型
13.3 GAN
13.3.1 Generator
13.3.2 Discriminator
13.3.3 对抗模型
13.3.4 训练过程
13.3.5 训练结果
13.4 DCGAN
13.4.1 Generator
13.4.2 Discriminator
13.4.3 对抗模型
13.4.4 训练过程
13.4.5 训练结果
13.5 ACGAN
13.5.1 Generator
13.5.2 Discriminator
13.5.3 对抗模型
13.5.4 训练过程
13.5.5 训练结果
13.6 WGAN
13.6.1 Generator
13.6.2 Discriminator
13.6.3 对抗模型
13.6.4 训练过程
13.6.5 训练结果
13.7 本章小节
第14章 攻击机器学习模型
14.1 攻击图像分类模型
14.1.1 常见图像分类模型
14.1.2 梯度算法和损失函数
14.1.3 基于梯度上升的攻击原理
14.1.4 基于梯度上升的算法实现
14.1.5 基于FGSM的攻击原理
14.1.6 基于FGSM攻击的算法实现
14.2 攻击其他模型
14.3 案例一:攻击手写数字识别模型
14.3.1 构造手写数字识别的CNN模型
14.3.2 选择被攻击的图片样本
14.3.3 训练产生攻击样本
14.3.4 攻击结果
14.4 案例二:攻击自编码器
14.4.1 构造自编码器
14.4.2 选择被攻击的图片样本
14.4.3 训练产生攻击样本
14.4.4 攻击结果
14.5 案例三:攻击变分自编码器
14.5.1 构造变分自编码器
14.5.2 训练产生攻击样本
14.5.3 攻击结果
14.6 本章小节