02loveslollipop/OpenCROW
GitHub: 02loveslollipop/OpenCROW
一个面向 AI Agent 的 CTF 工作站快速部署工具,通过 Conda 环境一键安装完整的攻击性工作流工具链并注入模块化 Codex 技能包。
Stars: 1 | Forks: 0
# OpenCROW
Open Codex Runtime for Offensive Workflows(开放 Codex 攻击性工作流运行时)。
基于现有的 Anaconda 或 Miniconda 安装环境,快速构建一个攻击性工作流工作站。
此设置会创建或更新 `ctf` conda 环境,安装该工作空间使用的 Python solver/exploit 工具栈,并安装此处添加的原生逆向和 pwn 工具。
它还会将 Codex 技能文件夹打包并在安装时注入到 `~/.codex/skills`。
## 要求
- 已安装 Anaconda 或 Miniconda
- Ubuntu 或其他支持 `apt-get` 的类 Debian 系统
- 拥有 `sudo` 权限以安装系统软件包
- 具备网络访问
如果未安装 Conda,安装程序将停止并显示官方下载链接:
- Miniconda:
- Anaconda:
安装程序假定:
- 你的用户本地二进制文件位于 `~/.local/bin`
- 你的可选大型工具位于 `~/.local/opt`
- 主工作环境名为 `ctf`
## 安装内容
### `ctf` 中的 Python 包
固定版本见 [requirements-ctf.txt](/home/zerotwo/ctf-toolkit-bootstrap/requirements-ctf.txt):
- `angr`
- `pwntools`
- `z3-solver`
- `claripy`
- `capstone`
- `unicorn`
- `keystone-engine`
- `ropper`
- `r2pipe`
- `lief`
- `scapy`
- `fpylll`
- 此精确工具栈所需的支撑包
### 系统软件包
- `checksec`
- `gdbserver`
- `ltrace`
- `nasm`
- `patchelf`
- `python3-xlib`
- `qemu-user`
- `qemu-user-static`
- `radare2`
- `rsync`
- `unzip`
- `ruby`
- `curl`
- `git`
- `openjdk-21-jre`
### 用户本地工具
- `pwndbg`
- `pwninit`
- `seccomp-tools`
- `ghidra-headless`
- `ghidra`
### 注入到 `~/.codex/skills` 的 Codex 技能
- `opencrow-crypto-toolbox`
- `opencrow-pwn-toolbox`
- `opencrow-reversing-toolbox`
- `opencrow-network-toolbox`
- `opencrow-web-toolbox`
- `minecraft-async`
- `netcat-async`
- `sagemath`
- `ssh-async`
## 包含技能
OpenCROW 工具箱层现在将原来宽泛的 `ctf-tools` 类别拆分为更细粒度的技能,以使 agent 路由更精确且更节省上下文。
### `opencrow-crypto-toolbox`
在 `ctf` 环境中进行以 Python 为主的密码学工作时使用此技能,尤其当 Sage 并非必要或过于厚重时。它覆盖了使用 `z3` 的约束求解、使用 `fpylll` 的格运算,以及 CTF 密码学题目中常见的周边 Python 胶水代码;此类题目通常需要 agent 解析题目数据、建模未知值并快速搜索解。
当题目主要是符号方程、位向量、密钥恢复约束或用普通 Python 表达的格归约时,它是合适的默认选择。当问题需要有限域、椭圆曲线或 Sage 原生代数时,`sagemath` 仍然是更优匹配。
典型用例:
- 使用 `z3` 求解符号或位向量密码题
- 使用 `fpylll` 运行 LLL 或 BKZ 工作流
- 为密文、预言机或抄本分析构建小型 Python 辅助脚本
### `opencrow-pwn-toolbox`
在 `ctf` 环境中进行以漏洞利用为主的 PWN 工作流时使用此技能。它将已安装的运行时交互工具——例如 `pwntools`、`pwndbg`、`gdb`、`gdbserver`、`checksec`、`patchelf`、`pwninit`、`seccomp-tools`、`qemu-user`、`gcc` 和 `nasm`——归集为专用的漏洞利用工具箱,而不是与无关的分析任务混在一起。
当目标是审查 ELF、理解缓解机制、打上附带的本机 loader 或 libc、调试崩溃原语、或构建并测试 exploit 脚本时,这是正确的工具箱。它使 agent 专注于“夺取控制权”的路径,而非更宽泛的逆向工程或密码学栈。
典型用例:
- 使用 `pwntools` 构建 exploit 脚本
- 使用 `checksec` 检查缓解措施
- 使用 `gdb` 或 `pwndbg` 本地调试
- 使用 `pwninit` 或 `patchelf` 修补题目运行环境
- 通过 `qemu-user` 运行非本机架构二进制
### `opencrow-reversing-toolbox`
在 `ctf` 环境中进行以二进制理解为主的逆向工作流时使用此技能。它汇集了已安装的反汇编、模拟、符号执行、追踪与修补栈:`angr`、`claripy`、`capstone`、`keystone`、`unicorn`、`ropper`、`r2pipe`、`lief`、`ghidra-headless`、`radare2`、`objdump`、`strace`、`ltrace` 和 `binwalk`。
当任务是恢复逻辑、审查控制流、反编译或提升行为、模拟指令,或提取固件内容时,这是更合适的选择。它有意将“理解二进制”的工作流与漏洞投递分离,从而让技能触发更精准,指令保持相关。
典型用例:
- 使用 `angr` 编写符号执行或 CFG 恢复脚本
- 使用 `capstone`、`keystone` 和 `unicorn` 反汇编或模拟指令
- 使用 `radare2`、`objdump` 或 `ghidra-headless` 审查二进制
- 使用 `strace` 或 `ltrace` 追踪运行时行为
- 使用 `binwalk` 提取或审查嵌入的二进制大对象
### `opencrow-network-toolbox`
在 `ctf` 环境中进行以 `scapy` 为主的分组与协议级任务时使用此技能。它涵盖以 Python 驱动的分组构造、协议解析、合成流量生成和 PCAP 审查,而不与持久化流会话混淆。
目前这个工具箱的范围有意保持狭窄,因为从当前已安装栈来看,只有 `scapy` 属于这一类。但这仍然对网络题目自动化、分组解码器以及受益于结构化分组处理的快速协议实验非常有用。
典型用例:
- 使用 Python 审查或转换 PCAP
- 为网络题目生成自定义分组
- 使用 `scapy` 编写临时解析器或协议辅助工具
### `opencrow-web-toolbox`
仅将此技能作为未来 Web CTF 工具的占位类别使用。当前 OpenCROW 工作站尚未映射专门的 Web 工具,因此该技能的存在是为了保留类别,并明确显示缺口,而不是假装工具箱已填充。
目前它附带一个打印 `TODO: update with real tools` 的占位工具。一旦向工作站加入专门的 HTTP、浏览器或 Web 漏洞利用工具,该工具箱应随之更新为真实指令与具体工具映射。
典型用例:
- 标识 Web 是计划中的工具箱类别
- 为将来添加真正的 Web 工具提供稳定位置
### `minecraft-async`
当题目依赖驱动本地安装的 Minecraft 客户端时使用此技能。它直接启动现有的 `~/.minecraft` Java 安装,优先使用在 Minecraft CTF 基础设施中常见的离线模式身份,并以异步方式管理运行中的客户端,而非依赖官方启动器 UI。
它还暴露基于 X11 的快捷操作,用于聚焦游戏窗口、发送聊天消息、执行斜杠命令、截图以及检查 Minecraft 日志。这使得它对需要进程级控制与视觉状态检查的任务非常有用,例如加入服务器、进入世界、传送、验证屏幕状态,或诊断断连与启动失败。
典型用例:
- 直接启动并进入多人服务器或单人世界
- 使用替代的离线用户名进行操作
- 快速发送游戏内命令而无需手动输入
- 在调试状态时审查 `latest.log` 并截图
### `netcat-async`
当目标使用面向行或原始 TCP 协议通信,且连接需要在多个 agent 动作之间保持打开时使用此技能。与一次性 `nc` 调用不同,它会在后台保持一个命名会话,允许 agent 增量发送输入,并保留读取日志以供后续检查。
这对交互式 CTF 服务、位于 `socat` 之后的菜单驱动型二进制、自定义题目守护进程,或任何读取与写入发生在不同时间的网络流非常有用。会话模型保持简单:启动、发送、读取、检查状态、停止。
典型用例:
- 通过 TCP 与远程题目服务交互
- 在探索协议行为时保持连接
- 捕获并尾部跟踪响应而不丢失会话状态
- 在测试载荷时避免反复重连
### `sagemath`
对于需要真正的 Sage 而非普通 Python 的数学密集或代数密集任务,使用此技能。它适用于有限域、椭圆曲线、模算术、格、多项式代数、小根攻击或 PRNG 分析在 SageMath 中更简便或仅在 SageMath 中可行的密码学与 CTF 题目类别。
该技能是对 `opencrow-crypto-toolbox` 的补充而非替代。如果是普通 Python 脚本、求解器胶水或适合 `fpylll` 的格代码工作,密码学工具箱是更好的默认选择。如果工作依赖 Sage 对象、符号数论、格归约模式或可复用的 `.sage` 模板,该技能是正确选择。
典型用例:
- 求解 RSA、ECC、格或隐藏数风格题目
- 处理有限域算术与曲线点
- 在 `.sage` 文件中原型化数论攻击
- 使用内置的 Sage 模板进行常见密码攻击配置
### `ssh-async`
当 agent 需要持久化 SSH shell 而非一次性 `ssh host command` 调用时使用此技能。与 `netcat-async` 类似,它保持一个命名会话打开,让 agent 发送命令、稍后检查输出,并在多个步骤之间复用同一个经过认证的 shell 上下文。
它适用于远程调试、部署、日志检查、长期管理会话,以及当前工作目录、shell 环境或提示符状态很重要的工作流。其设计聚焦于面向行的 shell 使用,而非全屏 TUI 应用。
典型用例:
- 为整个调试会话保持一个远程 shell 打开
- 在同一主机上检查日志并重复运行命令而无需重连
- 增量式地在远程题目环境中推进工作
- 在迭代修复或命令时保留 shell 上下文
## 安装
运行:
```
bash /home/zerotwo/ctf-toolkit-bootstrap/scripts/install.sh
```
可选:
```
bash /home/zerotwo/ctf-toolkit-bootstrap/scripts/install.sh --env myctf
bash /home/zerotwo/ctf-toolkit-bootstrap/scripts/install.sh --dry-run
```
## 验证
运行:
```
bash /home/zerotwo/ctf-toolkit-bootstrap/scripts/verify.sh
```
或验证其他环境:
```
bash /home/zerotwo/ctf-toolkit-bootstrap/scripts/verify.sh --env myctf
```
## 技能注入
仓库在 [skills](/home/zerotwo/ctf-toolkit-bootstrap/skills) 下携带打包的技能,并在安装期间将其复制到 `~/.codex/skills`。
手动同步:
```
bash /home/zerotwo/ctf-toolkit-bootstrap/scripts/sync_skills.sh
```
手动移除:
```
bash /home/zerotwo/ctf-toolkit-bootstrap/scripts/remove_skills.sh
```
## Make 目标
运行:
```
make -C /home/zerotwo/ctf-toolkit-bootstrap install ENV=ctf
make -C /home/zerotwo/ctf-toolkit-bootstrap dry-run ENV=ctf
make -C /home/zerotwo/ctf-toolkit-bootstrap verify ENV=ctf
make -C /home/zerotwo/ctf-toolkit-bootstrap uninstall ENV=ctf
make -C /home/zerotwo/ctf-toolkit-bootstrap sync-skills
make -C /home/zerotwo/ctf-toolkit-bootstrap remove-skills
```
## 卸载
默认情况下,卸载脚本会移除其创建的用户本地工具与符号链接:
```
bash /home/zerotwo/ctf-toolkit-bootstrap/scripts/uninstall.sh
```
可选:
```
bash /home/zerotwo/ctf-toolkit-bootstrap/scripts/uninstall.sh --env ctf --remove-env
bash /home/zerotwo/ctf-toolkit-bootstrap/scripts/uninstall.sh --purge-apt
bash /home/zerotwo/ctf-toolkit-bootstrap/scripts/uninstall.sh --dry-run
```
## 备注
- 安装程序不会移除已有的环境或工具。
- 安装程序会优先检查 `PATH` 中的 `conda`,随后是常见安装位置,例如 `~/miniconda3` 与 `~/anaconda3`。
- 卸载脚本默认保持保守。除非被请求,否则不会移除 conda 环境或 apt 软件包。
- 打包技能同步对每个受管技能目录使用 `rsync --delete`,并且现在也会移除已退役的 `ctf-tools` 目录,因此仓库副本将成为 `~/.codex/skills` 下 OpenCROW 工具箱技能以及 `minecraft-async`、`netcat-async`、`sagemath`、`ssh-async` 的唯一真实来源。
- `minecraft-async` 直接启动现有的 `~/.minecraft` Java 客户端以支持离线用户名,并通过 `python3-xlib` 使用 X11 自动化实现快速游戏内操作。
- `pwndbg` 使用上游无 root 安装器进行安装。
- `ghidra` 从 NSA 官方 GitHub 发布页下载并解压到 `~/.local/opt/ghidra`。
- `seccomp-tools` 使用 `gem --user-install` 安装并符号链接到 `~/.local/bin`。
- GitHub Actions 工作流是脚本有效性与 dry-run 行为的冒烟测试。它不会在 CI 中下载完整工具链。
标签:Angr, Codex Skills, Conda, Debian, DNS 解析, Ghidra, HTTP工具, IP 地址批量处理, OpenCROW, PE 加载器, Pwn, Pwndbg, Pwntools, Python, Radare2, Scapy, TGT, TLS指纹, XML 请求, Z3求解器, 二进制漏洞利用, 云资产清单, 大语言模型工具, 安全开发, 密码学, 应用安全, 手动系统调用, 攻击工具箱, 攻防演练, 无后门, 环境初始化, 网络安全, 网络安全审计, 自动化环境部署, 逆向工具, 逆向工程, 隐私保护