图灵程序设计丛书 精通Metasploit渗透测试 第3版
作者:李华峰译 岳新欣责任编辑 (英)尼普恩 贾斯瓦尔
出版时间: 2019年版
内容简介
本书是Metasploit 渗透测试的**指南,涵盖了使用Metasploit 实现渗透测试的诸多方面,主要包括:渗透测试的基础知识,编写自定义渗透测试框架,开发渗透模块,移植渗透模块,测试服务,虚拟化测试,客户端渗透,Metasploit 中的扩展功能、规避技术和“特工”技术,Metasploit 的可视化管理,以及加速渗透测试和高效使用Metasploit 的各种技巧。
目录
第 1 章 走近Metasploit 渗透测试框架 1
1.1 组织一次渗透测试 3
1.1.1 前期交互阶段 3
1.1.2 信息收集/侦查阶段 4
1.1.3 威胁建模阶段 6
1.1.4 漏洞分析阶段 7
1.1.5 渗透攻击阶段和后渗透攻击阶段 7
1.1.6 报告阶段 7
1.2 工作环境的准备 7
1.3 Metasploit 基础 11
1.4 使用Metasploit 进行渗透测试 12
1.5 使用Metasploit 进行渗透测试的优势 14
1.5.1 源代码的开放性 14
1.5.2 对大型网络测试的支持以及便利的命名规则 14
1.5.3 灵活的攻击载荷模块生成和切换机制 15
1.5.4 干净的通道建立方式 15
1.5.5 图形化管理界面 15
1.6 案例研究:渗透进入一个未知网络 15
1.6.1 信息收集 16
1.6.2 威胁建模 21
1.6.3 漏洞分析——任意文件上传(未经验证) 22
1.6.4 渗透与控制 23
1.6.5 使用Metasploit 保持控制权限 30
1.6.6 后渗透测试模块与跳板功能 32
1.6.7 漏洞分析——基于SEH 的缓冲区溢出 37
1.6.8 利用人为疏忽来获得密码 38
1.7 案例研究回顾 41
1.8 小结与练习 43
第 2 章 打造定制化的Metasploit 渗透测试框架 45
2.1 Ruby——Metasploit 的核心 46
2.1.1 创建你的第 一个Ruby 程序 46
2.1.2 Ruby 中的变量和数据类型 47
2.1.3 Ruby 中的方法 51
2.1.4 决策运算符 51
2.1.5 Ruby 中的循环 52
2.1.6 正则表达式 53
2.1.7 Ruby 基础知识小结 54
2.2 开发自定义模块 54
2.2.1 模块编写的概要 54
2.2.2 了解现有模块 58
2.2.3 分解已有的HTTP 服务器扫描模块 59
2.2.4 编写一个自定义FTP 扫描程序模块 63
2.2.5 编写一个自定义的SSH 认证暴力破解器 67
2.2.6 编写一个让硬盘失效的后渗透模块 70
2.2.7 编写一个收集登录凭证的后渗透模块 75
2.3 突破Meterpreter 脚本 80
2.3.1 Meterpreter 脚本的要点 80
2.3.2 设置永久访问权限 80
2.3.3 API 调用和mixin 类 81
2.3.4 制作自定义Meterpreter 脚本 81
2.4 与RailGun 协同工作 84
2.4.1 交互式Ruby 命令行基础 84
2.4.2 了解RailGun 及其脚本编写 84
2.4.3 控制Windows 中的API 调用 86
2.4.4 构建复杂的RailGun 脚本 86
2.5 小结与练习 89
第3 章 渗透模块的开发过程 90
3.1 渗透的最基础部分 90
3.1.1 基础部分 90
3.1.2 计算机架构 91
3.1.3 寄存器 92
3.2 使用Metasploit 实现对栈的缓冲区溢出 93
3.2.1 使一个有漏洞的程序崩溃 93
3.2.2 构建渗透模块的基础 95
3.2.3 计算偏移量 96
3.2.4 查找JMP ESP 地址 97
3.2.5 填充空间 99
3.2.6 确定坏字符 100
3.2.7 确定空间限制 101
3.2.8 编写Metasploit 的渗透模块 101
3.3 使用Metasploit 实现基于SEH 的缓冲区溢出 104
3.3.1 构建渗透模块的基础 107
3.3.2 计算偏移量 107
3.3.3 查找POP/POP/RET 地址 108
3.3.4 编写Metasploit 的SEH 渗透模块 110
3.4 在Metasploit 模块中绕过DEP 113
3.4.1 使用msfrop 查找ROP 指令片段 115
3.4.2 使用Mona 创建ROP 链 116
3.4.3 编写绕过DEP 的Metasploit渗透模块 117
3.5 其他保护机制 120
3.6 小结与练习 120
第4 章 渗透模块的移植 121
4.1 导入一个基于栈的缓冲区溢出渗透模块 121
4.1.1 收集关键信息 123
4.1.2 构建Metasploit 模块 124
4.1.3 使用Metasploit 完成对目标应用程序的渗透 126
4.1.4 在Metasploit 的渗透模块中实现一个检查方法 126
4.2 将基于Web 的RCE 导入Metasploit 127
4.2.1 收集关键信息 128
4.2.2 掌握重要的Web 函数 128
4.2.3 GET/POST 方法的使用要点 130
4.2.4 将HTTP 渗透模块导入到Metasploit 中 130
4.3 将TCP 服务端/基于浏览器的渗透模块导入Metasploit 133
4.3.1 收集关键信息 134
4.3.2 创建Metasploit 模块 135
4.4 小结与练习 137
第5 章 使用Metasploit 对服务进行测试 138
5.1 SCADA 系统测试的基本原理 138
5.1.1 ICS 的基本原理以及组成部分 138
5.1.2 ICS-SCADA 安全的重要性 139
5.1.3 对SCADA 系统的HMI 进行渗透 139
5.1.4 攻击Modbus 协议 142
5.1.5 使SCADA 变得更加安全 146
5.2 数据库渗透 146
5.2.1 SQL Server 147
5.2.2 使用Metasploit 的模块进行扫描 147
5.2.3 暴力破解密码 147
5.2.4 查找/捕获服务器的密码 149
5.2.5 浏览SQL Server 149
5.2.6 后渗透/执行系统命令 151
5.3 VOIP 渗透测试 153
5.3.1 VOIP 的基本原理 153
5.3.2 对VOIP 服务踩点 155
5.3.3 扫描VOIP 服务 156
5.3.4 欺骗性的VOIP 电话 157
5.3.5 对VOIP 进行渗透 158
5.4 小结与练习 160
第6 章 虚拟化测试的原因及阶段 161
6.1 使用Metasploit 集成的服务完成一次渗透测试 161
6.1.1 与员工和最终用户进行交流 162
6.1.2 收集信息 163
6.1.3 使用Metasploit 中的OpenVAS插件进行漏洞扫描 164
6.1.4 对威胁区域进行建模 168
6.1.5 获取目标的控制权限 169
6.1.6 使用Metasploit 完成对Active Directory 的渗透 170
6.1.7 获取Active Directory 的持久访问权限 181
6.2 手动创建报告 182
6.2.1 报告的格式 182
6.2.2 执行摘要 183
6.2.3 管理员级别的报告 184
6.2.4 附加部分 184
6.3 小结 184
第7 章 客户端渗透 185
7.1 有趣又有料的浏览器渗透攻击 185
7.1.1 browser autopwn 攻击 186
7.1.2 对网站的客户进行渗透 188
7.1.3 与DNS 欺骗和MITM 结合的browser autopwn 攻击 191
7.2 Metasploit 和Arduino——“致命”搭档 199
7.3 基于各种文件格式的渗透攻击 204
7.3.1 基于PDF 文件格式的渗透攻击 204
7.3.2 基于Word 文件格式的渗透攻击 205
7.4 使用Metasploit 攻击Android 系统 208
7.5 小结与练习 212
第8 章 Metasploit 的扩展功能 213
8.1 Metasploit 后渗透模块的基础知识 213
8.2 基本后渗透命令 213
8.2.1 帮助菜单 213
8.2.2 后台命令 214
8.2.3 通信信道的操作 215
8.2.4 文件操作命令 215
8.2.5 桌面命令 216
8.2.6 截图和摄像头列举 217
8.3 使用Metasploit 中的高级后渗透模块 220
8.3.1 获取系统级管理权限 220
8.3.2 使用timestomp 修改文件的访问时间、修改时间和创建时间 220
8.4 其他后渗透模块 221
8.4.1 使用Metasploit 收集无线SSID信息 221
8.4.2 使用Metasploit 收集Wi-Fi密码 221
8.4.3 获取应用程序列表 222
8.4.4 获取Skype 密码 223
8.4.5 获取USB 使用历史信息 223
8.4.6 使用Metasploit 查找文件 223
8.4.7 使用clearev 命令清除目标系统上的日志 224
8.5 Metasploit 中的高级扩展功能 224
8.5.1 pushm 和popm 命令的使用方法 225
8.5.2 使用reload、edit 和reload_all 命令加快开发过程 226
8.5.3 资源脚本的使用方法 226
8.5.4 在Metasploit 中使用AutoRunScript 227
8.5.5 使用AutoRunScript 选项中的multiscript 模块 229
8.5.6 用Metasploit 提升权限 231
8.5.7 使用mimikatz 查找明文密码 233
8.5.8 使用Metasploit 进行流量嗅探 233
8.5.9 使用Metasploit 对host 文件进行注入 234
8.5.10 登录密码的钓鱼窗口 235
8.6 小结与练习 236
第9 章 Metasploit 中的规避技术 237
9.1 使用C wrapper 和自定义编码器来规避Meterpreter 237
9.2 使用Metasploit 规避入侵检测系统 246
9.2.1 通过一个随机案例边玩边学 247
9.2.2 利用伪造的目录关系来欺骗IDS 248
9.3 规避Windows 防火墙的端口阻塞机制 249
9.4 小结 253
第 10 章 Metasploit 中的“特工”技术 254
10.1 在Meterpreter 会话中保持匿名 254
10.2 使用通用软件中的漏洞维持访问权限 256
10.2.1 DLL 加载顺序劫持 256
10.2.2 利用代码打洞技术来隐藏后门程序 260
10.3 从目标系统获取文件 262
10.4 使用venom 实现代码混淆 262
10.5 使用反取证模块来消除入侵痕迹 265
10.6 小结 268
第 11 章 利用Armitage 实现Metasploit的可视化管理 270
11.1 Armitage 的基本原理 270
11.1.1 入门知识 270
11.1.2 用户界面一览 272
11.1.3 工作区的管理 273
11.2 网络扫描以及主机管理 274
11.2.1 漏洞的建模 275
11.2.2 查找匹配模块 275
11.3 使用Armitage 进行渗透 276
11.4 使用Armitage 进行后渗透攻击 277
11.5 使用团队服务器实现红队协同工作 278
11.6 Armitage 脚本编写 282
11.6.1 Cortana 基础知识 282
11.6.2 控制Metasploit 285
11.6.3 使用Cortana 实现后渗透攻击 286
11.6.4 使用Cortana 创建自定义菜单 287
11.6.5 界面的使用 289
11.7 小结 290
第 12 章 技巧与窍门 291
12.1 使用Minion 脚本实现自动化 291
12.2 用connect 代替Netcat 293
12.3 shell 升级与后台切换 294
12.4 命名约定 294
12.5 在Metasploit 中保存配置 295
12.6 使用内联handler 以及重命名任务 296
12.7 在多个Meterpreter 上运行命令 297
12.8 社会工程学工具包的自动化 297
12.9 Metasploit 和渗透测试速查手册 299
12.10 延伸阅读 300