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角色。

  1. 分析思路

    • 由于目标文件是“recipe”(配方),因此需要在S3数据事件日志中筛选出与“recipe”相关的GetObject(读取对象)操作。
    • 通过分析useragent字段可以进一步识别可疑的访问来源。
  2. 查询语句

    -- 首先查看表结构
    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)是重要线索。
  3. 关键答案

    • 参与攻击的IAM角色是:arn:aws:sts::509843726190:assumed-role/S3Reader/drinks

CHALLENGE Two: Follow, follow the trail (追踪原始身份)

目标:找出是哪个IAM用户或角色扮演(AssumeRole)了上一步发现的S3Reader角色。

  1. 分析思路

    • 在云环境中,一个实体(用户、角色、服务)可以通过调用AWS STS服务的AssumeRole API来临时获取另一个角色的凭证。
    • 我们需要在CloudTrail日志中搜索谁发起了针对S3Reader角色的AssumeRole调用。
  2. 查询语句

    SELECT
     userIdentity_ARN,
     eventName,
     requestParameters
    FROM cloudtrail
    WHERE eventName = 'AssumeRole'
    AND requestParameters LIKE '%S3Reader%' AND requestParameters LIKE '%drinks%';
    
    • 此查询定位了发起AssumeRole请求的原始身份。
  3. 关键答案

    • 扮演S3Reader角色的原始IAM用户是:arn:aws:iam::509843726190:user/Moe.Jito

CHALLENGE Three: Deeper into the trail (追踪横向移动)

目标:攻击者利用被攻陷的IAM用户Moe.Jito进行了横向移动。请找出被入侵并用于横向移动的机器(EC2实例)。

  1. 分析思路

    • 攻击者在获取权限后,通常会进行权限提升或横向移动。一个常见的高危操作是修改Lambda函数代码,以窃取其他IAM凭证。
    • 在CloudTrail中,修改Lambda函数的API通常以Update开头(如UpdateFunctionCode)。
  2. 查询语句

    SELECT
     eventTime,
     eventName,
     userIdentity_ARN
    FROM cloudtrail
    WHERE eventname LIKE 'Update%';
    
    • 从结果中筛选出与Lambda相关的更新事件。注意userIdentity_ARN字段,它显示了执行此操作的临时凭证,其中包含了实例ID。
  3. 关键答案

    • 被入侵的EC2实例ID是:i-0a44002eec2f16c25(从ARN arn:aws:sts::509843726190:assumed-role/lambdaWorker/i-0a44002eec2f16c25 中提取)

CHALLENGE Four: Ain't no mountain high enough to keep me away from my logs (主机取证,寻找入口点)

目标:攻击者是如何首次获得对EC2实例 (i-0a44002eec2f16c25) 的访问权限的?找出初始入口点的IP地址。

  1. 场景:你获得了该EC2实例的root权限,但发现/var/log目录下的日志文件为空,疑似被清除。
  2. 关键技术 - OverlayFS挂载覆盖
    • 攻击者没有使用rm命令直接删除日志(这会触发文件完整性告警),而是使用了一种更隐蔽的手法:将一个空的tmpfs内存文件系统挂载(mount)到真实的/var/log目录之上。
    • 这导致系统读取日志时只能看到上层的“空壳”,而真实的日志文件仍完好地保存在底层。
  3. 取证步骤
    • 使用 umount /var/log 命令解除覆盖挂载,恢复对真实日志文件的访问。
    • 审查关键的认证日志:cat /var/log/auth.log | grep sshd
    • 在大量SSH登录记录中,寻找异常条目。例如,系统服务账号(如postgresql-user)通常被禁止交互式登录,其SSH成功登录记录极为可疑。
  4. 关键答案
    • 初始攻击入口点(另一个被入侵的工作负载)的IP地址是:102.54.197.238

CHALLENGE Five: Now you’re just somebody that I used to log (清除持久化,删除泄密文件)

目标:攻击者在初始入口点的PostgreSQL服务器上建立了持久化后门。找到并利用这个后门,从攻击者的服务器上删除被窃取的秘密配方文件。

  1. 持久化机制排查
    • 攻击者常通过定时任务(cron)实现持久化。
    • 检查系统级定时任务目录:/var/spool/cron/crontabs/
    • 发现属于postgres用户的定时任务文件:cat /var/spool/cron/crontabs/postgres
  2. 分析定时任务
    • 该定时任务执行一个Base64编码的脚本。解码后,脚本内容暴露了攻击者的C2服务器信息、凭据以及目标文件路径。
    • 关键信息提取
      • 攻击者服务器IP34.118.239.100
      • HTTP Basic认证凭据:用户名 FizzShadows_1,密码 Gx27pQwz92Rk
      • 泄密文件路径/files/ExfilCola-Top-Secret.txt
  3. 执行清除操作
    • 利用获取的凭据,向攻击者服务器发送HTTP DELETE请求,删除目标文件。
    • 执行命令
      curl -X DELETE -kv 34.118.239.100/files/ExfilCola-Top-Secret.txt -u "FizzShadows_1:Gx27pQwz92Rk"
      
    • 成功响应表明文件已被删除。

核心知识点总结

  1. 云上攻击面的转移:传统网络边界在云上被弱化,攻击焦点转向控制平面。任何能访问互联网并拥有有效凭证的实体都可能成为攻击起点。
  2. 云安全监控基石 - CloudTrail
    • CloudTrail 记录了所有AWS账户下的API调用活动,是云上应急响应和取证分析的“黑匣子”。
    • 通过分析CloudTrail日志,可以清晰地追溯攻击链:从初始凭证泄露 (AssumeRole),到权限滥用 (GetObject, UpdateFunctionCode),再到资源创建或修改。
  3. IAM角色扮演 (AssumeRole) 机制
    • 这是AWS权限委派的核心机制,允许一个实体临时获取另一个角色的权限。
    • 攻击者一旦获得初始凭证(如泄露的Access Key),会立即通过AssumeRole尝试获取更高权限的角色,以隐藏其原始身份并扩大攻击范围。
  4. 主机层攻击手法
    • OverlayFS挂载覆盖:一种高级的日志隐藏技术,比直接删除日志更隐蔽,可绕过简单的文件完整性监控。
    • 服务账号滥用:利用默认禁止登录的系统服务账号(如postgresql-user)建立SSH通道,是一种常见的横向移动方式。
    • 持久化机制:利用cron定时任务是最常见、最有效的持久化方法之一,需要排查/var/spool/cron/crontabs/等目录。
  5. 云安全防护关键(CSPM与CWPP)
    • 云安全态势管理 (CSPM):持续扫描控制平面配置,及时发现诸如S3桶公开暴露、EC2安全组端口过大、IAM权限过宽等错误配置。
    • 云工作负载保护平台 (CWPP):在数据平面(如EC2实例内部)进行安全防护,包括文件完整性监控、入侵检测、日志审计等,用于防御和检测OverlayFS挂载、异常cron任务等主机层攻击。

通过以上五个步骤的实战推演,完整再现了一次从云日志审计到主机取证,最终清除威胁的云上安全事件响应流程。

相似文章
相似文章
 全屏