Wiz Cloud Hunting Games 挑战复盘:一条完整的云上攻击链
字数 3535
更新时间 2026-03-07 10:10:09
Wiz Cloud Hunting Games 靶场挑战教学复盘
一条完整的云上攻击链解析
本文档将详细复盘“Wiz Cloud Hunting Games”云安全靶场挑战,该挑战模拟了一条完整的云上攻击链,涵盖云日志分析、身份追踪、主机取证和持久化清除等多个方面。以下内容基于所提供的链接内容进行整理和教学性阐述。
故事背景
ExfilCola公司声称其秘密配方被黑客组织FizzShadows窃取并遭受勒索。你的任务是以安全分析师的身份,追踪攻击者的足迹,验证数据泄露,并最终删除被窃取的秘密文件。
环境与数据访问
在整个挑战中,你被授予了以下关键数据的访问权限:
- S3 数据事件日志:存储在
s3_data_events表中,用于追踪S3存储桶的访问记录。 - CloudTrail 日志:存储在
cloudtrail表中,用于追踪AWS控制平面的所有API调用记录。 - 被入侵主机的Root权限:用于进行主机层面的取证分析。
挑战详解与解题步骤
CHALLENGE One: Ain't no data when she's gone (验证数据外泄)
目标:验证攻击者是否真的窃取了S3存储桶中的秘密配方,并找出执行此次数据外泄的IAM角色。
-
分析思路:
- 由于目标文件是“recipe”(配方),因此需要在S3数据事件日志中筛选出与“recipe”相关的
GetObject(读取对象)操作。 - 通过分析
useragent字段可以进一步识别可疑的访问来源。
- 由于目标文件是“recipe”(配方),因此需要在S3数据事件日志中筛选出与“recipe”相关的
-
查询语句:
-- 首先查看表结构 SELECT * FROM s3_data_events LIMIT 5; -- 核心查询:查找对recipe文件执行GetObject操作的IAM实体 SELECT useridentity_ARN FROM s3_data_events WHERE (path LIKE '%recipe%' OR requestParameters LIKE '%recipe%') AND eventname = 'GetObject';- 查询结果会显示多条记录,需结合
useragent字段判断。典型的攻击者工具(如boto3, AWS SDK for Python)是重要线索。
- 查询结果会显示多条记录,需结合
-
关键答案:
- 参与攻击的IAM角色是:
arn:aws:sts::509843726190:assumed-role/S3Reader/drinks
- 参与攻击的IAM角色是:
CHALLENGE Two: Follow, follow the trail (追踪原始身份)
目标:找出是哪个IAM用户或角色扮演(AssumeRole)了上一步发现的S3Reader角色。
-
分析思路:
- 在云环境中,一个实体(用户、角色、服务)可以通过调用AWS STS服务的
AssumeRoleAPI来临时获取另一个角色的凭证。 - 我们需要在CloudTrail日志中搜索谁发起了针对
S3Reader角色的AssumeRole调用。
- 在云环境中,一个实体(用户、角色、服务)可以通过调用AWS STS服务的
-
查询语句:
SELECT userIdentity_ARN, eventName, requestParameters FROM cloudtrail WHERE eventName = 'AssumeRole' AND requestParameters LIKE '%S3Reader%' AND requestParameters LIKE '%drinks%';- 此查询定位了发起
AssumeRole请求的原始身份。
- 此查询定位了发起
-
关键答案:
- 扮演
S3Reader角色的原始IAM用户是:arn:aws:iam::509843726190:user/Moe.Jito
- 扮演
CHALLENGE Three: Deeper into the trail (追踪横向移动)
目标:攻击者利用被攻陷的IAM用户Moe.Jito进行了横向移动。请找出被入侵并用于横向移动的机器(EC2实例)。
-
分析思路:
- 攻击者在获取权限后,通常会进行权限提升或横向移动。一个常见的高危操作是修改Lambda函数代码,以窃取其他IAM凭证。
- 在CloudTrail中,修改Lambda函数的API通常以
Update开头(如UpdateFunctionCode)。
-
查询语句:
SELECT eventTime, eventName, userIdentity_ARN FROM cloudtrail WHERE eventname LIKE 'Update%';- 从结果中筛选出与Lambda相关的更新事件。注意
userIdentity_ARN字段,它显示了执行此操作的临时凭证,其中包含了实例ID。
- 从结果中筛选出与Lambda相关的更新事件。注意
-
关键答案:
- 被入侵的EC2实例ID是:
i-0a44002eec2f16c25(从ARNarn:aws:sts::509843726190:assumed-role/lambdaWorker/i-0a44002eec2f16c25中提取)
- 被入侵的EC2实例ID是:
CHALLENGE Four: Ain't no mountain high enough to keep me away from my logs (主机取证,寻找入口点)
目标:攻击者是如何首次获得对EC2实例 (i-0a44002eec2f16c25) 的访问权限的?找出初始入口点的IP地址。
- 场景:你获得了该EC2实例的root权限,但发现
/var/log目录下的日志文件为空,疑似被清除。 - 关键技术 - OverlayFS挂载覆盖:
- 攻击者没有使用
rm命令直接删除日志(这会触发文件完整性告警),而是使用了一种更隐蔽的手法:将一个空的tmpfs内存文件系统挂载(mount)到真实的/var/log目录之上。 - 这导致系统读取日志时只能看到上层的“空壳”,而真实的日志文件仍完好地保存在底层。
- 攻击者没有使用
- 取证步骤:
- 使用
umount /var/log命令解除覆盖挂载,恢复对真实日志文件的访问。 - 审查关键的认证日志:
cat /var/log/auth.log | grep sshd - 在大量SSH登录记录中,寻找异常条目。例如,系统服务账号(如
postgresql-user)通常被禁止交互式登录,其SSH成功登录记录极为可疑。
- 使用
- 关键答案:
- 初始攻击入口点(另一个被入侵的工作负载)的IP地址是:
102.54.197.238
- 初始攻击入口点(另一个被入侵的工作负载)的IP地址是:
CHALLENGE Five: Now you’re just somebody that I used to log (清除持久化,删除泄密文件)
目标:攻击者在初始入口点的PostgreSQL服务器上建立了持久化后门。找到并利用这个后门,从攻击者的服务器上删除被窃取的秘密配方文件。
- 持久化机制排查:
- 攻击者常通过定时任务(cron)实现持久化。
- 检查系统级定时任务目录:
/var/spool/cron/crontabs/ - 发现属于
postgres用户的定时任务文件:cat /var/spool/cron/crontabs/postgres
- 分析定时任务:
- 该定时任务执行一个Base64编码的脚本。解码后,脚本内容暴露了攻击者的C2服务器信息、凭据以及目标文件路径。
- 关键信息提取:
- 攻击者服务器IP:
34.118.239.100 - HTTP Basic认证凭据:用户名
FizzShadows_1,密码Gx27pQwz92Rk - 泄密文件路径:
/files/ExfilCola-Top-Secret.txt
- 攻击者服务器IP:
- 执行清除操作:
- 利用获取的凭据,向攻击者服务器发送HTTP DELETE请求,删除目标文件。
- 执行命令:
curl -X DELETE -kv 34.118.239.100/files/ExfilCola-Top-Secret.txt -u "FizzShadows_1:Gx27pQwz92Rk" - 成功响应表明文件已被删除。
核心知识点总结
- 云上攻击面的转移:传统网络边界在云上被弱化,攻击焦点转向控制平面。任何能访问互联网并拥有有效凭证的实体都可能成为攻击起点。
- 云安全监控基石 - CloudTrail:
- CloudTrail 记录了所有AWS账户下的API调用活动,是云上应急响应和取证分析的“黑匣子”。
- 通过分析CloudTrail日志,可以清晰地追溯攻击链:从初始凭证泄露 (
AssumeRole),到权限滥用 (GetObject,UpdateFunctionCode),再到资源创建或修改。
- IAM角色扮演 (AssumeRole) 机制:
- 这是AWS权限委派的核心机制,允许一个实体临时获取另一个角色的权限。
- 攻击者一旦获得初始凭证(如泄露的Access Key),会立即通过
AssumeRole尝试获取更高权限的角色,以隐藏其原始身份并扩大攻击范围。
- 主机层攻击手法:
- OverlayFS挂载覆盖:一种高级的日志隐藏技术,比直接删除日志更隐蔽,可绕过简单的文件完整性监控。
- 服务账号滥用:利用默认禁止登录的系统服务账号(如
postgresql-user)建立SSH通道,是一种常见的横向移动方式。 - 持久化机制:利用cron定时任务是最常见、最有效的持久化方法之一,需要排查
/var/spool/cron/crontabs/等目录。
- 云安全防护关键(CSPM与CWPP):
- 云安全态势管理 (CSPM):持续扫描控制平面配置,及时发现诸如S3桶公开暴露、EC2安全组端口过大、IAM权限过宽等错误配置。
- 云工作负载保护平台 (CWPP):在数据平面(如EC2实例内部)进行安全防护,包括文件完整性监控、入侵检测、日志审计等,用于防御和检测OverlayFS挂载、异常cron任务等主机层攻击。
通过以上五个步骤的实战推演,完整再现了一次从云日志审计到主机取证,最终清除威胁的云上安全事件响应流程。
相似文章
相似文章