关于 conducting-cloud-incident-response
面向安全团队的云端事件响应指南,适用于调查 AWS、Azure 和 GCP 中的可疑活动。重点包括身份遏制、证据保全、云端攻击模式分析与恢复。
主要功能
- 01调查云审计日志
- 02以身份为核心进行遏制
- 03跨云服务保全证据
- 04分析云端攻击模式
- 05轮换凭据并恢复环境
适用场景
- 01调查可疑云 API 活动
- 02响应云凭据泄露
- 03在临时资源消失前保全证据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill conducting-cloud-incident-response安装后在 Claude Code 中输入/conducting-cloud-incident-response确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdscripts/agent.py详细介绍
开展云事件响应
何时使用
- 云安全态势管理(CSPM)就对未授权资源变更发出告警
- CloudTrail、Azure 活动日志或 GCP 审计日志显示可疑 API 调用
- 云访问密钥或服务主体凭证疑似泄露
- 检测到未授权的计算实例、存储桶或 IAM 变更
- 云托管应用遭到入侵,且攻击者活动横跨多个云服务
请勿使用于完全没有云组件的纯本地事件;请使用标准企业 IR 流程。
前置条件
- 已启用并集中化云原生日志:AWS CloudTrail(所有区域)、Azure 活动/登录日志、GCP 云审计日志
- 已预先配置专用于 IR 的云 IAM 角色,并具备只读取证访问权限
- 用于证据保全的隔离取证账户/订阅/项目
- 针对各云服务商的云事件响应运行手册
- 云原生安全工具:AWS GuardDuty、Azure Defender for Cloud、GCP Security Command Center
- 网络流量日志:VPC Flow Logs(AWS/GCP)、NSG Flow Logs(Azure)
工作流
第 1 步:检测并确认云事件
确定入侵的范围和性质:
AWS 指标:
CloudTrail suspicious events to investigate:
- ConsoleLogin from unexpected geolocation or IP
- CreateAccessKey for existing IAM user (persistence)
- RunInstances for crypto-mining (large instance types)
- PutBucketPolicy making S3 bucket public
- AssumeRole to cross-account roles
- DeleteTrail or StopLogging (defense evasion)
- CreateUser or AttachUserPolicy (privilege escalation)
Azure 指标:
Azure Activity Log events to investigate:
- Sign-in from anonymous IP or TOR exit node
- Service principal credential added
- Role assignment changes (Owner, Contributor added)
- VM created in unusual region
- Storage account access key regenerated
- Conditional Access policy modified or deleted
- MFA disabled for user account
GCP 指标:
GCP Audit Log events to investigate:
- SetIamPolicy changes granting broad access
- CreateServiceAccountKey for existing SA
- InsertInstance in unexpected zone
- SetBucketIamPolicy with allUsers
- DeleteLog or UpdateSink (log tampering)
第 2 步:遏制云身份泄露
云遏制主要是一项身份操作:
AWS 遏制:
# Disable compromised IAM access keys
aws iam update-access-key --user-name compromised-user \
--access-key-id AKIA... --status Inactive
# Attach deny-all policy to compromised user
aws iam attach-user-policy --user-name compromised-user \
--policy-arn arn:aws:iam::aws:policy/AWSDenyAll
# Revoke all active sessions for compromised IAM role
aws iam put-role-policy --role-name compromised-role \
--policy-name RevokeOlderSessions --policy-document '{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Deny",
"Action":"*",
"Resource":"*",
"Condition":{"DateLessThan":
{"aws:TokenIssueTime":"2025-11-15T15:00:00Z"}}
}]
}'
# Isolate compromised EC2 instance
aws ec2 modify-instance-attribute --instance-id i-0abc123 \
--groups sg-isolate-forensic
Azure 遏制:
# Disable compromised user
Set-AzureADUser -ObjectId "[email protected]" -AccountEnabled $false
# Revoke all sessions
Revoke-AzureADUserAllRefreshToken -ObjectId "user-object-id"
# Remove role assignments
Remove-AzRoleAssignment -ObjectId "sp-object-id" -RoleDefinitionName "Contributor"
# Isolate VM with NSG deny-all rule
$nsg = New-AzNetworkSecurityGroup -Name "isolate-nsg" -ResourceGroupName "rg" -Location "eastus"
$nsg | Add-AzNetworkSecurityRuleConfig -Name "DenyAll" -Priority 100 -Direction Inbound `
-Access Deny -Protocol * -SourceAddressPrefix * -SourcePortRange * `
-DestinationAddressPrefix * -DestinationPortRange *
第 3 步:保全云证据
在临时资源被终止或日志轮转之前收集证据:
AWS 证据收集:
- 将 CloudTrail 事件导出到取证账户中的 S3
- 对受入侵 EC2 实例的 EBS 卷创建快照
- 复制 S3 访问日志和对象版本
- 导出受影响 VPC 的 VPC Flow Logs
- 捕获 IAM 凭证报告和访问顾问数据
Azure 证据收集:
- 导出 Azure 活动日志和登录日志(默认保留 90 天)
- 对受入侵 VM 的托管磁盘创建快照
- 导出 Azure AD 审计日志
- 捕获 NSG 流日志
- 导出条件访问登录详情
GCP 证据收集:
- 将云审计日志导出到取证存储桶
- 对受入侵 VM 的永久性磁盘创建快照
- 导出 VPC Flow Logs
- 捕获 IAM 策略快照
第 4 步:调查云特有的攻击模式
分析日志中常见的云攻击技术:
Common Cloud Attack Patterns:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Credential Compromise → IAM Privilege Escalation → Resource Abuse
2. Public S3/Blob → Data Exfiltration
3. SSRF from Web App → IMDS Token Theft → Lateral Movement
4. Compromised CI/CD Pipeline → Malicious Deployment
5. Cross-Account Role Abuse → Multi-Account Pivot
6. Lambda/Function Abuse → Crypto-mining or Data Processing
IMDS 令牌窃取调查(AWS):
# Search CloudTrail for API calls using instance role credentials from external IP
aws cloudtrail lookup-events --lookup-attributes \
AttributeKey=EventSource,AttributeValue=ec2.amazonaws.com \
--start-time 2025-11-14 --end-time 2025-11-16 \
| jq '.Events[] | select(.CloudTrailEvent | fromjson | .sourceIPAddress != "internal")'
第 5 步:根除并恢复
移除攻击者访问权限并恢复安全状态:
- 轮换所有已泄露的凭证(访问密钥、密码、服务主体密钥)
- 移除攻击者创建的未授权 IAM 用户、角色、策略和访问密钥
- 终止未授权的计算实例(加密货币挖矿程序、C2 服务器)
- 将被修改的 S3 存储桶策略和存储访问策略恢复到事件前状态
- 重新启用被禁用的安全控制(CloudTrail、GuardDuty、Defender for Cloud)
- 审查并恢复条件访问策略和 MFA 配置
第 6 步:事件后云加固
实施控制措施以防止再次发生:
- 为所有 IAM 用户启用 MFA,并要求对敏感 API 调用使用 MFA
- 实施 SCP(AWS)或 Azure Policy 以防止日志被禁用
- 启用 GuardDuty / Defender for Cloud / Security Command Center 并配置自动修复
- 利用访问分析器数据实施最小权限 IAM 策略
- 在所有 EC2 实例上启用 IMDS v2(要求令牌),以防止基于 SSRF 的令牌窃取
- 配置预算告警以检测加密货币挖矿导致的费用激增
关键概念
| 术语 | 定义 |
|---|---|
| IMDS(实例元数据服务) | 一种云服务,可从 VM 内部访问并提供实例凭证;SSRF 攻击以 IMDS 为目标窃取令牌 |
| CloudTrail | AWS 服务,记录 AWS 账户中的所有 API 调用;是 AWS 事件响应的主要证据来源 |
| 服务主体 | Azure AD 中供应用程序和服务使用的非人类身份;一旦被攻陷可实现持久 API 访问 |
| SCP(服务控制策略) | AWS Organizations 策略,限制账户可用的最大权限;适用于设置防护栏 |
| 临时基础设施 | 可能在证据收集之前就被终止的云资源(容器、函数、自动扩缩容实例) |
| 跨账户角色代入 | AWS 机制,允许一个账户临时访问另一个账户中的资源;攻击者通过代入角色进行横向移动 |
工具与系统
- AWS CloudTrail / Azure Activity Logs / GCP Audit Logs:云原生 API 日志服务,提供主要审计跟踪
- Cado Response:云原生取证平台,可从 AWS、Azure 和 GCP 自动捕获证据
- Prowler (AWS) / ScoutSuite (多云):开源云安全评估工具,用于事件后态势审查
- Steampipe:基于 SQL 的开源工具,用于查询云 API 以调查 IAM 配置和资源状态
- Cartography (Lyft):开源工具,用于映射云基础设施关系并识别攻击路径
常见场景
场景:AWS 访问密钥通过公共 GitHub 仓库泄露
背景:AWS GuardDuty 发出警报,称来自意外 IP 地址的 API 调用使用了某个 IAM 用户的访问密钥。该密钥在 4 小时前被意外提交到公共 GitHub 仓库。
处理方法:
- 立即通过 AWS IAM 禁用泄露的访问密钥
- 将 AWSDenyAll 策略附加到受影响的 IAM 用户
- 查询 CloudTrail,获取泄露密钥自暴露以来的所有 API 调用
- 识别攻击者创建或修改的资源(用于加密货币挖矿的 EC2 实例、用于持久化的新 IAM 用户)
- 终止未授权资源并移除后门 IAM 实体
- 轮换泄露用户可访问的所有凭证
- 启用 GitHub 秘密扫描,防止未来凭证泄露
注意事项:
- 仅禁用访问密钥,而不检查攻击者是否创建了新的访问密钥或 IAM 用户用于持久化
- 未检查所有 AWS 区域中攻击者创建的资源(加密货币矿机部署在每个区域)
- 忘记撤销来自代入角色的临时凭证(STS 令牌在过期前仍然有效)
- 未计算未授权资源使用的财务影响,以便用于保险索赔
输出格式
CLOUD INCIDENT RESPONSE REPORT
================================
Incident: INC-2025-1705
Cloud Provider: AWS (Account: 123456789012)
Date Detected: 2025-11-15T14:00:00Z
Detection Source: GuardDuty - UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration
COMPROMISE SUMMARY
Initial Access: IAM access key exposed in public GitHub repo
Affected Identity: iam-user: deploy-bot (AKIA...)
Attacker IP: 203.0.113.42 (VPN exit node, Netherlands)
Duration: 4 hours (10:00 UTC - 14:00 UTC)
ATTACKER ACTIVITY (from CloudTrail)
10:15 UTC - DescribeInstances (reconnaissance)
10:18 UTC - RunInstances x 12 (c5.4xlarge, all regions - crypto-mining)
10:22 UTC - CreateUser "backup-admin" (persistence)
10:23 UTC - CreateAccessKey for "backup-admin"
10:25 UTC - AttachUserPolicy - AdministratorAccess to "backup-admin"
10:30 UTC - PutBucketPolicy - s3://data-bucket made public (exfiltration)
CONTAINMENT ACTIONS
[x] Original access key disabled
[x] User policy set to AWSDenyAll
[x] Backdoor IAM user "backup-admin" deleted
[x] 12 crypto-mining instances terminated (all regions)
[x] S3 bucket policy restored to private
FINANCIAL IMPACT
Unauthorized EC2: $2,847 (4 hours x 12 x c5.4xlarge)
Data Transfer: $127 (S3 public access data egress)
Total: $2,974
POST-INCIDENT HARDENING
1. GitHub secret scanning enabled
2. Access key rotation policy implemented
3. SCP preventing CloudTrail disablement deployed
4. GuardDuty auto-remediation Lambda configured
评论
支持 Markdown