本书共15章和3个附录,内容包括:评估工作流程与工具、评估工作流程与工具、局域网发现、IP网络扫描、常见网络服务评估、微软服务评估、电子邮件服务评估、Web应用体系结构等。每一章的后边列出了一个清单,其中总结归纳了该章所描述的各种网络威胁、攻击技术,以及相应的有效防护措施。附录中提供了一些有益的参考资料,包括测试中常用的TCP和UDP的端口列表等。
前言
一如既往,攻击者仍在持续地开展网络攻击来获益。在我准备撰写《网络安全评估》第三版时,对事件响应专业技能的需求也在持续上升。在过去的十年中,尽管软件开发商在提高其产品安全性方面做了大量工作,但随着系统复杂度的不断增强,其攻击方式也不断变化,最终导致互联网整体上完整性与安全性的下降。
攻击者的战略战术也日益增强,涵盖了软件漏洞利用、社会工程,以及对高价值资产的物理攻击等多种复杂渗透手段的综合运用。更严重的是,很多为保护网络安全而部署的技术已经证明是无效的, Google Project Zero 团队注1成员Tavis Ormandy 已经公布了一个可远程利用漏洞的列表,里面涵盖了很多安全产品注2。
风险与收益共存,这一原则同样适用于网络安全领域。网络安全研究人员有时候会负责任地向产品厂商通报0day 漏洞,有时候也会出于经济报酬的目的来向第三方或攻击者披露0day 漏洞,后者则与相应的客户进行研究成果的分享和利用。此外,还有一个日益扩大的鸿沟,即有些只为某些特权组织(比如政府和犯罪组织)所知的严重安全漏洞的数量日益增长。
针对这种状况,一个下意识的反应就是起诉黑客并控制其攻击工具的扩散。然而,我们所面对的对手及其采用的战略战术,不过是一个严重问题的表征:我们所使用的产品并不适用于这一目的。对很多技术公司而言,产品安全是之后才添加的内容,我们今天面临的安全挑战只是这个问题的一种表现。
导致事情进一步恶化的是,政府推进了网络空间军事化的进程,并破坏了用于保护数据的密码系统的完整性注3。作为网络安全专家,我们必须提倡纵深防御(defense in depth)来降低可能仍然存在的风险,并努力确保网络成为适合开展商务贸易、数据存储和相互通信等业务的安全场所。
概览
本书对计算机安全范畴中的一个特定领域——以结构化的模式开展基于网络的渗透测试进行了深入研究,其中介绍的方法学描述了攻击者怎样在互联网中探测定位存在漏洞的系统组件,以及用户怎样开展类似的互动来确保自身网络环境的安全。
为了对安全风险进行有效管控,评估是每个组织都应该进行的第一个步骤。通过采用与攻击者类似的方式对自身网络环境进行测试,能够未雨绸缪地定位、识别其中存在的漏洞。在本书中,我将攻击技术和相应的应对措施以列表的形式给出,有助于读者设计清晰、正确的技术策略来增强自身网络环境的安全。
Chris McNab是安全分析软件公司AlphaSOC的创始人,该公司在美国和英国都设有办事处。Chris与世界各地的客户组织合作,帮助这些客户了解并减轻其环境中的脆弱性。他出席了包括FIRST、OWASP、InfoSecurity Europe、InfoSec World、信息安全世界和云安全联盟大会在内的多项活动。
目录
前言 1
第1 章 网络安全评估简介 15
当前状态 15
威胁与攻击面 17
客户端软件攻击 17
服务器软件攻击 18
Web 应用程序攻击 19
暴露的逻辑20
评估方法 22
静态分析 22
设计检验 22
动态测试 24
本书覆盖的内容 27
第2 章 评估工作流程与工具 28
网络安全评估方法学 29
探测识别 29
漏洞扫描 30
漏洞研究 30
漏洞的渗透33
迭代式评估方法 33
可用的测试平台 35
更新Kali Linux 35
部署带漏洞的服务器 36
第3 章 漏洞与对手 37
Hacking 的基本概念 37
软件存在漏洞的原因分析 38
考虑攻击面 39
软件安全错误分类 40
威胁建模 42
系统组件 42
攻击者目标42
系统访问与执行上下文 43
攻击者经济学 45
攻击C/C++ 应用程序 47
运行时内存布局 47
处理器寄存器与内存 50
写入内存 51
读取内存 53
编译器与操作系统安全功能 56
规避常见的安全功能 58
逻辑缺陷和其他漏洞 63
密码机制弱点 64
本章主要内容回顾 66
第4 章 Internet 网络发现 67
查询搜索引擎与Web 站点 68
Google 搜索功能 69
Netcraft 查询 73
使用Shodan 73
DomainTools 75
PGP 公钥服务器 76
LinkedIn 搜索 77
域WHOIS 78
人工WHOIS 查询 78
IP WHOIS 80
IP WHOIS 查询工具与实例 81
BGP 枚举 85
DNS 查询 85
正向DNS 查询 86
DNS 区域传送技术 89
前向DNS 破解 91
反向DNS 扫描 95
IPv6 主机枚举 97
DNS 数据集的交叉索引 98
SMTP 探测 99
枚举的自动化 101
枚举技术回顾 101
枚举攻击应对措施 102
第5 章 局域网发现 103
数据链路协议 103
8023 以太网测试 104
8021Q VLAN 109
攻击特定的VLAN 113
8021X PNAC 116
CDP 121
8021D STP 124
本地IP 协议 127
DHCP 128
PXE 130
LLMNR, NBT-NS 和mDNS 132
WPAD 134
内部路由协议 136
IPv6 网络发现 145
识别本地网关 151
本地网络发现回顾 151
本地网络攻击应对措施 153
第6 章 IP 网络扫描 155
使用Nmap 进行初始网络扫描 155
ICMP 156
TCP 158
UDP 160
SCTP 163
结果汇总 167
低层IP 评估 169
伪造任意数据包 170
TCP/IP 协议栈指纹识别 173
IP ID 分析 173
利用TTL 对ACL 进行逆向分析176
揭示内部IP 地址 178
实用NSE 进行漏洞扫描 178
大规模漏洞扫描 181
IDS 与IPS 规避 182
TTL 操控 182
使用SniffJoke 进行数据插入和加扰 183
SniffJoke 配置和运行 184
网络扫描回顾 186
网络扫描的应对措施 187
第7 章 常见网络服务评估 188
FTP 189
FTP 服务指纹识别 190
已知的FTP 漏洞 191
TFTP 193
已知的TFTP 漏洞 194
SSH 195
SSH 服务指纹识别 197
功能枚举 199
缺省的和硬编码的密钥凭据 203
以不安全的方式生成主机密钥 205
SSH 服务器软件漏洞 206
Telnet 207
缺省的Telnet 密钥凭据 208
Telnet 服务器软件漏洞 208
IPMI 209
DNS 211
指纹识别 211
递归支持测试 212
已知的DNS 服务器漏洞 213
组播DNS 215
NTP 216
SNMP 218
渗透攻击SNMP 220
SNMP community 字符串和口令破解 221
LDAP 225
LDAP 认证 226
LDAP 操作 228
LDAP 目录结构 229
指纹识别与匿名绑定 230
口令暴力破解 232
获取机密数据 233
LDAP 服务器实现机制缺陷 234
Kerberos 234
Kerberos 密钥 237
票据格式 237
Kerberos 攻击面 240
本地攻击 240
未授权的远程攻击 246
Kerberos 实现缺陷 247
VNC 248
VNC 服务器攻击 250
UNIX RPC 服务 250
手工查询暴露的RPC 服务 252
RPC 服务漏洞 254
常见网络服务评估回顾 255
服务加固与应对措施 256
第8 章 微软服务评估 258
NetBIOS 名服务 259
SMB 262
微软RPC 服务263
攻击SMB 与RPC 264
绘制网络攻击面 264
通过SMB 进行匿名IPC 访问 265
SMB 实现的安全漏洞 267
识别已暴露的RPC 服务 268
口令暴力破解 275
认证并进行访问 277
过程自动化284
远程桌面服务 284
口令暴力破解 285
评估传输层安全 285
RDP 实现的安全漏洞 287
微软服务测试路线图 287
微软服务攻击的应对措施 288
第9 章 电子邮件服务评估 290
电子邮件服务协议 290
SMTP 291
SMTP 服务“指纹”识别 292
绘制 SMTP 体系结构 293
枚举支持的命令与扩展 297
可远程利用的漏洞 300
用户账号枚举 301
口令暴力破解 303
内容检查机制欺骗 304
邮件安全功能检查 306
经由SMTP 进行钓鱼 309
POP3 312
口令暴力破解 313
IMAP 314
IMAP 服务指纹识别 314
口令暴力破解 315
已知的IMAP 服务器安全漏洞 315
邮件服务测试要点 315
邮件服务应对措施 317
第10 章 VPN 服务评估 318
IPsec 318
数据包格式319
ISAKMP、IKE 与IKEv2 320
可利用的IPsec 漏洞 325
PPTP 331
VPN 测试回顾 332
VPN 服务应对措施 333
第11 章 评估TLS 服务 335
TLS 机理 336
会话协商 336
密码套件 340
密钥交换和认证 342
TLS 认证 347
会话恢复 354
会话重新协商 354
压缩 356
STARTTLS 356
理解TLS 漏洞 357
可利用的缺陷 358
TLS 实现缺陷 360
减轻TLS 暴露 362
评估TLS 端点 363
识别TLS 库和版本 364
枚举支持的协议和密码套件 365
枚举支持的功能和扩展 369
认证审查 372
TLS 端点压力测试 374
手动访问TLS 封装的服务 375
TLS 服务评估回顾 376
TLS 强化 377
网络应用加强 378
第12 章 Web 应用体系结构 379
Web 应用类型 379
Web 应用层次 381
表示层 381
传输层安全协议TLS 382
HTTP 383
内容分发网络(CDN) 391
负载均衡器391
表示层数据格式 392
应用层 392
应用层数据格式 393
数据层 394
第13 章 Web 服务器评估 395
识别代理机制 396
枚举有效主机 398
Web 服务器剖析 400
分析服务器响应 400
HTTP 标头浏览 402
内容的抓取和研究 406
主动扫描 410
WAF 探测 410
服务器和应用框架特征鉴别 411
识别暴露的内容 412
限定Web 服务器漏洞 414
浏览暴露的内容 414
强力密码研磨 416
研究支持的HTTP 方法 417
已知的Microsoft IIS 漏洞 420
已知的Apache HTTP 服务器漏洞 421
已知的Apache Coyote 漏洞 423
已知的Nginx 漏洞 424
Web 服务器加固 425
第14 章 评估Web 应用框架 426
框架和数据存储剖析 427
理解常见的漏洞 430
PHP 430
PHP 管理控制台 431
PHP CMS 包 434
Apache Tomcat 436
管理器应用437
已知的Tomcat 漏洞 438
攻击Apache jServ 协议 439
JBoss 测试 440
基于HTTP 的服务器性能分析 441
Web 控制台和调用器 442
识别MBeans 442
利用MBeans 444
使用RMI 分布式垃圾收集器 448
已知的JBoss 漏洞 448
自动的JBoss 扫描 449
Apache Struts 450
利用DefaultActionMapper 452
JDWP 453
Adobe ColdFusion 454
ColdFusion 分析 454
外在的管理接口 456
已知的ColdFusion 软件缺陷 457
Apache Solr 漏洞 458
Django 460
Rails 461
使用一个应用的秘密令牌 463
Nodejs 464
Microsoft ASPNET 465
应用框架安全检查列表 466
第15 章 评价数据存储 468
MySQL 469
暴力密码破解 470
授权的MySQL 攻击 471
PostgreSQL 473
暴力密码破解 474
认证的PostgreSQL 攻击 475
Microsoft SQL Server 477
暴力密码破解 478
授权并评价配置 478
Oracle 数据库 480
与TNS 监听器交互 481
Oracle SID 破解 483
数据库账号密码破解 483
认证Oracle 数据库 485
特权提升和Pivoting 486
MongoDB 487
Redis 489
已知的漏洞490
分布式缓存 492
Apache Hadoop 493
NFS 494
Apple Filing 协议 496
iSCSI 498
数据存储控制对策 499
附录A 常见端口和消息类型 501
附录B 漏洞信息源 506
附录C 不安全的TLS 密码套件 508
术语表 511
作者介绍 527
封面介绍 527