书籍详情
基于数据科学的恶意软件分析
作者:[美] 约书亚·萨克斯(Joshua Saxe) 著,何能强 严寒冰 译 译
出版社:机械工业出版社
出版时间:2020-03-01
ISBN:9787111646525
定价:¥79.00
购买这本书可以去
内容简介
每年都有数百万个恶意软件文件被创建,每天都会产生大量与安全相关的数据,安全已经成为一个“大数据”问题。所以,当防范恶意软件时,为什么不像数据科学家那样思考呢?在本书中,安全数据科学家约书亚·萨克斯和希拉里·桑德斯展示了在构建自己的检测和情报系统时,如何应用机器学习、统计和数据可视化等技术。在概述了静态和动态分析等基础逆向工程概念之后,你将学习如何度量恶意软件样本中的代码相似性,并使用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
译者序
序
前言
致谢
作者简介
评审专家简介
第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
猜您喜欢