在红队攻防演练中,安全产品对传统.NET加载行为的监控越来越精准,任何携带可识别特征的.NET程序集都容易触发防护机制。为了提升载荷的隐蔽性,红队常常尝试将恶意代码藏在看似无害的载体中进行传输与执行。Sharp4ExecImage 正是一款针对这一需求开发的工具,原理上将.NET程序集的 IL 字节流隐写在一张 PNG 图片中,形成图片即代码的攻击载体,从而达到绕过检测的目的。
01. 工具基本介绍
Sharp4ExecImage.exe 是一款专为红队开发的 .NET 图像隐写工具,支持将已编译的 .NET 程序集 DLL 文件写入 PNG 图片像素中。合成后的 PNG 图像表面看起来与原图毫无差异,实际上却藏有可执行逻辑,能在目标系统上恢复并执行 DLL 中的恶意代码。
02. 工具实战用法
相比传统的加载器或反射调用方式,Sharp4ExecImage 具备最终生成的 PNG 文件中无明显 .NET 字节码,可绕过传统杀软和 YARA 特征规则;可使用任意正常图片为基础图像,具有较强的社工诱导能力。
2.1 准备阶段
首先,需要准备一个包含执行逻辑的 .NET 程序集,例如我们编写如下代码,功能为启动 winver.exe
:
using System.Diagnostics;
public class MyClass
{
public static void Run()
{
Process.Start("winver");
}
}
将该类编译为 test.dll
,确保其中有一个可以直接调用的 public static void Run()
方法。
2.2 隐写生成
接着,使用命令行运行Sharp4ExecImage.exe,具体的命令如下所示。
Sharp4ExecImage.exe test.dll iisstart.png iisstart1.png
test.dll 表示包含恶意逻辑的 .NET 程序集,iisstart.png 用作载体的原始图片,iisstart1.png 输出的隐写图像,这里是携带 DLL 的图像。生成完成后,iisstart1.png
仍是一张图片文件,肉眼无法识别其与原图的区别,但它已经包含了 test.dll
的全部内容,如下图所示。
为了在目标主机上恢复并执行该 DLL,通常搭配另一段专门编写的恢复加载器,执行的结果如下图所示。
在实战中,Sharp4ExecImage 适用于以下几类任务:绕过白名单执行限制:使用图像格式传输 payload,可绕过仅允许图像格式上传的文件系统;规避杀软查杀机制:传统杀软或 EDR 针对 PE 文件、DLL 文件较为敏感,而图片格式的分析较弱。
2.3 小结
Sharp4ExecImage 展现了红队在信息隐写与绕过技术上的进一步演进。是一个高隐蔽性 payload 嵌套方案,可作为恶意代码交付链中的一环,为红队提供更灵活、更隐蔽的攻击载体。
文/章/涉/及/的/工/具/已/打/包,请//加//入//后/下//载:https://wx.zsxq.com/group/51121224455454