AWS EC2 多区域 DescribeInstances API 调用

编辑

AWS EC2 多区域 DescribeInstances API 调用

编辑

识别在 30 秒窗口内,单个 AWS 资源在 10 个以上区域发出 DescribeInstances API 调用的情况。这可能表明潜在威胁行为者正尝试使用被泄露的凭据或受损实例来发现跨多个区域的 AWS 基础设施。攻击者可能会使用此信息来识别进一步攻击的潜在目标,或者更好地了解目标的基础设施。

规则类型:esql

规则索引:无

严重性:低

风险评分: 21

运行频率:5 分钟

搜索索引时间范围:now-9m ( 日期数学格式,另请参阅 额外回溯时间)

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

参考资料:

标签:

  • 域:云
  • 数据源:AWS
  • 数据源:AWS EC2
  • 资源:调查指南
  • 用例:威胁检测
  • 策略:发现

版本: 3

规则作者:

  • Elastic

规则许可证:Elastic License v2

调查指南

编辑

分类和分析

调查 AWS EC2 多区域 DescribeInstances API 调用

此规则检测单个 AWS 资源在 30 秒窗口内,在 10 个以上区域发出 DescribeInstances API 调用的情况。这可能表明攻击者正在使用被泄露的凭据或被利用的资源来枚举跨多个区域的 AWS 基础设施。攻击者通常利用多区域枚举来评估整体云环境,并找到进一步攻击的潜在目标。

可能的调查步骤

  • 识别资源和行为者:
  • 行为者 ARN:检查 aws.cloudtrail.user_identity.arn 以确定执行枚举的确切身份。验证用户是否需要在多个区域执行跨区域的 DescribeInstances 操作,或者这是否看起来不寻常。
  • 账户和角色详细信息:检查 cloud.account.idaws.cloudtrail.user_identity.session_context.session_issuer,了解有关 AWS 账户和与该操作关联的特定角色的信息。
  • 分析 API 调用模式:
  • 频率和范围:查看 cloud.region 字段,并确认此特定资源是否通常在多个区域执行 DescribeInstances 调用。
  • 时间窗口上下文:比较 target_time_window 内 API 调用的时间,以确定此突发模式是否与预期的系统使用情况一致,或者是否可能具有恶意性。
  • 检查用户代理和工具:
  • 来源和用户代理:验证 user_agent.original 以确定请求是否通过预期工具(例如,AWS CLI 或 SDK)或可能指示非标准访问的第三方工具发出。
  • 源 IP 地址:查看 source.address 以确定调用的来源。不寻常的 IP 地址,尤其是那些超出预期范围的 IP 地址,可能表示访问权限被泄露。
  • 评估潜在的侦察行为:
  • 账户和区域枚举:攻击者可能会使用跨区域的 DescribeInstances 请求来发现账户中不同区域的资源。确认此访问是否与操作实践一致,或者是否表示过度访问。
  • 权限和角色:调查与用户角色关联的权限。受损角色上的过度权限可能允许更广泛的枚举,这应该受到限制。
  • 查看相关的 CloudTrail 事件:
  • 额外的 Describe 或 List 操作:识别任何相关的 DescribeList API 调用,这些调用可能表明在同一时间范围内进一步枚举了其他 AWS 服务。
  • 潜在的先前事件:查找同一行为者的先前登录或访问事件,因为这些事件可能表明凭据可能被泄露或未经授权的权限提升。

误报分析

  • 预期枚举:某些管理或自动化脚本可能会出于清单目的进行广泛的 DescribeInstances API 调用。查看使用模式或咨询相关团队以验证目的。
  • 自动化云管理:某些自动化服务可能会执行区域检查以进行合规性或备份操作。如果此规则被已知服务反复触发,请考虑将其列入白名单或进行相应的调整。

响应和补救

  • 审查 IAM 策略和角色权限:限制与此资源关联的角色的权限,限制不必要的多区域枚举访问。
  • 强制执行最小权限访问:确保对 DescribeInstances 的权限进行严格控制,并限制为需要多区域访问的特定角色或账户。
  • 增加监控和告警:对此角色或账户设置额外的监控,以进一步发现未经授权的活动或横向移动尝试的迹象。
  • 访问审查:对具有 DescribeInstances 权限(特别是多区域功能)的用户和实体进行审查,并确保这些权限对于他们的职能是必要的。

其他信息

有关 AWS DescribeInstances 权限和最佳实践的更多信息,请参阅 AWS DescribeInstances API 文档

规则查询

编辑
from logs-aws.cloudtrail-*

// filter for DescribeInstances API calls
| where event.dataset == "aws.cloudtrail" and event.provider == "ec2.amazonaws.com" and event.action == "DescribeInstances"

// truncate the timestamp to a 30-second window
| eval target_time_window = DATE_TRUNC(30 seconds, @timestamp)

// keep only the relevant fields
| keep target_time_window, aws.cloudtrail.user_identity.arn, cloud.region

// count the number of unique regions and total API calls within the 30-second window
| stats region_count = count_distinct(cloud.region), window_count = count(*) by target_time_window, aws.cloudtrail.user_identity.arn

// filter for resources making DescribeInstances API calls in more than 10 regions within the 30-second window
| where region_count >= 10 and window_count >= 10

// sort the results by time windows in descending order
| sort target_time_window desc

框架:MITRE ATT&CKTM