排查泄漏的IAM AKSK

前提条件

  1. 安装Prowlerarrow-up-right在自己的机器上;此工具提供了当前环境的安全状态。此外, AWS Security Hubarrow-up-right 提供了自动合规扫描并且可以 integrate with Prowlerarrow-up-right.

  2. 开启Security Lake(需要在管理账号,或者被委托的管理账号上开启),有15天的免费试用,可以一键开启跨账号,跨Region的CloudTrail日志。资源勾选CloudTrail - Management events。

收集信息

1-排查新的或者可疑的IAM用户

执行下面的命令,检查是否存在用户绑定了2个活跃访问密钥。平时就不应该允许存在一个用户绑定2个活跃访问密钥,如果存在,则可能是攻击者新创建的密钥,用户权限已经被泄漏。

执行下面的命令,查看root账号是否有使用痕迹,平时不应该使用root账号,要妥善保管,如果root账号有使用痕迹,则root账号可能已经被泄漏。

执行下面的命令,查看是否存在超级管理员的策略并且被绑定了。找到超级管理员策略比如AdministratorAccess,在控制台可以用策略名称筛选超级权限策略,然后找到绑定了这个超级权限策略的主体。排查主体是否近期使用过,是否做了一些异常的事情,比如删除策略,创建用户,创建EC2等等。

2-排查账单

利用 AWS 成本异常检测发现异常支出arrow-up-right

AWS Cost Anomaly Detection是AWS Cost Management的一个功能,该功能使用机器学习模型来检测已部署的 AWS 服务中的异常支出模式并发出警报。

3-排查密钥泄露情况

使用以下命令扫描AWS上使用明文口令的情况,然后排查泄漏的IAM AKSK是否在里面。建议所有的明文AKSK都应该删除,使用IAM role的方式进行授权。详细参见场景化IAM实践-应用程序安全

4-排查泄露的IAM AKSK影响范围

最佳实践建议将日志导出到安全事件管理 (SIEM) 解决方案(如 OpenSearch、Security Lake等),以帮助查看和分析各种记录,从而进行完整的攻击时间线分析。下面以Security Lake排查为例介绍如何查找IAM AKSK泄漏的影响范围:

查询疑似泄漏的IAM user access key执行了哪些 AWS API 活动,以及来自哪个 IP 地址的活动。

注意替换Account Id number and 为你的账号以及 IAM user access keys。

并且替换时间。

5 - 相关AWS GuardDuty Findings

  • CredentialAccess:IAMUser/AnomalousBehavior

  • DefenseEvasion:IAMUser/AnomalousBehavior

  • Discovery:IAMUser/AnomalousBehavior

  • Exfiltration:IAMUser/AnomalousBehavior

  • Impact:IAMUser/AnomalousBehavior

  • InitialAccess:IAMUser/AnomalousBehavior

  • PenTest:IAMUser/KaliLinux

  • PenTest:IAMUser/ParrotLinux

  • PenTest:IAMUser/PentooLinux

  • Persistence:IAMUser/AnomalousBehavior

  • Policy:IAMUser/RootCredentialUsage

  • PrivilegeEscalation:IAMUser/AnomalousBehavior

  • Recon:IAMUser/MaliciousIPCaller

  • Recon:IAMUser/MaliciousIPCaller.Custom

  • Recon:IAMUser/TorIPCaller

  • Stealth:IAMUser/CloudTrailLoggingDisabled

  • Stealth:IAMUser/PasswordPolicyChange

  • UnauthorizedAccess:IAMUser/ConsoleLoginSuccess.B

  • UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration

  • UnauthorizedAccess:IAMUser/MaliciousIPCaller

  • UnauthorizedAccess:IAMUser/MaliciousIPCaller.Custom

  • UnauthorizedAccess:IAMUser/TorIPCaller

可以从Security Hub的Finding中筛选GuardDuty的这些告警是否出现。也是使用Security Lake+Athena

查看GD中有哪些告警出现

选择其中跟IAM密钥泄漏相关的筛选告警信息

事件分类和处理

  • Tactics, techniques, and procedures: Exposure of credentials

  • Category: IAM credential exposure

  • Resource: IAM

  • Indicators: Cyber Threat Intelligence, Third Party Notice

  • Log Sources: AWS CloudTrail, AWS Config, VPC Flow Logs, Amazon GuardDuty

  • Teams: Security Operations Center (SOC), Forensic Investigators, Cloud Engineering

应急响应

此外还可以

1-IAM用户轮换AKSK

如果发现IAM用户可能已经被黑客获取,则立即删除原来的AKSK,创建一个新的AKSK。

2-删除异常支出的资源

一些异常支出的资源很可能是黑客创建的,用于挖矿,比如超大型EC2和海量带宽。在排查账单发现异常支出资源后立即进行删除。

3-删除明文口令

通过prowler aws --categories secrets的检查发现的明文口令建议都删除掉,使用更安全的方式保存口令。比如EC2通过IAM role的方式授权,cloudwatch logs里面发现了明文口令则启用匿名化功能arrow-up-right保护敏感数据,CloudFormation outputs,Lamdba,Systems Manager document等服务中发现了明文口令,则建立整改计划,都使用secrets manager来保存口令。

4-屏蔽恶意IP

通过排查CloudTrail日志可以看到拿到泄漏AKSK进行恶意访问的IP的行为,如果确认是恶意的,则可以将恶意IP进行屏蔽。屏蔽方式1:在NACL中增加拒绝该IP访问的规则。屏蔽方式2:在WAF中添加黑名单,将恶意IP添加至WAF的黑名单。

参考资料

[workshop] Unauthorized IAM Credential Use - Simulation and Detectionarrow-up-right

[github]Incident Response Playbook: Compromised IAM Credentialsarrow-up-right

最后更新于