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 账户,则该发现会通知您。
配置Step Function
创建状态机
状态机名称
revoke-old-sessions
类型
标准
code
配置EventBridge
打开 EventBridge console 。
点击 创建规则 按钮。
名称
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安全凭据的攻击过程,会触发GuardDuty的告警。
然后查看模拟中使用的IAM role是否新增加一个策略:"RevokeOldSession"
最后更新于