
SSH-Snake ist ein selbstverbreitendes, sich selbst replizierendes, dateiloses Skript, das die Post-Exploitation-Aufgabe der SSH-Private-Key- und Host-Erkennung automatisiert.
🐍 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:
user@host) finden, die die Private-Keys akzeptieren könnten,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.
Eine verkleinerte Bildschirmaufnahme der Ausgabe von SSH-Snake in einem sehr kleinen Netzwerk. |
|---|
Die 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). |
|---|
SSH-Snake kann entweder heruntergeladen oder per Pipe an bash übergeben werden:
wget https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh
bash ./Snake.nocomments.sh
oder
curl https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh | bash
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, hostname, ip, timeout, arp, ifconfig, ipconfig und xargs 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.
.bash_history-Einträgen,SSH-Snake enthält einige allgemeine Einstellungen, die konfiguriert werden können. Diese Einstellungen sind in SETTINGS.md#general-settings dokumentiert.