本文讲的是如何使用 Kubesploit 和 KubiScan 提高云本地安全性。
主流科技企业广泛使用Kubernetes,它是一个可扩展、轻量级的开源容器编排平台。这个受欢迎的平台拥有不断扩展的安全工具、支持和服务生态系统,使其成为管理容器分配和服务的首选平台。
但Kubernetes 容器还是存在多种安全风险,包括运行时威胁、漏洞、暴露和失败的合规性审计。
这些不安全感促使 CyberArk 开发了两个开源工具:Kubesploit 和 KubiScan。这些工具通过在模拟真实攻击的同时执行深度安全操作,使 Kubernetes 社区受益。它们使我们能够测试我们的安全能力。我们无需等待攻击发生,而是可以主动准备并体验现实世界的漏洞利用将如何影响我们的系统,然后采取行动防止这些攻击。
在深入研究这些工具的工作原理并查看一些示例之前,让我们简要探讨每种解决方案如何帮助提高安全性并了解如何设置它们。
Kubesploit
Kubesploit是一个功能强大的跨平台后渗透漏洞利用HTTP/2命令&控制服务器和代理工具,该工具基于Golang开发,基于Merlin项目实现其功能,主要针对的是容器化环境的安全问题。
虽然有一些工具可以帮助缓解 Kubernetes 安全问题,但大多数工具实际上并没有执行全面扫描。看到这个差距,CyberArk 创建了 Kubesploit。开发人员在 Golang(Go 编程语言)中为容器化环境实施多平台工具 Kubesploit。
Kubesploit 通过在集群上执行复杂的攻击向量覆盖来工作,这种模拟有助于我们了解我们对网络中类似攻击的弹性。
它的各种模块检查不同的漏洞。然后,它利用易受攻击的 kubelet 并扫描从 Kubernetes 服务到 Kubernetes 集群的端口。 Github 存储库包含有关 Kubesploit 入门的详细信息。
设置 Kubesploit
让我们探索如何扫描 Kubernetes 集群以查找已知的常见漏洞和暴露 (CVE)。我们将使用 K8sClusterSCVEScan 来执行此操作。首先,让我们将代理加载到第一个终端的根目录中。然后,在第二个终端中,我们使用./server命令启动服务器。
接下来,我们运行 use module linux/ 来加载我们想要使用的任何模块。例如,clusterCVEScan 模块利用 runC 逃逸到主机。要使用该模块,我们需要设置 Kubernetes 集群地址,并运行集群以查看该集群的各种漏洞。
在每个 CVE 的描述属性中,我们可以阅读有关扫描发现的集群风险的详细消息。
如何使用 Kubesploit
让我们回顾一下如何使用 Kubesploit 检测漏洞的示例。在我们开始之前,请确保你的系统运行与 go.mod 文件(Go 1.14)中相同的 Go 版本。其他版本可能会给你一个构建约束错误。
首先,我们加载代理 url 地址。在本例中,你将使用 Kubesploit 环境正在侦听的 URL,例如:
然后,我们使用命令 ./server 运行我们的 Kubesploit 服务器。我们通过对 Kubesploit 服务器环境执行代理列表来检查代理连接是否已启用。
要扫描 URL 中的多个地址,我们使用 PortScan 模块,如下所示:
现在,让我们通过允许创建豁免容器来最小化我们的容器漏洞。我们使用 ContainerBreakoutMounting 模块:
如果操作完成,我们会收到一条消息说我们成功了。
开始使用 KubiScan
除了Kubesploit, CyberArk还创建了KubiScan。Kubiscan 是另一个开源工具,可帮助集群管理员诊断可能危及集群的权限泄露。它在 Kubernetes 的基于角色的访问控制 (RBAC) 授权模型中扫描 Kubernetes 集群以查找有风险的权限。
KubiScan 发现易受攻击的角色和角色绑定,并识别它们的集群、pod 和主题。这些信息使管理人员能够在广泛的环境中检测被破坏的许可,攻击者可能会迅速破坏这些许可。
设置 KubiScan
现在我们对 KubiScan 有了更多的了解,我们将在我们的主节点上进行设置。我们使用命令 kubectl get pods 来查找可用的 pod。然后,我们使用 kubiscan -rp 搜索具有易受攻击帐户的 pod。
获得特权账户后,我们需要确认它是否出现在风险主题列表中。我们通过运行命令 kubiscan -rs 来做到这一点。
然后,我们需要找出该主题有多少规则使其能够泄漏秘密。为此,我们运行命令:
为了获取特定集群的令牌,我们使用
列出其角色绑定。系统管理员可以使用该令牌检查集群是否可以在默认命名空间中列出机密。当我们执行该命令时,它会显示带有各种属性的 JSON 格式的输出,以显示漏洞可能在哪里。
如何使用 KubiScan
让我们研究一个使用KubiScan来发现用户环境中的漏洞的实际示例。首先,我们在环境中使用 kubectl get pods 检查我们的 pod 的状态。我们应该会看到与下面类似的输出,具体取决于我们拥有的 pod 数量:
我们使用命令 kubiscan -rp 来获取易受攻击的主题:
然后,使用kubiscan -rs来验证该账户是否存在于风险对象列表中:
为了搜索特定服务帐户中的所有规则,我们使用kubiscan -aars “risky-sa” -ns “default” -k “ServiceAccount”。
我们还可以使用 -aarbs “risky-sa” -ns “default” -k “ServiceAccount”列出服务帐户角色绑定。
由于 Kubernetes 集群是分布式和动态的,因此它们容易受到攻击并且难以保护。为了保护我们的 Kubernetes 环境,DevSecOps 需要在整个应用程序生命周期中使用各种安全工具和技术,从构建到部署和运行时。
因为我们需要意识到我们的容器安全性,CyberArk 的网络安全团队一直在研究新的工具来填补 Kubernetes 的安全漏洞。 Kubesploit 和 KubiScan 等解决方案可帮助 Kubernetes 社区识别和遏制阻碍我们运行的各种漏洞。
为了保证 Kubernetes 的安全,开发人员需要一个能够牢固地保护和验证容器并管理秘密的平台。我们需要确保我们只允许访问特定的应用程序、工具和信息。
本文翻译自:https://www.conjur.org/blog/tutorial-kubernetes-vulnerability-scanning-testing-with-open-source/如若转载,请注明原文地址