渗透测试是一种安全性测试,会发起模拟网络攻击以查找计算机系统中的漏洞。
企业之所以进行渗透测试,主要出于三个原因。
渗透测试比单纯的漏洞评估更全面。渗透测试和漏洞评估都可以帮助安全团队找出应用程序、设备和网络中的薄弱环节。但是,这两种方法的目的略有不同,因此许多组织会同时运用这两种方法,而不是依赖于其中一种。
漏洞评估通常是指重复进行自动扫描,在系统中搜索已知漏洞,并进行标记以供审核。安全团队会运用漏洞评估来快速检查是否存在常见缺陷。
渗透测试更进一步。渗透测试人员发现漏洞后,会在模拟攻击中利用它们,模仿恶意黑客的行为。这样,安全团队就能深入了解实际黑客可能会如何利用漏洞来访问敏感数据或破坏运营。安全团队可以利用这些知识来设计针对现实世界网络威胁的网络安全控制措施,而不是试图猜测黑客可能会做些什么。
由于渗透测试人员会采取自动流程和手动流程并用的做法,因此他们能够发现已知和未知的漏洞。由于渗透测试人员会主动利用他们发现的薄弱环节,因此出现误报的可能性较小;如果他们可以利用漏洞,那么网络犯罪分子也可以。由于渗透测试服务由第三方安全专家提供,他们会从黑客的角度来接触系统,因此渗透测试通常能够发现内部安全团队可能遗漏的缺陷。
网络安全专家建议进行渗透测试。许多网络安全专家和权威机构建议将渗透测试作为一种主动安全措施。例如,2021 年,美国联邦政府敦促企业使用渗透测试来防御日益增长的勒索软件攻击。
漏洞测试有助于确保监管合规性。《健康保险流通和责任法案》(HIPAA) 和《通用数据保护条例》(GDPR) 等数据安全法规要求采取特定的安全控制措施。渗透测试可以帮助企业确保其控制措施,从而证明其符合这些法规。
其他法规明确要求进行渗透测试。《支付卡行业数据安全标准》(PCI) 适用于处理信用卡的组织,专门要求定期进行“外部和内部渗透测试”。
渗透测试还可以支持遵守自愿性的信息安全标准,例如 ISO/IEC 27001。
所有渗透测试都需要对企业计算机系统进行模拟攻击。但是,多种不同类型的渗透测试以不同类型的企业资产为目标。
应用程序渗透测试用于查找应用程序及相关系统中的漏洞,包括网页应用和网站、移动及物联网应用、云应用以及应用程序接口 (API)。
渗透测试人员通常首先查找列在开放式 Web 应用安全项目 (OWASP) 前十大漏洞中的漏洞。“OWASP 十大安全风险”列出了最严重的 Web 应用程序漏洞。该列表会定期更新以反映不断变化的网络安全环境,但常见漏洞包括恶意代码注入、错误配置和身份验证失败。除了“OWASP 十大安全风险”之外,应用程序渗透测试还会查找可能是手头应用程序独有的不太常见的安全缺陷和漏洞。
这些安全测试会查找连接到网络的设备(例如笔记本电脑、移动设备和 IoT 设备以及运营技术 (OT) 中的漏洞。
渗透测试人员可能会查找软件缺陷,例如让黑客能够远程访问端点的操作系统漏洞。他们可能会查找物理漏洞,例如恶意行为者可能潜入的安保措施不当的数据中心。测试团队可能还会评估黑客可能会如何从遭到入侵的设备移动到网络的其他部分。
在渗透测试开始之前,测试团队和企业会设定测试范围。该范围概述了渗透测试人员将会测试哪些系统、何时进行测试以及可以使用哪些方法。该范围还决定了渗透测试人员将会提前获得多少信息:
在黑匣测试中,渗透测试人员不会掌握目标系统的任何信息。他们必须像现实世界中的黑客一样,靠自己进行研究来制定攻击计划。
在白匣测试中,目标系统对于渗透测试人员是完全透明。企业会分享网络示意图、源代码、凭据等详细信息。
在灰盒测试中,渗透测试人员可以获得一些信息,但信息量不大。例如,企业可能会分享网络设备的 IP 范围,但渗透测试人员必须自行探查这些 IP 范围以找出漏洞。
设定范围后,测试就开始了。渗透测试人员可能会遵循多种渗透测试方法。常见的标准包括 OWASP 的应用安全测试指南、渗透测试执行标准 (PTES) 以及美国国家标准与技术研究院 (NIST) SP 800-115。
无论测试团队使用哪种方法,该流程通常会遵循相同的总体步骤。
测试团队收集有关目标系统的信息。渗透测试人员根据目标使用不同的侦察方法。例如,如果目标是应用程序,那么渗透测试人员可能会研究其源代码。如果目标是整个网络,那么渗透测试人员可能会使用数据包分析器来检查网络流量。
渗透测试人员也经常利用开源网络情报 (OSINT)。通过阅读公共文档、新闻文章,甚至是员工的社交媒体和 GitHub 帐户内容,渗透测试人员可以收集有价值的目标相关信息。
测试团队开始进行实际攻击。渗透测试人员可能会尝试进行各种攻击,具体取决于目标系统、所发现的漏洞以及测试范围。一些最常测试的攻击包括:
渗透测试人员一旦利用漏洞在系统中站稳脚跟,就会试图四处游走并访问系统的其他部分。这一阶段有时称为“漏洞链”,因为渗透测试人员会在不同的漏洞之间游走,让网络入侵更加深入。例如,他们可能首先会在员工的电脑上安装键盘记录。利用该键盘记录器,他们可以捕获员工的凭据。使用这些凭据,他们可以访问敏感数据库。
在这一阶段,渗透测试人员的目标是维持访问权限并提升自己的权限,同时规避安全措施。渗透测试人员执行所有这些操作,是为了模仿高级持续性威胁 (APT),此类威胁可能会在系统中潜伏数周、数月或数年,然后被发现。
模拟攻击结束后,渗透测试人员会清理他们留下的所有痕迹,例如植入的后门木马或是更改的配置。这样,现实世界中的黑客就无法利用渗透测试人员所利用的漏洞来突破网络。
然后,渗透测试人员会编写一份关于攻击的报告。该报告通常会概述发现的漏洞、利用的漏洞、有关他们如何规避安全功能的详细信息,以及对他们在系统内所执行操作的描述。报告可能还会包括关于漏洞补救措施的具体建议。内部安全团队可以使用这些信息来加强对真实世界攻击的防御。
渗透测试人员会使用各种工具进行侦察、检测漏洞,以及自动执行渗透测试流程的主要部分。一些最常用的工具包括:
专用操作系统:大多数渗透测试人员会使用专为渗透测试和道德黑客设计的操作系统。最受欢迎的是 Kali Linux,这是一个开源的 Linux 发行版,预装了 Nmap、Wireshark 和 Metasploit 等渗透测试工具。
凭据破解工具:这些程序可以通过破解加密或发起暴力攻击来发现密码;暴力攻击会使用机器人或脚本来自动生成和测试可能的密码,直到成功为止。示例包括 Medusa、Hyrda、Hashcat 和 John the Ripper。
端口扫描程序:借助端口扫描程序,渗透测试人员可以进行远程测试,了解设备是否存在可以用作网络突破口的开放端口。Nmap 是使用最广泛的端口扫描程序,但 Masscan 和 ZMap 也很常用。
漏洞扫描程序:漏洞扫描程序可搜索系统中的已知漏洞,让渗透测试人员能够快速找到目标的潜在入口。示例包括 Nessus、Core Impact 和 Netsparker。
网络漏洞扫描程序是漏洞扫描程序中的一类,用于评估 Web 应用程序和网站。示例包括 Burp Suite 和 OWASP 的 Zed Attack Proxy (ZAP)。
数据包分析器:数据包分析器也称为数据包嗅探器,让渗透测试人员能够通过捕获和检查数据包来分析网络流量。渗透测试人员可以弄清楚流量的来路和去处,在某些情况下还能弄清楚流量中包含了哪些数据。最常用的数据包分析器包括 Wireshark 和 tcpdump。
Metasploit:Metasploit 是一个具有多种功能的渗透测试框架。最重要的是,Metasploit 让渗透测试人员能够自动执行网络攻击。Metasploit 带有一个内置的库,其中包含了预先编写的漏洞代码和有效负载。渗透测试人员可以选择一个漏洞,向其提供要传送至目标系统的有效负载,然后将其余部分交给 Metasploit 来处理。