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
SSH-Snake — SSH-Snake ist ein selbstverbreitendes, sich selbst replizierendes, dateiloses Skript, das die Post-Exploitation-Aufgabe der SSH-Private-Key- und Host-Erkennung automatisiert. | Kitploit
Tools/GitHubGitHub/megamansec/ssh-snake
Privilege EscalationAufklärungNetzwerkkartierungLaterale BewegungInformationsbeschaffungPost-ExploitationPenetrationstestsRed TeamingArchived
GitHubmegamansec/ssh-snake

SSH-Snake

SSH-Snake ist ein selbstverbreitendes, sich selbst replizierendes, dateiloses Skript, das die Post-Exploitation-Aufgabe der SSH-Private-Key- und Host-Erkennung automatisiert.

2.3k221vor 4 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
Repository anzeigenWebseite

SSH-Snake: Automatisierte SSH-basierte Netzwerktraversierung

🐍 SSH-Snake ist ein leistungsstarkes Tool, das automatische Netzwerktraversierung mithilfe von SSH-Private-Keys durchführt, die auf Systemen gefunden wurden, mit dem Ziel, eine umfassende Karte eines Netzwerks und seiner Abhängigkeiten zu erstellen und zu identifizieren, in welchem Umfang ein Netzwerk mit SSH und SSH-Private-Keys ausgehend von einem bestimmten System kompromittiert werden kann.

SSH-Snake kann automatisch die Beziehung zwischen Systemen aufdecken, die über SSH verbunden sind, was normalerweise enorm viel Zeit und Mühe erfordern würde, um manuell durchgeführt zu werden.

Mit anderen Worten: SSH-Snake führt die folgenden Aufgaben automatisch und rekursiv aus:

  1. Auf dem aktuellen System SSH-Private-Keys finden,
  2. Auf dem aktuellen System Hosts oder Ziele (user@host) finden, die die Private-Keys akzeptieren könnten,
  3. Versuchen, per SSH auf alle Ziele mit allen gefundenen Private-Keys zuzugreifen,
  4. Wenn ein Ziel erfolgreich verbunden ist, wiederhole Schritte #1 - #4 auf dem verbundenen System.

Es ist völlig selbstreplizierend und selbstverbreitend – und völlig dateilos. In vielerlei Hinsicht ist SSH-Snake tatsächlich ein Wurm: Es repliziert sich selbst und verbreitet sich von einem System zum anderen, so weit es kann.

Anstatt manuell wie in einem Super-Mario-Spiel zwischen Systemen mit SSH-Keys zu springen, lass SSH-Snake die Arbeit für dich erledigen.

Obwohl dieses Tool für Hacking-Zwecke gedacht ist, können es Systemadministratoren auch nutzen, um ihre Infrastruktur und ihr Netzwerk besser zu verstehen. Wenn du die Ausgabe der entdeckten Private Keys deaktivieren möchtest, kommentiere diese Codezeile aus.

Für einen detaillierten Einblick, wie dieses Skript tatsächlich funktioniert, technische Details, interessante Entdeckungen, Designentscheidungen, Benchmarks und gewonnene Erkenntnisse, schau dir diesen Blogbeitrag an. Diese Software wurde von Joshua Rogers geschrieben.

Screenshots

Eine verkleinerte Bildschirmaufnahme der Ausgabe von SSH-Snake in einem sehr kleinen Netzwerk.

Ein Graph, der die Beziehung zwischen Systemen mit SSH visualisiertDie blauen Knoten zeigen an, dass sich das Ziel selbst verbinden kann (user@host<-->user@host). Die roten Kanten zeigen an, dass die Verbindung bidirektional ist (user1@host1<-->user2@host2).

Ein Graph, der die Beziehung zwischen Systemen mit SSH visualisiertDie grünen Knoten zeigen einen Host (ohne Benutzernamen) an, der sich selbst verbinden kann (host1<-->host1). Die grünen Kanten zeigen an, dass die Verbindung bidirektional ist (host1<-->host2). Der graue Host in der oberen rechten Ecke ist der Host, auf dem das Skript ursprünglich ausgeführt wurde.

Ein Graph, der die Beziehung zwischen Systemen mit SSH visualisiertDie blauen Knoten zeigen an, dass sich das Ziel selbst verbinden kann (user@host<-->user@host). Die roten Kanten zeigen an, dass die Verbindung bidirektional ist (user1@host1<-->user2@host2).

Verwendung und Ausführung von SSH-Snake

SSH-Snake kann entweder heruntergeladen oder per Pipe an bash übergeben werden:

root@kitploit:~
wget https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh
bash ./Snake.nocomments.sh

oder

root@kitploit:~
curl https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh | bash

Über SSH-Snake

SSH-Snake emuliert nahtlos, was ein menschlicher Angreifer tun würde, um SSH-Private-Keys und Ziele zu entdecken, mit denen eine Verbindung hergestellt werden kann. Vollständig in Bash geschrieben, arbeitet es mit einer minimalen Menge an Abhängigkeiten, die auf den wichtigsten Linux- (und MacOS-)Systemen üblich sind: bash, ssh, coreutils, awk, uniq, sort, grep, tr, find und cat. getent ODER dscacheutil sind erforderlich. sed wird nur für das allererste System benötigt. sudo, , , , , , und können ebenfalls verwendet werden, sind aber nicht erforderlich (und das Skript behandelt Fälle, in denen sie nicht vorhanden sind, elegant). Wenn ein System ohne eines der erforderlichen Pakete entdeckt wird, schlägt es fehl und benachrichtigt den Benutzer, dass der Scan auf diesem bestimmten System nicht fortgesetzt werden kann (und geht zurück, um vom vorherigen System aus fortzufahren).

SSH-Snake ist völlig dateilos: Nachdem der Benutzer das Skript ausgeführt hat, wird es über stdin und bash-Argumente (per SSH) an die Ziele übergeben. Es existiert kein materieller Beweis des Skripts auf einem der gescannten Systeme: Der einzige Beweis für die Ausführung des Skripts ist im Prozessbaum und der beträchtlichen Anzahl fehlgeschlagener SSH-Versuche, die unweigerlich auftreten werden.

SSH-Snake verwendet eine Tiefensuche zur Entdeckung: Sobald es eine Verbindung zu einem System hergestellt hat, versucht es, von diesem System aus weiter Verbindungen herzustellen, bevor es zurückgeht.

Der Name SSH-Snake kommt daher, dass die Ausgabe des Skripts wie eine Schlange aussieht, die sich im Netzwerk auf und ab schlängelt. Anders als im Spiel Snake stirbt SSH-Snake jedoch nicht, wenn es sich in den eigenen Schwanz beißt (eine Verbindung zu einem System herstellt, das bereits gescannt wird oder wurde): Es gibt einfach normal aus, wie es dorthin verbunden hat, kehrt aber zurück und scannt das Ziel nicht erneut (um Endlosrekursion zu vermeiden).

SSH-Snake wurde auf verschiedenen Linux-Distributionen und MacOS (mit installiertem Homebrew Bash) getestet. Wenn du auf ein Linux-basiertes Betriebssystem stößt, mit dem es nicht kompatibel ist, reiche bitte einen Bericht ein.

Funktionen

  • Rekursives SSH von einem System zum anderen unter Verwendung lokaler SSH-Private-Keys,
  • Dateilose Traversierung und Verbreitung/Replikation des SSH-Snake-Skripts unter ausschließlicher Verwendung von stdin und bash-Argumenten auf entfernten Systemen,
  • Automatische Erhöhung der Privilegien auf root mit sudo, falls möglich,
  • Entdeckung von SSH-Private-Key-Dateien aus .bash_history-Einträgen,
  • Entdeckung von SSH-Private-Keys aus häufig verwendeten Dateien und Ordnern,
  • Exfiltration von SSH-Private-Keys als Ausgabe des Skripts,
  • Konfigurierbare benutzerdefinierte Befehlsausführung auf jedem System,
  • Plug-and-Play-Modulsystem zum Auffinden von Private Keys und Systemen,
  • Erkennung von Hosts aus IP-Bereichen, letzten Anmeldungen, bekannten Hosts, SSH-Konfigurationsdateien und mehr,
  • Fähigkeit, zu erkennen, wenn ein System bereits gescannt wurde oder gerade gescannt wird, sodass ein Netzwerk wie A->B->C auch C->A entdecken kann, aber nicht zu A->B->C-A->B->C->A->B->... zurückfällt,
  • Fähigkeit, grafische Visualisierungen eines Netzwerks aus der Ausgabe des Skripts zu erstellen,
  • … und mehr.

Einstellungen

SSH-Snake enthält einige allgemeine Einstellungen, die konfiguriert werden können. Diese Einstellungen sind in SETTINGS.md#general-settings dokumentiert.

SSH-Snake enthält auch eine Vielzahl konfigurierbarer / Plug-and-Play-Strategien (Funktionen), die verwendet werden können, um SSH-Private-Keys auf einem System zu entdecken und Hosts und Ziele zu finden, zu denen eine Verbindung hergestellt werden soll. Sinnvolle Standardwerte sind vorhanden. Wenn du einen Scan jedoch so gründlich wie möglich durchführen möchtest, kann das Aktivieren weiterer Erkennungstechniken hilfreich sein. Wenn ein Scan lange dauert, kann das Deaktivieren einiger Erkennungstechniken hilfreich sein. Mit Ausnahme einer Strategie (find_ssh_keys) kann jede der Strategien ein-/ausgeschaltet werden. Diese sind in SETTINGS.md#configurable-discovery-strategies dokumentiert.

Ausgabe verstehen

Die Rohausgabe von SSH-Snake enthält eine Mischung aus Informationen über gefundene Private Keys, Ziele und Fehlermeldungen.

Eine detaillierte Erklärung der vollständigen Ausgabe von SSH-Snake findest du in OUTPUT.md.

Ein Beispiel für eine Ausgabe findest du in example-output.log.

Systembeziehungen visualisieren

Die Ausgabe von SSH-Snake kann verwendet werden, um Graphen/Visualisierungen des Netzwerks zu erstellen, das das Skript durchläuft.

Eine detaillierte Erklärung, wie Bilder/Visualisierungen aus der Ausgabe von SSH-Snake erstellt und interpretiert werden, findest du in GRAPHICS.md.

Andere Werkzeuge

Zusätzlich zur Fähigkeit, Visualisierungen des Netzwerks zu erstellen, das SSH-Snake durchläuft, werden drei weitere Werkzeuge bereitgestellt. Nämlich:

  1. forward-lookup-host.py: Gib einen Quell-Host oder ein Quell-Ziel an, ermittle alle Systeme, die entweder direkt oder indirekt (d.h. über ein drittes System) erreicht werden können.
  2. reverse-lookup-host.py: Gib einen Ziel-Host oder ein Ziel an, ermittle alle Systeme, die es entweder direkt oder indirekt erreichen können.
  3. shortest-path-create-chain.py: Gib Host oder Ziel A und B an, ermittle den kürzesten Pfad, der die beiden verbindet.

Das dritte Werkzeug generiert auch einen Befehl, der verwendet werden kann, um von Ziel A zu Ziel B zu verbinden. Zum Beispiel:

root@kitploit:~
$ python3 tools/shortest-path-create-chain.py --file output.log --src '[email protected]' --dest '[email protected]'

Kürzester Pfad von [email protected] nach [email protected]: [email protected]>[email protected]>[email protected]>[email protected]

[..]

ssh -i "/home/jrogers/.ssh/key" [email protected] 'sudo ssh -i "/root/.ssh/id_rsa" [email protected] 'ssh -i "/tmp/key" [email protected]''

Snake.sh vs. Snake.nocomments.sh

Da das Skript recht groß ist, führt das Laden des Skripts in ein Here-Document (was es automatisch tut, da das Skript tatsächlich ein Quine ist) dazu, dass bash in eine temporäre Datei schreibt (da es größer als 65535 Bytes ist).

Um die Größe so zu reduzieren, dass es zu 100 % dateilos bleibt, enthält Snake.nocomments.sh eine Version, in der alle Kommentare, unnötigen Leerzeichen und Leerzeilen entfernt wurden. Dadurch wird die Dateigröße so weit reduziert, dass die temporäre Datei von bash nicht erstellt wird.

Fehler / Probleme

Wenn du Fehler oder Probleme im Zusammenhang mit dem Skript feststellst, melde sie bitte als GitHub-Issue. Bitte füge deine Konfigurationseinstellungen bei.

Ich bin besonders an interessanten [line]-Ausgaben interessiert, die mit Fehlern verbunden sind, die vom Skript nicht abgefangen wurden.

Einschränkungen

  • Nur IPv4: Wie alle besten Programme unterstützt das Skript IPv6 nicht. Ich kann mir nicht vorstellen, dass es in absehbarer Zeit Unterstützung dafür geben wird.

  • Nur Port 22: Es wird allgemein angenommen, dass SSH auf Port 22 läuft.

  • GNU coreutils: Das Skript verlässt sich stark auf GNU coreutils. Ich habe nicht festgestellt, wie viel (falls überhaupt) GNU-ismus im Skript verwendet wird.

  • Das Skript sucht derzeit nicht nach SSH-Agent-Sockets.

Tool herunterladen
hostname
ip
timeout
arp
ifconfig
ipconfig
xargs