扫码领资料
获网安教程
来Track安全社区投稿~
千元稿费!还有保底奖励~(https://bbs.zkaq.cn)
研究人员来自Palo Alto Networks 的 Unit 42通过利用.env
文件,查找存储在云环境中的敏感秘密,发现了针对云环境的重大网络攻击。
调查得出的结论是,作为此恶意活动的一部分,已利用受感染的 AWS 环境跨各个域进行互联网范围的扫描。Unit 42 发现威胁行为者从大约 110,000 个域中收集了.env
文件,暴露了 90,000 多个敏感凭据,其中包括 7,000 个与各个组织使用的云服务相关的凭据。
以下文章详细介绍了攻击者在此恶意操作中使用的技术。我将探讨攻击的 5 个阶段——初始访问、帐户发现、权限升级、恶意执行和数据泄露——以及推动这 5 个阶段的 12 个微步骤。
第一阶段:初始访问
攻击者通过利用.env
文件中暴露的秘密获得了对受害者云环境的初始访问权限。服务使用这些文件来访问运行时环境变量,这些变量通常根据服务的部署位置在开发、中台和生产环境中进行不同的配置。
在生产环境中, .env
文件通常包含高度敏感的信息,例如访问令牌、凭据和 API 密钥。由于其敏感性, .env
文件通常被排除在代码存储库之外,并为特定实例手动配置。
.env
文件通常用于配置托管面向客户的 Web 应用程序的 Web 服务器。如果配置不当,攻击者可以通过http
公开访问它们,可能会导致检索.env
文件内容,该文件内容包含生产中使用的敏感身份验证资产。
第 二 阶段:账户发现
扫描不安全的 Web 服务器后,攻击者使用从可公开访问的.env
文件获取的 AWS 访问密钥来了解有关受感染帐户的更多信息。
AWS 访问密钥是 AWS IAM 用户的长期凭证,由两部分组成: access key ID
和secret access key
。这些凭证共同允许代表与访问密钥关联的 IAM 用户对 AWS API 请求进行身份验证。注意:从安全角度来看,AWS 访问密钥不被视为最佳实践。相反,我们鼓励开发人员使用临时安全凭证(例如 AWS IAM 角色)而不是长期凭证。
使用 AWS 访问密钥,威胁行为者在 AWS 环境中获得了立足点,并试图了解有关受感染帐户的更多信息。这种策略使他们能够推进恶意操作——升级权限、横向移动以及提取有价值的数据。攻击者跨多个服务进行了多次 AWS API 调用:
UserID
,它代表调用实体的唯一标识符; Account
,代表拥有调用实体的帐户;以及与调用实体关联的ARN
。注意:执行此类操作不需要任何权限。s3:ListAllMyBuckets
权限才能执行此操作。第三阶段:权限提升
AdministratorAccess
AWS 管理的 IAM 策略),从而允许他们绕过安全控制,在云环境中横向移动,并最终从敏感的 S3 存储桶中窃取数据。3.1. AWS IAM 角色的结构 -信任和权限策略
3.2.使用 CreateRole 和 AttachRolePolicy 升级权限
lambda-ex
IAM 角色,为其附加提升的权限,并代入该角色以获取临时 IAM 凭证。lambda-ex
的新 IAM 角色,并使用AssumeRolePolicyDocument
(信任策略)授予自己的调用身份权限来代入该角色。AdministratorAccess
IAM 策略附加到lambda-ex
角色,使该策略成为该角色权限策略的一部分。lambda-ex
角色对应的 te RoleArn
(附加了AdministratorAccess
AWS 托管策略)来获取一组提供不受限制的临时 IAM 凭证访问受害者 AWS 账户中的 AWS 资源。第四阶段:恶意执行
us-east-1
中创建了一个名为ex
的新 lambda 函数。此 lambda 函数执行一个 bash 脚本,该脚本扫描互联网范围内的域以查找公开的.env
文件,从中提取凭据,并将凭据上传到其控制下的 S3 存储桶。execution role
的 IAM 角色中定义,lambda 在调用时自动承担该角色。 execution role
可以附加一个策略,指定访问 AWS 资源所需的权限。它至少必须有权访问 Amazon CloudWatch,因为 Lambda 默认情况下会在此处记录(附加AWSLambdaBasicExecutionRole
策略可满足此要求)。此外,该角色的信任策略必须包含 lambda 服务主体 ( lambda.amazonaws.com
) 以允许 Lambda 代入该角色。ex
新 lambda 函数,并使用授予攻击者控制的 S3 存储桶访问权限的ExecutionRole
。/aws/lambda/ex
日志组来托管日志恶意功能生成的流。接下来是CreateLogStream API 调用,该调用在日志组中创建第一个日志流,以按日期聚合运行时日志事件。注意:默认情况下,该功能的 Amazon CloudWatch 日志记录始终处于启用状态,攻击者无法禁用它。.env
文件中存储的凭据:对于每个<domain>
,恶意 lambda 函数尝试通过访问http展开收缩://<domain>/.env
来从.env
文件中检索敏感机密,如果 Web 服务器配置错误,则读取.env
文件的内容。.env
文件,它会解析文件内容以提取敏感凭证,然后将这些凭证存储在受控 AWS S3 内的专用文件夹中桶。第五阶段:数据泄露
GetObject
和DeleteObject
权限的角色。最后,攻击者可以使用S3 mv
命令将数据从源S3存储桶传输到目标S3存储桶。声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。
原文始发于微信公众号(白帽子左一):大规模数据泄露:利用 .env 文件中的秘密来危害云帐户并造成严重的业务性能下降
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论