AWS IAM 用户为其他用户创建访问密钥

编辑

AWS IAM 用户为其他用户创建访问密钥

编辑

拥有受损凭据集的攻击者可能会尝试通过为现有用户创建新的凭据集来维持或提升权限。此规则查找使用 IAM CreateAccessKey API 操作为其他 IAM 用户创建新的编程访问密钥。

规则类型: esql

规则索引: 无

严重性: 中等

风险评分: 47

每隔: 5 分钟运行

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

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

参考资料:

标签:

  • 领域:云
  • 数据源:AWS
  • 数据源:Amazon Web Services
  • 数据源:AWS IAM
  • 用例:身份和访问审计
  • 策略:权限提升
  • 策略:持久性
  • 资源:调查指南

版本: 4

规则作者:

  • Elastic

规则许可证: Elastic License v2

调查指南

编辑

分类和分析

调查 AWS IAM 用户为其他用户创建访问密钥

为 IAM 用户或根用户创建的 AWS 访问密钥是提供对 AWS 的编程访问的长期凭据。拥有 iam:CreateAccessKey 权限后,可以使用一组受损凭据为其他用户创建一组新的凭据,以进行权限提升或作为持久性手段。此规则使用 ES|QL 来查找 CreateAccessKey 操作的使用情况,其中 user.name 与 user.target.name 不同。

可能的调查步骤

  • 识别相关的帐户及其在环境中的角色。
  • 查看用户身份的 IAM 权限策略。
  • 确定应该使用这些帐户的应用程序或用户。
  • 调查过去 48 小时内与这些帐户相关的其他告警。
  • 通过将 user_agent.original 字段中的异常值与预期和授权的使用情况以及历史数据进行比较来调查这些异常值。可疑的用户代理值包括非 SDK、AWS CLI、自定义用户代理等。
  • 联系帐户所有者并确认他们是否知道此活动。
  • 考虑发出命令的用户的源 IP 地址和地理位置
  • 它们对于调用用户来说是否正常?
  • 如果源是 EC2 IP 地址,它是否与您帐户中的 EC2 实例相关联,或者源 IP 是否来自您无法控制的 EC2 实例?
  • 如果是授权的 EC2 实例,该活动是否与实例角色的正常行为相关?是否有任何其他与该实例相关的告警或可疑活动迹象?
  • 如果您怀疑帐户已被入侵,请通过跟踪帐户在过去 24 小时内访问的服务器、服务和数据来确定可能受损的资产。
  • 确定用户执行了哪些其他 API 调用。
  • 通过查找涉及其他用户的类似事件来评估此行为在环境中是否普遍存在。

误报分析

  • 由于预期使用 IAM CreateAccessKey 操作,可能会出现误报。验证 aws.cloudtrail.user_identity.arn 是否应针对 user.target.name 帐户使用此操作。

响应和补救

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

规则查询

编辑
from logs-aws.cloudtrail-* metadata _id, _version, _index
| where event.provider == "iam.amazonaws.com"
    and event.action == "CreateAccessKey"
    and event.outcome == "success"
    and user.name != user.target.name
| keep
    @timestamp,
    cloud.region,
    event.provider,
    event.action,
    event.outcome,
    user.name,
    source.address,
    user.target.name,
    user_agent.original,
    aws.cloudtrail.request_parameters,
    aws.cloudtrail.response_elements,
    aws.cloudtrail.user_identity.arn,
    aws.cloudtrail.user_identity.type,

框架: MITRE ATT&CKTM