.NET 一款执行命令回显的微软白名单工具

01阅读须知

此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他方面

02基本介绍

Sharp4NodeKey.exe 是一款合法的微软签名程序,用于执行指定的命令或脚本,避免被杀毒软件或端点检测与响应系统阻止。其微软签名使其能够在红队渗透测试中悄无声息地运行命令,而不被基于签名的安全防护机制检测到。这使得它在需要隐蔽执行任务时成为一项强大的工具。

图片

03使用方法

Sharp4NodeKey.exe 通过合法的微软签名程序,执行指定的命令或脚本,避免被杀毒软件或端点检测与响应系统阻止。常用的命令格式如下所示。

Sharp4NodeKey.exe normal 1 cmd.exe "/c whoami"

该命令的作用是通过 cmd.exe 执行系统命令 whoami,从而返回当前用户的身份信息。

图片

04原理解析

Sharp4NodeKey.exe 核心机制是使用 Process.Start 方法启动系统命令,同时将其伪装为受信任的操作。这种方式可以通过白名单机制绕过常见的安全限制。以下是 Sharp4NodeKey 的核心代码片段及其功能介绍

if (args.Length < 3) 
{
	Console.WriteLine("Usage: {0} (normal|abnormal|both) (pid file) (path to exe) [args]", Assembly.GetExecutingAssembly().GetName().Name);
}

代码中,normal|abnormal|both 参数表示执行模式,path to exe 表示要执行的程序路径。

ProcessStartInfo 用于配置新进程的启动信息。args[2] 指定要执行的程序路径,后续参数则被组装为命令行参数,并确保每个参数都被正确引号包裹,具体代码如下所示。

Console.Title = args[2];
ProcessStartInfo startInfo = new ProcessStartInfo(args[2], string.Join(" ", from arg in args.Skip(3) 
	select ProcessOutput.QuoteSingleArgument(arg)))
{
	UseShellExecute = false
};

UseShellExecute = false 指定不使用外壳程序启动进程,确保命令直接在系统内执行。最后,代码尝试启动进程,并将进程 ID 写入 pid file,随后等待进程结束并记录退出代码:

Process process = Process.Start(startInfo);
File.WriteAllText(args[1], process.Id.ToString());
process.WaitForExit();
num = process.ExitCode;

综上,Sharp4NodeKey 的关键优势在于它的微软签名,能够在不引起注意的情况下执行系统命令。

 05.NET安全知识库

星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题。

图片

图片

星球文化20+个专题栏目涵盖了点、线、面、体等知识面!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。

    

图片

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值