前言
一如既往,攻击者仍在持续地开展网络攻击来获益。在我准备撰写《网络安全评估》第三版时,对事件响应专业技能的需求也在持续上升。在过去的十年中,尽管软件开发商在提高其产品安全性方面做了大量工作,但随着系统复杂度的不断增强,其攻击方式也不断变化,最终导致互联网整体上完整性与安全性的下降。
攻击者的战略战术也日益增强,涵盖了软件漏洞利用、社会工程,以及对高价值资产的物理攻击等多种复杂渗透手段的综合运用。更严重的是,很多为保护网络安全而部署的技术已经证明是无效的, Google Project Zero 团队注1成员Tavis Ormandy 已经公布了一个可远程利用漏洞的列表,里面涵盖了很多安全产品注2。
风险与收益共存,这一原则同样适用于网络安全领域。网络安全研究人员有时候会负责任地向产品厂商通报0day 漏洞,有时候也会出于经济报酬的目的来向第三方或攻击者披露0day 漏洞,后者则与相应的客户进行研究成果的分享和利用。此外,还有一个日益扩大的鸿沟,即有些只为某些特权组织(比如政府和犯罪组织)所知的严重安全漏洞的数量日益增长。
针对这种状况,一个下意识的反应就是起诉黑客并控制其攻击工具的扩散。然而,我们所面对的对手及其采用的战略战术,不过是一个严重问题的表征:我们所使用的产品并不适用于这一目的。对很多技术公司而言,产品安全是之后才添加的内容,我们今天面临的安全挑战只是这个问题的一种表现。
导致事情进一步恶化的是,政府推进了网络空间军事化的进程,并破坏了用于保护数据的密码系统的完整性注3。作为网络安全专家,我们必须提倡纵深防御(defense in depth)来降低可能仍然存在的风险,并努力确保网络成为适合开展商务贸易、数据存储和相互通信等业务的安全场所。
概览
本书对计算机安全范畴中的一个特定领域——以结构化的模式开展基于网络的渗透测试进行了深入研究,其中介绍的方法学描述了攻击者怎样在互联网中探测定位存在漏洞的系统组件,以及用户怎样开展类似的互动来确保自身网络环境的安全。
为了对安全风险进行有效管控,评估是每个组织都应该进行的第一个步骤。通过采用与攻击者类似的方式对自身网络环境进行测试,能够未雨绸缪地定位、识别其中存在的漏洞。在本书中,我将攻击技术和相应的应对措施以列表的形式给出,有助于读者设计清晰、正确的技术策略来增强自身网络环境的安全。
读者对象
本书假定读者熟悉IP 协议,并具有UNIX 类操作系统的管理经验。技能性强的网络管理员和安全顾问阅读本书时应该不会有什么障碍。为了能更好地从本书中获益,读者应该熟悉如下知识:
• 理解OSI 二层网络运行机制(主要是ARP 与802.1Q VLAN 标签)。
• 理解IPv4 协议簇,包括TCP 协议、UDP 协议,以及ICMP 协议。
• 熟悉常见的网络协议(如FTP、SMTP 和HTTP)。
• 掌握基本的运行时内存布局和Intel x86 架构处理器寄存器等知识。
• 理解加密机制原理(如Diffie-Hellman 和RSA 密钥)。
• 理解常见的Web 安全漏洞(XSS、CSRF 和命令注入等)。
• 在测试环境中配置和构建基于UNIX 的工具。
本书组织结构
本书共15 章和3 个附录。每一章的后边列出了一个清单,其中总结归纳了该章所描述的各种网络威胁、攻击技术,以及相应的有效防护措施。附录中提供了一些有益的参考资料,包括测试中常用的TCP 和UDP 的端口列表等。
下面对各章和附录做个简短的描述。
第1 章,网络安全评估简介,介绍了网络安全评估的基本原理,阐述了一个重要的理念:安全是一个过程,而不是一个产品。
第2 章,评估工作流程与工具,讲述了安全顾问的攻击平台中所涉及的各种工具以及应采纳的评估策略。
第3 章,漏洞与对手,通过taxonomy 对软件中的漏洞进行了归类,并对漏洞类别和对手类型进行了深层描述。
第4 章,Internet 网络发现,阐述了潜在的攻击者为了解目标网络所采用的一些基于Internet 的技术手段,包括开放的Web 搜索、DNS 扫描和邮件服务器查询等。
第5 章,局域网发现,描述了开展局域网发现和窃听的步骤,以及802.1Q、802.1X 安全特性的circumvention。
第6 章,IP 网络扫描,讨论了所有已知的IP 网络扫描技术及其应用,并给出了支持这些扫描技术的系统以及相关工具列表。此外,还讨论了IDS 逃避技术和低层的数据包分析技术。
第7 章,常见网络服务评估,对多平台上运行的多种服务安全评估方法进行了详细阐述。本章涵盖的协议包括SSH、FTP、 Kerberos、SNMP 与VNC 等。
第8 章,微软服务评估,对企业环境中运行的多种微软服务(NetBIOS、SMB Direct、RPC 与RDP)评估方法进行了阐述。
第9 章,电子邮件服务评估,详细介绍了对SMTP、POP-3 和IMAP 等邮件服务的评估,这些服务容易遭受信息泄漏攻击和暴力破解攻击,在有些情况下也可能受到远程代码执行攻击。
第10 章,VPN 服务评估,介绍了对IPsec、PPTP 等VPN 服务的网络评估,这些服务用于提供安全的网络访问和安全性数据传输。
第11 章,评估TLS 服务,介绍了对TLS 协议及其功能的评估,该协议用于提供对Web、邮件和其他网络服务的安全访问。
第12 章,Web 应用体系结构,定义了Web 应用程序服务器组件,描述了这些组件之间的交互方式,包括协议和数据格式等。
第13 章,Web 服务器评估,主要介绍了对Web 服务器软件的评估,包括IIS、Apache 和Nginx。
第14 章,评估Web 应用框架,对多种Web 应用程序框架漏洞的发现策略进行了详细介绍,包括Apache Struts、Rails、Django、ASP.NET 与PHP 等。
第15 章,评价数据存储,介绍了对数据库服务器(如Oracle、SQL Server 与MySQL 等)、存储协议和大型系统中的分布式键- 值存储内容的远程评估。附录A,常用端口和消息类型,包含TCP、UDP 端口与ICMP 列表,并对相关章节中的对应内容进行了详细介绍。
附录B,漏洞信息源,列出了一些提供公开可访问的漏洞与渗透信息的数据源,通过这些资料,在对服务进行评估时,可以设计出一个有效的漏洞矩阵以便快速识别相应领域的潜在风险。
附录C,不安全的TLS 密码套件,列出了TLS 支持的、存在脆弱性的密码套件,以便在需要时对其禁用。
RFC 与CVE 引用的使用
本书有些内容涉及对特定IETF Request for Comments(RFC)草案注4、文档和MITRE Common Vulnerabilities and Exposures(CVE)注5 相关条目的引用。发布的RFC 定义了SMTP、FTP、TLS、 HTTP 与IKE 等协议的内部工作机理,MITRE CVE 列出了公开的已知信息安全漏洞列表,以及相关条目(如按年度、独特的标识符等)以便对特定漏洞进行追踪。
本书中覆盖的漏洞
本书描述了未授权或已授权用户用于对网络服务进行渗透的漏洞,远远超出了本地权限提升、拒绝服务,以及局域网渗透(包括中间人攻击等)的范畴。
本书未涉及2008 年以前的CVE 编号漏洞。本书的前两版在2004 年、2007年出版,其中对一些服务软件包(包括IIS、Apache 与OpenSSL 等)的较早期的漏洞进行了详细介绍。
出于篇幅的考虑,大量不太常见的服务软件包本书未涉及。在开展网络测试评估的过程中,用户可以搜索NIST 国家漏洞信息库(NVD)注6 来对测试中相应服务存在的漏洞进行调研。
公认的安全标准
本书撰写中遵循一些公认的渗透测试标准,包括NIST SP 800-115、NSA IAM、CESG CHECK、CREST、Tiger Scheme、The Cyber Scheme、PCI DSS、PTES 等,读者可以参考这些素材对基础设施和Web 应用程序测试评估工作进行必要的准备。
NIST SP 800-115
2008 年,美国国家标准与技术局(NIST)发布了特别的800-115 注7,这是一个用于安全测试的技术指南,PCI DSS 材料中引用了这一文档并将其作为业界认可的最佳指南。SP 800-115 既描述了较高层面的评估流程,同时也对系统测试的一些底层细节过程进行了描述。
NSA IAM
美国国家安全局(National Security Agency,NSA)发布了信息安全评估方法学(INFOSEC Assessment Methodology,IAM)技术框架,以便于NSA 之外的安全顾问和安全专业人员能够在遵循公认的评估标准的前提下为客户提供安全评估服务。IAM 框架定义了对计算机网络进行测试的3 个层次:
评估(第一层)
评估层包含了对目标组织协作式的高层次发现过程,包括政策、流程和系统内的信息流动。本层次不对网络或系统进行实际的技术测试。
评价(第二层)
评价层是一个实际的、协作进行的过程,其中涉及通过网络扫描、渗透工具和某些特定的专门技术的应用进行测试。
红队(第三层)
红队评估是非协作的,同时对目标网络而言是从外部进行的,包括模仿适当的敌手进行的渗透测试等内容。红队评估包括对目标网络存在的漏洞的全面量定。
本书描述了IAM 框架第二层、第三层评估中技术性漏洞扫描和渗透测试的相关技术。
CESG CHECK
英国政府通信指挥部(Government Communications Headquarters,GCHQ)有一支称为通信与电子安全组(Communications and Electronics Security Group,CESG)的信息保障力量。与美国NSA IAM 框架允许NSA 之外的安全顾问为客户提供评估服务的方式类似,CESG 有一个称为CHECK 的标准,CESG 会依据CHECK 对英国内部的安全测试小组进行资质评估和授权。
与涵盖信息安全领域诸多方面(包括安全策略审查、反病毒软件、备份和灾难恢复等内容)的NSA IAM 不同的是,CESG CHECK 更专注于网络安全评估这一具体领域。CESG 的另一个标准是CESG 列出的指导方案(CESG Listed Adviser Scheme,CLAS),这一标准用更为宽广的视野来面对信息安全问题,并能够应对其他的一些领域,如ISO/IEC 27002、安全策略制定、审计等。
为保证对CHECK 顾问的正确授权,CESG 开展了一门攻击实践课程,并通过这一课程来测试参与者所具备的进行攻击、渗透的技术和方法。CESG CHECK 攻击课程列出了与网络安全评估相关的技能:
• 使用DNS 信息获取工具处理单个或多个记录,包括对目标主机相关的DNS 记录结构的正确理解。
• 使用ICMP、TCP 和UDP 网络映射和探测工具。
• 展示进行TCP 服务标志获取的技术。
• 使用SNMP 进行信息取回,包括对与目标系统配置和网络路由相关的MIB 结构的正确理解。
• 理解路由器和交换机中存在的与Telnet、HTTP、SNMP 和TFTP 存取和配置机制相关的一些常见缺陷。
下面列出的是针对UNIX 环境,攻击实践课程的参与者所应该具备的技能:
• 用户枚举(通过finger、rusers、rwho 和SMTP 等技术)。
• RPC 服务枚举,并对这些服务潜在的安全问题有较为深刻的理解。
• 网络文件系统(Network File System,NFS)漏洞识别。
• 测试远程服务(rsh、rexec、rlogin)中的漏洞。
• 检测不安全的X Windows 服务器。
• 识别Web、FTP、Samba 服务中的漏洞。
下面给出的是针对Windows 环境,攻击实践课程的参与者所应该具备的技能:
• 对NetBIOS、SMB 和RPC 服务进行评估,以便枚举用户名、组、共享资源、域、域控制器、口令策略和相关的漏洞。
• 通过NetBIOS、RPC 服务进行用户名与口令破解。
• 检测并展示IIS、 SQL Server 中存在的已知漏洞。
本书清晰地归纳总结了对上述领域如何进行评估,同时还介绍了有助于读者正确理解书中所列漏洞的背景信息。虽然CESG CHECK 纲要的出发点是通过这些手段来评估那些试图为英国政府进行信息安全测试的安全顾问所具备的方法论和技术手段的有效性,但英国境外的组织和安全也应该了解这个技术框架。
CESG 的资格认定
在英国,很多组织通过CESG 授权的考核后开展网络安全评估培训和实战业务,下面列出的这些组织提供的资格认定是CESG 认可并与CHECK 等同的:
CREST
CREST 是一个非营利组织,该组织提供认证的关键基础设施测试者、认证的Web 应用程序测试者两种安全认证服务,并以此达成对网络安全测试行业的影响和管理。 通过与CESG 的合作,CREST 授权的测试者认证承认CHECK 团队的领导地位,很多组织使用其纲要流程来对测试团队成员进行培训和授权。
Tiger Scheme
另一个与政府和业界密切协作的组织是Tiger Scheme,该组织提供的认证等级包括associate、qualified 和senior,这些认证为CESG 所认可,并可用于确保检查团队成员和团队负责人身份。
Cyber Scheme
Cyber Scheme Team Member(CSTM) 认证是CESG 认可并视为与CHECK 团队成员等同,该组织通过其认可的合作伙伴提供培训和认证。
PCI DSS
支付卡行业安全标准委员会(PCI SSC)提出了PCI 数据安全标准(PCI DSS),该标准要求支付处理器、商家和支付卡数据的用户遵循一些特定的控制目标,包括:
• 构建并维护安全网络。
• 保护持卡人数据。
• 遵循漏洞管理流程。
• 实施强的访问控制措施。
• 定期对网络进行监测和测试。
• 维护信息安全策略。
当前的标准是PCI DSS 3.1,在该标准文档中,对支付处理器和商家执行的漏洞扫描和渗透测试需满足以下两个要求:
Requirement 11.2
按季度进行内部和外部漏洞扫描,外部扫描必须由PCI SSC 认可的扫描服务提供商(ASV)进行,内部扫描则不需要ASV 开展。
Requirement 11.3
每年度需要进行内部和外部渗透测试,测试需由遵循行业最佳实践指南(即NIST SP 800-115)的相关团队进行。
本书撰写遵循NIST SP 800-115 和其他公布的安全标准,读者可以使用其中提到的技术和方法来开展内部和外部测试,并满足PCI DSS Requirement 11.3的要求。
PTES
PCI SSC 认可渗透测试执行标准(Penetration Testing Execution Standard,PTES)注8 为测试的参考框架,该标准包括以下7 个部分,PTES 站点列出了一些详细信息:
• 任务前交互。
• 情报收集。
• 威胁建模。
• 漏洞分析。
• 渗透。
• 后渗透。
• 报告。
本书中所涉及工具的镜像站点
本书中所提到的工具的地址列表已列出,读者可以浏览每个相关站点的最新文件和文档。考虑到读者会担心这些可执行文件里包含特洛伊木马或其他一些恶意内容,O’Reilly 建立了这些工具的镜像站点,该站点的所有工具已经经过病毒检测,不过读者仍然可能会遇到安全警告等提示信息,毕竟这些确实是黑客工具。
使用代码实例
本书内容的一些辅助素材(代码实例、实践操作等)可以在http://examples.oreilly.com/9780596006112/tools/ 获取。
本书旨在帮助读者完成自己的工作。一般来说,读者可以在自己的程序和文档里边使用本书的代码,而无需得到我们的许可,除非是对关键的代码段进行改写。比如,写程序时使用本书中的几段代码不需要得到许可,而销售或者发布O’Reilly 书中的实例组成的CD-ROM 则需要得到授权;引用本书的实例解答问题不需要得到许可,而将本书中大量重要的实例代码整合到自己的产品文档中则必须得到授权才可以进行。
我们不要求读者一定这样做,但是我们会赞赏您在用到本书时给出的引用说明。一个完整的引用说明包括书名、作者、出版商和ISBN。如,“Network Security Assessment, Second Edition, by Chris McNab. Copyright 2017 Chris McNab, 978-1-491-91095-5.”。
如果您认为您对本书中代码实例的应用不能归属于上面所提到的任何一种情况,方便的时候可以通过电子邮件permissions@oreilly.com 联系我们。
本书的约定
本书应用了如下一些印刷排版上的约定:
斜体(Italic)
本书通常使用斜体字来表示命令、电子邮件地址、口令、错误消息、文件名、着重强调的内容,以及技术术语在本书中的首次出现。
等宽字体(Constant width)
在本书中表示IP 地址以及命令行实例。
等宽粗斜体(Constant width bold italic)
表示可替换的文本。
等宽粗体(Constant width bold)
表示用户输入。
致谢
在我的职业生涯中,很多人给予我宝贵的帮助,大多数人知道他们是谁。我已故的朋友巴纳拜·杰克在2009 年帮我找到了一份工作,这让我的生活变得更好。我非常想念他,而且这位老人的品位也不一样。
多亏了迈尔斯- 布里格斯这种性格类型,我有时可以安静下来,应对挑战。
我不是故意的,因此深深感谢这些年来一直忍受我的人,尤其是女朋友和我的家人。感谢 O ’Reilly Media 团队长期持续的、耐心和坚定的支持。这是他们维护的一本重要书籍,有赖于他们的帮助,本书将为增强网络空间安全略尽绵薄之力。
感谢O’Reilly Media 团队长期持续的、耐心和坚定的支持。这是他们维护的一本重要书籍,有赖于他们的帮助,本书将为增强网络空间安全略尽绵薄之力。
技术评论者和贡献者
计算机系统变得如此模糊,以至于我不得不召集许多主题专家来弥补不同技术的缺陷。如果没有以下天才人物的帮助,就不可能把这些材料放在一起:Car Bauer, Michael Collins, Daniel Cuthbert, Benjamin Delpy, David Fitzgerald,Rob Fuller, Chris Gates, Dane Goodwin, Robert Hurlbut, David Litchfield, HD Moore, Ivan Ristić, Tom Ritter, Andrew Ruef 和Frank Thornton。