AWS EC2 多区域 DescribeInstances API 调用

编辑

AWS EC2 多区域 DescribeInstances API 调用

编辑

识别单个 AWS 资源在 30 秒内在 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 调用。
  • 时间窗口上下文: 将 API 调用在 target_time_window 中的时间与预期系统使用情况进行比较,以确定此突发模式是否与预期系统使用情况一致或可能具有恶意。
  • 检查用户代理和工具:
  • 来源和用户代理: 验证 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