本文为译文,原文地址:https://sysdig.com/blog/lateral-movement-cloud-containers/
横向移动是云安全日益关注的问题。也就是说,一旦您的部分云基础设施被盗,攻击者可以到达多远?
在对云环境的著名攻击中,经常发生的是一个公开可用的易受攻击的应用程序,可以作为切入点。从那里,攻击者可以尝试在云环境中移动,试图泄露敏感数据或将帐户用于自己的目的,例如加密挖掘。
在本文中,我们将介绍一个分阶段但现实世界的场景,以展示攻击者如何完全访问云帐户。我们还将介绍如何使用Sysdig云连接器检测和缓解此类攻击。
横向移动的场景
让我们从一个易受攻击的Struts2应用程序开始这个云安全实践,该应用程序在Kubernetes集群中运行,托管在AWS帐户中。
一旦攻击者访问pod,他们将评估环境,寻找密钥或凭据来执行横向移动并升级特权。
这些凭据可能会在aws元数据中找到。一旦获得,攻击者将有权访问AWS帐户,从那里他们可以开始四处寻找。
访问云基础设施后,攻击者将寻找错误的配置,以便他们采取下一步行动。例如,通过保留其权限、损害云防御或升级其特权来巩固位置。最终,攻击者在寻找数据泄露时可能会造成伤害,或通过安装加密矿工或机器人控制中心。
现在我们了解了对手的总体战略,让我们更深入地了解他们的行动。
第1步:利用面向公众的Web应用程序
Cloud MITRE ATT&CK中报告的初始访问TTP(策略、技术和程序)之一是通过利用面向公共的应用程序。这是有道理的。毕竟,任何公共的东西都可以访问。
在这种情况下,有一个Apache Struts2应用程序公开可用。
为了查看可用实例是否受到众所周知的漏洞的影响,攻击者开始进行被动和主动的信息收集活动。与Web应用程序交互,可以检索软件版本和有关部署应用程序的其他其他信息。从那里,攻击者可以查询寻找入口点的漏洞数据库。
攻击者发现,我们正在使用的Apache Struts2版本容易受到CVE-2020-17530的影响,CVE-2020-17530允许在机器上远程代码执行。如果攻击者设法利用这个特定的漏洞,他们将能够在机器中执行任意代码,包括在系统中打开反向shell。
攻击者向服务器发送精心设计的HTTP请求,shell从受害者主机打开到攻击者机器。
打开反向shell所需的bash命令包含特殊字符,这可能会在执行过程中导致错误。为了避免这种情况,通常将命令编码为base64,在执行期间对其进行解码。
从主机名apache-struts-6c8974d494
中,攻击者可以看到他们降落在Kubernetes集群内的pod或容器中。
第2步:横向移动到云端
现在我们的对手来了,他们必须计算地形。你可能会认为,在降落在集装箱里后,攻击者受到相当大的限制。你是对的,但他们仍然有一些选择来破坏我们的云安全。
攻击者检查pod是否可以访问AWS实例元数据。
看起来确实如此。可能有关于云环境的有用信息可以帮助攻击者升级特权或执行横向移动。
查看IAM凭据,对手找到了与运行pod的Kubernetes节点关联的AWS IAM角色凭据。
攻击者现在可以在自己的环境中导入凭据,并通过cli直接访问云帐户。
第3步:通过策略错误配置升级特权
此时,攻击者能够使用被盗的凭据连接到AWS帐户。
他们做的第一件事就是开始评估附加到模拟角色相关的角色和策略,试图找到一种在云环境中升级权限的方法。
devAssumeRole
策略看起来很有希望。让我们看看它授予了什么权限。
使用AssumeRole
,对手可以选择充当其他用户。这是一个奇怪的权限,可以授予这样的帐户。这可能是配置错误,就是攻击者正在寻找的那种。
此外,使用ReadOnlyAccess
特权,攻击者能够枚举AWS帐户中可用的角色,并根据现有限制找到他们可以承担哪些角色。在这种情况下,攻击者可以冒充以“开发”一词开头的角色。当前用户可以承担的角色之一是dev-EC2Full
,它允许完全控制EC2。
假设这个角色,攻击者能够像开发用户一样行事,可以完全访问EC2实例,并能够为自己的目的创建新实例。
下一步
让我们回顾一下到目前为止我们讨论的内容和两个主要流程:
- 一个易受攻击的面向公众的应用程序正在Kubernetes生产环境中运行。它被攻击者用作进入环境的入口。
- 连接到生产实体(运行Kubernetes节点的EC2实例)的开发相关IAM策略中的错误配置,允许攻击者承担更强大的角色,并升级云环境中的权限。
此时,攻击者有足够的权限对我们的组织造成伤害。他们现在可以开始采取行动,或者进一步试图破坏我们的云安全并获得更大的访问权限。不要错过我们的“跨AWS云和容器的统一威胁检测”文章,更全面地了解攻击者可以采取的以下步骤,并了解AWS提供了哪些工具来预防、检测和缓解这些攻击。