Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Stowaway — Multi-Hop-Proxy-Tool für Penetrationstester, das Traffic-Routing durch mehrere Knoten, SOCKS5/SSH-Tunneling, Port-Weiterleitung, Remote-Shell und verschlüsselte Knotenkommunikation ermöglicht. | Kitploit
Tools/GitHubGitHub/ph4ntonn/stowaway
Verschlüsselungs-/EntschlüsselungstoolsLaterale BewegungNetzwerkzugriffskontrollePenetrationstestsCommand and ControlRed Teaming
GitHubph4ntonn/stowaway

Stowaway

Multi-Hop-Proxy-Tool für Penetrationstester, das Traffic-Routing durch mehrere Knoten, SOCKS5/SSH-Tunneling, Port-Weiterleitung, Remote-Shell und verschlüsselte Knotenkommunikation ermöglicht.

Repository anzeigen
3.4k442vor 5 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

stowaway.png

Stowaway

GitHub issues GitHub forks GitHub stars GitHub license

English

Stowaway ist ein in Go geschriebener Multi-Level-Proxy-Tool, das speziell für Penetrationstester entwickelt wurde.

Benutzer können mit diesem Programm externen Traffic über mehrere Knoten in interne Netzwerke leiten, Zugriffsbeschränkungen umgehen, baumartige Knotennetzwerke aufbauen und Verwaltungsfunktionen bequem realisieren.

Vielen Dank für eure Sterne, und ich freue mich über Fragen und Bugmeldungen nach der Nutzung 😘

Lest bitte vor der Nutzung sorgfältig die Bedienungsanleitung und die Hinweise am Ende des Dokuments.

Erklärung

Dieses Projekt dient ausschließlich der Netzwerksicherheitsforschung und -lehre. Die Verwendung für illegale Zwecke ist strengstens untersagt. Stellt sicher, dass ihr vor jedem Test mit diesem Tool eine ausdrückliche Genehmigung des Zielsystems eingeholt habt und die einschlägigen Gesetze und Vorschriften eures Landes/Region einhaltet. Jegliche direkten oder indirekten Folgen der Nutzung dieses Tools (einschließlich, aber nicht beschränkt auf Datenverlust, Systemschäden, rechtliche Haftung) trägt der Nutzer selbst. Der Autor dieses Projekts übernimmt keine Verantwortung für Missbrauch oder daraus resultierende rechtliche Konsequenzen. Die Nutzung dieses Tools bedeutet, dass ihr diese Haftungsausschlusserklärung vollständig gelesen, verstanden und zugestimmt habt.

Funktionen

  • Benutzerfreundlichere Interaktion des Verwaltungs-Clients mit Befehlsautovervollständigung und -verlauf
  • Übersichtliche Knotenbaum-Verwaltung
  • Umfangreiche Knoteninformationsanzeige
  • Vorwärts-/Rückwärtsverbindungen zwischen Knoten
  • Wiederverbindungsunterstützung zwischen Knoten
  • Verbindung zwischen Knoten über SOCKS5/HTTP-Proxy
  • Verbindung zwischen Knoten über SSH-Tunnel
  • Traffic zwischen Knoten wahlweise über TCP/HTTP/WS
  • Mehrstufige SOCKS5-Proxy-Weiterleitung, unterstützt UDP/TCP, IPv4/IPv6
  • SSH-Zugriff auf entfernte Hosts über einen Knoten
  • Remote-Shell
  • Dateien hoch- und herunterladen
  • Port-Weiterleitung (lokal/remote)
  • Port-Reuse auf Knoten
  • Flexible Aktivierung/Deaktivierung verschiedener Dienste
  • Gegenseitige Authentifizierung zwischen Knoten
  • Traffic-Verschlüsselung zwischen Knoten mit TLS/AES-256-GCM
  • Im Vergleich zu v1.0 ist die Dateigröße um 25% reduziert
  • Unterstützt verschiedene Plattformen (Linux/Mac/Windows/MIPS/ARM)

Kompilierung & Demo

  • Kompiliert das vollständige Programm für mehrere Plattformen mit make, oder seht in der Makefile nach, um bestimmte Programme zu kompilieren.
  • Wer nicht kompilieren möchte, kann direkt die vorkompilierten Programme unter Release herunterladen.
  • Demovideo: YouTube

Anwendung

Rollen

Stowaway umfasst zwei Rollen:

  • admin – Das Steuerungsmodul des Penetrationstesters.
  • agent – Das gesteuerte Modul, das vom Penetrationstester bereitgestellt wird.

Begriffserklärungen

  • Knoten: Bezeichnet entweder admin oder agent.
  • Aktiver Modus: Der aktuell bearbeitete Knoten verbindet sich aktiv mit einem anderen Knoten.
  • Passiver Modus: Der aktuell bearbeitete Knoten hört auf einem bestimmten Port und wartet auf eine Verbindung eines anderen Knotens.
  • Upstream: Der Traffic zwischen dem aktuell bearbeiteten Knoten und seinem übergeordneten Knoten.
  • Downstream: Der Traffic zwischen dem aktuell bearbeiteten Knoten und allen seinen untergeordneten Knoten.

Schnellstart

Die folgenden Befehle starten schnell die einfachste Stowaway-Instanz:

  • admin: ./stowaway_admin -l 9999
  • agent: ./stowaway_agent -c <IP_des_stowaway_admin>:9999

Parametererklärung

  • admin
root@kitploit:~
Parameter:
-l      Adresse des passiven Modus [ip]:<port>
-s      Verschlüsselungsschlüssel für die Knotenkommunikation – alle Knoten (admin && agent) müssen übereinstimmen
-c      Zielknotenadresse im aktiven Modus
--socks5-proxy      Adresse des SOCKS5-Proxyservers
--socks5-proxyu     Benutzername des SOCKS5-Proxyservers (optional)
--socks5-proxyp     Passwort des SOCKS5-Proxyservers (optional)
--http-proxy        Adresse des HTTP-Proxyservers
--down              Protokolltyp für den Downstream – Standard: reiner TCP-Traffic, optional: HTTP/WS
--tls-enable        TLS für die Knotenkommunikation aktivieren – nach Aktivierung wird AES-Verschlüsselung deaktiviert
--domain            TLS-SNI/WebSocket-Domain – falls leer, wird standardmäßig die Zielknotenadresse verwendet
--heartbeat         Heartbeat-Pakete aktivieren
  • agent
root@kitploit:~
Parameter:
-l      Adresse des passiven Modus [ip]:<port>
-s      Verschlüsselungsschlüssel für die Knotenkommunikation
-c      Zielknotenadresse im aktiven Modus
--socks5-proxy      Adresse des SOCKS5-Proxyservers
--socks5-proxyu     Benutzername des SOCKS5-Proxyservers (optional)
--socks5-proxyp     Passwort des SOCKS5-Proxyservers (optional)
--http-proxy        Adresse des HTTP-Proxyservers
--reconnect         Zeitintervall für Wiederverbindung
--rehost            IP-Adresse für Port-Reuse
--report            Portnummer für Port-Reuse
--up                Protokolltyp für den Upstream – Standard: reiner TCP-Traffic, optional: HTTP/WS
--down              Protokolltyp für den Downstream – Standard: reiner TCP-Traffic, optional: HTTP/WS
--cs                Shell-Kodierungstyp der Laufzeitplattform – Standard: utf-8, optional: gbk
--tls-enable        TLS für die Knotenkommunikation aktivieren – nach Aktivierung wird AES-Verschlüsselung deaktiviert
--domain            TLS-SNI/WebSocket-Domain – falls leer, wird standardmäßig die Zielknotenadresse verwendet

Parameterverwendung

-l

Dieser Parameter wird von admin && agent gleich verwendet und nur im passiven Modus eingesetzt.

Wenn keine IP-Adresse angegeben wird, lauscht der Knoten standardmäßig auf 0.0.0.0.

  • admin: ./stowaway_admin -l 9999 or ./stowaway_admin -l 127.0.0.1:9999

  • agent: ./stowaway_agent -l 9999 or ./stowaway_agent -l 127.0.0.1:9999

-s

Dieser Parameter wird von admin && agent gleich verwendet und kann sowohl im aktiven als auch passiven Modus eingesetzt werden.

Optional; wenn leer, wird die Kommunikation unverschlüsselt übertragen, andernfalls wird sie mit dem vom Benutzer angegebenen Schlüssel verschlüsselt.

  • admin: ./stowaway_admin -l 9999 -s 123

  • agent: ./stowaway_agent -l 9999 -s 123

-c

Dieser Parameter wird von admin && agent gleich verwendet und nur im aktiven Modus eingesetzt.

Er gibt die Adresse des Knotens an, mit dem eine Verbindung hergestellt werden soll.

  • admin: ./stowaway_admin -c 127.0.0.1:9999

  • agent: ./stowaway_agent -c 127.0.0.1:9999

--socks5-proxy/--socks5-proxyu/--socks5-proxyp/--http-proxy

Diese vier Parameter werden von admin && agent gleich verwendet und nur im aktiven Modus eingesetzt.

--socks5-proxy gibt die Adresse des SOCKS5-Proxyservers an, --socks5-proxyu und --socks5-proxyp sind optional.

--http-proxy gibt die Adresse des HTTP-Proxyservers an, verwendet wie SOCKS5.

Ohne Benutzername/Passwort:

  • admin: ./stowaway_admin -c 127.0.0.1:9999 --socks5-proxy xxx.xxx.xxx.xxx

  • agent: ./stowaway_agent -c 127.0.0.1:9999 --socks5-proxy xxx.xxx.xxx.xxx

Mit Benutzername/Passwort:

  • admin: ./stowaway_admin -c 127.0.0.1:9999 --socks5-proxy xxx.xxx.xxx.xxx --socks5-proxyu xxx --socks5-proxyp xxx

  • agent: ./stowaway_agent -c 127.0.0.1:9999 --socks5-proxy xxx.xxx.xxx.xxx --socks5-proxyu xxx --socks5-proxyp xxx

--up/--down

Diese beiden Parameter werden von admin && agent gleich verwendet und können sowohl im aktiven als auch passiven Modus eingesetzt werden.

Beachte, dass admin keinen --up-Parameter hat.

Diese Parameter sind optional; wenn leer, wird der Upstream/Downstream-Traffic als reiner TCP-Traffic übertragen.

Wenn der Upstream/Downstream-Traffic HTTP/WS sein soll, setze die Parameter auf http oder ws.

  • admin: ./stowaway_admin -c 127.0.0.1:9999 --down ws

  • agent: ./stowaway_agent -c 127.0.0.1:9999 --up ws or ./stowaway_agent -c 127.0.0.1:9999 --up ws --down ws

Zwei wichtige Punkte:

Erstens: Wenn du den Up/Downstream eines Knotens auf TCP/HTTP/WS setzt, müssen die entsprechenden Down/Upstream-Parameter des verbundenen übergeordneten/untergeordneten Knotens übereinstimmen, wie folgt:

  • admin: ./stowaway_admin -c 127.0.0.1:9999 --down ws

  • agent: ./stowaway_agent -l 9999 --up ws

In diesem Fall muss agent --up auf ws setzen, sonst kommt es zu Netzwerkfehlern.

Analog bei Agenten untereinander:

Angenommen, Agent-1 lauscht auf Port 127.0.0.1:10000 und hat --down ws gesetzt.

Dann muss Agent-2 ebenfalls --up auf ws setzen, sonst treten Netzwerkfehler auf.

  • agent-2: ./stowaway_agent -c 127.0.0.1:10000 --up ws

Zweitens: Da HTTP ein Halbduplex-Protokoll ist, eignet es sich nicht gut für Stowaways Vollduplex-Kommunikation. Daher implementiert das HTTP-Protokoll hier nur das HTTP-Nachrichtenformat, nicht den vollständigen HTTP-Workflow. Du kannst es trotzdem verwenden, aber der Traffic zwischen Stowaway-Knoten im HTTP-Nachrichtenformat kann nicht über nginx weitergeleitet werden. Dieser Code und die Funktion wurden einerseits für spezielle HTTP-Anwendungsfälle beibehalten, andererseits als Vorlage für benutzerdefinierte Protokolle.

Wenn du nginx o.ä. verwenden möchtest, nutze das WS-Protokoll mit TLS.

--reconnect

Dieser Parameter wird nur von agent und nur im aktiven Modus verwendet.

Optional; wenn nicht gesetzt, versucht der Knoten nach einer Netzwerkunterbrechung keine automatische Wiederverbindung. Wenn gesetzt, versucht der Knoten alle x Sekunden (der von dir angegebene Sekundenwert), sich wieder mit dem übergeordneten Knoten zu verbinden.

  • admin: ./stowaway_admin -l 9999

  • agent: ./stowaway_agent -c 127.0.0.1:9999 --reconnect 10

In diesem Fall: Wenn die Verbindung zwischen Agent und Admin unterbrochen wird, versucht der Agent alle zehn Sekunden, sich wieder mit dem Admin zu verbinden.

Analog bei Agenten untereinander.

Der Parameter --reconnect kann auch mit --socks5-proxy/--socks5-proxyu/--socks5-proxyp/--http-proxy kombiniert werden. Der Agent versucht dann, die Wiederverbindung über den Proxy gemäß den Startparametern herzustellen.

--rehost/--report

Diese zwei Parameter sind speziell und werden nur auf der Agent-Seite verwendet. Ausführliche Erklärung siehe Abschnitt zur Port-Reuse-Mechanik.

--cs

Dieser Parameter wird nur von agent verwendet und kann sowohl im aktiven als auch passiven Modus eingesetzt werden.

Er dient hauptsächlich zur Lösung von Zeichenkodierungsproblemen bei der 'shell'-Funktion. Wenn der Agent auf einer Plattform mit der Konsolenkodierung gbk läuft (z.B. unter Windows) und der Admin auf einer Plattform mit utf-8, setze diesen Parameter unbedingt auf 'gbk'.

  • Windows: ./stowaway_agent -c 127.0.0.1:9999 -s 123 --cs gbk

--tls-enable

Diese beiden Parameter werden von admin && agent gleich verwendet und können sowohl im aktiven als auch passiven Modus eingesetzt werden.

Durch Setzen dieser Option wird der Traffic zwischen Knoten mit TLS verschlüsselt.

Beispiel:

  • admin: ./stowaway_admin -l 10000 --tls-enable -s 123
  • agent: ./stowaway_agent -c localhost:10000 --tls-enable -s 123

Beachte: Wenn dieser Parameter aktiviert ist, wird die AES-Verschlüsselung standardmäßig deaktiviert. Der Parameter -s wird dann nur noch für die gegenseitige Authentifizierung und die Port-Reuse-Funktion verwendet.

Außerdem: Wenn dieser Parameter aktiviert ist, muss sichergestellt werden, dass jeder Knoten im Netzwerk (einschließlich admin) diesen Parameter aktiviert hat.

--domain

Diese beiden Parameter werden von admin && agent gleich verwendet und sind nur im aktiven Modus verfügbar.

Durch Setzen dieser Option kann die SNI-Option des aktuellen Knotens bei der TLS-Aushandlung oder der Ziel-Host des WebSockets festgelegt werden.

Beispiel:

  • admin: ./stowaway_admin -l 10000 --tls-enable -s 123
  • agent: ./stowaway_agent -c xxx.xxx.xxx.xxx:10000 --tls-enable -s 123 --domain xxx.com

--heartbeat

Dieser Parameter wird nur von admin verwendet und ist sowohl im aktiven als auch passiven Modus verfügbar.

Durch Setzen dieser Option sendet der Admin kontinuierlich Heartbeat-Pakete an den ersten Knoten, um bei dazwischengeschalteten Reverse-Proxys eine lang bestehende Verbindung aufrechtzuerhalten.

Angenommen, zwischen Admin und Agent befindet sich ein Reverse-Proxy (z.B. nginx), der Port 8080 auf Port 8000 weiterleitet, dann sieht das Beispiel wie folgt aus:

  • admin: ./stowaway_admin -l 8000 --tls-enable -s 123 --down ws --heartbeat
  • agent: ./stowaway_agent -c xxx.xxx.xxx.xxx:8080 --tls-enable -s 123 --domain xxx.com --up ws

Port-Reuse-Mechanismus

Stowaway bietet derzeit Port-Reuse-Funktionen basierend auf SO_REUSEPORT/SO_REUSEADDR-Eigenschaften und eine Port-Reuse-Funktion basierend auf IPTABLES.

  • Unter Linux können die meisten Service-Ports wiederverwendet werden.

  • Unter Windows können IIS- und RDP-Ports nicht wiederverwendet werden, wohl aber Ports von MySQL-, Apache-Diensten.

Arten der Wiederverwendung

  • SO_REUSEPORT/SO_REUSEADDR-Modus

    Angenommen, der Agent verwendet den Port-Reuse-Mechanismus, um Port 80 wiederzuverwenden.

    Dann muss der Agent die Parameter --rehost, --report und -s setzen.

    • --rehost: Die IP-Adresse, die wiederverwendet werden soll – darf nicht 0.0.0.0 sein, normalerweise die externe Adresse der Netzwerkkarte.
    • --report: Der Port, der wiederverwendet werden soll.
    • -s: Der Kommunikationsschlüssel.

    Hauptsächlich unterstützt auf Windows- und macOS-Umgebungen; unter Linux ebenfalls möglich, aber mit vielen Einschränkungen.

    • Admin-Seite: ./stowaway_admin -c 192.168.0.105:80 -s 123
    • Agent-Seite: ./stowaway_agent --report 80 --rehost 192.168.0.105 -s 123
  • IPTABLES-Modus

    Angenommen, der Agent verwendet den Port-Reuse-Mechanismus, um Port 22 wiederzuverwenden.

    Dann muss der Agent die Parameter -l, --report und setzen.

Hinweise

  • Die obigen Beispiele zeigen nur die Verbindung zwischen Admin und Agent. Die Verbindung zwischen Agent und Agent ist identisch.

  • Wenn der Agent mit Strg-C oder dem kill-Befehl beendet wird, bereinigt das Programm automatisch die IPTABLES-Regeln. Bei Beendigung mit kill -9 wird jedoch keine automatische Bereinigung durchgeführt.

    Um zu verhindern, dass nach einem abnormalen Beenden des Agents die IPTABLES-Regeln nicht bereinigt werden und der wiederverwendete Dienst nicht mehr zugänglich ist,

    führe zum Schließen aus: python reuse.py --stop --rhost xxx.xxx.xxx.xxx --rport xxx

    Damit werden die Weiterleitungsregeln deaktiviert, sodass der ursprüngliche Dienst wieder normal erreichbar ist.

  • Bei Verwendung des IPTABLES-Port-Reuse-Modus wird die Überwachung erzwungenermaßen auf 0.0.0.0 gesetzt; eine IP-Adresse kann nicht über den Parameter -l angegeben werden.

Wie erstelle ich ein mehrstufiges Netzwerk?

In den obigen Beispielen traten nur Admin und ein Agent auf.

Das mehrstufige Netzwerk ist jedoch der Kern.

In Stowaway werden mehrstufige Netzwerke mit den Befehlen listen, connect und sshtunnel im Admin erstellt.

Ein einfaches Beispiel:

  • admin: ./stowaway_admin -l 9999 -s 123

Agent-1 verbindet sich nun mit dem Admin.

  • agent-1: ./stowaway_agent -c 127.0.0.1:9999 -s 123

Der Benutzer möchte jetzt auch Agent-2 anschließen:

  • agent-2: ./stowaway_agent -l 10000 -s 123

Der Benutzer kann dann über den Admin use 0 -> connect Agent-2-IP:10000 eingeben, um ihn dem Netzwerk als untergeordneten Knoten von Agent-1 hinzuzufügen.

Angenommen, der Benutzer möchte einen weiteren Knoten Agent-3 anschließen, aber über Agent-1 kann Agent-3 nicht erreicht werden.

Der Benutzer kann dann über den Admin use 0 -> listen -> 1.Normal Passive auswählen -> 10001 eingeben, sodass Agent-1 auf Port 10001 lauscht und auf Verbindungen von untergeordneten Knoten wartet.

Nachdem der Admin-Vorgang abgeschlossen ist, wird Agent-3 wie folgt gestartet:

  • agent-3: ./stowaway_agent -c 127.0.0.1:10001 -s 123

Dadurch wird Agent-3 als weiterer untergeordneter Knoten von Agent-1 dem Netzwerk hinzugefügt.

Eine ausführliche Erklärung der listen- und sshtunnel-Befehle findest du im Abschnitt zur Befehlsanalyse.

Wie stellt man eine Verbindung wieder her?

Stowaway unterstützt derzeit mehrere Arten der Wiederverbindung. Kurz zusammengefasst:

Zunächst: Wenn der übergeordnete Knoten offline geht, beendet sich nur ein Knotentyp von selbst: derjenige, der beim Start im aktiven Modus war und keine Wiederverbindung eingestellt hatte.

Wenn eine Wiederverbindung eingestellt wurde, versucht der Knoten in den angegebenen Zeitabständen, die Verbindung wiederherzustellen.

Außerdem: Alle Knoten, die im passiven Modus gestartet wurden, beenden sich nicht von selbst, sondern lauschen basierend auf den Startparametern weiterhin auf dem angegebenen Port. Der Benutzer kann diese Knoten dann über connect oder sshtunnel wieder in das Netzwerk einbinden.

Hinweise

  1. Wenn aufgrund von Netzwerkschwankungen oder dem Ausfall eines Zwischenknotens ein Zweig getrennt wird, muss bei der aktiven Wiederverbindung unbedingt der Kopfknoten der fehlenden Kette verbunden werden. Beispiel: Auf Admin folgt node1, node1 teilt sich in zwei Zweige: node1 -> node2 -> node3 -> node4 und node1 -> node5 -> node6. Wenn node2 ausfällt, bleiben node3 und node4 aktiv. Der Benutzer hat dann zwei Möglichkeiten: Wenn node1 direkt auf node3 zugreifen kann, kann der Benutzer node3 jederzeit über node1 mit connect oder sshtunnel wieder in das Netzwerk aufnehmen (beachte: auch wenn node1 gleichzeitig node4 erreichen kann, verbinde bitte nicht direkt node4, sondern den Kopfknoten der gesamten fehlenden Kette (node3 -> node4), also node3). Dadurch werden node3 und node4 wieder eingebunden. Die andere Möglichkeit: Wenn node1 nicht direkt auf node3 zugreifen kann (d.h. der Weg führt über node2), starte node2 neu und binde ihn in das Netzwerk ein, und verwende dann auf node2 connect oder sshtunnel, um eine Verbindung zu node3 herzustellen, wodurch node3 und node4 wieder eingebunden werden.

  2. Wenn ein Knoten ausfällt, werden alle mit diesem Knoten und seinen untergeordneten Knoten verbundenen Socks-, Backward- und Forward-Dienste zwangsweise gestoppt.

Befehlsanalyse

Im Admin-Controller kann der Benutzer die Tabulatortaste zur Befehlsvervollständigung und die Pfeiltasten zur Historiensuche/Cursorbewegung verwenden.

Der Admin-Controller besteht aus zwei Ebenen. Die erste Ebene ist das Hauptpanel mit den folgenden Befehlen:

  • help: Zeigt die Hilfeinformationen des Hauptpanels an.
root@kitploit:~
(admin) >> help
  help                                     		Hilfeinformationen anzeigen
  detail                                  		Details der verbundenen Knoten anzeigen
  topo                                     		Topologie der Knoten anzeigen
  use        <id>                          		Zielknoten auswählen, den du verwenden möchtest
  exit                                     		Stowaway beenden
  • detail: Zeigt detaillierte Informationen der online befindlichen Knoten an.
root@kitploit:~
(admin) >> detail
Node[0] -> IP: 127.0.0.1:10000  Hostname: ph4ntoms-MBP.lan  User: ph4ntom
Memo:
  • topo: Zeigt die Eltern-Kind-Beziehung der online Knoten an.
root@kitploit:~
(admin) >> topo
Node[0]'s children ->
Node[1]

Node[1]'s children ->
  • use: Einen bestimmten Agent auswählen.
root@kitploit:~
(admin) >> use 0
(node 0) >>
  • exit: Stowaway beenden.
root@kitploit:~
(admin) >> exit
[*] Möchten Sie Stowaway wirklich beenden? (y/n): y
[*] BYE!

Wenn der Benutzer mit dem Befehl use einen Agenten auswählt, gelangt er in die zweite Ebene, das Knotenpanel, mit den folgenden Befehlen:

  • help: Zeigt die Hilfeinformationen des Knotenpanels an.
root@kitploit:~
(node 0) >> help
  help                                            Hilfeinformationen anzeigen
  status                                          Knotenstatus anzeigen (Socks/Forward/Backward)
  listen                                          Portüberwachung auf dem aktuellen Knoten starten
  addmemo    <string>                             Notiz für den aktuellen Knoten hinzufügen
  delmemo                                         Notiz des aktuellen Knotens löschen
  ssh        <ip:port>                            SSH über den aktuellen Knoten starten
  shell                                           Interaktive Shell auf dem aktuellen Knoten starten
  socks      <lport> [username] [pass]            SOCKS5-Server starten
  stopsocks                                       Socks-Dienste beenden
  connect    <ip:port>                            Mit einem neuen Knoten verbinden
  sshtunnel  <ip:sshport> <agent port>            SSH-Tunnel verwenden, um einen Knoten in die Topologie aufzunehmen
  upload     <lokale Datei> <remote Datei>        Datei auf den aktuellen Knoten hochladen
  download   <remote Datei> <lokale Datei>        Datei vom aktuellen Knoten herunterladen
  forward    <lport> <ip:port>                    Lokalen Port zu einer bestimmten Remote-IP:Port weiterleiten
  stopforward                                     Forward-Dienste beenden
  backward    <rport> <lport>                     Remote-Port (Agent) auf lokalen Port (Admin) zurückleiten
  stopbackward                                    Backward-Dienste beenden
  shutdown                                        Aktuellen Knoten beenden
  back                                            Zurück zum übergeordneten Panel
  exit                                            Stowaway beenden
  • status: Zeigt den aktuellen Socks/Forward/Backward-Status des Knotens an.
root@kitploit:~
(node 0) >> status
Socks status:
      ListenAddr: 0.0.0.0:10000    Username:    Password:
-------------------------------------------------------------------------------------------
Forward status:
      [1] Listening Addr: [::]:20000 , Remote Addr: 192.168.1.1:22 , Active Connections: 0
      [2] Listening Addr: [::]:30000 , Remote Addr: 192.168.1.1:22 , Active Connections: 0
-------------------------------------------------------------------------------------------
Backward status:
      [1] Remote Port: 40000 , Local Port: 50000 , Active Connections: 0
  • listen: Anweist den Agent, einen bestimmten Port zu überwachen und auf Verbindungen von untergeordneten Knoten zu warten.
root@kitploit:~
(node 0) >> listen
[*] ACHTUNG! Wenn Sie IPTables Reuse oder SOReuse wählen, MÜSSEN Sie bestätigen, dass der Knoten ursprünglich auf die entsprechende Weise gestartet wurde!
[*] Wenn Sie IPTables Reuse oder SOReuse wählen, verwendet der Knoten die anfängliche Konfiguration (beim Knotenstart) zum Wiederherstellen des Ports!
[*] Bitte wählen Sie den Modus (1. Normal passive / 2. IPTables Reuse / 3. SOReuse): 1
[*] Bitte geben Sie [ip:]<port> ein: 10001
[*] Warte auf Antwort......
[*] Knoten lauscht auf Port 10001

Beachte: listen ist ein etwas spezieller Befehl. Wie zu sehen, hat listen drei Modi:

  1. Normal passive: Dieser Modus bedeutet, dass der Agent auf normale Weise auf dem Zielport lauscht und auf Verbindungen von untergeordneten Knoten wartet.
  2. IPTables Reuse: Dieser Modus bedeutet, dass der Agent den Port im IPTables-Reuse-Modus wiederverwendet und auf Verbindungen von untergeordneten Knoten wartet.
  3. SOReuse: Dieser Modus bedeutet, dass der Agent den Port im SOReuse-Modus wiederverwendet und auf Verbindungen von untergeordneten Knoten wartet.

Der erste Modus ist der häufigste. Wenn der übergeordnete Knoten in diesem Modus lauscht, muss sich der untergeordnete Knoten nur mit -c <IP:Port des übergeordneten Knotens> verbinden.

Der zweite und dritte Modus sind speziell. Wenn der Benutzer den zweiten oder dritten Modus wählt, muss er sicherstellen, dass der aktuell bearbeitete Knoten selbst im Port-Reuse-Modus gestartet wurde, sonst können diese Modi nicht verwendet werden.

Im zweiten und dritten Modus muss der Benutzer keine Informationen eingeben; der Knoten verwendet automatisch seine eigenen Startparameter, um den Port wiederzuverwenden und auf Verbindungen von untergeordneten Knoten zu warten.

Außerdem: listen kann jeweils nur einen untergeordneten Knoten verbinden. Wenn mehrere untergeordnete Knoten verbunden werden sollen, führe den Befehl listen entsprechend oft aus.

  • addmemo: Fügt eine Notiz für den aktuellen Knoten hinzu.
root@kitploit:~
(node 0) >> addmemo test
[*] Notiz hinzugefügt!
(node 0) >> exit
(admin) >> detail
Node[0] -> IP: 127.0.0.1:10000  Hostname: ph4ntoms-MBP.lan  User: ph4ntom
Memo:  test
  • delmemo: Löscht die Notiz des aktuellen Knotens.
root@kitploit:~
(node 0) >> delmemo
[*] Notiz gelöscht!
(node 0) >> exit
(admin) >> detail
Node[0] -> IP: 127.0.0.1:10000  Hostname: ph4ntoms-MBP.lan  User: ph4ntom
Memo:
  • ssh: Verbindet den Knoten per SSH mit einem entfernten Rechner.
root@kitploit:~
(node 0) >> ssh 127.0.0.1:22
[*] Bitte wählen Sie die Authentifizierungsmethode (1. Benutzername&&Passwort / 2. Zertifikat): 1
[*] Bitte geben Sie den Benutzernamen ein: ph4ntom
[*] Bitte geben Sie das Passwort ein: *****
[*] Warte auf Antwort.....
[*] Verbindung zum Zielhost per SSH erfolgreich!
 # ph4ntom @ ph4ntoms-MBP in ~ 👑 [17:03:56]
$ whoami
ph4ntom
 # ph4ntom @ ph4ntoms-MBP in ~ 👑 [17:04:16]
$

In diesem Modus ist die Tabulatortaste deaktiviert.

  • shell: Startet eine Shell auf dem aktuellen Knoten.
root@kitploit:~
(node 0) >> shell
[*] Warte auf Antwort.....
[*] Shell erfolgreich gestartet!

bash: no job control in this shell

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
bash-3.2$ whoami
ph4ntom
bash-3.2$

In diesem Modus ist die Tabulatortaste deaktiviert.

  • socks: Startet einen SOCKS5-Dienst auf dem aktuellen Knoten.
root@kitploit:~
(node 0) >> socks 7777
[*] Versuche, auf 0.0.0.0:7777 zu lauschen......
[*] Warte auf Antwort......
[*] SOCKS erfolgreich gestartet!
(node 0) >>

Beachte: Der Port 7777 wird nicht auf dem Agent, sondern auf dem Admin geöffnet.

Wenn ein Benutzername/Passwort gesetzt werden soll, ändere den Befehl zu socks 7777 <dein Benutzername> <dein Passwort>.

Wenn eine bestimmte Schnittstelle zum Lauschen angegeben werden soll, ändere den Befehl zu socks xxx.xxx.xxx.xxx:7777.

  • stopsocks: Beendet den SOCKS5-Dienst auf dem aktuellen Knoten.
root@kitploit:~
(node 0) >> stopsocks
Socks Info ---> ListenAddr: 0.0.0.0:7777    Username: <null>    Password: <null>
[*] Möchten Sie Socks wirklich beenden? (yes/no): yes
[*] Schließe......
[*] SOCKS-Dienst wurde erfolgreich geschlossen!
(node 0) >>
  • connect: Weist den aktuellen Knoten an, sich mit einem anderen untergeordneten Knoten zu verbinden.
root@kitploit:~
agent-1: ./stowaway_agent -l 10002
root@kitploit:~
(node 0) >> connect 127.0.0.1:10002
[*] Warte auf Antwort......
[*] Neuer Knoten online! Knoten-ID ist 1

(node 0) >>
  • sshtunnel: Weist den aktuellen Knoten an, sich über einen SSH-Tunnel mit einem anderen untergeordneten Knoten zu verbinden.
root@kitploit:~
agent-2: ./stowaway_agent -l 10003
root@kitploit:~
(node 0) >> sshtunnel 127.0.0.1:22 10003
[*] Bitte wählen Sie die Authentifizierungsmethode (1. Benutzername&&Passwort / 2. Zertifikat): 1
[*] Bitte geben Sie den Benutzernamen ein: ph4ntom
[*] Bitte geben Sie das Passwort ein: ******
[*] Warte auf Antwort.....
[*] Neuer Knoten online! Knoten-ID ist 2

(node 0) >>

In stark eingeschränkten Netzwerkumgebungen kann der SSH-Tunnel verwendet werden, um den Stowaway-Traffic als SSH-Traffic zu tarnen und so Firewall-Beschränkungen zu umgehen.

  • upload: Lädt eine Datei auf den aktuellen Knoten hoch.
root@kitploit:~
(node 0) >> upload test.7z test.xxx
[*] Datei wird übertragen, bitte warten...
136.07 KiB / 136.07 KiB [-----------------------------------------------------------------------------------] 100.00% ? p/s 0s
  • download: Lädt eine Datei vom aktuellen Knoten herunter.
root@kitploit:~
(node 0) >> download test.xxx test.xxxx
[*] Datei wird übertragen, bitte warten...
136.07 KiB / 136.07 KiB [-----------------------------------------------------------------------------------] 100.00% ? p/s 0s
  • forward: Leitet einen Port auf dem Admin an einen entfernten Port weiter.
root@kitploit:~
(node 0) >> forward 9000 127.0.0.1:22
[*] Versuche, auf 0.0.0.0:9000 zu lauschen......
[*] Warte auf Antwort......
[*] Forward erfolgreich gestartet!
(node 0) >>
root@kitploit:~
$ ssh 127.0.0.1 -p 9000
Password:
 # ph4ntom @ ph4ntoms-MBP in ~ 👑 [17:19:51]
$
  • stopforward: Beendet die Weiterleitung des aktuellen Knotens.
root@kitploit:~
(node 0) >> stopforward
[0] Alle
[1] Listening Addr : [::]:9000 , Remote Addr : 127.0.0.1:22 , Active Connections : 1
[*] Möchten Sie Forward wirklich beenden? (yes/no): yes
[*] Bitte wählen Sie einen zum Schließen aus: 1
[*] Schließe......
[*] Forward-Dienst wurde erfolgreich geschlossen!
  • backward: Leitet einen Port auf dem Agent an den lokalen Port des Admin zurück.
root@kitploit:~
(node 0) >> backward 9001 22
[*] Versuche, den Knoten anzuweisen, auf 0.0.0.0:9001 zu lauschen......
[*] Warte auf Antwort......
[*] Backward erfolgreich gestartet!
(node 0) >>
root@kitploit:~
$ ssh 127.0.0.1 -p 9001
Password:
 # ph4ntom @ ph4ntoms-MBP in ~ 🌈 [17:22:14]
$
  • stopbackward: Beendet die Rückwärts-Weiterleitung des aktuellen Knotens.
root@kitploit:~
(node 0) >> stopbackward
[0] Alle
[1] Remote Port : 9001 , Local Port : 22 , Active Connections : 1
[*] Möchten Sie Backward wirklich beenden? (yes/no): yes
[*] Bitte wählen Sie einen zum Schließen aus: 1
[*] Schließe......
[*] Backward-Dienst wurde erfolgreich geschlossen!
  • shutdown: Weist den aktuellen Knoten an, offline zu gehen.
root@kitploit:~
(node 1) >> shutdown
(node 1) >>
[*] Knoten 1 ist offline!
  • back: Zurück zum Hauptpanel.
root@kitploit:~
(node 1) >> back
(admin) >>
  • exit: Stowaway beenden.
root@kitploit:~
(node 1) >> exit
[*] Möchten Sie Stowaway wirklich beenden? (y/n): y
[*] BYE!

TODO

  • Fehlerbehebungen
  • TLS-Unterstützung
  • Unterstützung für mehrere Startknoten

Hinweise

  • Dieses Programm wurde in der Freizeit zu Lern- und Entwicklungszwecken erstellt; die Struktur ist möglicherweise nicht sehr robust, und es können Fehler auftreten. Bitte um Verständnis.
  • Wenn der Admin offline ist, können keine neuen Knoten beitreten.
  • Der Admin unterstützt nur einen direkt verbundenen Agent-Knoten; für Agent-Knoten gibt es diese Einschränkung nicht.
  • Wenn der Admin unter Windows verwendet wird, lade bitte zuerst ansicon herunter (oder hier), wechsle in das entsprechende Verzeichnis für die Systemarchitektur und führe ansicon.exe -i aus. Andernfalls kann es auf der Admin-Seite zu Zeichenkodierungsproblemen kommen.
  • Dieses Programm unterstützt nur den standardmäßigen UDP ASSOCIATE gemäß RFC1928. Achte bei der Verwendung des SOCKS5-UDP-Proxys (z.B. mit Scannern) darauf, dass das Paket gemäß RFC1928 aufgebaut ist, und behandle Paketverluste eigenständig.

404 StarLink Initiative

Stowaway ist jetzt Teil der 404 StarLink Initiative

Danksagung

Dank an folgende Meister und Projekte für ihre Hilfe bei der Entwicklung von Stowaway:

  • lz520520
  • SignorMercurio
  • MM0x00
  • r0ck3rt
  • Termite
  • Venom
Tool herunterladen
-s
  • -l: Der Port, der normalerweise nicht erreichbar ist – also der Port, auf dem der Agent wirklich lauschen und Verbindungen annehmen soll.
  • --report: Der Port, der wiederverwendet werden soll.
  • -s: Der Kommunikationsschlüssel.

Nur unter Linux unterstützt; der Agent ändert automatisch die IPTABLES-Regeln, Root-Rechte erforderlich.

  • Agent-Seite: ./stowaway_agent --report 22 -l 10000 -s 123

    Nachdem der Agent gestartet wurde, verwende das Skript reuse.py aus dem script-Verzeichnis.

    Setze zuerst den Wert von SECRET (der Wert von SECRET ist der bei Start der Knoten festgelegte Kommunikationsschlüssel).

    Führe dann aus: python reuse.py --start --rhost xxx.xxx.xxx.xxx --rport xxx

    • --rhost: Die Adresse des Agents.
    • --rport: Der wiederzuverwendende Port, in diesem Beispiel 22.
  • Jetzt kann der Admin eine Verbindung herstellen: ./stowaway_admin -c 192.168.0.105:22 -s 123