渗透测试通过模拟攻击来评估计算机网络系统安全,是近些年来兴起的新的信息安全评估技术,受到业界广泛认可,并逐步开始普及。
本书围绕渗透测试技术原理与实现进行介绍,内容丰富新颖,表述通俗易懂,涉及信息安全的多个领域。针对高校课程教学特点与需求,全书内容和知识点以单位教学课时进行组织,每章提供了针对性较强的课后习题,非常适合课堂教学。
本书可以作为高等院校网络空间安全、通信工程、智能科学与技术、计算机科学与技术、电子信息工程、自动化等专业相关课程的教材,也可作为相关专业研究生及技术人员的参考用书。
实践是检验真理的唯一标准,通过实验测试可以考察测试对象的性能与质量。
在信息安全领域中,渗透测试是公认度非常高的新型安全测试方法。从其机理而言,渗透测试属于破坏性检验的范畴,而破坏性检验在汽车、建筑、医药、飞行器等实体产品的质量检验中应用广泛。鉴于目前信息系统安全的传统考察方法的有效性
难以保证,越来越多的工程技术人员开始转向通过渗透测试来进行信息系统的安全
检验。
随着渗透测试的逐步推广,以渗透测试为核心的专门服务甚至行业,已经成规模出现。据保守估算,在未来的十年中,渗透测试带来的市场价值可达数百亿美元,由此带来的渗透测试工程人才缺乏和知识结构不系统的问题随之突显。针对这一现实问题,国外计算机、信息安全专业已经在本科教育中开始开设渗透测试专业课程,例如美国韦恩州立大学、乔治梅森大学、科罗拉多州立大学等著名公立大学均已开设该门课程。为了紧跟信息安全领域教育发展,提升信息安全领域渗透测试从业者的理论水平,在国内信息安全专业开设渗透测试课程十分必要。
基于上述需求,作者融合了多年教学、科研经验,以本科层次教学需求为基点,编撰了本书。本书将理论与实践紧密结合,知识点清晰、系统,逻辑完整。
本书从信息安全的基本理论出发,对渗透测试的基本概念、原理、技术和方法进行了详尽的介绍。全书共14章:第1章是概述;第2章介绍了渗透测试原理与模型;第3章是渗透测试环境工程;第4章讲解渗透测试信息收集与分析;第5~7章针对不同的目标重点讲述了服务器端、客户端、网络设备渗透测试;第8章介绍了后渗透测试;第9章介绍了社会工程学渗透测试;第10~11章分别介绍了工控网络和无线网络的渗透测试;第12~13章介绍了渗透测试自动化框架;第14章对渗透测试质量控制进行了介绍。
本书可作为高等院校网络空间安全、通信工程、智能科学与技术、计算机科学与技术、电子信息工程、自动化等专业相关课程教材,也可作为相关专业研究生及从事渗透测试工作的技术人员的参考用书,还可作为高校学生参加信息安全竞赛的参考
用书。
本书第1~12章由王晓东撰写,第13章由张晓燕撰写,第14章由夏靖波撰写,陈贺杰等进行了插图绘制和附录的整理。
因编者水平有限,书中存在的问题与不足敬请读者批评指正。
第1章 概述 1
1.1 信息安全理论 1
1.1.1 信息安全基础 1
1.1.2 安全防护技术 3
1.1.3 信息安全测试 4
1.2 渗透测试基础 5
1.2.1 渗透测试的定义 5
1.2.2 渗透测试的分类 8
1.2.3 渗透测试的发展 8
1.3 渗透测试方法 10
1.3.1 渗透测试步骤 10
1.3.2 渗透测试工具 12
1.3.3 渗透测试原则 14
1.4 渗透测试规则 14
1.4.1 道德约束 15
1.4.2 法律约束 17
本章小结 19
练习题 19
第2章 渗透测试原理与模型 20
2.1 网络攻击概述 20
2.1.1 网络攻击 20
2.1.2 攻击分类 23
2.1.3 发展趋势 24
2.2 网络攻击原理 26
2.2.1 入侵分析 26
2.2.2 密码破译 28
2.2.3 漏洞利用 31
2.2.4 攻击步骤 42
2.3 网络攻击建模 44
2.3.1 攻击树模型 44
2.3.2 攻击图模型 45
2.3.3 特权图模型 46
2.3.4 Petri网模型 46
2.3.5 状态转移模型 46
2.4 攻击测试方案 47
2.4.1 攻击方案 47
2.4.2 方案生成 48
本章小结 50
练习题 50
第3章 渗透测试环境工程 51
3.1 概述 51
3.1.1 测试要素 51
3.1.2 测试量化 51
3.2 渗透测试人员 53
3.2.1 渗透测试人员要求 53
3.2.2 渗透测试能力训练 54
3.3 渗透测试保障技术 56
3.3.1 概述 56
3.3.2 攻击机 59
3.3.3 靶机靶场 60
3.3.4 分析环境 63
3.4 渗透测试资源管理 64
3.4.1 资源定义 64
3.4.2 漏洞资源 64
3.4.3 计算资源 65
3.4.4 线上资源 66
3.4.5 口令字典 67
本章小结 68
练习题 68
第4章 渗透测试信息收集与分析 69
4.1 概述 69
4.1.1 基本概念 69
4.1.2 信息分类 70
4.1.3 收集方法 71
4.2 公开信息 72
4.2.1 公开信息概述 72
4.2.2 设备信息 74
4.2.3 网站信息 76
4.2.4 社交网络 78
4.3 主机信息 79
4.3.1 信息内容 79
4.3.2 指纹信息 81
4.3.3 安防设备 82
4.4 应用信息 83
4.4.1 概述 83
4.4.2 TCP连接 84
4.4.3 端口扫描 84
4.5 漏洞信息 86
4.5.1 扫描过程 86
4.5.2 漏洞扫描器 87
4.6 安全态势 87
4.6.1 拓扑探测 88
4.6.2 态势感知 89
4.7 网络数据分析 92
4.7.1 网络嗅探 92
4.7.2 流量分析 93
4.8 程序逆向分析 97
4.8.1 软件逆向工程概念 97
4.8.2 逆向分析的一般流程 100
4.8.3 渗透逆向关键信息 102
本章小结 102
练习题 103
第5章 服务器端渗透测试 104
5.1 网络服务与服务器 104
5.1.1 网络服务 104
5.1.2 网络服务器 107
5.1.3 服务器安全 108
5.1.4 主机渗透方法 109
5.2 Web渗透 110
5.2.1 Web服务 110
5.2.2 Web应用攻击面 116
5.2.3 Web渗透测试 118
5.2.4 Web第三方插件渗透 123
5.3 FTP渗透 123
5.3.1 FTP服务 123
5.3.2 FTP攻击面 124
5.3.3 FTP渗透实现 125
5.4 邮件服务渗透测试 126
5.4.1 邮件服务 126
5.4.2 邮件服务攻击面 129
5.4.3 邮件服务器渗透 130
5.5 数据库渗透 131
5.5.1 数据库服务 131
5.5.2 数据库攻击面 134
5.5.3 数据库渗透实现 134
5.6 安全防御反制 136
5.6.1 防火墙规避 136
5.6.2 入侵检测系统规避 137
5.6.3 摆渡攻击 138
本章小结 139
练习题 139
第6章 客户端渗透测试 140
6.1 概述 140
6.1.1 客户端渗透测试的概念 140
6.1.2 客户端渗透测试的特点 141
6.1.3 客户端渗透测试的原理 142
6.2 浏览器渗透 144
6.2.1 概述 144
6.2.2 浏览器渗透实现 148
6.2.3 扩展渗透 153
6.2.4 插件渗透 155
6.3 文件格式漏洞渗透 158
6.3.1 概述 158
6.3.2 Word漏洞渗透 162
6.3.3 PDF漏洞渗透 163
6.3.4 图片漏洞渗透 164
6.4 USB设备渗透 165
6.4.1 概述 165
6.4.2 自动播放渗透 166
6.4.3 模拟光盘渗透 166
6.4.4 BadUSB渗透 167
本章小结 167
练习题 167
第7章 网络设备渗透测试 168
7.1 概述 168
7.1.1 网络分层 168
7.1.2 安全特征 168
7.1.3 入侵动机 169
7.1.4 入侵方法 170
7.2 路由器渗透 171
7.2.1 路由器攻击面 171
7.2.2 路由器渗透方法 172
7.3 交换机渗透 173
7.3.1 交换机攻击面 173
7.3.2 交换机渗透方法 174
7.4 防火墙渗透 175
7.4.1 防火墙攻击面 175
7.4.2 防火墙渗透方法 175
本章小结 178
练习题 179
第8章 后渗透测试 180
8.1 概述 180
8.1.1 后渗透测试概念 180
8.1.2 高级可持续威胁 182
8.1.3 后渗透测试步骤 186
8.2 提高权限 186
8.2.1 提权概念 186
8.2.2 提权原理 187
8.2.3 提权方法 190
8.3 持久化控制 192
8.3.1 持久化概念 192
8.3.2 持久化方法 194
8.4 跳板攻击 200
8.4.1 跳板攻击概念 200
8.4.2 跳板攻击实现方法 201
8.5 目标机本地操作 203
8.5.1 本地操作 203
8.5.2 信息收集 203
8.5.3 命令执行 206
8.5.4 横向移动 207
8.6 测试取证 210
8.6.1 取证的概念 210
8.6.2 取证方法 212
本章小结 213
练习题 213
第9章 社会工程学渗透测试 214
9.1 社会工程学 214
9.1.1 社会工程学的概念 214
9.1.2 社会工程学的机理 216
9.1.3 社会工程学的方法 217
9.1.4 社会工程学攻击步骤 220
9.1.5 社会工程学攻击的发展趋势 220
9.2 社会工程渗透测试技术 221
9.2.1 防御策略 221
9.2.2 渗透测试方案 222
9.3 社交网络社会工程 223
9.3.1 社交网络概念 223
9.3.2 社交网络信息资源 226
9.4 社会工程渗透测试工具 227
9.4.1 社会工程工具包 227
9.4.2 互联网情报聚合工具 229
9.4.3 邮箱挖掘器 230
本章小结 231
练习题 231
第10章 工控网络渗透测试 232
10.1 工控网络基础 232
10.1.1 ICS系统 232
10.1.2 SCADA系统 233
10.2 工控网络安全 237
10.2.1 工控系统攻击面 237
10.2.2 入侵分析 239
10.2.3 震网病毒 242
10.3 工控网络渗透测试 244
10.3.1 内网访问 244
10.3.2 目标分析 247
10.3.3 过程控制 248
本章小结 249
练习题 249
第11章 无线网络渗透测试 250
11.1 无线网络概述 250
11.1.1 无线网络发展 250
11.1.2 无线网络标准 251
11.1.3 无线网络安全 253
11.2 无线网络攻击面 255
11.2.1 安全性分析 255
11.2.2 安全问题 255
11.2.3 无线网络攻击 256
11.3 无线网络渗透测试 258
11.3.1 战争驾驶 258
11.3.2 无线网络嗅探 260
11.3.3 电磁信息泄露与复现 260
11.3.4 WEP密钥破解 262
11.3.5 授权攻击 262
11.3.6 蓝牙攻击 263
11.3.7 物联网攻击 264
11.4 移动终端渗透测试 266
11.4.1 移动终端发展与系统 266
11.4.2 移动终端渗透测试工具 268
本章小结 270
练习题 270
第12章 渗透测试自动化框架 271
12.1 软件自动化测试理论 271
12.1.1 自动化测试概念 271
12.1.2 自动化测试理论 273
12.1.3 安全自动化测试 275
12.2 渗透测试自动框架 277
12.2.1 综合型自动框架 277
12.2.2 专用型自动框架 280
12.3 Metasploit框架 281
12.3.1 概述 281
12.3.2 Metasploit结构 285
12.3.3 Metasploit操作 287
12.3.4 Metasploit拓展 289
12.4 Metasploit测试实践 290
12.4.1 MSF安装 290
12.4.2 基本流程 290
12.4.3 渗透实例 295
本章小结 299
练习题 299
第13章 渗透测试程序设计 300
13.1 渗透测试编程 300
13.1.1 编程语言 300
13.1.2 编程思想 304
13.2 攻击模块开发 306
13.2.1 流程劫持 306
13.2.2 内存对抗 312
13.3 Shellcode开发 315
13.3.1 程序设计 315
13.3.2 通用化 318
13.3.3 Shellcode免杀 321
13.4 Metasploit二次开发 329
13.4.1 开发方法 329
13.4.2 模块开发 331
13.4.3 模块移植 334
本章小结 338
练习题 338
第14章 渗透测试质量控制 339
14.1 测试质量控制 339
14.1.1 概述 339
14.1.2 测试标准 341
14.1.3 测试评估 343
14.2 测试质量要素 344
14.2.1 测试能力 344
14.2.2 测试工具 346
14.2.3 测试方案 347
14.2.4 测试指标 348
14.3 测试过程管理 349
14.3.1 安全管理 349
14.3.2 方法管理 350
14.4 测试报告规范化 351
14.4.1 测试报告约定 351
14.4.2 测试报告收集信息 352
14.4.3 测试报告分析说明 353
14.4.4 测试报告实例 355
本章小结 356
练习题 356
附录A 渗透测试工具列表 357
附录B Ruby常用语句 363
参考文献 366
后记 368