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