image

恶意加载程序持续演进

自2022年初以来,一种复杂的.NET多阶段恶意软件加载程序持续针对Windows系统发起攻击成为传播信息窃取程序和远程访问木马等危险载荷的分发渠道该加载程序采用复杂的三阶段部署机制在向受感染设备投递恶意软件的同时有效规避检测。研究人员发现,该威胁持续进化,最新版本已采用更高级的混淆技术来隐藏其活动痕迹。

多阶段感染机制

恶意软件感染链始于看似无害的.NET可执行文件其中包含后续阶段的加密组件。早期变种将第二阶段代码硬编码为字符串而新版则采用更隐蔽的隐藏方式——将恶意代码嵌入位图资源以避免触发安全警报。这种演进表明攻击者致力于保持加载程序对抗现代安全解决方案的有效性。

加载程序阶段示意图

威胁关联与影响

ThreatRay研究人员通过代码复用分析识别出该加载程序,将三年间收集的约2万个样本建立关联。追踪显示,尽管前两个阶段频繁变更,第三阶段代码结构保持相对稳定,为检测提供了持续特征。该加载程序主要传播AgentTesla、Formbook、Remcos和404Keylogger等常见威胁,2022年3月至2025年2月的统计分析显示其具有稳定的恶意软件投递模式。

技术实现细节

加载程序的技术复杂性集中体现在分阶段执行过程中

  1. 初始.NET可执行文件提取并解密内嵌数据,随后在内存中执行第二阶段
  2. 第二阶段.NET DLL处理三个关键参数,用于定位并对第一阶段的位图资源进行异或解密(如下示例代码)
  3. 第三阶段负责在内存中部署最终载荷,完成感染链的同时最大限度降低检测风险
public static void main(string ResourceName, string XORKey, string ModuleName) {
    MainForm.loops_1(); // 循环与算术运算
    MainForm.sleep(); // 休眠数秒
    ResourceName = MainForm.decode_string(ResourceName);
    MainForm.loops_2(); // 循环与算术运算
    XORKey = MainForm.decode_string(XORKey);
    Bitmap bitmap = MainForm.get_resource(ResourceName, ModuleName);
    MainForm.loops_1(); // 循环与算术运算
    byte[] array = MainForm.convert_bitmap_to_array(bitmap);
    array = MainForm.decrypt_array(array, XORKey);
    Assembly assembly = MainForm.assembly_load(array);
    MainForm.get_type_20_method_29_and_invoke(assembly);
    MainForm.loops_2(); // 循环与算术运算
    MainForm.exit();
}

这种精心设计的流程展现了现代恶意软件为入侵系统并保持隐蔽所采用的复杂技术。研究人员指出,监控该加载程序的主要价值在于获取新的样本和入侵指标(IoC)而非早期检测新的恶意软件家族。

参考来源:

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐