论坛首页 密码学讨论区 阅读主题

[原创]【病毒分析】深度剖析粉丝投稿:海莲花APT超级间谍组织最新免杀样本(从白加黑落地到定制化RUST远控)

309 浏览 2 回复
#1 楼主 2026-06-01 21:09:07
一、背景概述与海莲花组织简介在深入剖析本次的恶意样本之前,我们有必要先了解本次攻击事件的幕后黑手:海莲花(Ocean Lotus),在安全业界也被称为 APT32 或 Canvas Assassin。自 2012 年首次被安全社区披露以来,海莲花便展现出了极高的组织度与技术演进能力。与那些以直接勒索钱财为目的的黑产团伙不同,海莲花是一个具有明确政治和经济情报收集意图的国家级高级持续性威胁组织。根据历年威胁情报统计的海莲花组织活跃区域与核心攻击目标分布概览1.核心攻击目标:综合业界(如安天 CERT 等顶尖安全机构)近期的持续追踪与我们的研判分析,该组织的攻击目标具有极强的针对性。他们长期聚焦于东亚地区,尤其是针对我国的政府部门、国防军工、外交机构、核心智库单位以及海事科研企业。近期,更是频频利用“十五五规划”等国家宏观政策热点作为诱饵,向核心岗位的关键人员精准投递鱼叉式钓鱼邮件。2.核心作案诉求与盈利模式:海莲花的行动并非为了短期的资金变现(如加密勒索),而是以长期潜伏、刺探与窃密为主。他们致力于获取目标机构的内部机密文件、战略规划草案、敏感技术参数以及关键人员的通信记录。这些高价值的数字资产在国家层面的博弈中具有不可估量的战略意义。海莲花组织常利用社会工程学结合时事热点构造的高诱导性钓鱼邮件示例(图片来源:安天CERT)3.标志性攻击手法:在技术战术层面,该组织是利用社会工程学的大师,同时也是“白加黑”(DLL 侧加载/搜索顺序劫持)技术的资深玩家。他们极度擅长将恶意代码隐匿于带有合法数字签名的商业软件背后,并配合多重内存解密、反调试手段,以此穿透企业内部的重重防线。二、 事件溯源与样本捕获始末本次进入 Solar 应急响应团队视野的高级免杀样本,来源于一位长期与我们保持密切技术交流的粉丝师傅的授权投稿。在近期的企业安全应急响应处置中,这位师傅捕获了一组行为极其隐蔽的文件。初步排查发现,该样本在主流的安全沙箱与终端防病毒软件(AV/EDR)环境下几乎处于隐蔽状态。基于双方深厚的技术互信,该师傅将样本脱敏后提交给 Solar 应急响应团队进行深度逆向研判,希望能借此完善社区的威胁检测规则。与粉丝师傅关于捕获高隐蔽性免杀样本的沟通记录,双方确认了授权分析与成果共享意向三、 样本静态特征与执行链纵览解压粉丝提交的压缩包后,我们提取到了三个核心组件。从文件结构来看,这是海莲花组织极为经典的一套“白加黑”攻击组件。文件名称文件属性与角色定位大小CloudAdapter.exe白文件 :原名为 Bandizip.exe,带有合法的 Bandisoft 签名。被用作宿主进程。538.13 KBark.x64.dll黑文件:伪装的依赖库,负责执行反调试逻辑与解密核心载荷。169.50 KBbdzsfx.x64.sfx数据载荷:经过加密的二进制数据,解密后为真实的定制化后门。566 KB解压后的文件示例执行逻辑流推演:样本整体执行流程图,展示了从合法程序启动到最终在内存中执行远程控制 Shellcode 的全过程四、 核心组件深度逆向解析4.1 白文件滥用:CloudAdapter.exe 逆向分析攻击者将知名的压缩软件组件 Bandizip.exe 重命名为 CloudAdapter.exe。通过查看其文件属性,可以确认其数字签名完整有效,未遭到任何破坏或篡改。这使得它在执行初期能够轻易骗过多数基于信誉库的杀软拦截。CloudAdapter.exe 的详细信息,显示其原始文件名为 Bandizip.exe文件自带 Bandisoft International Inc. 的合法数字签名,且签名状态正常通过逆向分析可知,由于 Windows 操作系统的 DLL 搜索顺序机制(优先搜索当前执行目录),当 CloudAdapter.exe 启动时,会自动加载同目录下的恶意文件 ark.x64.dll。白程序在加载 DLL 后,会主动调用其导出函数 CreateArk,并传入了一个特定的十六进制参数 0x20250210。逆向分析显示,白程序调用 CreateArk 时硬编码传入了参数 0x202502104.2 恶意载荷核心:ark.x64.dll 内部机制剖析该恶意 DLL 包含了两个主要的导出函数:CreateArkCompressor 和 CreateArk。4.2.1 触发条件校验CreateArkCompressor 函数的功能非常单一,仅用于校验传入的常量是否匹配预设的魔数。_BOOL8 __fastcall CreateArkCompressor(int n539296272){
 // 仅当传入参数等于 0x20250210 时,才允许后续逻辑执行
 return n539296272 == 0x20250210;
}4.2.2 核心控制流 CreateArk当参数校验通过后,程序进入 CreateArk 主函数。其内部包含了一套严密的载荷释放逻辑,具体流程如下:CreateArk 导出函数内部详细执行流转图,涵盖了环境检测到内存加载的全过程对应的伪代码结构如下,可以清晰看到其调用链路:__int64 __fastcall CreateArk(int n539296272){
 __int64 result = 0;
 // 1. 严格校验魔数
 if ( n539296272 == 0x20250210 ) {
   strcpy(user32, "user32");
   ModuleHandleA = (char *)GetModuleHandleA(user32);
   // 2. 动态解析 API 以隐藏导入表
   if ( (ModuleHandleA || (ModuleHandleA = (char *)LoadLibraryA(user32)) != 0)
     && (user32_ShowWindow = resolve_api_by_pe_export_hash(ModuleHandleA, 16354146)) != 0 ) {

     // 3. 隐藏宿主控制台窗口,实现静默运行
     ConsoleWindow = GetConsoleWindow();
     ((void (__fastcall *)(HWND, _QWORD))user32_ShowWindow)(ConsoleWindow, 0);

     // 4. 执行严密的反调试与反分析检测
     anti_debug_and_anti_analysis();

     // 5. 解密并执行核心 Shellcode
     decrypt_and_execute_shellcode();

     // 6. 将当前线程永久挂起,维持内存中的 Shellcode 持续运行
     Sleep(0xFFFFFFFF);
     return 1;
 return result;
}4.2.3 基于哈希的 API 动态解析为了逃避静态分析工具对其导入表的审

...(已截断)

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-290497.htm
#2 2026-06-01 21:09:07
文章排版有问题
#3 2026-06-01 21:09:07
想问问shellcode重定位修复和导入表解析是怎么做的?

请登录后参与讨论

立即登录 注册账号