CCAT开发者指南:编写自定义攻击模块规范详解(module_info/main/summary全解)

CCAT开发者指南:编写自定义攻击模块规范详解(module_info/main/summary全解) CCAT开发者指南编写自定义攻击模块规范详解module_info/main/summary全解【免费下载链接】ccatCloud Container Attack Tool (CCAT) is a tool for testing security of container environments.项目地址: https://gitcode.com/gh_mirrors/ccat/ccatCCATCloud Container Attack Tool云容器攻击工具是一款用于测试容器环境安全性的开源工具支持枚举与拉取 AWS ECR、GCP GCR 中的镜像仓库并可通过 Docker Backdoor 模块向镜像注入后门。想为 CCAT 贡献一款自定义攻击模块本文带你快速吃透module_info、main()、summary()三大核心规范一次看懂 CCAT 攻击模块的编写与运行全貌。CCAT 模块架构攻击模块是如何被加载的CCAT 的所有能力都以「模块Module」的形式组织在modules/目录下每个模块是一个独立的文件夹 main.py文件modules/ecr__enum_repos/ —— 枚举 ECR 仓库category: ENUMmodules/ecr__pull_repos/ —— 拉取 ECR 镜像category: Containermodules/ecr__push_repos/ —— 推送镜像到 ECRmodules/gcr__enum_repos/、modules/gcr__pull_repos/、modules/gcr__push_repos/ —— GCR 系列操作modules/docker__backdoor/ —— Docker 镜像后门注入category: PERSIST主程序 ccat.py 启动后会按「云厂商」分组把各模块挂进交互菜单AWS / GCP / Docker 三大区块用户通过方向键选择菜单项CCAT 就会调用对应模块的main()并把结果交给summary()渲染输出。启动 CCAT 后的主菜单界面如下典型攻击场景也是模块协作的示范拿到被泄露的 AWS 凭证 → 枚举 ECR 仓库 → 拉取目标镜像 → 制作带后门的镜像 → 推回 ECR。每个环节都对应一个模块module_info 详解模块的「身份证」打开任意模块以 modules/ecr__enum_repos/main.py 为例文件开头第一个要写的就是module_info字典——它是模块的元数据CCAT 框架依赖它识别和展示模块键名作用示例值name模块唯一名称通常与目录同名ecr__enum_reposauthor作者署名Jack Ganbold of Rhino Security Labscategory攻击阶段分类ENUM/PERSIST/Containerone_liner一句话简介展示在菜单中Enumerates ECR repositories.description更详细的描述同 one_liner 或扩展说明services涉及的云/容器服务[ECR]、[Docker]prerequisite_modules前置依赖模块一般留空[]external_dependencies外部依赖一般留空[]arguments_to_autocomplete需要补全的参数一般留空[]data_saved数据落盘路径可选./data/ecr__enum_repos_data.json 编写建议name与目录名保持一致双下划线__分隔云厂商与操作方便导入与维护category用大写阶段词ENUM枚举、EXPLOIT利用、PERSIST持久化等便于后续按阶段检索模块若模块会保存中间数据如枚举结果供拉取模块复用务必声明data_saved让使用者知道数据存到哪里。main() 详解执行入口与「count payload」返回规范每个模块必须暴露一个main(args)函数。CCAT 的调用约定是入参args是一个字典由 CLI 层ccat.py中 AWS/GCP/Docker 类的ask_*方法通过交互问答收集后传入例如aws_cli_profile、aws_region、repository_uri等出参main()返回一个统一结构的数据字典{ count: 0, # 本次操作的数量统计成功处理的对象个数 payload: {...} # 本次操作的核心结果数据 }以 modules/docker__backdoor/main.py 为例构建带后门的镜像成功后data[count]置为 1payload中记录repository_uri、target_image_tag、build_image_tag、dockerfile等关键信息。count会被summary()直接引用是模块间最轻量的「结果信号」。编写main()的三条军规异常不崩盘网络类操作boto3、docker SDK要用try/except包裹错误打印到sys.stderr避免拖垮整个 CLI纯函数化模块逻辑只依赖args入参方便在__main__分支中用fire.Fire(set_args)独立跑测试各模块文件末尾都有set_args辅助函数支持命令行直跑数据即接口把枚举结果写进payloadccat.py会将其缓存进extentions[aws].data供后续「拉取全部已枚举仓库」等选项直接消费。summary() 详解1000 字符的「结果播报员」summary(data)接收main()返回的数据字典生成给用户看的文字摘要必须遵守两条硬性规则框架在 ccat.py 的print_module_summary中强制执行必须是字符串超长或非 str 会直接抛异常长度不得超过 1000 个字符超出会报ValueError。优秀 summary 的写法开头报数量、结尾指路。例如ecr__enum_repos模块输出「共枚举到 N 个 ECR 仓库数据已保存至 ./data/...」docker__backdoor模块输出「1 Images built」。用户看到模块完成提示后就知道下一步去docker images里查验结果在 CCAT 的 Docker Backdoor 模块中summary()只输出一行{count} Images built简洁却完整地传达了模块执行结果。模块运行全流程从菜单选择到结果展示当你点击菜单中的「Docker Backdoor」时ccat.py的run_module()会按固定流水线执行你的模块调用对应ask_*方法交互收集参数args打印Running module {name}...调用你的main(args)拿到data调用你的summary(data)校验并打印MODULE SUMMARY。所以一个合格模块 规范的module_info 返回 count/payload 的main() 1000 字符内的summary()三件套齐备即可无缝接入 CCAT 的交互框架。自定义模块编写检查清单✅ 目录命名遵循云厂商__操作名约定如ecr__enum_repos内含main.py与空__init__.py✅module_info十个键填全name与目录名一致category使用大写阶段词✅main(args)返回{count: int, payload: dict}异常全部捕获✅summary(data)返回 str 且 ≤ 1000 字符先数量后指引✅ 保留__main__分支 set_args支持脱离 CCAT 单独调试✅ 有外部依赖如boto3、docker先确认已列入 requirements.txt。掌握以上规范后参照 modules/gcr__push_repos/main.py 这类结构最完整的模块照葫芦画瓢你就能为自己的容器安全测试工具箱添上一枚新的 CCAT 攻击模块了 。更多场景化用法枚举→拉取→后门→推送的完整操作演示可参考官方文档 docs/SCENARIO_README.md。【免费下载链接】ccatCloud Container Attack Tool (CCAT) is a tool for testing security of container environments.项目地址: https://gitcode.com/gh_mirrors/ccat/ccat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考