IAM AKSK泄漏自动响应
最后更新于
最后更新于
GuardDuty Findings被发送到默认的 AWS EventBridge 事件总线。我们根据 InstanceCredentialExfiltration
发现的自定义事件模式配置了一个触发规则。该规则接收 GuardDuty 发现的 JSON 并提取被入侵的 IAM 角色及其最后看到的时间戳,然后将这些内容注入包含 IAM 策略的新 JSON 文档,并将其发送到我们的 Step Function 状态机。状态机通过其内置 SDK 集成调用 IAM PutRolePolicy API,针对 IAM 角色应用该策略,该策略会立即撤销所有活动会话。这将使攻击者窃取的凭据失去作用,从而在我们建立的保护措施都无效时中断攻击。
如果您的 EC2 实例凭据被用于从一个 IP 地址调用 API,而该 IP 地址的所有者是与相关 EC2 实例运行账户不同的 AWS 账户,则该发现会通知您。
创建状态机
状态机名称
revoke-old-sessions
类型
标准
code
打开 。
点击 创建规则 按钮。
名称
IAM-AKSK-Leak-RemediationRule
描述
GuardDuty EC2 Credential Remediation Rule
规则类型
具有事件模式的规则
事件源
AWS 事件或 EventBridge 合作伙伴事件
创建方法
使用模式表单
事件模式
{ "detail-type": ["GuardDuty Finding"], "source": ["aws.guardduty"], "detail": { "type": ["UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS", "UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS"] } }
选择目标
AWS 服务-Step Function状态机-revoke-old-sessions
我们不希望将之前查看过的整个 GuardDuty 发现 JSON 发送到步骤函数,而是想提取几个关键属性,并用它们来制定 IAM 策略,以撤销受损 IAM 角色的活动会话。为此,我们使用输入转换器和 JSON 选择器语法来提取 IAM 角色名称和时间戳。
在目标中展开其他设置,配置目标输入选择输入转换器,配置输入转换器:
输入路径:
输入模版:
然后查看模拟中使用的IAM role是否新增加一个策略:"RevokeOldSession"
模拟,会触发GuardDuty的告警。