01本文概要
Sharp4SessionSearcher 是一款专门设计用于在本地系统中搜索敏感信息文件并获取内容的工具。本文将详细介绍这款工具的功能、工作原理及其使用方法。
02工具介绍
Sharp4SessionSearcher 是一个强大的工具,用于在本地磁盘中搜索特定类型的敏感文件,包括 PuTTY 私钥文件(.ppk)、远程桌面连接文件(.rdp)和 RSA 安全令牌文件(.sdtid)。它不仅能够快速定位这些文件,还可以提取和解析相关的私钥信息,为安全分析和漏洞检测提供重要支持,无需复杂的参数设置,只需运行工具即可完成所有操作。
03工作原理
Sharp4SessionSearcher 通过以下几个步骤实现其功能:工具启动后,会遍历所有已连接的磁盘,逐层深入查找目标文件。在每个目录中,工具会匹配特定的文件扩展名 (.ppk, .rdp, .sdtid),并记录匹配的文件路径。找到目标文件后,工具会解析文件内容,提取出有用的信息并输出。以下是工具的主要代码实现:
public class SessionSearcher
{
static void Main()
{
Console.WriteLine("[+] Searching all connected drives. This could take a few minutes...");
string[] drives = Environment.GetLogicalDrives();
foreach (string drive in drives)
{
DriveInfo di = new DriveInfo(drive);
if (!di.IsReady)
{
Console.WriteLine("Drive {0} could not be read", di.Name);
continue;
}
DirectoryInfo rootDir = di.RootDirectory;
RecursiveFileSearch(rootDir);
}
Console.WriteLine("[+] Parsing PPK files\r\n");
foreach (string ppkFile in ppkList)
{
PPKParser(ppkFile);
}
Console.WriteLine("[+] Parsing RDP files\r\n");
foreach (string rdpFile in rdpList)
{
RDPParser(rdpFile);
}
Console.WriteLine("[+] Collected RSA tokens:\r\n");
foreach (string sdtidFile in sdtidList)
{
Console.WriteLine(sdtidFile);
}
}
static List<string> ppkList = new List<string>();
static List<string> rdpList = new List<string>();
static List<string> sdtidList = new List<string>();
static void RecursiveFileSearch(DirectoryInfo root)
{
FileInfo[] files = null;
DirectoryInfo[] subDirs = null;
try
{
files = root.GetFiles("*.*");
}
catch (UnauthorizedAccessException){ }
catch (DirectoryNotFoundException){ }
if (files != null)
{
foreach (FileInfo fi in files)
{
if (fi.Extension.Equals(".ppk"))
{
ppkList.Add(fi.FullName);
Console.WriteLine(fi.FullName);
}
if (fi.Extension.Equals(".rdp"))
{
rdpList.Add(fi.FullName);
Console.WriteLine(fi.FullName);
}
if (fi.Extension.Equals(".sdtid"))
{
sdtidList.Add(fi.FullName);
Console.WriteLine(fi.FullName);
}
}
subDirs = root.GetDirectories();
foreach (DirectoryInfo dirInfo in subDirs)
{
// Resursive call for each subdirectory.
RecursiveFileSearch(dirInfo);
}
}
}
// RDP文件解析方法
static void RDPParser(string path)
{
List<string> rdpFile = File.ReadAllLines(path).ToList();
int rdpAddressIDX = rdpFile.FindIndex(s => new Regex(@"full address").Match(s).Success);
int rdpGatewayIDX = rdpFile.FindIndex(s => new Regex(@"gatewayhostname").Match(s).Success);
List<string> rdpAddress = rdpFile[rdpAddressIDX].Split(':').ToList();
List<string> rdpGateway = rdpFile[rdpGatewayIDX].Split(':').ToList();
List<string> rdpPromptForCredsArr = rdpFile[rdpPromptForCredsIDX].Split(':').ToList();
Console.WriteLine("Filename:\t\t" + path);
Console.WriteLine("Address:\t\t" + rdpAddress[2]);
Console.WriteLine("Gateway Address:\t" + rdpGateway[2]);
if (rdpPromptForCredsArr[2].ToString().Equals("0"))
{
Console.WriteLine("Prompts for Creds:\tFalse");
}
else
{
Console.WriteLine("Prompts for Creds:\tTrue");
}
Console.WriteLine();
}
}
用户只需运行该工具,无需提供任何额外的参数。工具会自动开始扫描所有连接的磁盘,寻找目标文件并进行解析。总之Sharp4SessionSearcher 是一款高效、便捷的工具,适用于需要快速搜索和解析本地系统中敏感信息文件的场景。通过简单的一键运行,用户可以轻松获取系统中存在的 .ppk、.rdp 和 .sdtid 文件及其内容,为安全分析和内网渗透提供重要支持。
04推荐阅读
从漏洞分析到安全攻防,我们涵盖了.NET安全各个关键方面,为您呈现最新、最全面的.NET安全知识,下面是公众号发布的精华文章集合,推荐大家阅读!
05NET安全知识库
为了更好地应对基于.NET技术栈的风险识别和未知威胁,dotNet安全矩阵星球从创建以来一直聚焦于.NET领域的安全攻防技术,定位于高质量安全攻防星球社区,也得到了许多师傅们的支持和信任,通过星球深度连接入圈的师傅们,一起推动.NET安全高质量的向前发展。只需199元就可以加入我们。
星球已成为中国.NET安全领域最知名、最活跃的技术知识库之一,从.NET Framework到.NET Core,从Web应用到PC端软件应用,无论您是初学者还是经验丰富的开发人员,都能在这里找到对应的安全指南和最佳实践。
星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。
星球文化始终认为授人以鱼不如授人以渔!加入星球后可以跟星主和嘉宾们一对一提问交流,20+个专题栏目涵盖了点、线、面、体等知识面,助力师傅们快速成长!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。
我们倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。
我们还有一个会员专属的星球陪伴群,加入的成员可以通过在群里提出问题或参与论的方式来与其他成员交流思想和经验。此外还可以通过星球或者微信群私聊向我们进行提问,以获取帮助迅速解决问题。