第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 渗透攻击和后渗透攻击 8
1.1.6 报告阶段 8
1.2 工作环境的准备 8
1.2.1 渗透测试实验环境的建立 8
1.2.2 Metasploit基础 12
1.2.3 在不同环境下配置Metasploit 12
1.2.4 错误处理 16
1.3 使用Metasploit进行渗透测试 17
1.3.1 回顾Metasploit的基础知识 17
1.3.2 对WindowsXP操作系统的一次渗透测试 18
1.3.3 对Windows Server 2003操作系统的一次渗透测试 26
1.3.4 对Windows 7操作系统的一次渗透测试 27
1.3.5 使用数据库存储和取回结果 30
1.4 Metasploit 工具的优势 32
1.4.1 源代码的开放性 33
1.4.2 对大型网络测试的支持以及便利的命名规则 33
1.4.3 灵活的攻击载荷模块生成和切换机制 33
1.4.4 干净的通道建立方式 33
1.4.5 图形化管理界面 34
1.5 小结 34
第2章 打造定制化的Metasploit渗透测试框架 35
2.1 Ruby——Metasploit的核心 36
2.1.1 创建你的第一个Ruby程序 36
2.1.2 Ruby中的变量和数据类型 38
2.1.3 Ruby中的方法 40
2.1.4 决策运算符 41
2.1.5 Ruby中的循环 42
2.1.6 正则表达式 42
2.1.7 Ruby基础知识的小结 43
2.2 开发自定义模块 43
2.2.1 模块编写的概要 44
2.2.2 了解现有模块 47
2.2.3 编写一个自定义FTP扫描程序模块 50
2.2.4 编写一个自定义HTTP服务器扫描程序 52
2.2.5 编写一个后渗透攻击模块 54
2.3 突破meterpreter脚本 56
2.3.1 meterpreter脚本的要点 56
2.3.2 以被控制计算机为跳板 56
2.3.3 设置永久访问权限 60
2.3.4 API调用和mixins类 61
2.3.5 制作自定义meterpreter脚本 61
2.4 与RailGun协同工作 63
2.4.1 交互式Ruby命令行基础 63
2.4.2 了解RailGun及其脚本编写 63
2.4.3 控制Windows中的API调用 65
2.4.4 构建复杂的RailGun脚本 65
2.5 小结 68
第3章 渗透攻击模块的开发过程 69
3.1 汇编语言基础入门 69
3.1.1 基础部分 69
3.1.2 计算机架构 70
3.1.3 寄存器 71
3.1.4 EIP的重要作用 72
3.1.5 ESP的重要作用 73
3.1.6 NOP和JMP之间的关联 74
3.1.7 变量和声明 74
3.1.8 汇编程序的编程示例 75
3.2 fuzz测试的乐趣 76
3.2.1 使一个程序崩溃 76
3.2.2 随机化输入数据 80
3.2.3 制造无用数据 82
3.2.4 Immunity Debugger简介 82
3.2.5 GDB简介 85
3.3 编写渗透模块的基础 87
3.3.1 计算缓冲区的大小 88
3.3.2 计算跳转地址 89
3.3.3 检查EIP中的内容 90
3.3.4 填充应用程序 91
3.3.5 检查ESP 91
3.3.6 填充空间 92
3.4 渗透模块的完成 92
3.4.1 确定坏字符 92
3.4.2 确定空间限制 93
3.4.3 在Metasploit下完成 93
3.4.4 Metasploit下的自动化功能 95
3.5 结构化异常处理的基本原理 96
3.5.1 控制SEH 97
3.5.2 绕过SEH 98
3.5.3 基于SEH的渗透模块 100
3.6 小结 102
第4章 渗透攻击模块的移植 103
4.1 移植一个用Perl语言编写的模块 103
4.1.1 分解现有渗透模块 105
4.1.2 为渗透模块创建一个骨骼框架 106
4.1.3 使用Immunity Debugger创建一个骨骼框架文件 107
4.1.4 值的填充 109
4.1.5 将ShellCode部分排除在外 110
4.1.6 渗透实验 110
4.2 移植一个用Python语言编写的渗透模块 111
4.2.1 分解一个已有的模块 111
4.2.2 收集必要信息 112
4.2.3 创建骨骼框架 112
4.2.4 填充值 113
4.2.5 使用渗透模块进行试验 114
4.3 移植一个基于Web的渗透模块 115
4.3.1 分解一个现有渗透模块 115
4.3.2 收集必要的信息 116
4.3.3 掌握重要的网络函数 116
4.3.4 GET/POST方法的使用要点 118
4.3.5 制造一个辅助的渗透模块 118
4.3.6 辅助渗透模块的实验 122
4.4 小结 123
第5章 服务测试技术的幕后揭秘 124
5.1 SCADA系统的基本原理 124
5.1.1 ICS的基本原理以及组成部分 124
5.1.2 ICS-SCADA安全的重要性 125
5.2 SCADA 125
5.2.1 测试SCADA的基本原理 125
5.2.2 基于SCADA的渗透模块 127
5.3 使SCADA变得安全 128
5.3.1 实现SCADA的安全 129
5.3.2 对网络进行约束 129
5.4 数据库渗透 129
5.4.1 SQL Server 129
5.4.2 使用Nmap对SQL Server 进行踩点 130
5.4.3 使用Metasploit的模块进行扫描 131
5.4.4 暴力破解密码 132
5.4.5 查找/捕获服务器的口令 133
5.4.6 浏览SQL Server 134
5.4.7 后渗透/执行系统命令 136
5.5 VOIP渗透测试 137
5.5.1 VOIP的基本原理 137
5.5.2 对VOIP服务踩点 140
5.5.3 扫描VOIP服务 141
5.5.4 欺骗性的VOIP电话 142
5.5.5 对VOIP进行渗透 144
5.6 在苹果设备上的后渗透模块 145
5.7 小结 148
第6章 虚拟化测试的原因及阶段 149
6.1 完成一次白盒渗透测试 149
6.1.1 与员工和最终用户进行交流 150
6.1.2 收集信息 151
6.1.3 对威胁区域进行建模 158
6.1.4 针对系统易发高危漏洞 159
6.1.5 控制权限的获取 160
6.1.6 掩盖入侵痕迹 161
6.1.7 MagicTree的介绍 164
6.1.8 其他报告服务 166
6.2 生成人工报告 167
6.3 完成一次黑盒渗透测试 169
6.3.1 踩点工作 169
6.3.2 使用Metasploit完成一次黑盒测试 173
6.4 小结 182
第7章 复杂的客户端攻击 183
7.1 浏览器渗透攻击 183
7.2 基于各种文件格式的渗透攻击 187
7.2.1 基于PDF文件格式的渗透攻击 187
7.2.2 基于Word文件格式的渗透攻击 189
7.2.3 基于多媒体的渗透攻击 191
7.3 对XAMPP服务器进行渗透攻击 193
7.3.1 PHP脚本编写的meterpreter 194
7.3.2 升级为系统级权限 194
7.4 对网站客户端的渗透攻击 195
7.4.1 恶意网页脚本的注入 195
7.4.2 攻击网站的用户 195
7.5 绕过杀毒软件的检测 197
7.5.1 msfencode 197
7.5.2 msfvenom 199
7.5.3 使用编码器的注意事项 201
7.6 与DNS欺骗的结合使用 202
7.7 使用恶意包攻击Linux 208
7.8 小结 210
第8章 社会工程工具包 211
8.1 社会工程工具包的基本原理 211
8.2 使用SET进行攻击 213
8.2.1 创建一个攻击载荷和监听器 213
8.2.2 传染性媒体生成器 216
8.2.3 网站攻击向量 219
8.2.4 SET与第三方攻击 227
8.3 更多的功能和更全面的说明 231
8.3.1 SET的Web接口 232
8.3.2 自动化实施SET攻击 233
8.4 小结 234
第9章 提高渗透测试的速度 235
9.1 自动化工具的介绍 235
9.2 FastTrack中的MS SQL攻击向量 236
9.2.1 关于Fast Track的简要介绍 236
9.2.2 被淘汰的Fast Track 240
9.2.3 在SET中复兴的Fast Track 241
9.3 在Metasp1oit中的自动化渗透 241
9.3.1 再次启用db_autopwn 242
9.3.2 对目标进行扫描 243
9.3.3 攻击数据库 244
9.4 使用DNS欺骗攻击来实现假升级 246
9.4.1 Websploit的介绍 246
9.4.2 修复Websploit 248
9.4.3 使用Websploit在局域网中进行攻击 248
9.5 小结 251
第10章 利用Armitage实现Metasploit的可视化管理 252
10.1 Armitage的基本原理 252
10.1.1 入门知识 253
10.1.2 用户界面一览 254
10.1.3 工作区的管理 255
10.2 网络扫描以及主机管理 256
10.2.1 漏洞的建模 258
10.2.2 查找匹配模块 258
10.3 使用Armitage进行渗透 258
10.4 使用Armitage进行后渗透攻击 260
10.5 使用Armitage进行客户端攻击 261
10.6 Armitage脚本编写 265
10.6.1 Cortana的基础知识 265
10.6.2 控制Metasploit 268
10.6.3 使用Cortana实现后渗透攻击 269
10.6.4 使用Cortana创建自定义菜单 270
10.6.5 界面的使用 273
10.7 小结 274
10.8 延伸阅读 274