
SessionGopher — это инструмент PowerShell, который использует WMI для извлечения сохранённой информации о сеансах для инструментов удалённого доступа, таких как WinSCP, PuTTY, SuperPuTTY, FileZilla и Microsoft Remote Desktop. Его можно запускать удалённо или локально.
Авторские права 2017 FireEye, создано Brandon Arvanaghi (@arvanaghi)
Лицензировано на условиях Apache License, Version 2.0 (далее — «Лицензия»); вы не можете использовать этот файл, кроме как в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу
http://www.apache.org/licenses/LICENSE-2.0
Если это не требуется применимым законодательством или не согласовано в письменной форме, программное обеспечение распространяется на условиях Лицензии на основе «AS IS», БЕЗ ГАРАНТИЙ ИЛИ УСЛОВИЙ ЛЮБОГО РОДА, явных или подразумеваемых. См. Лицензию для получения сведений о конкретных разрешениях и ограничениях.
SessionGopher — это инструмент PowerShell, который находит и расшифровывает сохранённые данные сеансов для инструментов удалённого доступа. В него встроена функциональность WMI, поэтому его можно запускать удалённо. Лучше всего использовать его для выявления систем, которые могут подключаться к Unix-системам, jump-хостам или POS-терминалам.
SessionGopher работает путём запроса куста HKEY_USERS для всех пользователей, которые когда-либо входили на компьютер, подключённый к домену. Он извлекает сохранённые данные сеансов PuTTY, WinSCP, SuperPuTTY, FileZilla и RDP. Он автоматически извлекает и расшифровывает сохранённые пароли WinSCP, FileZilla и SuperPuTTY.
При запуске в режиме Thorough он также ищет на всех дисках файлы закрытых ключей PuTTY (.ppk) и извлекает всю соответствующую информацию о закрытом ключе, включая сам ключ, а также файлы Remote Desktop (.rdp) и RSA (.sdtid).
-Thorough: выполняет поиск по всем дискам файлов закрытых ключей PuTTY (.ppk), файлов Remote Desktop Connection (.rdp) и RSA (.sdtid).
-o: выводит данные в папку с .csv-файлами
-iL: укажите файл со списком хостов для запуска SessionGopher, каждый хост с новой строки. Укажите путь к файлу после -iL.
-AllDomain: SessionGopher выполнит запрос к Active Directory для всех систем, подключённых к домену, и запустит проверку на всех них.
-Target: конкретный хост, который вы хотите сделать целью. Укажите целевой хост после -Target.
. .\SessionGopher.ps1
Invoke-SessionGopher -Thorough
Для удалённого запуска вы можете указать учётные данные привилегированной учётной записи для удалённой системы с помощью флагов -u и -p. Если вы опустите флаги -u и -p,
SessionGopher будет работать в контексте безопасности учётной записи, из-под которой вы запускаете скрипт (например, если вы уже вошли как учётная запись DA, или вошли как учётная запись, которая
является локальным администратором целевой системы, или выполняете runas с одной из этих двух, вам не нужно будет указывать учётные данные).
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss
или
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -iL computerlist.txt -u domain.com\adm-arvanaghi -p s3cr3tP@ss -o
или
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -Target brandonArvanaghi_win7 -Thorough
Любую из этих команд можно комбинировать с -Thorough, но учтите, что это занимает значительно больше времени, поскольку выполняется запрос ко всей удалённой файловой системе. Не рекомендуется запускать режим -Thorough при запросе
более чем небольшого набора систем одновременно.
Удалённый запуск с добавлением -o (вывод в CSV) отлично работает, так как SessionGopher собирает все найденные сеансы и точно сообщает, где был найден этот сохранённый сеанс.
Чтобы SessionGopher создал папку, аккуратно содержащую .csv-файлы извлечённых сеансов:
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -AllDomain -o
... вот и всё.
Доступ к сохранённой информации о сеансах для каждого пользователя в HKEY_USERS требует прав локального администратора. Без прав локального администратора вы всё равно получите сохранённые данные
сеансов этого пользователя.
[+] 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
Написал Brandon Arvanaghi (@arvanaghi)
Этот код изначально разрабатывался в FireEye. Однако все последующие обновления выполняются автором вне FireEye.