面向红队的云端渗透测试(三)
原文:
annas-archive.org/md5/640c86a8583d91f9f3f8aa69d0ac774a译者:飞龙
第十三章:最佳实践与总结
所以,我们已经学习了最流行的云平台——AWS、Azure 和 GCP。我们还在自己的 AWS、Azure 和 GCP 部署中进行了一些漏洞扫描和渗透测试练习。
现在,让我们回顾一下所学的内容。我们还将为你提供关于专业认证、渗透测试合同和渗透测试报告的有用信息。在本章中,我们将通过基于本书前面内容的问答回顾知识点,讨论你在云渗透测试工具包中应具备的工具,以及你可以追求的有用的云计算和渗透测试认证。
我们还将讨论渗透测试合同中应包含的内容以及如何撰写有效的渗透测试报告。
我们将涵盖以下主要内容:
-
内容回顾
-
你的云渗透测试工具包
-
云计算与渗透测试认证
-
渗透测试合同
-
渗透测试报告
让我们直接开始吧!
内容回顾
你从阅读本书中学到了很多!我们不仅讨论了一个云平台,而是涵盖了三大最常用的云平台——AWS、Azure 和 GCP。此外,你还了解了渗透测试和红队工作的基本原则和概念,以及如何与防守性网络安全专家和企业领导层分享你发现的安全漏洞。
这是一大堆信息需要吸收。在你作为云渗透测试员的头几年,你可能会时不时地重新阅读本书的某些部分。然而,为了准备你的职业生涯,重要的是要看看你是否能记住你所学的内容。人脑更容易记住信息,当它以多种方式思考时。到目前为止,你已经吸收了信息,并通过尝试本书中的多个渗透测试教程将学习付诸实践。现在,是时候回顾你所学的内容,以便追踪你的进展并更容易记住。
幸运的是,这不是一场正式的考试。这只是为了你自己受益的练习。如果你答错了一些问题,不要对自己太苛刻。你会发现自己需要关注的领域,以便改进。学习过程总是涉及从错误中学习!
好的——让我们开始吧!
问题
下面是一些问题,帮助你了解自己的进展:
-
什么是多云网络?
-
什么是混合云网络?
-
当谈到云计算中的安全责任时,云服务提供商负责什么,而你的组织(云服务提供商的客户)负责什么?
-
在什么情况下,亚马逊允许你在 AWS 中模拟 DDoS 攻击?
-
SaaS、PaaS 和 IaaS 有什么区别?
-
外部网络攻击和内部网络攻击有什么区别?
-
什么是 MITRE ATT&CK 数据库?
-
CIA 三元组代表什么,它意味着什么?
-
什么是零信任网络?
-
为什么云渗透测试人员需要寻找暴露的服务?
-
什么是漏洞评估?
-
什么是身份与访问管理(IAM)?
-
什么是 RBAC?
-
什么是 CVE 数据库?
-
什么是 CVSS?
-
什么是 EPSS?
-
红队与蓝队有什么区别?
-
什么是紫队演练?
-
什么是渗透测试报告?
-
什么是 AWS 安全中心(AWS Security Hub)?
-
什么是 Amazon Inspector?
-
Prowler 用于什么?
-
Pacu 用于什么?
-
什么是虚拟机(VM)?
-
什么是容器化?
-
什么是 Docker?
-
什么是 Kubernetes?
-
什么是控制平面?
-
什么是容器镜像?
-
本书中提到的可以在所有三个云计算平台(AWS、Azure 和 GCP)上使用的渗透测试工具有哪些?(这不包括只能在某一云平台上使用的工具,如 Microsoft Azure 的 MFASweep 或 AWS 的 Pacu。)
答案
以下是前面问题的答案:
-
多云网络是指使用多个云平台的云网络。一个多云网络可能包含 AWS 和 GCP、Azure 和 AWS、AWS、Azure 和 GCP,也可能包括本书未涉及的云平台,如 DigitalOcean、Salesforce、IBM Cloud、Oracle Cloud、Rackspace Cloud 等。任何由两个或更多云提供商组成的云网络都属于多云网络。组织通常会部署多云网络,因为他们可能需要某些云平台独有的功能或应用。例如,一家公司可能会使用 Microsoft Azure 来支持其本地 Windows Server 机器的 Active Directory,而使用 GCP 来支持 Google Maps 和其他 Google 服务 API。AWS、Azure 和 GCP 都能够集成到一个大的企业云网络中。
-
混合云网络将云网络与组织内部的网络相结合。在过去 10-15 年里,全球各行各业的公司都出现了将本地网络功能迁移到云的巨大趋势。但有时,组织发现其网络中的某些部分出于多种原因必须继续保留在本地服务器上。AWS、Azure 和 GCP 都能够与公司的本地网络集成。混合云网络可以使用单一的云平台,也可以是多云网络。对多云混合网络进行渗透测试和红队演练尤其对渗透测试人员来说具有挑战性!
-
记住云服务提供商的安全责任和贵组织的安全责任的一个简单方法是记住——云服务提供商负责“云的”安全,而贵组织负责“云中的”安全。
例如,亚马逊对其全球各地的数据中心有着非常强大的物理安全性。很少有人被允许进入其中之一。即使你的公司每月在 AWS 服务上花费 100,000 美元,它也不会让你进入其数据中心。云服务提供商对其数据中心的物理安全性负全责。它还负责确保其网络基础设施和所有物理硬件的安全。如果硬盘驱动器发生物理故障,替换工作由云服务提供商负责。云服务提供商还负责其开发和维护的软件代码。
你的组织对你投入云基础设施的所有软件代码的安全性负责。你的组织还负责通过云基础设施传输的网络流量。SaaS、PaaS 和 IaaS 是关于你的组织开发(或从第三方开发者处获得)的代码量与云服务提供商开发的代码量的分类。因此,从这个基础出发,很容易理解共享安全责任模型如何在不同类型的云服务之间有所不同。
-
大多数情况下,你被禁止在任何云平台上模拟 DDoS 攻击,因为它们可能会对云服务提供商的其他客户造成干扰。然而,AWS 会在某些情况下允许 DDoS 模拟测试。根据 AWS DDoS 模拟测试政策(
aws.amazon.com/security/ddos-simulation-testing/),在测试中,如果数据包体积不超过每秒 20 GB,或者在测试 CloudFront 时数据包体积不超过每秒 500 万个数据包,或者在测试其他类型的 AWS 资源时不超过每秒 50,000 个数据包,则允许进行某些 DDoS 测试。DDoS 模拟不得来自其他 AWS 资源,并且 AWS 可以随时要求你的组织终止模拟测试。如果你的组织申请了例外请求并且 AWS 明确批准,AWS 可能会对这些规则做出例外。如果这些标准对于你的红队或渗透测试人员来说过于复杂,或者你稍微担心你的 DDoS 模拟可能会被云服务提供商禁止,最好一开始就不要尝试。冒着违反云服务提供商政策的风险是毫无意义的。 -
SaaS意味着 软件即服务,PaaS意味着 平台即服务,IaaS意味着 基础设施即服务。SaaS 表示云服务提供商拥有大部分软件代码和大部分安全责任——例如,Google 生态系统中的 Gmail。PaaS 表示提供商为您组织的部分自有代码(或您从第三方开发者那里获得的代码)开发了一个软件基础。亚马逊的 弹性 Kubernetes 服务(EKS)是 PaaS 的一个例子。亚马逊负责其自有的 Amazon EKS 代码,但您自己的容器镜像、第三方容器镜像、您的容器,以及您的组织如何在 Amazon EKS 中使用 Kubernetes 集群则是您组织的安全责任。IaaS 是指云服务提供商基本上只提供云基础设施。IaaS 的一个例子是 Azure 虚拟机(VM),其中微软仅提供物理服务器和用于您组织虚拟机的虚拟化程序。如果黑客利用您的虚拟机操作系统中的漏洞进行攻击,那么这将是您组织的责任,而非微软的责任。 -
外部网络攻击源自公司网络之外,而内部网络攻击则源自公司网络内部。外部网络攻击包括大多数人所认为的经典网络攻击类型。坏人通过互联网侵入公司服务器并部署勒索软件。类似的事情。有时被忽视的是内部网络攻击。它们来自那些已经在公司网络内部拥有特权访问的人和实体。通常是员工、承包商、管理层或可信赖的供应链实体。例如,一名员工可能怀疑自己即将被解雇,于是通过将公司敏感数据泄露到公共网站上进行报复。内部网络攻击可能更容易实施且更具破坏性,因为攻击者不需要黑入公司网络;他们已经在内部,因为他们应该在那儿。然而,他们可能会进行特权升级攻击和横向移动,访问他们本不应访问的内部网络部分。
-
MITRE ATT&CK 数据库 (
attack.mitre.org/) 是一个有用且免费提供的在线资源,可以帮助学习攻击者常用的网络攻击技术。大多数网络攻击在攻击链的过程中涉及不止一种攻击技术。该数据库由 MITRE 公司维护,并会不时更新,以包括新发现的网络攻击技术。 -
CIA三元组代表机密性、完整性和可用性。这些是数据的属性,网络攻击会损害这些属性。所有网络攻击都会影响这三个组成部分中的一个或多个。机密性是确保数据仅对被授权访问的实体开放。例如,如果攻击者能够读取我的电子邮件收件箱,那就是对我机密性的攻击。完整性是确保只有授权实体才能更改数据。因此,如果攻击者使用我的电子邮件冒充我发送邮件,或者更改我收件箱中的邮件内容或通过 IMAP 协议接收的邮件内容,那就是对我电子邮件完整性的攻击。可用性是确保数据和数据服务在需要时可用且可访问。如果攻击者对我的电子邮件服务器发起 DDoS 攻击,导致我无法接收或发送新邮件,那就是对我电子邮件可用性的攻击。有些攻击会影响 CIA 三元组的多个部分。例如,如今的企业勒索软件不仅会恶意加密数据,使其远离合法所有者;如果不支付赎金,还会威胁将敏感数据泄露给公众。 -
在零信任网络中,无论机器、设备还是用户的来源如何,都不会自动被信任。零信任网络与传统的外围安全模型形成对比。在外围安全模型中,内部网络与外部网络(例如互联网)之间有一个安全边界。来自外部网络的实体需要在安全边界进行身份验证和授权,才能被允许进入内部网络,但所有在内部网络中传输的数据和所有来自内部网络的实体都被自动信任。这个安全模型在 1990 年代,云计算尚未普及,组织完全使用本地网络,且网络威胁形势不那么复杂时可能有效。但随着云计算和其他 21 世纪计算技术的出现,只有零信任模型才对良好的网络安全有效,无论是在云内还是云外。考虑到云网络的运行方式,零信任模型无论如何都是唯一适用的。而且,它显然在检测和防止内部网络攻击方面效果更好。在零信任网络中,您的设备会在每个可能的身份验证点进行认证。
-
暴露服务是指在您组织的云网络中,攻击者可以通过互联网利用的互联网服务和端口,进行网络攻击。确保您工作所在的组织没有暴露任何服务是至关重要的。企业运营的云网络是不断变化的,今天可能没有暴露服务,但下周可能有 20 个暴露服务。我在本书中演示的一些渗透测试工具,如 Pacu,具有可以查找暴露服务的模块,您可以在渗透测试报告中提及这些服务。云服务提供商为其客户提供的一些安全工具,如 Amazon Inspector,也可以查找暴露服务。
-
漏洞评估是使用检查清单来识别与特定计算机系统类型相关的常见安全漏洞、配置错误和其他漏洞。本书中大多数第三方渗透测试工具都可以用于进行漏洞评估。构成漏洞评估基础的一些检查清单包括 CIS 安全基准,它们适用于特定的服务和应用程序,以及安全标准,如支付卡行业数据安全标准(PCI DSS)规定,适用于销售点(PoS)计算机支付系统。
-
IAM代表身份与访问管理。这是网络安全领域的一个专门化方向,涉及到维护用户账户和机器身份(如用于加密的 TLS 证书)、身份验证方法(如密码和生物识别)、访问控制系统(如 RBAC)、用户账户权限,并确保用户和机器只能访问他们被授权访问的数据和系统。它是一个比云网络更早出现的网络安全专长领域。然而,AWS、Azure 和 GCP 都有各自的 IAM 系统。确保 IAM 的安全对于网络、应用和数据的整体安全至关重要! -
RBAC代表基于角色的访问控制。访问控制方法有很多种,例如强制访问控制(MAC)、基于规则的访问控制和自主访问控制(DAC)。但 RBAC 是云网络中最常用的访问控制方法。它也是 Kubernetes 原生的访问控制方法。在 RBAC 中,用户根据其在组织中的角色被分配到用户组,然后将权限分配给这些用户组。例如,只有管理员组中的用户才可能创建新的用户账户,而只有工资组的用户才有权访问工资服务器。用户只有在工作需要访问时,才应被放入特定的用户组;这就是最小权限(PoLP)原则。 -
CVE 数据库(
www.cve.org/)是另一个由 MITRE 公司维护的公开可访问的数据库。CVE代表常见漏洞和暴露。它旨在尽可能全面地记录已知的安全漏洞。一个组织发现其产品中的漏洞并将其公开记录到 CVE 数据库中,可能会有几个月的延迟,以便该组织在漏洞成为公开知识并可能被潜在攻击者利用之前有时间进行修补。CVE 记录的编号格式为—CVE-YYYY-NNNN。例如,CVE-2023-1234(www.cve.org/CVERecord?id=CVE-2023-1234)。年份(YYYY)表示该编号被保留的年份;这可能是漏洞被发现或在数据库中发布的年份,也可能不是。NNNN 只是一个随机的四位数字,表示该年份独有的编号。从我的理解来看,如果漏洞进入数据库的速度增加,可能需要增加一个数字。已发布的漏洞通常有可用的修补程序,但并非总是如此!这个想法令人恐惧。出于工作需要和实际考虑,我通常将已知漏洞定义为那些有 CVE 记录的漏洞。本书中的一些渗透测试和漏洞扫描工具将通过 CVE 记录来标识它们发现的漏洞。 -
CVSS是常见漏洞评分系统(由 FIRST 维护),用于根据漏洞的严重性对 CVE 数据库中的漏洞进行分类。CVSS 得分的定性评级使用以下分类标准:0.0 表示漏洞完全没有问题(我从未见过 0.0 的评分),0.1 到 3.9 是低风险,4.0 到 6.9 是中等风险,7.0 到 8.9 是高风险,9.0 到 10.0 是严重风险。分数越高,漏洞被利用对计算机系统的威胁就越大。 -
利用预测评分系统(EPSS)是 FIRST 的系统,用于描述漏洞被网络攻击者利用的可能性或概率。EPSS 得分是根据漏洞被利用的百分比可能性给出的。一个漏洞可能有 9.5 的 CVSS 评分,但如果其 EPSS 评分为 5%,它在你的渗透测试报告中的优先级可能低于一个 CVSS 评分为 5.7 但 EPSS 评分为 95%的漏洞。
-
红队根据新兴的网络威胁模拟公司网络中的网络攻击。渗透测试可能仅进行一次,持续时间可能为一到两周。而红队行动则是持续不断的红队攻击模拟,模拟不断变化的网络威胁,以发现漏洞。红队是一种进攻性安全专业。蓝队是防守性安全的对应角色。蓝队由防御性安全专家组成,他们进行蓝队行动,模拟保护其网络免受网络攻击的策略。
-
当你将红队和蓝队结合在一起,就形成了紫队。紫队行动是红队和蓝队共同进行的演练活动。红队模拟网络攻击,而蓝队模拟网络防御。紫队活动可以成为进攻性和防守性安全专家共同合作的绝佳方式,让他们了解组织的安全状况,并共同改进它。
-
渗透测试报告是渗透测试的成果。它是你在渗透测试过程中发现的漏洞的详细指南,说明漏洞如何被利用来危害组织的网络,以及如何对漏洞进行分级和缓解。如果你不能有效地将你的安全发现传达给防御安全团队和公司高管,使他们知道如何利用这些信息并相应地加强安全防护,那么你作为渗透测试人员的辛勤工作就毫无意义了。
-
AWS Security Hub 是所有 Amazon 原生 AWS 安全服务的汇聚地。来自 AWS IAM、Amazon Macie、AWS Health、AWS Systems Manager、Amazon Inspector、AWS Firewall Manager、Amazon GuardDuty 和 AWS Config 的数据将被聚合。你可以查看关于你公司在 AWS 中的安全状况的实时信息,因此它对渗透测试人员和安全管理员都很有帮助。
-
Amazon Inspector 是一个内建于 AWS 的第一方工具,不仅提供动态的安全数据以显示在 AWS Security Hub 中,还可以在安全管理员或渗透测试人员决定进行扫描时,使用该工具进行漏洞扫描。它具备本书中一些第三方渗透测试工具的功能,包括根据 CVE 记录和 CVSS 分数对漏洞进行分类。
-
Prowler 是一个第三方安全测试工具,供渗透测试人员运行各种类型的漏洞扫描,包含预编程的检查和服务。它可以在 AWS、Azure 和 GCP 中使用。与本书中的所有第三方工具一样,Prowler 可以从命令行运行。Prowler 可能是本书中最重要的第三方工具。
-
Pacu 是一个第三方工具,用于发现 AWS 中的安全漏洞。它有大量模块,可以模拟各种类型的网络攻击;它不仅仅是一个漏洞扫描器。
-
虚拟机(VM)是一个虚拟化的计算机,就主机操作系统而言,它只是另一个应用程序。它虚拟化了硬件组件,如内存、磁盘存储和网络连接。如果我的 Windows OEM 笔记本电脑是我的计算机,那么虚拟机就是我的“计算机的宠物计算机”。虚拟机可以通过主机操作系统中的应用程序运行,例如 VMware 客户端或 Oracle VirtualBox。或者,带有多个虚拟机的虚拟机监控器(hypervisor)可以直接在计算机硬件上运行;不需要主机操作系统。在主机操作系统中,VMware 客户端或 Oracle VirtualBox 也充当虚拟机监控器。我可以在我的 Windows OEM 笔记本上运行多个虚拟机,如果我愿意,这些虚拟机可以使用 Linux 或 Mac 操作系统;虚拟机的操作系统不必与主机操作系统匹配。虚拟机也常用于云中。许多云服务提供商的 IaaS 服务基本上就是在提供商的基础设施上运行自己的虚拟机所需的一切,仅此而已。
-
容器化是另一种使用虚拟化的方法。虚拟机运行的是一个操作系统及其所有组件,而容器仅运行执行代码所需的必要组件。容器化集群可以在任何给定时刻包含数十个或更多的容器,响应云应用的需求。单个容器的生命周期可能只有几天。云网络提供了组织所需的基础设施,使得容器化能够真正发挥出其可扩展性的优势。
-
Docker 是其中一个更受欢迎的容器化编排平台。它是如何工作的呢?Docker 主机直接运行在你的计算机上,或者运行在你管理的云服务上的计算机中。在 Docker 主机中,Docker 守护进程存储 Docker 镜像,并基于这些镜像创建和管理容器。Docker 主机连接到一个注册表,注册表通常托管在外部网络上,通常是互联网。Docker 客户端是你可以向 Docker 守护进程发送命令的地方。
-
Kubernetes 是另一个流行的容器化平台,它建立在 Docker 创建的基础上。Kubernetes 集群包含控制平面、节点和 Pod。节点由控制平面支持,节点支持 Pod,而 Pod 生成并运行容器。
-
控制平面支持整个容器化系统,并作为基于 Kubernetes 的网络和云平台之间的桥梁。控制平面包含一些组件,包括
etcd、kube-scheduler、kube-apiserver、kube-controller-manager、cloud和controller-manager。 -
容器镜像在概念上类似于操作系统的 ISO 文件(磁盘镜像),这些 ISO 文件可以直接安装到计算机上或用于创建虚拟机,只不过容器镜像专门用于创建容器。容器镜像不包含完整的操作系统,只包含根据容器的使用方式所需的必要组件。有时,组织会创建自己的自定义容器镜像。容器镜像可以由第三方为特定的使用场景提供,或者你也可以使用 AWS、Azure 和 GCP 提供的容器镜像。
-
你能记得可以在所有三个云平台上使用多少个渗透测试工具吗?以下是本书中提到的所有工具:Prowler、ScoutSuite、Vishnunair 的
automated-pentest(仅在 Docker 中使用)、kube-bench(仅在 Kubernetes 中使用)、kube-hunter(仅在 Kubernetes 中使用)、kdigger(仅在 Kubernetes 中使用)和 Trivy(在 Docker 和 Kubernetes 中使用)。
现在,让我们来看一下在进行本书中的练习和作为云渗透测试人员工作时,你需要用到的工具。
你的云渗透测试工具包
以下是你在云渗透测试工具包中应具备的工具。你可以使用这些工具跟随本书中的教程进行操作,也可以用来进行实际的云渗透测试:
-
过去十年生产的大多数 Windows 和 Mac 笔记本及台式机都非常适合你的云渗透测试工具包。你不需要拥有最先进的硬件规格,因为云网络的计算能力会完成大部分工作。如果你需要更具体的信息,可以寻找至少配备四核 64 位 CPU(Intel 或 AMD x86-64 架构或 Apple M1)的 Windows 或 Mac PC,并且至少有 4 GB 的 RAM。你的电脑硬件也应支持以太网和 Wi-Fi 网络。Windows 8、10 或 11,macOS 11 Big Sur 或更高版本,或任何当前支持的 Debian、Ubuntu 或 Fedora Linux 操作系统都非常适合。最好至少有 100 GB 的内存存储空间,但根据这些硬件规格,你的设备极不可能低于这个要求。
-
必须使用当前支持的网页浏览器。这将是你用来打开 AWS、Azure 和 GCP 的网页控制台的工具。它将作为你与所使用的云网络的接口。网页浏览器的版本更新非常频繁,但任何当前支持的 Mozilla Firefox、Google Chrome、Apple Safari、Microsoft Edge 或 Opera 版本都可以。如果你的浏览器版本过旧,浏览器可能会提醒你更新。
-
目前支持的 iPhone 或 Android 智能手机是一个额外的加分项。你可以用它运行 Google Authenticator 或 Microsoft Authenticator,为你的 AWS、Azure 和 GCP 账户提供额外的身份验证因素。这些平台的安全基准强烈建议在所有账户上实施多因素身份验证(MFA)。这是 Android 版的 Google Authenticator:
play.google.com/store/apps/details?id=com.google.android.apps.authenticator2。这是 iPhone 版的 Google Authenticator:apps.apple.com/us/app/google-authenticator/id388497605。这是 Android 版的 Microsoft Authenticator:play.google.com/store/apps/details?id=com.azure.authenticator。这是 iPhone 版的 Microsoft Authenticator:apps.apple.com/us/app/microsoft-authenticator/id983156458。 -
GitHub 不需要安装,但你会发现它是一个非常有用的服务,可以在你的网页浏览器中打开,用来安装第三方渗透测试工具和脚本。也许你应该把github.com保留在浏览器的一个独立标签页中。
-
console.aws.amazon.com上的 AWS 网页控制台。设置好自己的 AWS 部署后,或者当你有权限访问组织的 AWS 网络时,你将登录到这个控制台。
-
azure.microsoft.com上的 Azure 网页控制台。设置好自己的 Azure 部署后,或者当你有权限访问组织的 Azure 网络时,你将登录到这个控制台。
-
console.cloud.google.com上的 GCP 网页控制台。设置好自己的 GCP 部署后,或者当你有权限访问组织的 GCP 网络时,你将登录到这个控制台。
-
Prowler (
github.com/prowler-cloud/prowler) 是本书中最有用的渗透测试工具之一。你不会在自己的电脑上安装它;你将会在云服务提供商的计算机上安装它。(所有第三方渗透测试工具也同样适用此规则。) -
Pacu (
github.com/RhinoSecurityLabs/pacu) 是一个专门为 AWS 设计的攻击框架。 -
Cred Scanner (
github.com/disruptops/cred_scanner) 是一个针对 AWS 的渗透测试工具,用于查找文件中暴露的访问点和密钥。 -
CloudFrunt (
github.com/MindPointGroup/cloudfrunt) 是一个用于识别 AWS 中配置错误的 CloudFront 域名的工具。 -
MFASweep (
github.com/dafthack/MFASweep) 是一个可以在 Microsoft Azure 和 365 中使用的工具,用于检查是否启用了 MFA。启用 MFA 对用户账户非常重要,因为提供更多的认证因素可以使用户账户更加安全。 -
ScoutSuite (
github.com/nccgroup/ScoutSuite) 是一款适用于 AWS、Azure 和 GCP 的安全审计工具。 -
GCPBucketBrute (
github.com/RhinoSecurityLabs/GCPBucketBrute) 是一个脚本,用于枚举 Google 存储桶,检查它们是否可以访问、如何访问,并判断是否能够进行权限提升。Google 存储桶仅适用于 GCP。 -
GCP Scanner (
github.com/google/gcp_scanner) 不是一个官方的 Google 项目,但由 Google 的一个团队进行维护。它是一个 GCP 资源扫描器,能够帮助确定某些凭证在 GCP 上具有什么级别的访问权限。 -
Docker Desktop (
www.docker.com/products/docker-desktop/) 不是必需的,但如果你正在进行 Docker 集群的渗透测试,安装在本地计算机上可能会非常有用。它可以在 Windows、Mac 或 Linux 上本地安装。 -
Vishnunair 的自动化渗透测试工具 (
hub.docker.com/r/vishnunair/pentest) 是一个基于 Parrot OS 的 Docker 容器镜像,可以用于对 Docker 部署进行渗透测试。你实际上是将其安装在 Docker 中,而不是直接安装在你的云平台上! -
kube-bench(github.com/aquasecurity/kube-bench) 在 Kubernetes 中运行漏洞评估,确保它们符合 CIS Kubernetes 基准,这是配置 Kubernetes 安全性的标准。它直接在你的 Kubernetes 集群中运行,也可以作为计划任务在 Kubernetes 中运行。 -
kube-hunter(aquasecurity.github.io/kube-hunter/) 在 Kubernetes 集群中寻找安全漏洞。它可以从 Kubernetes 集群中的 Pod 或从其他机器上运行。我使用了 Azure 中的虚拟机来扫描我在 Azure 中的 Kubernetes 集群。 -
kdigger(github.com/quarkslab/kdigger) 是一个专注于 Kubernetes 的容器评估和上下文发现工具,用于渗透测试。建议在 Pods 中运行,而不是在主机机器上运行。 -
Trivy (
github.com/aquasecurity/trivy) 是一个全面且多功能的安全扫描器,能够同时在 Docker 和 Kubernetes 中工作。 -
你工具包中的这一部分绝对至关重要,但很容易被忽视——可靠的互联网连接!你在云网络上的所有操作都需要通过互联网进行。希望你在家里或工作场所有一个可靠的互联网连接。如果没有,网吧或公共图书馆也可以。但如果你在公共 Wi-Fi 上工作,一定要特别小心,使用 VPN。若在家中使用 VPN 也可能是个不错的主意。
接下来,我们将看看一些与云和渗透测试相关的认证,你可以选择攻读它们,帮助你获得云渗透测试工作。
云和渗透测试认证
有很多认证可能会让你作为云渗透测试人员更具竞争力。有些认证来自供应商,有些是供应商中立的。有些与云网络相关,有些是通用的渗透测试认证。
云
亚马逊提供了十多种 AWS 云认证 (aws.amazon.com/certification/exams/)。以下是最适合云渗透测试人员的几种认证:
-
入门级的基础认证是云从业者 (
aws.amazon.com/certification/certified-cloud-practitioner/)。它涵盖了云计算的基础知识,无需任何先前经验。 -
SysOps 管理员 (
aws.amazon.com/certification/certified-sysops-admin-associate/) 是我推荐给云渗透测试人员的助理级认证。在备考过程中,你将学习到以下内容:-
如何在 AWS 上部署、管理和操作工作负载
-
如何实施安全控制并满足合规要求
-
AWS 管理控制台和 AWS CLI
-
AWS Well-Architected 框架以及 AWS 网络和安全服务
-
-
解决方案架构师 (
aws.amazon.com/certification/certified-solutions-architect-professional/) 是我推荐给云渗透测试人员的专业级认证。你将学习以下内容:-
如何在 AWS 中优化安全性
-
如何自动化手动流程
-
如何为复杂问题提供复杂解决方案
我推荐的 AWS 专业级认证有两种。这是 AWS 认证的最高级别:
-
高级网络认证 (
aws.amazon.com/certification/certified-advanced-networking-specialty/) 如果你将来能够开发自己的云渗透测试工具,这个认证将非常有用!它涵盖了高级网络架构技能。 -
安全 (
aws.amazon.com/certification/certified-security-specialty/) 是我推荐的另一个 AWS 专业级认证。该认证验证你在 AWS 中创建和实施安全解决方案的专业知识。
-
Microsoft 有自己的 Azure 安全认证 (learn.microsoft.com/en-us/certifications/browse/?roles=security-engineer&products=azure)。这些认证都不是入门级的,它们属于中级和高级认证。
-
Microsoft Azure 安全技术 (
learn.microsoft.com/en-us/certifications/exams/az-500/) 是中级认证。该认证涵盖通过 Azure 平台保护身份与访问、数据、应用程序和网络。它还展示了如何保护多云和混合云网络。 -
Microsoft 安全运营分析师 (
learn.microsoft.com/en-us/certifications/exams/sc-200/) 是另一个中级认证。它主要关注安全事件分流、事件响应(IR)、威胁狩猎、威胁情报(TI)分析以及漏洞管理。所有这些认证都是偏向防御性的,包括这一项,但了解防御方面的知识可以帮助你提高网络进攻能力。 -
Azure 安全工程师助理 (
learn.microsoft.com/en-us/certifications/azure-security-engineer/) 是另一个中级认证。它涵盖威胁建模、威胁保护、漏洞管理和管理组织的安全态势。 -
Microsoft 身份与访问管理员助理 (
learn.microsoft.com/en-us/certifications/identity-and-access-administrator/) 也是中级认证。它涵盖了在 Azure Active Directory 中设计、实施和操作 IAM。 -
Microsoft 身份与访问管理员 (
learn.microsoft.com/en-us/certifications/identity-and-access-administrator/) 是上一项认证的下一级,属于高级认证。
Altered Security (www.alteredsecurity.com/) 是一家独立于 Microsoft 的第三方机构,提供一些与 Azure 相关的认证,可能对你有所帮助:
-
Altered Security 提供免费的 Azure 渗透测试入门课程,地址是
azure.enterprisesecurity.io/。 -
认证 Azure Web 应用安全专家(CAWASP) (
www.alteredsecurity.com/azureappsec) 是一个基于实践技能的认证,您将在其培训项目提供的实验室中培养这些技能。包括的部分领域有企业应用、应用服务、函数、OAuth 权限、API 安全、存储账户、密钥库和数据库。(这不是一个免费的项目。) -
认证 Azure 红队专家(CARTP) (
www.alteredsecurity.com/azureadlab) 证明了你在 Azure 中进行红队演练的能力。该培训项目充满了关于红队技能和技术的动手实验。24 小时的考试也在 Altered Security 的实验室中进行。(此认证也不是免费的。)
Google,拥有并开发 GCP 的公司,提供了一些云认证 (cloud.google.com/learn/certification#why-get-google-cloud-certified),供你参考,具体如下:
-
云数字化领导者 (
cloud.google.com/learn/certification/cloud-digital-leader) 是 Google 的入门级云认证,属于 Google Cloud 认证链中的基础级别。它涵盖的四个领域如下:-
使用 Google Cloud 进行数字化转型
-
在 Google Cloud 上进行数据创新
-
基础设施和应用现代化
-
Google Cloud 安全与运维
-
-
云工程师 (
cloud.google.com/learn/certification/cloud-engineer) 是下一个级别的认证,属于 Google Cloud 认证链的助理级别。该考试测试你完成以下任务的能力:-
配置云中的访问权限和安全性
-
设置、规划、配置、部署和实施云解决方案
-
确保云解决方案的成功运行
到目前为止,Google Cloud 认证链中的专业级别有九个认证,我将重点介绍与云渗透测试者更相关的认证:
-
云安全工程师 (
cloud.google.com/learn/certification/cloud-engineer) 涵盖以下领域:-
配置云解决方案中的访问权限
-
配置网络安全
-
数据保护
-
管理云运维
-
确保合规性
-
这些内容大多集中在防御安全方面,但更好地理解网络防御也能使你在网络进攻方面更有优势!
-
云网络工程师 (
cloud.google.com/learn/certification/cloud-network-engineer) 更加深入计算机网络技术,涵盖以下领域:-
网络服务配置
-
管理、监控和优化网络运营
-
实施混合互连
-
实施虚拟私有云(VPCs)
-
设计和规划 Google Cloud 网络
-
-
我最强烈推荐的一个供应商中立的云认证是云安全联盟的云安全知识证书(CCSK)(
cloudsecurityalliance.org/education/ccsk/). 它涵盖以下领域:-
IAM 最佳实践
-
云 IR
-
安全即服务(SECaaS)
-
应用安全
-
数据加密
-
-
我推荐的最后一个云认证是 ISC2 的认证云安全专家(CSSP)(www.isc2.org/Certifications/CCSP).
该认证表明你具备使用最佳实践、政策和程序在云中安全保护数据和应用的技术能力。
渗透测试
现在,这里有一些我推荐的渗透测试认证:
EC-Council 的认证的道德黑客(CEH) (www.eccouncil.org/train-certify/certified-ethical-hacker-ceh-v12/) 是一种你会经常听到的认证。CEH 的学习计划包括超过 200 个动手渗透测试实验室、超过 500 种攻击技术和许多黑客工具。
另一个你经常听到的渗透测试认证是 OSCP,(www.offsec.com/courses/pen-200/), OffSec(前称 Offensive Security)认证的专业人员。确保在开始追求 OSCP 之前,你对 TCP/IP 网络、Bash 和 Python 脚本编写以及 Windows 和 Linux 管理有良好的理解。
最后,CompTIA 的 PenTest+ (www.comptia.org/certifications/pentest) 认证不容忽视。它涵盖以下领域:
-
规划和界定渗透测试项目
-
信息收集和漏洞扫描
-
攻击和利用
-
报告和沟通
-
工具和代码分析
现在,让我们看看你应该从渗透测试合同中期望什么。
渗透测试合同
渗透测试和真实网络攻击的关键区别在于,渗透测试是在计算机系统的所有者完全合法同意的情况下进行的。
完整的法律同意书不应仅仅是口头协议或通过握手签署的“君子协议”。你必须确保有书面的法律文件,由计算机系统所有者的代表和你本人共同签署。在进行渗透测试之前,如果没有签署法律文件,将会是灾难的开始,因为在大多数国家/地区,未经法律同意而进行渗透测试的行为通常构成数字犯罪。可能会在民事法庭甚至刑事法庭产生严重的法律后果。签署的法律合同是双方同意内容的证明,而口头协议和其他类型的非正式协议在法庭上绝对无法站得住脚!你需要在法律上保护自己,特别是在未来某个时候可能发生争议时。
无论你是你所在组织的员工、第三方承包商,还是在其他任何情况下工作,这都不重要。无论你是否曾与组织成员线下见面,也都不重要。即便是一个简单的漏洞扫描,如果没有书面且可验证的双方同意,也可能会让你陷入麻烦。如果你需要正确的法律建议,我强烈建议你咨询律师。一位合格的律师将确认我在这里所写的内容,并且可能能够为你提供关于你客户或组织提供的渗透测试合同是否符合你法律利益的建议。如果你能承担这项服务,找律师审查合同是一个不错的主意。
PentestUSA 有一个示例通用渗透测试合同(www.pentestusa.com/pdfs/PentestUSAPentestContractTemplate.pdf),我鼓励你查看,以便了解预期的内容。
Cure53 在 GitHub 上有一个渗透测试合同模板集合(github.com/cure53/Contracts),可能对你有帮助。
一个值得你签署的渗透测试合同应当明确规定你所期望进行的渗透测试的完整范围。定义的范围可能包括指定的 IP 地址、网络段和域名。确保定义的范围是具体的!无论何种情况,你都不应在合同规定的范围之外进行任何渗透测试活动,即使你认为这样做对组织有利。
你还应该确保你的渗透测试合同不会要求你做任何违反亚马逊、微软和谷歌渗透测试政策的事情。请随时审查这些政策;它们在这里列出。记住——你将在亚马逊、微软和谷歌的基础设施中进行渗透测试,因此它们的规则优先于你所在组织希望你做的事情:
-
AWS 渗透测试客户支持政策:
aws.amazon.com/security/penetration-testing/ -
Amazon EC2 测试政策:
aws.amazon.com/ec2/testing/ -
AWS DDoS 模拟测试政策:
aws.amazon.com/security/ddos-simulation-testing/ -
Microsoft 在线订阅协议:
azure.microsoft.com/en-us/support/legal/subscription-agreement/ -
Microsoft Cloud 渗透测试参与规则:
www.microsoft.com/en-us/msrc/pentest-rules-of-engagement -
Google Cloud Platform 服务条款:
cloud.google.com/terms/ -
Google Cloud Platform 可接受使用政策:
cloud.google.com/terms/aup
现在,让我们最后看一下你渗透测试的成果——渗透测试报告。
渗透测试报告
渗透测试报告是你渗透测试劳动的成果。你在几天或几周内进行各种漏洞扫描和模拟攻击所付出的辛勤努力,如果没有有效地将漏洞发现报告给你组织的防御安全团队和企业领导层,那就毫无意义。他们需要以一种易于理解的方式,了解你发现的关于网络安全状况的所有信息。如果你的渗透测试报告有效,你的组织将能够利用你的安全发现来加强网络和应用程序的安全。
渗透测试报告可以从几页到超过 100 页不等;这取决于你进行的渗透测试练习和扫描的数量。根据我经验,50 页接近平均值。但不要设定目标让报告大约是 50 页;长度会根据你需要分享的信息量而变化。你的报告可以是 PDF 或 Word DOCX 格式。你最好同时准备这两种格式的报告,以防万一。
你的渗透测试报告应该包含以下几个部分:
-
一份高管摘要,放在开始部分。它应该只有一到两页。这正是高管们查看的内容。你应该简明扼要地描述渗透测试所发现的主题。“加密密钥存储得很好,但太多拥有特权访问权限的账户缺乏多因素认证,使这些账户容易受到网络攻击者的攻击。”“我们托管在 Azure 上的虚拟机幸运地很难被外部攻击者发现。但与我们的 Google Cloud 存储桶连接的暴露服务实在是太多了。”确保提到,如果你发现的漏洞没有得到缓解,成功的网络攻击可能会给你的组织带来巨大的经济损失。金钱是激励公司高管的动力。如果你发现的漏洞可能使你的组织容易受到数据泄露的威胁,可以引用 IBM 的《数据泄露成本报告》中的货币数据(
www.ibm.com/reports/data-breach)。 -
在下一部分,解释你的渗透测试范围以及你寻找了哪些类型的漏洞。你可以将这一部分命名为“审计范围”或“渗透测试范围”。
-
下一部分可以叫做“漏洞发现”。本书中的许多工具将生成扫描结果,列出根据 CVE 记录和有时是 CVSS 评分发现的漏洞。EPSS 评级也非常重要。如果你知道漏洞的 CVE 记录编号,但不知道其 CVSS 评分或 EPSS 评级,我建议从 CVEDetails.com 查找(
www.cvedetails.com/)。按 EPSS 评分排序漏洞,再按 CVSS 评分排序。例如,EPSS 评分为 90%的漏洞应排在最前面。如果多个漏洞的 EPSS 评分为 90%,首先列出 CVSS 评分较高的漏洞。务必包括每个漏洞的 CVE 数据库描述,并用你自己的话说明攻击者可能如何利用该漏洞。 -
如果你有不对应于 CVE 记录的安全问题,可以在另一个标题为“其他发现”或“附加发现”的部分中提到它们。在这里,你可以提到一些情况,例如“这些用户账户缺少多因素认证”或“网页表单未对弹出窗口输出进行清理,可能使攻击者获得可用于发动网络攻击的信息。”
-
以下部分可以命名为“修复建议”。你可以提到如何修补或缓解这些漏洞。漏洞发现部分应该能够为防御安全团队提供线索,告诉他们如何对漏洞进行优先级排序,如果你按照我的指导,将漏洞从最关键到最不关键进行排序(基于 EPSS 和 CVSS)。但你仍然可以在这里用自己的话解释,你会建议防御安全团队如何优先处理漏洞。因为他们不可能同时修复所有漏洞,而且有时某个漏洞无法修复,安全分析师或 CISO 可能需要选择接受风险或转移风险(通常是通过网络安全保险)。
-
最后,你可以添加一个“结论”或“总结”,就像执行摘要一样,概括你的发现主题。但在这里你可以使用更多的技术性语言。
-
如果你有需要引用的资料,包括像 CVE 记录或其他网络安全专家在网上撰写的漏洞解释;它们会在最后列出并超链接。
这里有一些方便的资源可以帮助你处理渗透测试报告。
我在 SANS PenTest HackFest Summit 2021 上做了一个名为“写报告:被忽视的渗透测试技能”的演讲,你可以在 YouTube 上观看!(www.youtube.com/watch?v=r-6LBjlM14Y.)
Juliocesarfort 在他的 GitHub 上保留了一个非常庞大的真实渗透测试报告集合 (github.com/juliocesarfort/public-pentesting-reports),我建议你查看一下。
总结
恭喜你!你已经准备好开始作为云渗透测试员的旅程了。
你工作所需要的工具是一台普通的个人电脑、一款更新的网络浏览器和一个可靠的互联网连接。你可以通过网络应用程序完成大部分工作。互联网真是太神奇了,不是吗?
亚马逊、微软、谷歌、云安全联盟、OffSec、ISC2 和 CompTIA 提供云网络和渗透测试的认证,这些认证可以让你更具就业竞争力。
所有合规的渗透测试都从一份写得很好的合法渗透测试合同开始,以一份写得很好的渗透测试报告结束。
深入阅读
要了解本章所涵盖的主题,你可以访问以下链接:
-
MITRE ATT&CK 数据库:
attack.mitre.org/ -
MITRE CVE 数据库:
www.cve.org/ -
常见漏洞评分 系统:
www.first.org/cvss/ -
漏洞预测评分 系统:
www.first.org/epss/