AWS S3 存储桶枚举或暴力破解

编辑

识别在短时间内来自单个来源和帐户(或匿名帐户)的大量 S3 操作失败。此活动可能表明试图增加帐户因过度随机操作而产生的账单,导致资源耗尽,或枚举存储桶名称以进行发现。

规则类型: esql

规则索引: 无

严重性: 低

风险评分: 21

每隔: 5 分钟运行

搜索索引自: now-6m (日期数学格式,另见 附加回溯时间)

每次执行的最大告警数: 100

参考资料:

标签:

  • 领域:云
  • 数据源:AWS
  • 数据源:Amazon Web Services
  • 数据源:AWS S3
  • 资源:调查指南
  • 用例:日志审计
  • 策略:影响

版本: 4

规则作者:

  • Elastic

规则许可证: Elastic License v2

调查指南

编辑

分类和分析

调查 AWS S3 存储桶枚举或暴力破解

AWS S3 存储桶可能会被暴力破解,从而对资源所有者造成经济损失。更危险的是,即使是私有的、锁定状态的存储桶仍然可能触发潜在的成本,即使是“访问被拒绝”,同时也能被未经身份验证的匿名帐户访问。这似乎也适用于多个或所有操作(GET、PUT、list-objects 等)。此外,只要知道存储桶名称,默认情况下存储桶很容易被发现,这使得它容易受到枚举以进行发现。

攻击者可能会尝试枚举名称,直到发现有效的存储桶,然后转向造成经济损失,枚举更多信息,或以其他方式进行暴力破解以尝试泄露数据。

可能的调查步骤

  • 检查来自相同 source.addresscloud.account.id 的操作请求的历史记录,以确定是否存在其他可疑活动。
  • 查看类似的请求,并查看 user.agent 信息以确定请求的来源(但不要过度依赖此信息,因为它受请求者控制)。
  • 查看对相同 aws.s3.object.key 的其他请求,以及由相同 cloud.account.idsource.address 访问的其他 aws.s3.object.key
  • 调查过去 48 小时内与用户帐户相关的其他告警。
  • 验证活动是否与计划的补丁、更新或网络管理员活动无关。
  • 检查请求参数。这些参数可能表明程序的来源或错误发生时正在执行的任务的性质。
  • 检查错误是否与尝试枚举或访问对象、数据或密钥失败有关。
  • 考虑发出命令的用户源 IP 地址和地理位置
  • 对于调用用户来说,这些看起来正常吗?
  • 如果源是 EC2 IP 地址,它是否与您帐户中的 EC2 实例相关联,或者源 IP 是否来自您无法控制的 EC2 实例?
  • 如果是授权的 EC2 实例,该活动是否与实例角色的正常行为相关?此实例是否存在任何其他告警或可疑活动迹象?
  • 考虑一天中的时间。如果用户是人(而不是程序或脚本),活动是否发生在一天中的正常时间?
  • 如果可疑,请联系帐户所有者并确认他们是否知道此活动。
  • 如果您怀疑帐户已被泄露,请通过跟踪帐户在过去 24 小时内访问的服务器、服务和数据来确定可能被泄露的资产。

误报分析

  • 验证 source.addresscloud.account.id - AWS 内部的一些有效操作可能会导致失败和误报。此外,自动化失败也可能导致误报,但应该可以通过查看 source.addresscloud.account.id 来识别。

响应和补救

  • 根据分类的结果启动事件响应流程。
  • 在调查和响应期间禁用或限制帐户。
  • 确定事件的可能影响并相应地进行优先级排序;以下操作可以帮助您获得上下文
  • 确定云环境中的帐户角色。
  • 评估受影响的服务和服务器的关键程度。
  • 与您的 IT 团队合作,确定并最大限度地减少对用户的影响。
  • 确定攻击者是否正在横向移动并入侵其他帐户、服务器或服务。
  • 确定与该活动相关的任何法规或法律影响。
  • 调查受攻击者入侵或使用的系统上的凭据泄露,以确保识别所有受攻击的帐户。根据需要重置密码或删除 API 密钥以撤销攻击者对环境的访问权限。与您的 IT 团队合作,最大限度地减少这些操作对业务运营的影响。
  • 检查是否创建了未经授权的新用户,删除未经授权的新帐户,并为其他 IAM 用户请求密码重置。
  • 考虑为用户启用多因素身份验证。
  • 查看分配给相关用户的权限,以确保遵循最小权限原则。
  • 实施 AWS 概述 的安全最佳实践。
  • 采取必要的措施,使受影响的系统、数据或服务恢复到正常的运行级别。
  • 确定攻击者滥用的初始载体,并采取措施防止通过相同的载体再次感染。
  • 使用事件响应数据,更新日志记录和审计策略,以提高平均检测时间 (MTTD) 和平均响应时间 (MTTR)。
  • 还要检查 PutBucketPolicy 事件操作,以查看它们是否已被篡改。虽然我们监控拒绝,但通过策略更新(无论他们如何获得权限)将后门添加到存储桶的单个成功操作可能对于在 TDIR 期间进行识别至关重要。

规则查询

编辑
from logs-aws.cloudtrail*
| where event.provider == "s3.amazonaws.com" and aws.cloudtrail.error_code == "AccessDenied"
// keep only relevant fields
| keep tls.client.server_name, source.address, cloud.account.id
| stats failed_requests = count(*) by tls.client.server_name, source.address, cloud.account.id
  // can modify the failed request count or tweak time window to fit environment
  // can add `not cloud.account.id in (KNOWN)` or specify in exceptions
| where failed_requests > 40

框架: MITRE ATT&CKTM