什么是渗透测试?

2025年03月17日 | 阅读 9 分钟

渗透测试(Pen Testing),也称为渗透测试,是一种安全测试,用于发现攻击者可能在 Web 或网络应用程序以及软件应用程序中利用的漏洞、威胁和风险。在 Web 应用程序安全方面,渗透测试通常用于增强 Web 应用程序(WAF)。

渗透测试的目的是识别和测试软件应用程序中存在的所有可能的安全漏洞。

漏洞是指攻击者可以获得系统数据的未经授权访问的风险。漏洞通常是在软件开发和实施阶段意外引入的。常见的漏洞包括配置错误、设计错误、软件缺陷等。渗透分析取决于两种机制,即漏洞评估和渗透测试(VAPT)。

渗透测试人员使用与攻击者相同的工具、技术和流程,以确定系统弱点的业务影响。

渗透测试通常会模拟可能威胁到业务的各种不同攻击。渗透测试可能会检查一个足够强大的系统,以抵御来自已认证和未认证的访问者以及各种系统角色的攻击。

Redscan 是一家屡获殊荣的网络安全渗透测试服务提供商。我们的一系列 CREST 渗透测试项目,通过识别、安全地利用并帮助修复可能导致数据和资产被恶意攻击者窃取的漏洞,帮助组织有效管理网络安全风险。

渗透测试的主要目标是识别安全弱点。渗透测试还可用于测试组织的网络安全策略、员工安全意识以及组织识别和响应安全事件的能力。

通过渗透测试识别出的安全弱点信息会被汇总并提供给组织的 IT 和网络系统经理,使他们能够做出战略决策并确定修复工作的优先级。

渗透测试的类型

选择哪种类型的渗透测试通常取决于范围以及组织是想模拟员工、网络管理员(内部源)还是外部源的攻击。有三种类型的渗透测试,即:

What is Pen Test

1. 白盒测试在白盒渗透测试中,测试人员通常会获得有关要测试的网络或系统的完整信息,包括 IP 地址方案、源代码、操作系统详细信息等。这可以被认为是模拟来自任何内部源的攻击。

2. 黑盒测试在黑盒渗透测试中,测试人员不知道所测试的系统。测试人员负责收集有关目标网络或系统的信息。

3. 灰盒测试在灰盒渗透测试中,测试人员会获得系统部分知识。这可以被认为是外部黑客的攻击,他们已经获得了对组织网络基础设施文档的非法访问。

渗透测试的领域

渗透测试通常在以下领域进行,例如:

  • 网络渗透测试:在此类测试中,需要测试系统的物理结构以识别漏洞和风险,从而确保网络安全。在网络环境中,测试人员会识别各自公司或组织网络的设计、实施或运行中的安全漏洞。测试人员测试的设备可以是计算机、调制解调器,甚至是远程访问设备等。
  • 应用程序渗透测试:在此类测试中,需要测试系统的逻辑结构。攻击模拟旨在通过识别漏洞和风险来揭示应用程序安全控件的效率。防火墙和其他监控系统用于保护安全系统。尽管如此,有时仍然需要进行测试,特别是在流量允许通过防火墙的情况下。
  • 系统的响应或工作流程:社会工程学收集关于人际互动的信息,以获取有关组织及其计算机的信息。测试相应的组织防止未经授权访问其信息系统的能力非常有用。此外,此测试专门针对组织或公司的工作流程设计。

渗透测试的阶段

渗透测试人员旨在模拟有动机的攻击者的攻击。为此,他们通常会遵循一个包含以下步骤的计划:

What is Pen Test

1. 计划与侦察:从公共和私人来源收集有关目标尽可能多的信息,以指导攻击策略。

来源包括互联网搜索、域名注册信息检索、社会工程学、非侵入式网络扫描和“垃圾箱挖掘”。这些信息有助于渗透测试人员绘制出目标的攻击面和可能的漏洞。

侦察可以根据渗透测试的范围和目标而有所不同,可能像打个电话来了解系统功能一样简单。

2. 扫描:渗透测试人员使用工具检查目标网站或系统是否存在弱点,包括开放服务、应用程序安全问题和开源漏洞。

渗透测试人员根据他们在侦察和测试过程中发现的情况使用各种工具。

3. 获取访问权限:攻击者的动机多种多样,从窃取、更改或删除数据,到转移资金,再到仅仅损害声誉。

为了执行每个测试用例,渗透测试人员必须决定使用何种最佳工具和技术来获取系统访问权限,无论是通过SQL注入之类的弱点,还是通过恶意软件、社会工程学或其他方式。

4. 维持访问权限:一旦渗透测试人员获得了目标访问权限,他们的模拟攻击就必须保持连接足够长的时间以实现其目标。这是为了展示潜在的影响。

5. 清理痕迹:攻击者必须清除对受害者系统造成破坏的任何痕迹,以及收集到的任何数据、日志事件,以保持匿名。

一旦攻击者利用了一个漏洞,他们可能会获得对其他机器的访问权限,因此该过程会重复,即寻找新的漏洞并利用它们。这个过程被称为“横向移动”。

渗透测试工具

渗透测试人员经常使用自动化工具来发现常见的应用程序漏洞。渗透测试工具扫描代码以识别应用程序中的恶意代码,这些代码可能导致安全漏洞。

渗透测试工具会检查数据加密技术,并能识别硬编码值(如用户名和密码),以验证系统中的安全漏洞。渗透测试工具应

  • 易于部署、配置和使用。
  • 轻松扫描系统。
  • 根据需要立即修复的严重性对漏洞进行分类。
  • 能够自动验证漏洞。
  • 重新验证之前的漏洞利用。
  • 生成详细的漏洞报告和日志。

许多最受欢迎的渗透测试工具都是免费或开源软件,这使得渗透测试人员能够根据自己的需求修改或适应代码。一些最广泛使用的免费或开源渗透测试工具包括:

  1. Metasploit项目是由安全公司 Rapid7 拥有的一项开源项目,该公司授权 Metasploit 软件的完整功能版本。它收集了可用于服务器、在线应用程序和网络的流行渗透测试工具。Metasploit 可用于发现安全问题、验证漏洞缓解措施以及管理安全流程。
  2. Nmap(网络映射器)是一个端口扫描器,用于扫描系统和网络是否存在与开放端口相关的漏洞。Nmap 被指向要扫描的系统或网络所在的 IP 地址或地址,然后测试这些系统是否有开放端口;此外,Nmap 还可用于监控主机或服务的正常运行时间并绘制网络攻击面。
  3. w3af(Web 应用程序攻击和审计框架)是一个开源的 Web 应用程序安全扫描器。该项目为 Web 应用程序提供了漏洞扫描器和漏洞利用工具。它提供有关安全漏洞的信息,供渗透测试项目使用。该扫描器提供图形用户界面和命令行界面。
  4. Wireshark是一个用于网络流量分析和网络数据包分析的工具。Wireshark 使组织能够查看其网络中发生的网络活动的细节。这款渗透测试工具是一个网络分析器/网络嗅探器/网络协议分析器,可实时评估网络流量中的安全漏洞。Wireshark 常用于审查各个级别的网络流量细节。
  5. John the Ripper将不同的密码破解器整合到一个软件包中,自动识别不同类型的密码哈希并确定可自定义的破解器。渗透测试人员通常使用该工具来发起攻击,以查找系统或数据库中的密码弱点。

渗透测试人员使用与黑帽黑客相同的工具,因为这些工具文档齐全且广泛可用,这有助于渗透测试人员更好地理解它们可能如何被用来对付他们的组织。

渗透测试方法

任何渗透测试计划的一个重要方面是定义渗透测试人员必须在其中运行的范围。范围定义了在渗透测试中可以使用哪些系统、位置、技术和工具。以下是安全专业人员使用的一些主要渗透测试策略,例如:

What is Pen Test
  1. 内部测试:模拟由具有标准访问权限的授权用户在防火墙后面的内部攻击。此测试对于估计心怀不满的员工可能造成的损害非常有用。
  2. 外部测试:目标是公司的外部可见服务器或设备,包括域名服务器、电子邮件服务器、 Web 服务器或防火墙。目标是确定外部攻击者是否可以进入,以及一旦他们获得访问权限,他们可以深入到什么程度。
  3. 定向测试:由组织的 IT 团队和渗透测试团队执行。由于每个人都能看到测试正在进行,有时也被称为“亮灯”方法。
  4. 盲测:通过严格限制事先提供给执行测试的个人或团队的信息,来模拟真实攻击者的行为和程序。渗透测试人员可能只获得公司名称。由于此测试可能需要大量的侦察时间,因此可能成本较高。
  5. 双盲测试:将盲测再进一步。在这种渗透测试中,组织内部可能只有一两个人知道正在进行测试。双盲测试可用于测试组织的网络安全监控以及事件识别和响应程序。

渗透测试与自动化测试

渗透测试主要是手动完成的。渗透测试人员在过程中确实会使用自动扫描和测试工具。但他们也会超越工具,运用他们对最新攻击技术的知识来思考安全障碍,从而提供比漏洞评估(即自动化测试可以提供的)更深入的测试。以下是手动渗透测试和自动化测试的一些比较优势:

手动渗透测试

渗透测试可以发现流行列表之外的漏洞和弱点,并测试自动化测试可能忽略的业务逻辑,例如数据验证、完整性检查。

此外,手动渗透测试审查可以帮助识别自动化测试报告的误报。手动渗透测试人员是“像对手一样思考”的专家,他们分析数据以针对性地进行攻击,并以自动化测试解决方案无法做到的方式(遵循脚本化的例程)测试系统和网站。

自动化测试

自动化测试生成结果更快,并且比完全手动渗透测试过程需要的专业人员更少。自动化测试工具会自动跟踪结果,有时可以将它们导出到集中的报告平台。

此外,虽然手动渗透测试的结果可能因测试而异,但对同一系统重复运行自动化测试会产生相同的结果。

渗透测试的优点和缺点

随着安全事件的频率和严重性日益增加,组织比以往任何时候都更需要了解自己如何抵御攻击。

PCI DSS 和 HIPAA 等法规要求进行定期的渗透测试,以保持其要求的最新性。以下是这种缺陷发现技术的一些优点和缺点:

优点

  • 它可以发现上游安全保障实践中的漏洞,例如自动化工具、配置和编码标准、架构分析以及其他轻量级的漏洞评估活动。
  • 它可以定位已知和未知的软件缺陷和安全漏洞,包括那些本身不会引起太大关注但可能在复杂攻击模式中造成实质性损害的小漏洞。
  • 它可以攻击任何系统,模仿大多数恶意黑客的行为,尽可能模拟真实的对手。

缺点

  • 它劳动密集且成本高昂。
  • 它不能全面防止错误和缺陷进入生产环境。