您想知道的渗透测试都在这里

译文
安全
本文从渗透测试的相关概念、测试的需求、不同阶段、方法、类型、以及工具和成本等方面,和您全面讨论组织如何通过渗透测试,来为自己的系统保驾护航。

【51CTO.com快译】近年来,无论是在业务上、运营中、还是在流程上,数字化转型已经让许多组织和公司能够在可扩展性、生产效率、以及灵活性方面得到了大幅提升。不过,凡事都有利弊。新的数字化技术也会带来各种数据泄露、以及网络攻击事件的频发。因此,如果一个组织不定期进行漏洞评估与渗透测试的话,攻击者会在神不知鬼不觉的情况下,偷偷潜入目标系统,或是破坏IT基础设施,或者窃取商业秘密。可见,为了防范于未然,任何组织都需要通过适当的程序或系统,尽早地检测与响应攻击,并能够及时地从攻击中恢复。

什么是渗透测试?

渗透测试是通过各种手动和自动的技术,来模拟对组织内、外部信息系统的攻击。一些道德黑客、或渗透测试者,通常会通过采用各种测试技术,试图在真实攻击者、或恶意行为者之前,“闯入”组织的信息系统,识别并利用已知的漏洞或未知的缺陷。也就是说,安全测试人员的主要目标是,对待测系统进行主动分析,以识别可能因为系统配置不当、基础设施缺陷、以及不良的操作习惯,所导致的任何潜在威胁或漏洞。

组织为什么要进行渗透测试?

  • 识别整体基础设施(包括各种硬件和软件)中的潜在威胁和弱点,以便开发和构建一个安全可控的系统。
  • 发现组织当前的安全态势与既定目标之间的差距,进而制定出行之有效的解决方案。
  • 确保现有的安全系统或控制措施,能够有效地降低潜在攻击所带来的风险。
  • 能够对攻击向量进行分级,并识别和加固易受利用的攻击途径。
  • 及时发现当前受控系统中存在的错误,并着手修复它们。
  • 检测并确定弱点被利用后的严重程度,并提高自身应对攻击的响应能力。

您还可以通过链接--https://securetriad.io/importance-of-security-assessments/,进一步了解为什么组织应该定期进行安全评估与测试。

渗透测试的不同阶段 

[[408486]]

渗透测试往往会涉及到模拟破坏任意数量的应用程序或系统,其中包括:应用程序的协议接口、前端或后端服务器、安全基础设施、以及利用漏洞植入代码或窃取敏感数据等。那么,渗透测试的整体过程通常包括如下五个阶段:

1. 计划和侦察

此阶段主要包括:定义待测试的范围、优先级和目标。同时,此阶段还会说明关键系统的主要特征,以及即将执行的测试类型。

而侦察阶段则与情报的收集有关。例如:以被动和主动的方式,获取与目标系统相关的网络、域名、以及邮件服务器等信息,以便更好地了解待测目标的工作原理,及其潜在的切入口。

2. 扫描

该阶段主要涉及到了解目标系统将如何响应各种自动化的入侵尝试、以及攻击行为。渗透测试人员通常会使用如下方法:

  • 静态分析:在服务系统运行之前,检查应用程序的源代码,通过将其与既有的编码规则进行比较,进而对其进行代码级的分析与调试。
  • 动态分析:通过实时执行真实数据,对系统的安全性进行测试和评估。此类分析的目标是,通过采用自动化的安全扫描工具,对应用程序或系统执行扫描,进而实时发现各种错误与漏洞。

当然,在静态或动态分析之后,我们需要通过手动验证已发现的漏洞和错误,以消除各种误报。

3. 获得访问或利用的权限

那些在前面阶段已被识别出的各种漏洞,将会在此时被想方设法地利用到目标系统上,以获取访问权限,进而攫取各种有价值的信息。具体的利用方式可谓五花八门,其中包括:提升权限、拦截流量、以及注入恶意代码等。它们在攻击方式上各有侧重点,所造成的损害程度也不尽相同。

4. 保持访问

此阶段的主要目标是:确保攻击在获得对应用程序、或底层系统的访问权限后,仍然可以保持持续的访问状态。毕竟,只要攻击者能够维持对系统长期有效的访问权限,他们就能够更深、更远地接触到其他相关应用。可以说,渗透测试人员需要在本阶段通过模仿和检测,发现那些长期驻留在系统中、且尚未被检测到的高级持续威胁(advanced persistent threats,APT)。

5. 分析和报告

至此,我们需要将测试结果编译成详细的报告。而报告的主体应当主要能够反应出可以被利用的漏洞、易于被破坏和访问的敏感数据、以及安全测试人员在被“发现”之前,可以在系统中驻留的时长。

渗透测试方法

[[408487]]

总的说来,渗透测试方法的采用,主要取决于组织对于目标系统的安全检测程度与水平。而安全专家或第三方网络安全公司,应当协助本组织从实际需求出发,根据已掌握的信息类型,选择并确定相匹配的测试方法。

黑盒

黑盒评估是在向渗透测试员提供较少信息的情况下开展的。也就是说,无论是安全顾问、还是测试人员,由于他们对安全受控系统、或基础设施知之甚少,因此需要采用侦察的方法,来获取目标的详细信息。

白盒

在白盒评估中,测试人员或安全顾问已经获得了有关基础设施、应用程序、设备、以及安全受控系统的相关信息和详细文档(例如:系统架构文档、源代码等)。因此,白盒测试是一种识别和检测内、外部漏洞的综合评估方法。

灰盒

在此类评估方法中,测试人员仅获得了评估安全受控系统所需的用户级知识和信息。同时,测试人员还应当被授予对于Web应用程序、以及内部网络基础设施的部分背景知识和有限访问权限。

物理渗透测试

我们也应当警惕黑客采用物理手段,作为独立攻击、或针对现有技术的补充性攻击方式,来获得物理设施的访问权限。以下是物理渗透测试的两种常见方式:

  • 定位薄弱的安全区域范围:在这种方法中,黑客会确定或搜索易受攻击、且易遭破坏的区域或系统。通常,多数数据中心或楼宇都会包含有吸烟区、维修设备的摆放区、以及某些无人看守的绿色快捷通道。这些设施范围可能本身就未被安全加固,亦或处于能见度较低、过于隐蔽的区域。
  • 捎带(Piggybacking):捎带、尾随(tailgating)或窃听(eavesdropping),都是黑客通过密切跟踪有权限出入设施区域的员工、或维护工人的一些惯用方法。

社会工程学测试

此类测试通过搭建和检验组织内部的人际网络(Human Network),有助于识别针对组织内部人员,及其信任凭据、或访问特权的攻击。常用的攻击类型有:

  • 网络钓鱼:一种欺骗性方法,它通过邮件或消息发送恶意或受感染代码,来获取个人敏感信息。
  • 伪装(Pretexting):伪装是身份盗窃的一种形式,黑客会将自己伪装成目标组织中的内部人员,以获得对安全基础设施、或敏感数据的访问权限。

您可以通过链接--https://securetriad.io/the-why-and-how-of-social-engineering/,进一步了解有关社会工程学的来龙去脉、及其方式方法。

不同类型的渗透测试

[[408488]]

网络渗透测试

作为最常见、也是最热门的渗透测试方法,网络渗透测试能够协助安全测试人员检测和发掘网络系统、以及各种基础设施中的潜在漏洞。网络渗透测试通常被分为外部、内部和无线三种类型。其中:

外部网络渗透测试:外部网络渗透测试可以帮助我们探索网络系统对于外部威胁的响应能力。此类测试的常见手段是,通过基于互联网的渗透测试,以识别出那些暴露在外部网络中,却属于系统内部的漏洞和弱点。

此类测试通常会针对防火墙的配置、防火墙的绕过、IPS的欺骗、以及DNS级别的毒化攻击等网络攻击。而为了实现自动化漏洞扫描的测试过程,安全人员往往会使用市面上常见的知名工具(下文将提到),去扫描和检测目标系统中的已知漏洞。当然,他们也会将手动利用技术与自动化工具相结合,针对检测到的漏洞弱点,发起模拟攻击,并旨在完全接管那些面向互联网的系统。

内部网络渗透测试:此类测试旨在通过漏洞扫描,检测并识别内部系统,发现基础设施中的网络安全弱点,进而采用各种利用技术,来查看内部系统的响应行为。内部网络渗透测试会从根本上去评估内部系统、以及组织员工遭受未授权、或恶意攻击的可能性。其中包括:潜在的未经授权的访问,个人信息与信任凭据的泄漏等方面。

无线渗透测试:黑客或攻击者通过无线的方式,渗透进目标系统,在威胁内网安全的同时,利用获取到的特权,去访问各类敏感信息,进而对系统的正常运行造成不利的影响。

Web应用渗透测试

作为组织的一个重要组成部分与功能,Web应用程序一旦受到攻击就可能导致用户数据、以及商业敏感信息的泄露。因此,针对Web应用程序的渗透测试,会去检查现有网络中的应用程序,是否存在着由错误或不安全的开发、薄弱的设计、以及不当的编程,所引起的任何漏洞或安全隐患。

您可以通过链接--https://dzone.com/articles/web-application-pen-testing-steps-methods-and-tool,了解更多有关Web应用程序渗透测试的步骤、方法和工具。

移动应用渗透测试

移动应用程序的渗透测试主要是通过模拟黑客尝试着采用提权等行为,针对那些在Android、Windows、以及iOS等设备上运行的原生移动应用、或是由组织自行开发的应用程序开展测试。除了发现和利用移动应用中的漏洞,此类测试也会关注移动应用与后端系统在通信和传输数据时的安全态势。

渗透测试工具

[[408489]]

目前,市面上有着全栈式的自动化工具,它们能够让您高效地开展各种渗透测试。下面,让我们来讨论一些被各个组织经常用到的知名工具:

Kali Linux

显然,Kali Linux是基于Linux操作系统、且包含了大量工具。它可以被用于从信息收集到产生报告的,整个端到端的渗透测试过程。作为一种被广泛使用的渗透测试平台,Kali Linux主要关注的是优化进攻,而非防守。它不但是一个开源的项目,而且提供了各种工具列表、版本破解器、以及数据元包(meta-packages)。

目前,Kali拥有600多种道德黑客工具,并包含了用于暴力破解密码的特殊工具。其工具中还包括了:漏洞分析、Web应用程序、信息收集、无线攻击、逆向工程、密码破解、欺骗、嗅探和其他高级可利用工具。

Metasploit

作为最常用的自动化开发框架,Metasploit有助于锁定系统,检测漏洞,进而利用漏洞。由于Metasploit属于开源软件,因此其GUI不但易用,而且能够方便测试者管理安全评估,检测威胁与缺陷,以便构建出强大的安全受控系统。

此外,Metasploit专业版的元模块(Metamodule)部分还可以被用于测试网络分段,进而让测试者知晓哪些网络分段位置可达,哪些不可达。

Wireshark

作为一种网络分析器工具,Wireshark通过提供离线分析和网络实时捕获选项,来抓取并解析目标网络的流量。在被用于了解数据包流和TCP/IP问题时,它提供了实时的数据包和网络活动的详细信息。

ZED Attack Proxy

该工具能够在功能上与最流行的代理与扫描工具BURP套件想媲美,而且它是完全免费的。ZAP通过将自己放置于用户浏览器与被测试的网站之间,以创建代理的方式,方便测试人员拦截、修改、甚至替换流量。因此,它非常适合于那些刚开始接触渗透测试的开发人员和测试人员。

Aircrack

作为一款开源的软件,Aircrack主要被用于检查Wi-Fi的连接场景。而Aircrack NG则是一组工具和软件套件,可以帮助测试者去“攻击”或防御无线网络。其工具包通常包括:检测器、数据包嗅探器、WEP/WPA破解器等组件。Aircrack主要通过拦截、捕获、以及读取数据包的模式,来破解无线系统。

John the Ripper(简称JTR)

众所周知,密码是信息系统中最脆弱的、也是最容易受到攻击的部分。JTR便是一种可被用于破解密码的工具。它包括了一个可定制的破解程序,可识别不同的密码哈希值。同时,它可以利用强大的硬件,通过高效的运行方式,来提高密码破解的效率。

您可以通过链接https://dzone.com/articles/popular-penetration-testing-tools,了解更加全面的渗透测试工具列表。

渗透测试的成本和预算

[[408490]]

通常,渗透测试的成本和预算会受到如下五方面因素的影响,而并非恒定不变的:

  • 目标:大家都知道,我们用于测试小型组织的物理安防,与检查公用输电站的安全态势的费用,肯定是不一样的。我们的目标规模直接决定了在渗透测试方面的投入。例如,当我们从需要测试单个应用程序,升级为测试包括了内、外部网络的整体系统时,随着目标数量的增多和复杂化,我们的测试成本,包括测试人员的成本,以及需要提供和收集的信息,也会不断攀升。
  • 范围:范围的圈定,有助于组织在确定目标的基础上,让测试人员或顾问对完成项目所需的时间,进行更加合理的预估。毕竟测试的持续时间和成本是成正比的。例如,面对大型门户和Web应用时,我们将会比测试简单用户网站所花费的时间会更多,所涉及到的复杂度与范围,也会导致预算费用的上扬。
  • 方法论:组织所采用的测试方法也会对费用产生影响。一些组织可能会使用自动化的漏洞扫描方式,去开展基本性的测试,并解决基本性的安全问题。而另一些公司则可能会选择全栈式的渗透测试方案,以全面检测威胁、漏洞、及其被利用后所造成的影响。这样的综合方法,在成本方面是可想而知的。
  • 技能:与其他行业类似,强大的技术储备往往能够在各种网络安全事件的预防与处置中,发挥着至关重要的作用。显然,与那些基本知识或可用资源有限的测试团队相比,打造一支具有雄厚知识背景、以及熟练实战经验的顾问与专家队伍,虽然更有利于开展和完成全面的渗透测试,并能够保持系统的安全态势,但是团队的运营费用也是不菲的。

小结

在当前的跨区域性协作式全球经济环境中,我们几乎每天都能够看到网络攻击事件登上新闻头条,许多组织往往在事后才后悔自己未能及时、全面地进行渗透测试。因此,面对不断变化的网络环境,以及层出不穷的漏洞与缺陷,组织应当将渗透测试常态化。毕竟,攻击者在盯上某个系统时,是不会公开告知其攻击意图的。

我们常说渗透测试并非“一锤子买卖”。在完成了一轮测试之后,组织需要根据测试所产生的报告,按需进行整改,并在完成之后,重新发起新的一轮测试,以保持目标系统与服务的安全态势,从而给利益相关者提供在健康运营上的信心。

原文标题:All You Need To Know About Penetration Testing,作者:Cyril James

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

责任编辑:华轩 来源: 51CTO
相关推荐

2023-09-11 08:51:23

LinkedList双向链表线程

2021-06-17 13:40:47

区块链比特币公有链

2019-11-04 09:07:48

DevOps互联网IT

2019-04-24 08:31:43

分布式限流kafka

2020-03-18 18:20:19

区块链数字货币比特币

2018-11-28 10:39:01

5G网络运营商

2018-03-31 08:45:52

iPhone交通卡iOS 11.3

2019-04-26 09:38:36

中台平台化转型

2022-11-08 15:55:34

鸿蒙开发套件

2021-07-02 14:09:36

开发技能代码

2017-01-11 08:37:07

Apache SparStreamingDataFrames

2017-08-15 16:05:18

大数据数据分析薪资秘密

2017-08-15 15:35:21

大数据数据分析薪资秘密

2020-12-23 09:00:00

开发Web工具

2020-12-03 18:51:03

开源信息化

2017-12-13 14:24:08

Google 开发者浏览器

2021-12-09 08:16:40

JVM参数系统

2015-10-12 15:50:40

2021-02-01 08:39:26

JTAG接口Jlink

2018-05-10 08:50:31

AndroidGoogle 移动系统
点赞
收藏

51CTO技术栈公众号