
Penelope Shell Handler
Penelope é um moderno gerenciador de shells para testadores de penetração e jogadores de CTF. Ele oferece uma alternativa mais capaz aos ouvintes netcat básicos, adicionando upgrades automáticos de PTY, gerenciamento de sessões, registro de logs, transferências de arquivos e módulos auxiliares.
O Penelope é executado em sistemas do tipo Unix, incluindo Linux, macOS e FreeBSD, e requer Python 3.6+.
O Penelope está disponível no Kali Linux:
sudo apt update
sudo apt install penelope
O Penelope é implementado inteiramente com a biblioteca padrão do Python, permitindo sua execução como um script autônomo sem dependências externas:
wget -q https://raw.githubusercontent.com/brightio/penelope/refs/heads/main/penelope.py && python3 penelope.py
Para instalar a versão mais recente diretamente do GitHub:
pipx install git+https://github.com/brightio/penelope
Para um caminho de lançamento versionado e mais estável, o Penelope também está disponível no PyPI:
pipx install penelope-shell-handler
| Funcionalidade | Alvo Unix-like | Alvo Windows |
|---|---|---|
| Auto-upgrade do shell | PTY | readline(*) |
| Redimensionamento de terminal em tempo real | ✅ | ❌ |
| Registro de atividade do shell | ✅ | ✅ |
| Download de arquivos/pastas remotos | ✅ | ✅ |
| Upload de arquivos/pastas locais/HTTP | ✅ | ✅ |
| Execução de script local/HTTP em memória com download de saída em tempo real | ✅ | ❌ |
| Redirecionamento de porta local | ✅ | ❌ |
| Abrir shells em múltiplas abas e/ou hosts | ✅ | ❌ |
| Manter automaticamente N shells ativos por host (reabrir se morrer) | ✅ | ❌ |
(*) Pode ser atualizado manualmente para PTY com o comando upgrade
⚠️ O suporte ao Windows é experimental e está em desenvolvimento ativo.
set DisablePayloadHandler True--mcp (HTTP local, autenticado por token), conduzindo os mesmos shells junto com você

penelope # Listening for reverse shells on 0.0.0.0:4444
penelope -p 5555 # Listening for reverse shells on 0.0.0.0:5555
penelope -p 4444,5555 # Listening for reverse shells on 0.0.0.0:4444 and 0.0.0.0:5555
penelope -i eth0 -p 5555 # Listening for reverse shells on eth0:5555
penelope -a # Listening for reverse shells on 0.0.0.0:4444 and show sample reverse shell payloads
penelope -c target -p 3333 # Connect to a bind shell on target:3333
penelope ssh user@target # Get a reverse shell from target on local port 4444
penelope -p 5555 ssh user@target # Get a reverse shell from target on local port 5555
penelope -i eth0 -p 5555 -- ssh -l user -p 2222 target # Get a reverse shell from target on eth0, local port 5555 (use -- if ssh needs switches)
penelope -s <File/Folder> # Share a file or folder via HTTP

-s)O Penelope também pode ser usado como um servidor de arquivos HTTP rápido.
penelope -s file.txt # Serve a single file on 0.0.0.0:8000
penelope -s /path/to/dir # Serve a whole folder
penelope -s a.sh b.elf notes.txt # Serve several items at once
penelope -s . -p 80 # Serve the current dir on port 80
penelope -s secret.txt -prefix xk9 # Hide behind a URL prefix: /xk9/secret.txt
penelope -s -u # Upload mode: accept PUT/POST into the CWD
penelope -s -u -ud /tmp/loot # Upload mode, store received files in /tmp/loot
Ao iniciar, o Penelope imprime um link pronto para uso por interface (e uma dica de upload quando -u está definido), permitindo que você copie e cole diretamente no shell do alvo.
Como mostrado no vídeo abaixo, em apenas alguns segundos podemos:
https://github.com/brightio/penelope/assets/65655412/7295da32-28e2-4c92-971f-09423eeff178
Algumas notas:
F12 para desanexar o shell PTY e ir ao Menu Principal. Se o upgrade não foi possível e você acabou com um shell básico, pode desanexá-lo com Ctrl+C. Isso também evita o encerramento acidental do shell.interact 1, você pode digitar apenas i 1.
positional arguments:
args Arguments for -s/--serve and SSH reverse shell modes
options:
-p, --ports Ports (comma separated) to listen/connect/serve, depending on -i/-c/-s options
(Default: 4444/5555/8000)
Reverse or Bind shell?:
-i, --interface Local interface/IP to listen. (Default: 0.0.0.0)
-c, --connect Bind shell Host
-j, --jump Reverse shell jump endpoints