
Penelope Shell Handler
Penelope ist ein moderner Shell-Handler für Penetrationstester und CTF-Spieler. Er bietet eine leistungsfähigere Alternative zu einfachen Netcat-Listenern und fügt automatische PTY-Upgrades, Sitzungsverwaltung, Protokollierung, Dateiübertragungen und Hilfsmodule hinzu.
Penelope läuft auf Unix-ähnlichen Systemen, einschließlich Linux, macOS und FreeBSD, und benötigt Python 3.6+.
Penelope ist in Kali Linux verfügbar:
sudo apt update
sudo apt install penelope
Penelope ist vollständig mit Pythons Standardbibliothek implementiert, sodass es als eigenständiges Skript ohne externe Abhängigkeiten ausgeführt werden kann:
wget -q https://raw.githubusercontent.com/brightio/penelope/refs/heads/main/penelope.py && python3 penelope.py
So installierst du die neueste Upstream-Version direkt von GitHub:
pipx install git+https://github.com/brightio/penelope
Für einen versionierten und stabileren Release-Pfad ist Penelope auch auf PyPI verfügbar:
pipx install penelope-shell-handler
| Funktion | Unix-ähnliches Ziel | Windows-Ziel |
|---|---|---|
| Automatisches Shell-Upgrade | PTY | readline(*) |
| Echtzeit-Größenänderung des Terminals | ✅ | ❌ |
| Protokollierung der Shell-Aktivität | ✅ | ✅ |
| Herunterladen entfernter Dateien/Ordner | ✅ | ✅ |
| Hochladen lokaler/HTTP-Dateien/Ordner | ✅ | ✅ |
| In-Memory-Ausführung lokaler/HTTP-Skripte mit Echtzeit-Ausgabe-Download | ✅ | ❌ |
| Lokale Portweiterleitung | ✅ | ❌ |
| Shells auf mehreren Tabs und/oder Hosts starten | ✅ | ❌ |
| Automatische Aufrechterhaltung von N aktiven Shells pro Host (Neustart bei Tod) | ✅ | ❌ |
(*) Kann mit dem Befehl upgrade manuell auf PTY upgegradet werden.
⚠️ Die Windows-Unterstützung ist experimentell und befindet sich in aktiver Entwicklung.
set DisablePayloadHandler True deaktiviert wird--mcp bereitstellen (lokales HTTP, token-authentifiziert) und die gleichen Shells neben dir steuern

penelope # Lauscht auf Reverse Shells auf 0.0.0.0:4444
penelope -p 5555 # Lauscht auf Reverse Shells auf 0.0.0.0:5555
penelope -p 4444,5555 # Lauscht auf Reverse Shells auf 0.0.0.0:4444 und 0.0.0.0:5555
penelope -i eth0 -p 5555 # Lauscht auf Reverse Shells auf eth0:5555
penelope -a # Lauscht auf Reverse Shells auf 0.0.0.0:4444 und zeigt Beispiel-Revshell-Payloads
penelope -c ziel -p 3333 # Verbindet zu einer Bind Shell auf ziel:3333
penelope ssh benutzer@ziel # Holt eine Reverse Shell von ziel auf lokalem Port 4444
penelope -p 5555 ssh benutzer@ziel # Holt eine Reverse Shell von ziel auf lokalem Port 5555
penelope -i eth0 -p 5555 -- ssh -l benutzer -p 2222 ziel # Holt eine Reverse Shell von ziel auf eth0, lokaler Port 5555 (-- verwenden, wenn ssh Schalter benötigt)
penelope -s <Datei/Ordner> # Teilt eine Datei oder einen Ordner über HTTP

-s)Penelope kann auch als schneller HTTP-Dateiserver verwendet werden.
penelope -s datei.txt # Dient eine einzelne Datei auf 0.0.0.0:8000
penelope -s /pfad/zu/verz # Dient einen gesamten Ordner
penelope -s a.sh b.elf notizen.txt # Dient mehrere Elemente gleichzeitig
penelope -s . -p 80 # Dient das aktuelle Verzeichnis auf Port 80
penelope -s geheim.txt -prefix xk9 # Hinter einem URL-Prefix verstecken: /xk9/geheim.txt
penelope -s -u # Upload-Modus: Akzeptiert PUT/POST in das aktuelle Arbeitsverzeichnis
penelope -s -u -ud /tmp/beute # Upload-Modus, speichert empfangene Dateien in /tmp/beute
Beim Start gibt Penelope einen gebrauchsfertigen Link pro Schnittstelle aus (und einen Upload-Hinweis, wenn -u gesetzt ist), sodass du ihn direkt in die Ziel-Shell kopieren kannst.
Wie im folgenden Video gezeigt, können wir in nur wenigen Sekunden:
https://github.com/brightio/penelope/assets/65655412/7295da32-28e2-4c92-971f-09423eeff178
Einige Hinweise:
F12 drücken, um die PTY-Shell zu trennen und zum Hauptmenü zu gelangen. Falls das Upgrade nicht möglich war und du eine einfache Shell erhalten hast, kannst du sie mit Strg+C trennen. Dies verhindert auch das versehentliche Abbrechen der Shell.interact 1 kannst du einfach i 1 eingeben.
Positionsargumente:
args Argumente für -s/--serve und SSH-Reverse-Shell-Modi