gl0bal01/pwndocker-reverse

GitHub: gl0bal01/pwndocker-reverse

该项目提供集成了 45+ 个 Pwn 和逆向工程工具的 Docker 镜像,预装多款反汇编器并支持 GDB 插件一键切换。

Stars: 1 | Forks: 0

# pwndocker-reverse [![Build](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/256bf0be08103633.svg)](https://github.com/gl0bal01/pwndocker-reverse/actions) [![Docker](https://img.shields.io/badge/docker-ubuntu%2024.04-blue?logo=docker)](https://ghcr.io/gl0bal01/pwndocker-reverse) [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/gl0bal01/pwndocker-reverse/blob/master/LICENSE) 一个将 45+ 个 CTF pwn 和逆向工程工具打包进单个 Ubuntu 24.04 镜像的 Dockerfile。包含 7 款反汇编器和反编译器(Ghidra、IDA Free、Binary Ninja Free、Cutter、radare2、rizin、retdec),3 个支持一键切换的 GDB 插件,以及预填充的命令历史。 IDA Free 和 Binary Ninja Free 是从其供应商的免费版本下载安装的。用户需自行确保遵守各供应商的许可条款。 ## 为什么? 如果宿主机已安装 Docker,该镜像将 45+ 个工具——否则需要分别安装 Python 包、基于 Java 的反汇编器、GDB 插件和 Ruby gems——打包进一个 Dockerfile 中。 ## 快速开始 ``` # 从 GHCR 拉取(最快) docker pull ghcr.io/gl0bal01/pwndocker-reverse:latest docker run -it --rm --cap-add=SYS_PTRACE -v $(pwd):/ctf ghcr.io/gl0bal01/pwndocker-reverse # 或在本地构建 docker build -t pwndocker-reverse . docker run -it --rm --cap-add=SYS_PTRACE -v $(pwd):/ctf pwndocker-reverse # 使用 X11 转发(需要在宿主机上安装 X11 server —— 参见 GUI tools 部分) docker run -it --rm --cap-add=SYS_PTRACE \ -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v $(pwd):/ctf pwndocker-reverse # 自定义 UID/GID(如果你的宿主机 UID 不是 1000) docker build --build-arg CTF_UID=$(id -u) --build-arg CTF_GID=$(id -g) -t pwndocker-reverse . ``` 您将以用户 `ctf` 身份进入 `/ctf` 目录,拥有 sudo 权限、oh-my-zsh 以及 97 条可通过 Ctrl+R 搜索的预加载历史命令。 ## 可复现性 & 验证 该镜像 **每周一从 `master` 分支重新构建**,确保 `latest` 标签随上游工具版本保持最新。三种使用方式: ``` # Rolling(每周更新)—— 方便,但不可复现 docker pull ghcr.io/gl0bal01/pwndocker-reverse:latest # 按周快照日期—— 较新但固定,适合 CTF 周末 docker pull ghcr.io/gl0bal01/pwndocker-reverse:weekly-20260406 # Immutable digest —— 完全可复现,在团队环境 / 脚本中固定此版本 docker pull ghcr.io/gl0bal01/pwndocker-reverse@sha256: ``` 每个推送的镜像均使用 [cosign](https://github.com/sigstore/cosign) 签名(无密钥,通过 GitHub OIDC),并附带 SBOM 和 SLSA 溯源证明。在敏感环境中运行前请进行验证: ``` cosign verify ghcr.io/gl0bal01/pwndocker-reverse:latest \ --certificate-identity-regexp 'https://github.com/gl0bal01/pwndocker-reverse/.*' \ --certificate-oidc-issuer https://token.actions.githubusercontent.com # 检查 SBOM docker buildx imagetools inspect ghcr.io/gl0bal01/pwndocker-reverse:latest --format '{{ json .SBOM }}' ``` ## 工具列表 | 类别 | 工具 | |---|---| | **漏洞利用开发** | pwntools, angr, ROPgadget, ropper, one_gadget, seccomp-tools, qiling, pwninit | | **库** | capstone, keystone, unicorn, z3, yara, r2pipe *(位于 pwntools venv 中)* | | **反汇编器 / 反编译器** | Ghidra, IDA Free, Binary Ninja Free, Cutter (rizin), retdec, radare2, rizin, pycdc, jd-gui | | **GDB** | pwndbg, GEF, PEDA + 切换脚本 | | **十六进制编辑器** | ImHex, hexedit | | **Fuzzing** | AFL++ | | **动态分析** | frida, strace, ltrace, villoc | | **工作流** | libc-database, pwninit, patchelf, binwalk, unblob, upx | | **分析** | binary-refinery, opengrep, hash-identifier | | **网络** | socat, ncat, tcpdump, tshark, nmap | | **编辑器** | vim, neovim | | **系统** | QEMU user-mode, wabt, gdb-multiarch, p7zip, oh-my-zsh | ## 使用方法 ### 典型 CTF 工作流 ``` # 启动容器并挂载你的挑战目录 docker run -it --rm --cap-add=SYS_PTRACE -v $(pwd):/ctf pwndocker-reverse # 分析 binary checksec --file=./challenge file ./challenge strings -n 8 ./challenge r2 -A ./challenge # 查找 gadgets ROPgadget --binary ./challenge --ropchain ropper --file ./challenge --search "pop rdi" one_gadget ./libc.so.6 # 修补 binary 以使用提供的 libc pwninit --bin ./challenge --libc ./libc.so.6 patchelf --set-interpreter ./ld-linux-x86-64.so.2 --set-rpath . ./challenge # 编写并运行你的 exploit python3 exploit.py ``` ### GDB 插件切换 已安装三个插件,可即时切换: ``` gdb-pwndbg ./binary # launch with pwndbg gdb-gef ./binary # launch with GEF gdb-peda ./binary # launch with PEDA gdb-switch pwndbg # set default for plain `gdb` ``` ### GUI 工具(Ghidra、IDA、Cutter、Binary Ninja、jd-gui) 需要 X11 转发。在 Linux 上原生支持;在 macOS 上安装 [XQuartz](https://www.xquartz.org/),在 Windows 上安装 [VcXsrv](https://sourceforge.net/projects/vcxsrv/) 或使用 WSLg。 ``` docker run -it --rm --cap-add=SYS_PTRACE \ -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v $(pwd):/ctf pwndocker-reverse # 在 container 内部 ghidra # launch Ghidra ida64 ./binary # launch IDA Free binaryninja ./binary # launch Binary Ninja Free start-cutter.sh ./binary # launch Cutter (checks $DISPLAY) jd-gui ./app.jar # launch Java decompiler ``` ### 反汇编器(CLI) ``` r2 -A ./binary # radare2 with analysis rizin -A ./binary # rizin with analysis retdec-decompiler ./binary # decompile to C pycdc ./script.pyc # decompile Python bytecode ``` ### Fuzzing ``` afl-fuzz -i input/ -o output/ -- ./binary @@ afl-cmin -i input/ -o input_min/ -- ./binary @@ ``` ### 动态分析 ``` frida -f ./binary -l script.js # hook functions at runtime frida-trace -f ./binary -i "malloc" # trace calls strace -f ./binary # system call trace ltrace ./binary # library call trace villoc /tmp/ltrace.out > heap.html # heap visualization ``` ### Libc 识别 仅安装了 libc-database 的脚本。按需下载 libc: ``` # 首次使用:下载 libc database(运行一次) cd /opt/libc-database && sudo PATH=/usr/bin:$PATH ./get ubuntu debian # 然后使用它 libc-find d8 e9 31 60 libc-identify ./libc.so.6 libc-dump ./libc.so.6 system __free_hook ``` ### 仿真 ``` qemu-user -L /usr/arm-linux-gnueabihf ./arm_binary qemu-user -g 1234 ./binary # start with GDB server on port 1234 ``` ### 网络 ``` socat TCP-LISTEN:1337,reuseaddr,fork EXEC:./binary # host a binary ncat -lvp 1337 # listen tcpdump -i any -w capture.pcap # capture traffic tshark -r capture.pcap # analyze pcap ``` ## 预填充历史记录 按 Ctrl+R 并搜索。历史记录中已包含 97 条覆盖所有已安装工具的命令——无需记忆语法。 ## 项目结构 ``` Dockerfile # Single-file image definition (13 layers) config/ gdb-pwndbg # GDB launcher (pwndbg) gdb-gef # GDB launcher (GEF) gdb-peda # GDB launcher (PEDA) gdb-switch # Set default GDB plugin jd-gui # java -jar wrapper start-cutter.sh # GUI launcher with $DISPLAY check start-ghidra.sh # GUI launcher with $DISPLAY check zsh_history # Pre-populated command history .dockerignore ``` ## 许可证 [MIT](https://github.com/gl0bal01/pwndocker-reverse/blob/master/LICENSE)
标签:AD攻击面, Amass, Binary Ninja, Docker, Findomain, GDB, Ghidra, IDA, PWN, URL提取, Wayback Machine, 二进制安全, 云资产清单, 反汇编, 反编译, 安全工具集, 安全防御评估, 容器, 开发环境, 网络安全, 自定义密码套件, 请求拦截, 调试, 逆向工具, 逆向工程, 隐私保护