译者 | 刘涛
审校 | 重楼
渗透测试是一种通过模拟黑客入侵的方式来识别和解决安全漏洞的过程。它从规划和收集信息开始,针对目标进行渗透测试,通过测试结果来确保能够持续访问并得出结论。这个标准程序有助于提高企业数字环境的安全性。渗透测试包括以下几个阶段:
在规划阶段,全面了解目标相关信息非常重要。特别是在网络钓鱼事件发生时,了解目标使用的技术和数据细节显得尤为关键。这些信息不仅有助于确定适合整个流程的工具和技术,还可以揭示其他重要细节。
下一步是侦察阶段,这一阶段主要涉及收集必要的数据。侦察可以通过两种基本方式进行:主动式和被动式。虽然这两种方式的目的相同,但主动侦察方式更具攻击性,更容易引起注意。相比之下,被动侦察方式更为隐蔽,难以被察觉。每种方式都有其独特的运行时间。被动方式有时更复杂,需要更长时间完成,而主动方式虽然耗时短,但在细节方面可能不如被动方式丰富。
扫描阶段类似于进行彻底的调查。其主要目的是深入挖掘目标并收集有价值的信息。这就像在一大堆杂乱的东西中找到隐藏的宝藏一样。
我们的目标是获取关键信息,在尽量不引起怀疑的情况下入侵系统。我们会利用各种适合当前任务的扫描工具。例如,在处理Web 应用程序时,我们会搜索潜在的 CSRF(跨站请求伪造)风险 和 XSS (跨站脚本攻击)终端等漏洞。我们会检查访问点,调查在端口上运行的服务,并确定网络上是否存在防火墙或 WAF。这里可用于扫描的选项多种多样。
一旦黑客发现可利用的漏洞,他们可以迅速进行全面攻击。这些攻击行为利用漏洞获取被入侵系统的未经授权访问权限,以窃取或篡改敏感信息。为了确保攻击的成功,黑客必须小心行事,避免直接接触目标系统,以免留下痕迹,被安全系统检测和追踪。
非法访问有多种情况,但最常见的是远程代码执行(RCE)和后门。 RCE是一种基于系统基础组件安全漏洞的攻击方式,允许黑客在目标系统上输入或输出任意代码,有时还能操纵代码逻辑。它是最危险的漏洞类型之一,通常有很高的赏金。后门有两种类型:自定义和配置错误。自定义后门涉及欺骗目标下载恶意文件,而配置错误后门涉及访问开发人员的门户网站。
这里更详细地讨论维持访问权的概念。想象在安全的地方备份了一把密钥,以防止丢失主要密钥或需要暂停使用主要密钥时使用备用密钥,这样做可以确保在需要时仍能够访问您的数据或系统。备份访问权限不仅是一种预防措施,也使您能够轻松地在数字世界中操作。另外,随时都能访问重要信息也是一个优点。因此,维持访问权就像在数字旅程中有一个可靠的伙伴,确保您随时准备好应对可能出现的任何情况。
对于主机受到攻击的情况而言,备份访问权就像失窃的备用钥匙。黑客可以随时访问受害者的个人或专业空间,而不会被发现,前提是他们必须小心行事。
撰写报告对于道德黑客的工作至关重要。在报告中,您应该解释每个步骤所采取的措施,发现的问题,使用的漏洞挖掘工具,受到威胁的资产,以及最终的结果。尽管编写报告是一项挑战性的任务,但其中包含的信息却是非常宝贵的。了解哪些资产存在危险可以帮助企业确定安全防护措施的优先级,有效保护其基础设施的安全。
然而,渗透测试的流程并不像最初看起来那么复杂。它主要涉及理解渗透测试行为的影响。黑客通常对这一概念有很好的了解,但有些人可能会由于专注于某些具体任务而忽视了整体的影响。
现在让我们来讨论漏洞扫描,这是渗透测试过程中的一个环节。漏洞扫描的目标是通过扫描系统,寻找其中存在的问题和错误配置。漏洞评估过程旨在分析大量数据,研究导致漏洞的逆向工程利用和缺陷。为了帮助我们找到可能存在的漏洞,我们可以利用在线数据库,如exploit-db(一个网络安全数据库网站,为渗透工程师和道德黑客提供大量攻击方法以及工具),这些在线数据库列出了经常被提及的CVE漏洞利用。同时提供与漏洞利用相关的PoC代码和其他相关细节。
漏洞评估需要投入大量时间和精力。我们的目标是寻找系统中的漏洞,并尽可能准确地了解这些漏洞的利用方式,因为漏洞利用得越准确,对信息的理解也就越深入。例如,假设您要进行CSP(Content Security Policy:内容安全策略)分析,您可能会找到一种CSP策略来保护Web应用程序免受可能的XSS攻击。但是,即使CSP策略中存在通配符,如果您不知道哪些漏洞端口容易受到攻击,您也无法利用这个漏洞。
因此,漏洞扫描和评估是一项非常重要且耗时的工作,需要深入了解不同信息之间的关系。
随着时间的推移,渗透测试工具经历了重大发展,以应对不断变化的网络安全威胁。早期的工具通常比较简单,功能有限。但是,随着网络攻击的日益复杂,现代的渗透测试工具已经变得非常强大和全面。它们不仅可以帮助我们找到系统中的漏洞,还可以通过模拟真实的网络攻击来帮助企业全面了解自己的安全状况。
现代的漏洞评估工具经过了显著地改进,利用了人工智能和机器学习等先进技术,提高了发现和评估系统漏洞的能力。这些工具能够更准确地找到和评估系统中的漏洞。为了应对不断变化的网络威胁和漏洞,这些工具已经集成了威胁情报源,并使之成为标准功能。此外,直观的用户界面使更多的网络安全专业人员能够方便地使用这些工具。这样,我们就能更好地保护系统免受攻击。
现代的诸多开发框架平台,比如Metasploit,经历了重大提升。这些框架提供了更友好的用户体验,使安全专家能够更有效地自动化开发过程。它们已经发展到支持更广泛的漏洞,并成为渗透测试人员的重要武器。这些框架与威胁情报源的集成则进一步提高了开发测试的准确性和有效性。
自动化渗透测试流程的改进彻底提高了安全评估的效率和效果。通过自动化,企业能够更快速、更频繁、更全面地进行安全评估。编排平台(Platforms for orchestration:一种集中的框架,用于管理和协调各种安全评估任务和流程)是其中不可或缺的一部分,它提供了一个集中的框架来管理整个渗透测试流程的生命周期。借助这些平台,安全团队可以通过自动化执行那些需要重复进行的任务,比如漏洞扫描和漏洞利用执行,来减少资源消耗并缩短评估所需的时间。
随着自动化技术的发展,开发和运维之间的合作越来越密切,这种合作称为开发运维一体化流程(DevOps workflows)。许多公司都开始使用渗透测试工具来更快速、更持续的交付软件,因此这些工具也在不断改进以适应这种工作方式。在软件开发过程中,安全性非常重要,而自动化可以确保安全测试在开发流程中的不同阶段得到整合。
自动化技术也可以应用于云环境中,可以开发或调整工具来评估云基础设施的安全性。但是,随着无服务器计算(Serverless Computing)的兴起,也带来了新的挑战。为了对无服务器架构进行全面的安全评估,自动化工具正在不断进化以解决这些挑战。
总的来说,渗透测试工具不断创新,并将自动化整合到工作流程中,是为了应对不断变化的威胁环境。随着更多先进和高效的工具变得可用,安全专业人员现在有了更好的装备来抵御网络威胁,提高企业的整体安全水平。同时,技术的进步意味着保护敏感数据和数字资产将更多地依赖于这些工具的持续改进和发展。
在创建一个基于工作流程的渗透测试自动化系统时,需要考虑几个问题。首先,明确目标并评估当前的程序是否准备好实现自动化的第一步。其次,选择合适的工具很重要,需要在适应性、集成潜力和定制选择之间取得平衡。
整个过程中的一个关键步骤是设计工作流程,这就需要考虑从侦察到报告的逻辑任务流。同时,当集成DevOps实践时,可以确保开发管道和安全测试之间的无缝协作。此外,在考虑云和混合环境时,需要根据这些环境带来的特殊困难进行相应的调整。
定期测试和持续监控是快速识别和消除新威胁的必要手段。为了确保安全团队能够有效地理解和使用系统,全面的自动化工作流程和培训文档是必不可少的。
假设有一位安全专家被指派去测试一个Web应用程序是否存在漏洞,他的目标是找出该Web应用程序的基础架构中可能存在的缺陷。在这个例子中,我们将关注于Web应用程序枚举,这是渗透测试过程的第一步。
接下来,安全专家会使用一个叫做Nmap的安全工具来扫描网络,找出哪些端口是开放的以及确定网站所使用的网络服务器服务。这些信息对于了解攻击面和潜在的入口点非常重要。Nmap会使用Sublist3r的输出结果来指导目标扫描,重点放在已发现的子域名上。完成网络扫描后,关注点就会转向扫描Web应用程序本身。为此,安全专家会使用一些工具,比如Burp Suite,来寻找一些常见的漏洞,比如SQL注入和跨站脚本。Burp Suite的配置会根据之前的网络扫描结果进行调整,以确保评估具有针对性和有效性。
该流程包括使用Dirb进行目录和文件枚举,可以帮助进一步细化分析。Dirb可以帮助我们发现Web服务器上隐藏的资源。然后,我们可以使用Nikto进行更全面的漏洞分析。Nikto扫描Web服务器上的已知漏洞、配置错误和过时的软件版本,并为我们提供一份关于潜在安全风险的全面报告。
这些工具之间的整合工作流程展示了它们之间的联系。一个工具的输出会影响另一个工具的配置,简化的流程能让 Web 应用程序的枚举变得更容易。要解释结果、修改配置,并发现可能的漏洞挖掘点,安全专业人员的经验对于工作流程的成功至关重要。工作流程必须不断改进,以跟上不断变化的网络威胁,并随着时间的推移保持 Web 应用程序的安全状态。创建和管理这些工作流程需要不断关注细节,并了解快速变化的网络安全环境。
然而,我们必须认识到这个过程是相当复杂和具有挑战性的。企业在努力保持领先地位,以应对不断变化的网络威胁形势时,创建和管理强大的自动化工作流程也变得越来越复杂。渗透测试自动化面临着许多挑战,包括动态的IT环境、多样化的测试需求以及不断变化的威胁形势。
为了应对这种复杂性,需要持续地投入时间和精力,提升技能,并深入了解企业的独特安全需求。创建和维护一个运行良好且灵活的自动化渗透测试工作流程是一项艰巨的任务,需要持续关注细节和积累经验,以确保网络安全始终处于领先地位。
在不断变化的网络安全领域,使用易于集成的工具开发工作流程至关重要。人们可以提出多种解决方案,一种是开发完全自动化的代码,以适用于所有可能性;另一种则是使用现成的解决方案。我们将解释这两种解决方案。
我们只讨论编写代码的步骤,因为我们只知道过程,而不是全部事情。这主要取决于您想自动化什么。在网络安全领域,您可以自动化很多事情,特别是在渗透测试方面。单独一个人从头开始建立一个完整的系统是不可行的。如果您有这个想法,最好去找一群程序员和其他人,一起创办一家公司。最好的做法是构建多个脚本,它们遵循相同的原理,但执行不同的任务。
在这种自动化编程中,我们需要考虑以下情况:
因此,基于以上所述,假设我们需要获取子域名地址,然后提取IP地址,最后利用Nmap进行基于脚本的漏洞分析。以下是整个流程的大致步骤:
示例代码工作流程
在上述示例中,我们展示了如何将三个工具相互关联。虽然中间使用DnsDumpster可能有些多余,但它只是作为参考。这是我们整合它们的方式。尽管我们可以通过添加更多工具和进行复杂的优化来使整个过程更加复杂,但我们选择保持简单。
想象一下,从头开始创建一个注重自动化和效率的安全流程所带来的潜力。在开始这样的旅程之前,您需要一些基本工具。Python/ target=_blank class=infotextkey>Python是一个强大的脚本和自动化工具,有许多适合工作流程开发的包。Sublist3r用于枚举每个子域非常有用;Nmap进行网络扫描;Burp Suite用于改进Web应用程序扫描;Dirb用于枚举目录和文件;Nikto用于进行深入的漏洞分析。这些工具的结合为渗透测试提供了一个强大而高效的工作流程。
然而,风险并不仅仅限于工具。探索Github上用于持续集成和持续部署(CI/CD)的Python包,以整合协作元素。通过使用GitHub Actions、GitLab CI或Jenkins等工具来设置持续集成和测试管道,可以确保您的工作流程有效,并定期进行更新和测试。将您的安全自动化解决方案与CI/CD流程集成,为其增添了额外的复杂性,确保在面对不断变化的网络安全威胁时具有灵活性。
对于那些不擅长编写系统代码或者懒得这么做的人,他们可能需要一个简单的解决方案。这时可以提供一个工具列表,这些工具可以帮助他们自动执行任务。下面列出的工具侧重于流程的某些方面,而不是整个流程。现在,让我们来看看工具清单。在源文件中引用了开源工具的链接:
以上是我们发现的四个免费工具,值得与大家分享。我们将每个工具的链接都放在下面,如果您对它们感兴趣,可以点击链接查看更多信息。如果您还想尝试更多我们提供的自动化工具,可以在GitHub仓库中搜索。
刘涛,51CTO社区编辑,某大型央企系统上线检测管控负责人。
原文标题:Penetration Testing And Vulnerability Scanning,作者:Morpheuslord