第1章 什么是渗透测试 1
1.1 安全基础知识 1
1.1.1 安全目标 2
1.1.2 风险三要素:资产、威胁和漏洞 3
1.1.3 攻击者会是些什么人 5
1.1.4 渗透测试需要掌握的知识 6
1.2 定义渗透测试 7
1.3 评估渗透测试的需求 10
1.4 攻击阶段 14
1.5 选择渗透测试厂商 15
1.6 准备渗透测试 17
1.7 法律和道德考虑 18
1.7.1 渗透测试的道德 18
1.7.2 法律 22
1.7.3 与信息网络安全相关的中国法律 23
1.7.4 与攻入行为相关的美国法律 25
1.7.5 管制法律 28
1.7.6 与网络攻击相关的其他国家的法律 28
1.7.7 其他要考虑的问题 29
1.8 小结 30
第2章 建立自己的学习和测试环境 31
2.1 什么是虚拟系统 31
2.2 VMware Works的安装 33
2.3 配置虚拟机 36
2.3.1 安装虚拟的Windows 2003 Server 36
2.3.2 为Windows 2003 Server安装VMware Tools 39
2.3.3 安装Ubuntu 40
2.3.4 为Ubuntu安装VMware Tools 44
2.4 限制Windows匿名访问 46
2.4.1 修改方法 46
2.4.2 系统之间的差别 47
2.5 小结 48
第3章 建立测试计划 49
3.1 分步骤的测试计划 49
3.1.1 定义范围 50
3.1.2 社会工程 50
3.1.3 会话劫持 50
3.1.4 木马/后门 51
3.2 开源安全测试方法指南 51
3.3 文档 53
3.3.1 摘要 53
3.3.2 项目范围 54
3.3.3 结果分析 55
3.3.4 小结 56
3.3.5 附录 56
3.4 小结 57
第4章 社会工程 58
4.1 人类心理学 59
4.1.1 从众劝导 60
4.1.2 逻辑劝导 60
4.1.3 基于需求的劝导 61
4.1.4 基于权威的劝导 62
4.1.5 基于交换的社会工程 63
4.1.6 基于相似性的社会工程 63
4.1.7 基于信息的社会工程 64
4.2 如何成为一名社会工程师 64
4.2.1 耐心在社会工程中的应用 65
4.2.2 自信在社会工程中的应用 66
4.2.3 信任在社会工程中的应用 67
4.2.4 内部知识在社会工程中的应用 67
4.2.5 社会工程攻击的常见形式 68
4.3 第一印象与社会工程师 69
4.4 常用的社会工程战术 70
4.4.1 假冒技术支持 70
4.4.2 第三方假冒 71
4.4.3 邮件假冒 73
4.4.4 末端用户假冒 78
4.4.5 客户假冒 79
4.4.6 反向社会工程 80
4.5 社会工程的防护 80
4.6 案例研究 82
4.7 小结 85
第5章 主机侦察 87
5.1 被动主机侦察 88
5.1.1 公司网站 89
5.1.2 EDGAR资料库 94
5.1.3 NNTP USENET新闻组 94
5.1.4 用户组会议 95
5.1.5 商业伙伴 96
5.2 主动主机侦查 96
5.2.1 NSLookup/Whois查询 97
5.2.2 SamSpade 100
5.2.3 Visual Route 102
5.3 端口扫描 103
5.3.1 TCP Connect()扫描 104
5.3.2 SYN扫描 105
5.3.3 NULL扫描 105
5.3.4 FIN扫描 106
5.3.5 ACK扫描 106
5.3.6 Xmas-Tree扫描 107
5.3.7 Dumb扫描 107
5.4 使用Nmap进行扫描 108
5.4.1 Nmap的开关和使用技巧 109
5.4.2 编译和测试Nmap 111
5.4.3 操作系统特征检测——Fingerprinting 112
5.4.4 踩点——脚印拓取 114
5.5 扫描检测 115
5.5.1 入侵检测 115
5.5.2 异常检测系统 115
5.5.3 滥用检测系统 115
5.5.4 基于主机的入侵检测系统 116
5.5.5 基于网络的入侵检测系统 116
5.5.6 网络交换机 116
5.5.7 扫描检测示例 117
5.6 案例研究 121
5.7 小结 124
第6章 攻击Web服务器 126
6.1 Web语言简介 127
6.1.1 HTML 128
6.1.2 DHTML 130
6.1.3 XML 132
6.1.4 XHTML 133
6.1.5 JavaScript 133
6.1.6 JScript 135
6.1.7 VBScript 136
6.1.8 Perl 137
6.1.9 ASP 138
6.1.10 CGI 140
6.1.11 PHP 141
6.1.12 ColdFusion 142
6.1.13 Java 143
6.2 Web网站架构 145
6.3 电子商务架构 146
6.3.1 Apache HTTP服务器漏洞 147
6.3.2 IIS Web服务器 148
6.4 Web页面欺骗 151
6.5 Cookie猜测 153
6.6 隐藏字段 155
6.7 暴力攻击 157
6.7.1 Web口令破解工具——Brutus 159
6.7.2 HTTP Brute Forcer 160
6.7.3 检测暴力攻击 161
6.7.4 暴力攻击的防护 162
6.8 工具 163
6.8.1 NetCat 164
6.8.2 漏洞扫描 165
6.8.3 IIS Xploit 167
6.8.4 execiis-win32.exe 167
6.8.5 CleanIISLog 168
6.8.6 IntelliTamper 168
6.8.7 Web服务器标志提取 168
6.9 使用Google获取网站信息 170
6.9.1 查看目录列表 170
6.9.2 Web服务器软件出错消息 171
6.9.3 应用软件出错消息 180
6.9.4 默认页面 182
6.9.5 默认文档 184
6.9.6 示例程序 185
6.9.7 寻找登录页面(Login Portal) 187
6.9.8 寻找网络硬件 190
6.10 检测Web攻击 193
6.10.1 检测目录遍历 194
6.10.2 检测Whisker 196
6.11 防止Web攻击 200
6.11.1 操作系统安全防护 201
6.11.2 保护Web服务器应用的安全 203
6.11.3 保护Web网站设计的安全性 205
6.11.4 保护网络结构的安全性 205
6.12 案例研究 206
6.13 小结 212
第7章 数据库攻击 214
7.1 常见数据库简介 217
7.1.1 Oracle数据库 217
7.1.2 MySQL数据库 218
7.1.3 SQL Server数据库 219
7.1.4 常用数据库的默认账户 220
7.2 攻击SQL Server数据库 220
7.2.1 SQL注入(SQL Injection) 223
7.2.2 系统存储过程 224
7.2.3 连接字符串 226
7.2.4 口令破解/暴力破解攻击 226
7.3 攻击Oracle数据库 227
7.3.1 Oracle基础 227
7.3.2 PL/SQL简介 231
7.3.3 PL/SQL注入 235
7.3.4 使用DBMS_SQL执行用户提供的查询 247
7.3.5 实际应用示例 250
7.4 保护SQL Server的安全 254
7.4.1 用户认证 254
7.4.2 服务账户 255
7.4.3 Public角色 256
7.4.4 Guest账户 256
7.4.5 示例数据库 257
7.4.6 网络库 257
7.5 保护Oracle的安全 258
7.6 检测数据库攻击 263
7.6.1 审计 263
7.6.2 失败登录 265
7.6.3 系统存储过程 265
7.6.4 SQL注入 266
7.7 防止数据库攻击 266
7.8 案例研究 268
7.9 小结 272
第8章 口令破解 273
8.1 口令散列方法 274
8.1.1 使用加盐 275
8.1.2 微软口令散列 276
8.1.3 UNIX口令散列 277
8.2 Web口令破解技术 278
8.2.1 基本认证 278
8.2.2 数字散列认证 279
8.2.3 NTLM认证 280
8.2.4 数字证书认证 280
8.2.5 Microsoft Passport认证 282
8.2.6 表单认证 283
8.3 口令破解工具 284
8.3.1 John the Ripper 285
8.3.2 Pwdump 6 287
8.3.3 LOphtcrack 289
8.3.4 Nutcracker 292
8.3.5 Snadboy Revelation 293
8.3.6 Boson GetPass——破解Cisco路由器口令 294
8.3.7 RainbowCrack 295
8.3.8 WinSSLMiM——HTTPS中间人攻击工具 298
8.3.9 Cain & Abel—Wndows平台上的密码恢复和破解工具 299
8.4 检测口令破解 303
8.4.1 网络流量 303
8.4.2 系统日志文件 304
8.4.3 应对账户锁定 304
8.4.4 物理访问 305
8.4.5 垃圾搜寻和按键记录 305
8.4.6 社会工程 305
8.5 避免或减轻口令破解风险 306
8.5.1 口令审计 306
8.5.2 记录账户登录日志 306
8.5.3 账户锁定策略 307
8.5.4 口令设置 308
8.5.5 物理保护 310
8.5.6 员工安全教育和策略 312
8.6 案例研究 312
8.7 小结 315
第9章 攻击网络设备 316
9.1 绕过防火墙 316
9.2 规避入侵检测系统 318
9.3 测试路由器的漏洞 319
9.3.1 Cisco发现协议 319
9.3.2 HTTP服务 321
9.3.3 口令破解 323
9.3.4 修改路由表 323
9.4 测试交换机的漏洞 326
9.4.1 虚拟局域网跳跃攻击(VLAN Hopping) 326
9.4.2 生成树攻击 328
9.4.3 MAC表洪流 328
9.4.4 ARP攻击 329
9.4.5 VTP攻击 330
9.5 保护网络设备的安全 331
9.5.1 保护防火墙 331
9.5.2 保护路由器的安全 332
9.5.3 保护交换机的安全 335
9.6 案例研究 336
9.7 小结 341
第10章 会话劫持 342
10.1 什么是会话劫持 342
10.1.1 非盲假冒攻击 344
10.1.2 盲假冒攻击 344
10.1.3 TCP序列号预测(盲劫持) 345
10.2 会话劫持工具 346
10.2.1 Juggernaut 347
10.2.2 Hunt 349
10.2.3 TTY-Watcher 351
10.2.4 T-Sight 351
10.2.5 其他工具 352
10.3 ACK洪流问题 352
10.4 一次著名的会话劫持攻击实践 354
10.5 检测会话劫持 357
10.5.1 使用包嗅探器检测会话劫持 359
10.5.2 使用Cisco IDS检测会话劫持 366
10.6 阻止会话劫持 375
10.7 案例研究 376
10.8 小结 380
第11章 无线网络的渗透 382
11.1 无线网络的历史 382
11.2 天线和访问点 385
11.3 无线安全技术 387
11.3.1 服务设置标识符(SSID) 387
11.3.2 有线等效协议(WEP) 388
11.3.3 MAC过滤 389
11.3.4802.1 x端口安全 390
11.4 驾驶攻击 390
11.4.1 什么是驾驶攻击 390
11.4.2 驾驶攻击的工作方式 391
11.4.3 找到访问点 392
11.4.4 硬件选择 393
11.5 工具 395
11.5.1 NetStumbler 395
11.5.2 StumbVerter 396
11.5.3 DStumbler 396
11.5.4 Kismet 397
11.5.5 AiroPeek NX 398
11.5.6 AirSnort 400
11.5.7 WEPCrack 401
11.6 检测无线网络的攻击 401
11.7 案例研究 404
11.8 小结 405
第12章 木马和后门的运用 406
12.1 木马、病毒和后门程序 406
12.1.1 术语和基础知识 406
12.1.2 木马的工作原理 409
12.2 常见病毒和蠕虫 415
12.2.1 Chernobyl病毒 416
12.2.2 I Love You病毒 416
12.2.3 Melissa病毒 417
12.2.4 BugBear病毒 418
12.2.5 MyDoom蠕虫 421
12.2.6 W32/Klez蠕虫 421
12.2.7 Blaster蠕虫 423
12.2.8 SQL Slammer蠕虫 424
12.2.9 Sasser蠕虫 425
12.3 木马与后门程序 426
12.3.1 Back Orifice 2000 426
12.3.2 Tini 436
12.3.3 Donald Dick 436
12.3.4 Rootkit 440
12.3.5 NetCat 440
12.3.6 SubSeven 443
12.3.7 Brown Orifice木马 453
12.3.8 Beast木马 453
12.4 木马和后门程序的检测 462
12.4.1 MD5检查和 462
12.4.2 监控本地端口 463
12.4.3 监视远程端口 468
12.4.4 反病毒和反木马扫描器软件 470
12.4.5 入侵检测系统 470
12.5 预防 471
12.6 案例研究 471
12.7 小结 474
第13章 常见服务器(UNIX和Windows)的渗透 475
13.1 通用漏洞扫描器 476
13.1.1 Nessus 476
13.1.2 SAINT 477
13.1.3 SARA 478
13.1.4 ISS 479
13.1.5 NetRecon 480
13.2 UNIX权限和根访问 481
13.2.1 权限提升技术 482
13.2.2 Rootkit 484
13.3 Windows安全模型和漏洞利用 486
13.3.1 权限提升技术 487
13.3.2 Rootkit 488
13.4 检测服务器攻击 488
13.5 预防服务器攻击 489
13.6 案例研究 492
13.7 小结 493
第14章 理解和应用缓冲区溢出 495
14.1 缓冲区溢出的概念 496
14.1.180 x86寄存器与内存中数据存放方式 496
14.1.2 栈 498
14.1.3 堆 499
14.1.4 NOP指令 499
14.2 缓冲区溢出示例 499
14.2.1 一个缓冲区溢出简单示例 499
14.2.2 利用缓冲区溢出提升Linux权限 500
14.2.3 利用缓冲区溢出提升Windows权限 507
14.2.4 远程溢出获得系统的控制权 509
14.3 防止缓冲区溢出 521
14.3.1 防止缓冲区溢出的库工具 522
14.3.2 使用基于编译器的方法防止缓冲区溢出攻击 522
14.3.3 使用非执行栈防止缓冲区溢出攻击 522
14.4 案例研究 523
14.5 小结 525
第15章 拒绝服务攻击 526
15.1 常见的DoS攻击 528
15.1.1 Ping of Death攻击 528
15.1.2 Smurf和Fraggle攻击 529
15.1.3 LAND攻击 530
15.1.4 SYN Flood攻击 530
15.2 用于发起DoS攻击的工具 532
15.2.1 Datapool 532
15.2.2 Jolt2 533
15.2.3 Hgod 534
15.3 检测DoS攻击 535
15.3.1 防火墙 535
15.3.2 基于主机的IDS 535
15.3.3 基于特征的网络IDS 536
15.3.4 网络异常检测器 537
15.4 防止DoS攻击 538
15.4.1 强化网络的安全性 538
15.4.2 强化应用的安全性 541
15.4.3 入侵检测系统 541
15.5 案例研究 541
15.6 小结 543
第16章 文件与信息隐藏、踪迹覆盖与证据清除 544
16.1 文件隐藏 544
16.1.1 利用Windows系统的特点隐藏文件 544
16.1.2 使用Word文档窃取文件 548
16.1.3 使用RootKit隐藏文件 550
16.1.4 信息隐藏 552
16.2 踪迹覆盖 557
16.2.1 关闭审计 558
16.2.2 日志的查询和备份 558
16.2.3 日志清除 560
16.3 证据清除 564
16.3.1 使用ZeroTracks清除证据 564
16.3.2 使用Tracks Eraser Pro清除证据 565
16.3.3 使用Eraser清除证据 568
16.4 小结 573
第17章 案例介绍:一次完整的渗透测试 575
17.1 案例研究:对微网公司网络的渗透测试 576
17.1.1 制订攻击计划和组织渗透测试小组 577
17.1.2 收集信息 578
17.1.3 扫描和资源探查 581
17.1.4 获取访问 582
17.1.5 通过无线网络获取对目标的访问 589
17.1.6 保持访问 591
17.1.7 清除踪迹 591
17.1.8 编写报告 591
17.2 交付给用户的渗透测试报告 592
17.3 交付报告和规划下次测试 596
附录A 渗透测试常用工具 597
参考文献 614
· · · · · · (
收起)