第1章 渗透测试技术基础 1
1.1 PTES中的渗透测试阶段 2
1.1.1前期交互阶段 2
1.1.2情报搜集阶段 2
1.1.3威胁建模阶段 3
1.1.4漏洞分析阶段 3
1.1.5渗透攻击阶段 3
1.1.6后渗透攻击阶段 3
1.1.7报告阶段 4
1.2渗透测试类型 4
1.2.1白盒测试 5
1.2.2黑盒测试 5
1.2.3灰盒测试 5
1.3漏洞扫描器 6
1.4小结 6
第2章Metasploit基础 7
2.1专业术语 7
2.1.1渗透攻击(Exploit) 8
2.1.2攻击载荷(Payload) 8
2.1.3 shellcode 8
2.1.4模块(Module) 8
2.1.5监听器(Listener) 8
2.2 Metasploit用户接口 8
2.2.1 MSF终端 9
2.2.2 MSF命令行 9
2.2.3 Armitage 10
2.3 Metasploit功能程序 11
2.3.1 MSF攻击载荷生成器 11
2.3.2 MSF编码器 12
2.3.3 Nasm shell 13
2.4 Metasploit Express和Metasploit Pro 13
2.5小结 14
第3章 情报搜集 15
3.1被动信息搜集 16
3.1.1 whois查询 16
3.1.2 Netcraft 17
3.1.3 nslookup 18
3.1.4 Google Hacking 18
3.2主动信息搜集 20
3.2.1使用nmap进行端口扫描 20
3.2.2在Metasploit中使用数据库 22
3.2.3使用Metasploit进行端口扫描 27
3.3针对性扫描 28
3.3.1服务器消息块协议扫描 28
3.3.2搜寻配置不当的Microsoft SQL Server 29
3.3.3 SSH服务器扫描 30
3.3.4 FTP扫描 30
3.3.5简单网管协议扫描 31
3.4编写自己的扫描器 33
3.5展望 35
第4章 漏洞扫描 36
4.1基本的漏洞扫描 37
4.2使用Nexpose进行扫描 38
4.2.1配置 38
4.2.2将扫描报告导入到Metasploit中 44
4.2.3在MSF控制台中运行Nexpose 44
4.3使用Nessus进行扫描 46
4.3.1配置Nessus 46
4.3.2创建Nessus扫描策略 47
4.3.3执行Nessus扫描 49
4.3.4 Nessus报告 50
4.3.5将扫描结果导入Metasploit框架中 50
4.3.6在Metasploit内部使用Nessus进行扫描 52
4.4专用漏洞扫描器 54
4.4.1验证SMB登录 54
4.4.2扫描开放的VNC空口令 56
4.4.3扫描开放的X11服务器 58
4.5利用扫描结果进行自动化攻击 59
第5章 渗透攻击之旅 65
5.1渗透攻击基础 66
5.1.1 msf〉 show exploits 66
5.1.2 msf〉 show auxiliary 66
5.1.3 msf〉 show options 66
5.1.4 msf〉 show payloads 68
5.1.5 msf〉 show targets 70
5.1.6 info 71
5.1.7 set和unset 71
5.1.8 setg和unsetg 72
5.1.9 save 72
5.2你的第一次渗透攻击 72
5.3攻击Metasploitable主机 76
5.4全端口攻击载荷:暴力猜解目标开放的端口 79
5.5资源文件 80
5.6小结 82
第6章Meterpreter 83
6.1攻陷Windows XP虚拟机 83
6.1.1使用nmap扫描端口 84
6.1.2攻击MS SQL 84
6.1.3暴力破解MS SQL服务 86
6.1.4 xp_ cmdshell 87
6.1.5 Meterpreter基本命令 88
6.1.6获取键盘记录 89
6.2挖掘用户名和密码 90
6.2.1提取密码哈希值 90
6.2.2使用Meterpreter命令获取密码哈希值 91
6.3传递哈希值 92
6.4权限提升 93
6.5令牌假冒 95
6.6使用PS 95
6.7通过跳板攻击其他机器 97
6.7.1使用Meterpreter进行跳板攻击 97
6.7.2使用Metasploit Pro的VPN跳板 100
6.8使用Meterpreter脚本 105
6.8.1迁移进程 105
6.8.2关闭杀毒软件 106
6.8.3获取系统密码哈希值 106
6.8.4查看目标机上的所有流量 106
6.8.5攫取系统信息 107
6.8.6控制持久化 107
6.9向后渗透攻击模块转变 108
6.10将命令行shell升级为Meterpreter 109
6.11通过附加的Railgun组件操作Windows API 110
6.12小结 110
第7章 免杀技术 112
7.1使用MSF攻击载荷生成器创建可独立运行的二进制文件 113
7.2躲避杀毒软件的检测 114
7.2.1使用MSF编码器 114
7.2.2多重编码 117
7.3自定义可执行文件模板 118
7.4隐秘地启动一个攻击载荷 120
7.5加壳软件 122
7.6使用Metasploit Pro的动态载荷实现免杀 123
7.7关于免杀处理的最后忠告 126
第8章 客户端渗透攻击 127
8.1基于浏览器的渗透攻击 128
8.1.1基于浏览器的渗透攻击原理 128
8.1.2关于空指令 129
8.2使用ollydbg调试器揭秘空指令机器码 130
8.3对IE浏览器的极光漏洞进行渗透利用 134
8.4文件格式漏洞渗透攻击 137
8.5发送攻击负载 139
8.6小结 140
第9章Metasploit辅助模块 141
9.1使用辅助模块 144
9.2辅助模块剖析 146
9.3展望 152
第10章 社会工程学工具包 153
10.1配置SET工具包 154
10.2针对性钓鱼攻击向量 155
10.3 Web攻击向量 160
10.3.1 Java Applet 160
10.3.2客户端Web攻击 165
10.3.3用户名和密码获取 167
10.3.4标签页劫持攻击(Tabnabbing) 169
10.3.5中间人攻击 169
10.3.6网页劫持 169
10.3.7综合多重攻击方法 171
10.4传染性媒体生成器 176
10.5 USB HID攻击向量 177
10.6 SET的其他特性 181
10.7展望 181
第11章Fast-Track 183
11.1 Microsoft SQL注入 184
11.1.1 SQL注入——查询语句攻击 185
11.1.2 SQL注入——POST参数攻击 186
11.1.3手工注入 187
11.1.4 MS SQL破解 188
11.1.5通过SQL自动获得控制(SQL Pwnage) 192
11.2二进制到十六进制转换器 194
11.3大规模客户端攻击 195
11.4对自动化渗透的一点看法 197
第12章Karmetasploit无线攻击套件 198
12.1配置 199
12.2开始攻击 200
12.3获取凭证 203
12.4得到shell 203
12.5小结 206
第13章 编写你自己的模块 207
13.1在MS SQL上进行命令执行 208
13.2探索一个已存在的Metasploit模块 209
13.3编写一个新的模块 211
13.3.1 PowerShell 211
13.3.2运行shell渗透攻击 213
13.3.3编写Powershell upload exec函数 215
13.3.4从十六进制转换回二进制程序 215
13.3.5计数器 217
13.3.6运行渗透攻击模块 218
13.4小结——代码重用的能量 219
第14章 创建你自己的渗透攻击模块 220
14.1 Fuzz测试的艺术 221
14.2控制结构化异常处理链 225
14.3绕过SEH限制 227
14.4获取返回地址 230
14.5坏字符和远程代码执行 235
14.6小结 238
第15章 将渗透代码移植到Metasploit 239
15.1汇编语言基础 240
15.1.1 EIP和ESP寄存器 240
15.1.2 JMP指令集 240
15.1.3空指令和空指令滑行区 240
15.2移植一个缓冲区溢出攻击代码 240
15.2.1裁剪一个已有的渗透攻击代码 242
15.2.2构造渗透攻击过程 243
15.2.3测试我们的基础渗透代码 244
15.2.4实现框架中的特性 245
15.2.5 增加随机化 246
15.2.6消除空指令滑行区 247
15.2.7去除伪造的shellcode 247
15.2.8我们完整的模块代码 249
15.3 SEH覆盖渗透代码 250
15.4小结 257
第16章Meterpreter脚本编程 258
16.1 Meterpreter脚本编程基础 258
16.2 Meterpreter API 265
16.2.1打印输出 265
16.2.2基本API调用 266
16.2.3 Meterpreter Mixins 266
16.3编写Meterpreter脚本的规则 267
16.4创建自己的Meterpreter脚本 268
16.5小结 275
第17章 一次模拟的渗透测试过程 276
17.1前期交互 277
17.2情报搜集 277
17.3威胁建模 278
17.4渗透攻击 280
17.5 MSF终端中的渗透攻击过程 280
17.6后渗透攻击 281
17.6.1扫描Metasploitable靶机 282
17.6.2识别存有漏洞的服务 284
17.7攻击PostgreSQL数据库服务 286
17.8攻击一个偏门的服务 288
17.9隐藏你的踪迹 289
17.10小结 291
附录A配置目标机器 293
附录B 命令参考列表 301