渗透测试(Penetration Testing),也称为Pen Testing,是测试计算机系统、网络或Web应用程序以发现攻击者可能利用的安全漏洞的实践。渗透测试可以通过软件应用自动化或手动执行。无论哪种方式,该过程都包括在测试之前收集关于目标的信息,识别可能的入口点,试图闯入(虚拟的或真实的)并报告结果。
让我们看看WIKI上的英文解释(翻译后)
渗透测试是对计算机系统的授权模拟攻击,用于评估系统的安全性。执行测试以识别两个缺点(也称为漏洞),包括未授权方访问系统的特征和数据的可能性,以及优点,使得能够完成完整的风险评估。该过程通常识别目标系统和特定目标,然后审查可用信息,并采取各种手段来实现该目标。渗透测试目标可以是白盒(提供背景和系统信息)或黑盒(只提供基本信息或除了公司名称不提供任何信息)。灰盒穿透测试是二者的结合(其中目标有限的知识与审计人员共享)。渗透测试可以帮助确定一个系统是否容易受到攻击,如果防御足够,以及测试是否打败了哪些防御(如果有的话)。渗透测试发现的安全问题应该报告给系统所有者。渗透测试报告也可以评估对组织的潜在影响,并提出降低风险的对策。
美国国家网络安全中心(National Cyber Security Center)将渗透测试描述如下:“一种方法,通过试图破坏某个IT系统的部分或全部安全性,使用与对手相同的工具和技术,来获得对该IT系统的安全性的保证。”
渗透测试的目标根据针对任何给定参与的已批准活动的类型而有所不同,其中主要目标是发现可被邪恶行为者利用的漏洞,并将这些漏洞与建议的缓解策略一起通知客户。 渗透测试是全面安全审计的一个组成部分。例如,支付卡行业数据安全标准要求在定期日程表和系统更改之后进行渗透测试。缺陷假设方法是一种系统分析和渗透预测技术,其中通过对系统的规范和文档的分析来编译软件系统中的假设缺陷列表。然后,根据所估计的缺陷实际存在的概率,以及在控制或折衷的范围内易于利用该漏洞,对假设缺陷列表进行优先级排序。优先级列表用于指导系统的实际测试。
从渗透测试的定义描述可以看出其目的。例如:Web应用程序渗透测试是通过在内部或外部模拟未经授权的攻击来访问敏感数据的。网络渗透帮助终端用户发现黑客从因特网访问数据的可能性,发现他们的电子邮件服务器的安全性,并且也了解网站托管站点和服务器的安全程度。当我们谈论安全时,我们听到的最常见的词是漏洞。当我刚开始做安全测试的时候,我经常对这个词感到困惑,我相信你们中的很多人会陷入同样的困境。
什么是漏洞(Vulnerability)?
可以这样简单的解释,漏洞是用于识别系统中可能使系统暴露于安全威胁的缺陷的术语。
漏洞扫描和渗透测试有什么区别?
漏洞扫描允许用户发现应用程序中的已知弱点,并定义修复和提高应用程序整体安全性的方法。它基本上查明是否安装了安全补丁,系统是否正确地配置为使攻击变得困难。而渗透测试主要模拟实时系统,帮助用户了解系统是否可以被未经授权的用户访问,如果是,那么会造成什么损害,以及哪些数据等。因此,漏洞扫描是一种侦测控制方法,它提出了改进安全程序和确保已知缺陷不重新出现的方法,而渗透测试是一种预防控制方法,它给出了系统现有安全层的总体视图。虽然,这两种方法都有其重要性,但它将取决于作为测试的一部分真正期望的内容。作为测试人员,在我们开始测试之前,必须明确测试的目的。如果您清楚目标,那么您可以很好地定义是否需要进行漏洞扫描或渗透测试。
实施渗透测试的重要性如下:
如果你看看当前的市场需求,手机使用量已经急剧增加,这正成为攻击的主要潜在因素。通过手机访问网站容易受到更频繁的攻击,从而破坏数据。渗透测试因此变得非常重要,以确保我们建立一个安全的系统,用户可以使用,没有任何担心黑客或数据丢失。
该方法只是一组关于应该如何进行测试的安全行业指南。有一些建立良好且著名的方法和标准可以用于测试,但是由于每个Web应用程序需要执行不同类型的测试,所以测试人员可以通过参考市场上可用的标准来创建他们自己的方法。
一些安全性测试方法论和标准如下:
下面列出了一些可以作为Web应用程序渗透测试(WAPT)的一部分进行测试的测试场景:
尽管我已经提到了该列表,但是测试人员不应该盲目地创建基于上述传统标准的测试方法。
这里有一个例子来证明我为什么这么说。假设您被要求深入测试一个电子商务网站,现在考虑一下是否可以使用传统的OWASP方法(如XSS、SQL注入等)来识别电子商务网站的所有漏洞。答案是否定的,因为与其他网站相比,电子商务工作在非常不同的平台和技术上。为了使您的渗透测试电子商务网站有效,测试人员应该设计一种方法,包括缺陷如订单管理,优惠券和奖励管理,支付网关集成和内容管理系统集成。因此,在决定方法之前,要非常确定要测试哪种类型的网站,以及哪种方法将有助于找到最大的漏洞。
Web应用程序可以通过两种方式进行渗透测试。可以设计测试来模拟内部或外部攻击。
#1)内部渗透测试
顾名思义,内部笔测试是在组织内部通过内部网络(例如:内部局域网)来完成的,因此它包括测试在内部网上托管的Web应用程序。这有助于发现企业防火墙内是否存在漏洞。我们总是相信攻击只能在外部发生,而且很多时候内部渗透测试被忽略或者没有得到重视。基本上,它包括不满的雇员或承包商的恶意雇员攻击,这些雇员或承包商可能已经辞职,但知道内部安全策略和密码,钓鱼攻击的模拟,以及使用用户特权或误用解锁终端的攻击。
#2)外部渗透性测试
这些攻击是在组织外部进行的,包括测试托管在互联网上的Web应用程序。测试人员的行为就像黑客一样,他们不太了解内部系统。为了模拟这种攻击,测试人员得到目标系统的IP而不提供任何其他信息。他们需要搜索和扫描公共网页,并找到我们关于目标主机的信息,然后危害找到的主机。基本上,它包括测试服务器、防火墙和IDS。
这可以包括三个阶段
能手动执行渗透测试吗,还是总是通过使用工具进行自动化。毫无疑问,我想你们大多数人都在谈论自动化。
这是真的,因为自动化带来了速度,避免了人工错误、出色的覆盖率以及其他一些好处,但是就渗透测试而言,它确实需要我们执行一些手工测试。手动测试有助于发现与业务逻辑相关的漏洞,减少误报。 工具容易给出许多误报,因此需要人工干预来确定它们是否是真正的漏洞。
创建工具是为了自动化我们的测试工作。以下是一些可用于Pentest的工具:
Burp Suite 和 NetSparker 是我非常喜欢的工具。
理想情况下,渗透测试可以帮助我们创建安全的软件。但这是一个非常耗费成本的测试方法,所以测试的频率可以不必太频繁。
附:
The process of penetration testing may be simplified into five phases
侦查(嗅探)收集关于目标系统的重要信息的行为。此信息可用于更好地攻击目标。例如,开源搜索引擎可用于查找可用于社会工程攻 击的数据。
使用技术工具来进一步提高攻击者对系统的知识。
使用在侦察(嗅探)和扫描阶段收集的数据,攻击者可以使用有效负载来利用目标系统。
维护访问需要采取步骤,以便能够持久地在目标环境中收集尽可能多的数据。
攻击者必须清除任何破坏受害者系统的跟踪、收集的任何类型的数据、记录事件,以便保持匿名。
一旦攻击者利用了一个漏洞,他们就可以访问其他机器,因此该过程重复,即寻找新的漏洞并试图利用它们。这个过程被称为-Pivoting。
(完)