
Penelope Gestore di Shell
Penelope è un moderno gestore di shell per penetration tester e giocatori di CTF. Offre un'alternativa più potente ai semplici listener netcat, aggiungendo aggiornamenti automatici PTY, gestione delle sessioni, logging, trasferimento di file e moduli helper.
Penelope funziona su sistemi Unix-like, inclusi Linux, macOS e FreeBSD, e richiede Python 3.6+.
Penelope è disponibile in Kali Linux:
sudo apt update
sudo apt install penelope
Penelope è implementato interamente con la libreria standard di Python, permettendo di essere eseguito come script standalone senza dipendenze esterne:
wget -q https://raw.githubusercontent.com/brightio/penelope/refs/heads/main/penelope.py && python3 penelope.py
Per installare l'ultima versione upstream direttamente da GitHub:
pipx install git+https://github.com/brightio/penelope
Per un percorso di rilascio versionato e più stabile, Penelope è disponibile anche su PyPI:
pipx install penelope-shell-handler
| Funzionalità | Target Unix-like | Target Windows |
|---|---|---|
| Aggiornamento automatico della shell | PTY | readline(*) |
| Ridimensionamento terminale in tempo reale | ✅ | ❌ |
| Logging dell'attività della shell | ✅ | ✅ |
| Download di file/cartelle remoti | ✅ | ✅ |
| Upload di file/cartelle locali/HTTP | ✅ | ✅ |
| Esecuzione di script locali/HTTP in memoria con download dell'output in tempo reale | ✅ | ❌ |
| Inoltro porte locale | ✅ | ❌ |
| Avvio di shell su più tab e/o host | ✅ | ❌ |
| Mantenimento automatico di N shell attive per host (riavvio in caso di morte) | ✅ | ❌ |
(*) Può essere aggiornato manualmente a PTY con il comando upgrade
⚠️ Il supporto per Windows è sperimentale e in fase di sviluppo attivo.
set DisablePayloadHandler True--mcp (HTTP locale, autenticazione tramite token), pilotando le stesse shell insieme a te

penelope # In ascolto per shell reverse su 0.0.0.0:4444
penelope -p 5555 # In ascolto per shell reverse su 0.0.0.0:5555
penelope -p 4444,5555 # In ascolto per shell reverse su 0.0.0.0:4444 e 0.0.0.0:5555
penelope -i eth0 -p 5555 # In ascolto per shell reverse su eth0:5555
penelope -a # In ascolto per shell reverse su 0.0.0.0:4444 e mostra payload di shell reverse di esempio
penelope -c target -p 3333 # Connessione a una bind shell su target:3333
penelope ssh user@target # Ottieni una shell reverse dal target sulla porta locale 4444
penelope -p 5555 ssh user@target # Ottieni una shell reverse dal target sulla porta locale 5555
penelope -i eth0 -p 5555 -- ssh -l user -p 2222 target # Ottieni una shell reverse dal target su eth0, porta locale 5555 (usa -- se ssh necessita di opzioni)
penelope -s <File/Cartella> # Condividi un file o una cartella tramite HTTP

-s)Penelope può essere utilizzato anche come server HTTP rapido per file.
penelope -s file.txt # Servi un singolo file su 0.0.0.0:8000
penelope -s /path/to/dir # Servi un'intera cartella
penelope -s a.sh b.elf notes.txt # Servi più elementi contemporaneamente
penelope -s . -p 80 # Servi la directory corrente sulla porta 80
penelope -s secret.txt -prefix xk9 # Nascondi dietro un prefisso URL: /xk9/secret.txt
penelope -s -u # Modalità upload: accetta PUT/POST nella directory corrente
penelope -s -u -ud /tmp/loot # Modalità upload, salva i file ricevuti in /tmp/loot
All'avvio, Penelope stampa un link pronto all'uso per ogni interfaccia (e un suggerimento per l'upload quando è impostata -u), così puoi copiarlo e incollarlo direttamente nella shell del target.
Come mostrato nel video qui sotto, in pochi secondi possiamo:
https://github.com/brightio/penelope/assets/65655412/7295da32-28e2-4c92-971f-09423eeff178
Alcune note:
F12 per staccare la shell PTY e andare al Menu Principale. Se l'aggiornamento non è stato possibile e hai una shell base, puoi staccarla con Ctrl+C. Questo impedisce anche l'uccisione accidentale della shell.interact 1 puoi semplicemente digitare i 1.
positional arguments:
args Argomenti per -s/--serve e modalità shell reverse SSH