
SessionGopher es una herramienta de PowerShell que utiliza WMI para extraer información de sesiones guardadas de herramientas de acceso remoto como WinSCP, PuTTY, SuperPuTTY, FileZilla y Microsoft Remote Desktop. Puede ejecutarse de forma remota o local.
Copyright 2017 FireEye, creado por Brandon Arvanaghi (@arvanaghi)
Licenciado bajo la Licencia Apache, Versión 2.0 (la "Licencia"); no puede utilizar este archivo excepto en cumplimiento con la Licencia. Puede obtener una copia de la Licencia en
http://www.apache.org/licenses/LICENSE-2.0
A menos que lo exija la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye "TAL CUAL", SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulte la Licencia para conocer el lenguaje específico que rige los permisos y las limitaciones bajo la Licencia.
SessionGopher es una herramienta de PowerShell que encuentra y descifra información de sesiones guardadas para herramientas de acceso remoto. Tiene funcionalidad WMI integrada, por lo que puede ejecutarse de forma remota. Su mejor caso de uso es identificar sistemas que puedan conectarse a sistemas Unix, jump boxes o terminales de punto de venta.
SessionGopher funciona consultando la colmena HKEY_USERS para todos los usuarios que han iniciado sesión en un equipo unido al dominio en algún momento. Extrae información de sesiones guardadas de PuTTY, WinSCP, SuperPuTTY, FileZilla y RDP. Extrae y descifra automáticamente las contraseñas guardadas de WinSCP, FileZilla y SuperPuTTY. Cuando se ejecuta en modo Thorough, también busca en todas las unidades archivos de clave privada de PuTTY (.ppk) y extrae toda la información relevante de la clave privada, incluida la propia clave, así como archivos de Escritorio remoto (.rdp) y RSA (.sdtid).
-Thorough: busca en todas las unidades archivos de clave privada de PuTTY (.ppk), archivos de Conexión a Escritorio remoto (.rdp) y archivos RSA (.sdtid).
-o: envía los datos a una carpeta de archivos .csv
-iL: proporcione un archivo con una lista de hosts contra los que ejecutar SessionGopher, cada host separado por una nueva línea. Proporcione la ruta al archivo después de -iL.
-AllDomain: SessionGopher consultará Active Directory en busca de todos los sistemas unidos al dominio y se ejecutará contra todos ellos.
-Target: un host específico al que desea apuntar. Proporcione el host de destino después de -Target.
. .\SessionGopher.ps1
Invoke-SessionGopher -Thorough
Para ejecutar de forma remota, puede proporcionar las credenciales de una cuenta privilegiada para el sistema remoto mediante las opciones -u y -p. Si omite las opciones -u y -p,
SessionGopher se ejecutará bajo el contexto de seguridad de la cuenta desde la que ejecute el script (por ejemplo, si ya ha iniciado sesión como cuenta de administrador de dominio (DA), o ha iniciado sesión con una cuenta que
sea administrador local del sistema de destino, o está realizando un runas con cualquiera de las dos, no necesitará proporcionar credenciales).
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss
o
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -iL computerlist.txt -u domain.com\adm-arvanaghi -p s3cr3tP@ss -o
o
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -Target brandonArvanaghi_win7 -Thorough
Cualquiera de estos comandos puede combinarse con -Thorough, pero tenga en cuenta que tarda considerablemente más, ya que consulta todo el sistema de archivos remoto. No se recomienda ejecutar en modo -Thorough cuando se consultan
más de un pequeño conjunto de sistemas a la vez.
Ejecutar de forma remota añadiendo -o (imprimir a CSV) funciona muy bien, ya que SessionGopher acumulará todas las sesiones que encuentre y le indicará exactamente dónde encontró esa sesión guardada.
Para que SessionGopher cree una carpeta que contenga ordenadamente los .csv de las sesiones extraídas:
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -AllDomain -o
... eso es todo.
Acceder a la información de sesiones guardadas de cada usuario en HKEY_USERS requiere privilegios de administrador local. Sin privilegios de administrador local, seguirá recibiendo la información de sesiones guardadas
de ese usuario.
[+] 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
Escrito por Brandon Arvanaghi (@arvanaghi)
Este código fue desarrollado inicialmente en FireEye. Sin embargo, cualquier actualización posterior es realizada por el autor fuera de FireEye.