
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
(*) 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
Optionen:
-p, --ports Ports (kommagetrennt) zum Lauschen/Verbinden/Bereitstellen, abhängig von -i/-c/-s Optionen
(Standard: 4444/5555/8000)
Reverse oder Bind Shell?:
-i, --interface Lokale Schnittstelle/IP zum Lauschen. (Standard: 0.0.0.0)
-c, --connect Bind Shell Host
-j, --jump Reverse Shell Jump-Endpunkte
Hinweise:
-a, --payloads Beispiel-Revshell-Payloads für aktive Listener anzeigen
-l, --interfaces Verfügbare Netzwerkschnittstellen auflisten
-h, --help Diese Hilfemeldung anzeigen und beenden
Sitzungsprotokollierung:
-L, --no-log Sitzungsprotokolldateien deaktivieren
-T, --no-timestamps Zeitstempel in Protokollen deaktivieren
-CT, --no-colored-timestamps Farbige Zeitstempel in Protokollen deaktivieren
Sonstiges:
-M, --menu Im Hauptmenü starten
-m, --maintain N Sitzungen pro Ziel aufrechterhalten
-S, --single-session Nur die erste erstellte Sitzung zulassen
-ms, --max-sessions Maximale aktive Sitzungen pro Host (Standard 5, 0 = alle neuen ablehnen)
-C, --no-attach Nicht automatisch an neue Sitzungen anhängen
-U, --no-upgrade Automatisches Shell-Upgrade deaktivieren
-H, --keep-history Ziel-Shell-Verlauf behalten (kein HISTFILE=/dev/null setzen)
-O, --oscp-safe OSCP-sicheren Modus aktivieren
--no-disk Gesamten Zustand im RAM (tmpfs) behalten; nichts dauerhaft auf die Festplatte schreiben
MCP:
--mcp MCP-Server über lokales HTTP aktivieren
--mcp-host Host/IP zum Binden (Standard: 127.0.0.1)
--mcp-port Port zum Binden (Standard: gespeicherter Port, sonst ein zufälliger freier Port, gespeichert in ~/.penelope/mcp.json)
--mcp-token Bearer-Token (Standard: gespeicherter Token, sonst automatisch generiert und gespeichert)
Dateiserver:
-s, --serve HTTP-Dateiserver-Modus ausführen
-prefix, --url-prefix URL-Pfad-Prefix
-u, --upload Datei-Upload (PUT/POST) zum Server aktivieren
-ud, --upload-dir Verzeichnis zum Speichern von Uploads (Standard: aktuelles Arbeitsverzeichnis)
Debug:
-N, --no-bins Fehlen von Binärdateien auf dem Ziel simulieren (kommagetrennt)
-v, --version Version ausgeben und beenden
-d, --debug Debug-Ausgabe aktivieren
-dd, --dev-mode Entwicklermodus aktivieren
-cu, --check-urls Hartcodierte URLs auf Gesundheit prüfen und beenden
Penelope wurde entwickelt, um eine direkte und flexible Interaktion mit entfernten Shells zu ermöglichen. Beachte bei der Verwendung Folgendes:
Terminal-Escape-Sequenzen: Penelope leitet Terminalausgaben von entfernten Systemen direkt an deinen Terminalemulator weiter. Böswillige entfernte Prozesse können Terminal-Escape-Sequenzen verwenden, um den Bildschirm zu manipulieren, irreführende Links zu erstellen oder mit Funktionen wie der Zwischenablage zu interagieren. Diese Exposition ist inhärent für jedes Tool, das eine entfernte Shell an das lokale Terminal weiterleitet (wie SSH, Telnet, Netcat) und nicht spezifisch für Penelope. Verwende ein Terminal mit entsprechenden Sicherheitseinstellungen, wenn du dich mit nicht vertrauenswürdigen Systemen verbindest.
Sitzungsprotokolle: Sitzungsprotokolle können Anmeldeinformationen, Token, Befehle und andere vertrauliche Informationen enthalten, die vom Ziel empfangen wurden. Bewahre sie sicher auf und verwende --no-log, wenn keine Protokollierung erforderlich ist.
Unverschlüsselte Verbindungen: Standard-Reverse- und Bind-Shell-Verbindungen sind nicht verschlüsselt. Vermeide ihre Verwendung über nicht vertrauenswürdige Netzwerke, es sei denn, der Verkehr wird durch einen sicheren Tunnel oder VPN geschützt.
MCP-Server (--mcp): Wenn aktiviert, gewährt der MCP-Server die vollständige Kontrolle über jede aktive Sitzung (Befehlsausführung, Dateiübertragung) jedem Client, der den Bearer-Token besitzt. Dieser Token wird in ~/.penelope/mcp.json (0600) gespeichert. Der Server bindet an 127.0.0.1 und ist token-authentifiziert. Halte den Token geheim und vermeide es, den Server in nicht vertrauenswürdigen Netzwerken freizugeben.
⚖️ Haftungsausschluss: Penelope ist nur für autorisierte Sicherheitstests, Forschung und Bildungszwecke bestimmt. Verwende es nicht gegen Systeme ohne ausdrückliche Genehmigung.
cat kann beschädigt wirken. Das Filtern dieser Escape-Sequenzen ist geplant, um die Protokollausgabe zu glätten.Die Kernfunktionen von Penelope zur Shell-Verwaltung führen keine automatische Ausnutzung durch, was sie für die OSCP-ähnliche Nutzung geeignet macht. Allerdings können sich die Prüfungsregeln ändern, daher überprüfe immer die aktuellen offiziellen OffSec-Regeln, bevor du ein Tool während einer Prüfung verwendest.
Einige Module erfordern besondere Vorsicht:
Wenn du versehentliche Regelverstöße vermeiden möchtest, verwende den Schalter -O / --oscp-safe.
Es hängt von der Art des Shell-Upgrades ab:
F12 drückenStrg+D)Strg+C)In jedem Fall wird die richtige Taste angezeigt, wenn du dich mit einer Sitzung verbindest. Zum Beispiel:

Siehe peneloperc
Dies bedeutet normalerweise, dass du eine neue interaktive Shell geöffnet hast, möglicherweise unter einem anderen Benutzer. Der Penelope-Agent verfolgt nur das Verzeichnis der ursprünglichen Shell und behält die Berechtigungen des Benutzers dieser ersten Shell bei. Die beste Problemumgehung ist, vor dem Öffnen einer neuen Shell mit cd /tmp zu wechseln, oder, wenn du den Benutzer gewechselt hast, eine neue Reverse Shell als neuer Benutzer zu starten.
Deine Beiträge sind unbezahlbar! Wenn du helfen möchtest, melde bitte Fehler, unerwartetes Verhalten oder teile neue Ideen mit. Du kannst auch Pull-Requests einreichen, vermeide jedoch Commits von IDEs, die PEP8 erzwingen und unbeabsichtigt die gesamte Codebasis umstrukturieren.
Penelope war die Frau von Odysseus und bekannt für ihre Loyalität und Geduld, während sie auf seine Rückkehr wartete. Das Tool ist nach ihr benannt, weil es als treuer und stabiler Shell-Handler für Arbeitsabläufe entwickelt wurde, die über einen einfachen Listener hinausgehen.
| 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) | ✅ | ❌ |