【AI逆向】APT组织“蔓灵花”某恶意样本分析报告

📅 2026/7/9 12:04:20 👁️ 阅读次数 📝 编程学习
【AI逆向】APT组织“蔓灵花”某恶意样本分析报告

恶意样本AI分析报告

一、基本信息

项目内容
SHA256a850a903b74c1d3d21c41e03761e8e64b43962269e7649940b10368a005bce20
MD5c0a438d69ae731ad705c46ac5209c8cc
架构32位 Windows PE
基址0x400000
映像大小0x35000
节区.text(rx),.idata®,.rdata®,.data(rw)
函数总数618(含 502 个未命名函数)
编译环境MSVC (VCRUNTIME140, MSVCP140)

二、C2 通信配置

项目
C2 域名pololiberty.com
C2 端口56218(0xDB9A)
通信协议HTTP/1.1
命令获取HTTP GET 请求
数据上传HTTP POST (multipart/form-data,boundary:----BoostAsioBoundary)
重连机制连接失败每 5 秒重试
异步框架Boost.Asio + Windows IOCP (CreateIoCompletionPort)
单实例保护mutex 机制

C2 域名pololiberty.com存储在.rdata0x425d6c,由sub_401020在初始化时写入全局变量dword_4307BC,最终通过getaddrinfo进行 DNS 解析。端口56218WinMain (0x40F900)硬编码。


三、核心功能模块

3.1 系统信息收集 (sub_40A120)

  • GetUserNameW→ 获取当前用户名
  • GetComputerNameW→ 获取计算机名
  • GetModuleFileNameW→ 获取自身执行路径
  • 将收集的信息拼接后发送给 C2

3.2 磁盘/文件系统枚举 (sub_40B570/sub_40C190/sub_40C980)

  • GetLogicalDrives→ 枚举所有逻辑驱动器
  • GetDriveTypeW→ 检测驱动器类型
  • GetVolumeInformationW→ 获取卷信息
  • GetDiskFreeSpaceExW→ 获取磁盘剩余空间
  • FindFirstFileW/FindNextFileW→ 递归遍历目录
  • 文件列表使用<FOLNM><SZ>标签标记

3.3 进程管理 (sub_40CC30)

  • CreateProcessW→ 创建新进程
  • OpenProcess+TerminateProcess→ 终止指定进程
  • 支持按 PID 操作

3.4 文件操作 (sub_40CC30)

  • _wremove→ 删除文件
  • _wrename→ 重命名/移动文件
  • fread/fwrite→ 文件读写
  • 文件上传通过 HTTP POST multipart/form-data

3.5 屏幕截图 (sub_40B0E0sub_406040)

  • GetDC→ 获取桌面 DC
  • EnumDisplaySettingsA→ 获取屏幕分辨率
  • CreateCompatibleDC/CreateCompatibleBitmap→ 创建内存位图
  • BitBlt/StretchBlt→ 屏幕内容拷贝
  • GdiplusStartup→ 初始化 GDI+
  • GdipCreateBitmapFromHBITMAP→ HBITMAP 转 GDI+ Bitmap
  • GdipSaveImageToStream→ 编码为 JPEG/PNG 写入流
  • CreateStreamOnHGlobal→ 创建内存流
  • 截图保存路径:C:\users\public\pictures\ss.jpg

四、关键函数映射

地址函数名功能
0x40F7A0WinMain主循环,初始化并连接 C2
0x404100sub_404100初始化 IOCP + ASIO 框架
0x4032D0sub_4032D0创建 Win IOCP 对象
0x40A120sub_40A120收集系统信息
0x40A040sub_40A040建立连接并进入命令循环
0x40A9E0sub_40A9E0连接服务器(含 resolve+connect)
0x40EF20sub_40EF20命令分发入口
0x40F000sub_40F000数据接收处理
0x40CC30sub_40CC30命令执行核心(switch-case 风格)
0x406760sub_406760构建 HTTP GET 请求
0x4086F0sub_4086F0构建 HTTP POST multipart 上传
0x412F90sub_412F90TCP 连接 + DNS 解析
0x413730sub_413730getaddrinfo封装(DNS 解析)
0x40B0E0sub_40B0E0屏幕截图主函数
0x406040sub_406040GDI+ 位图编码
0x40B570sub_40B570磁盘驱动器枚举
0x40C190sub_40C190文件目录递归遍历
0x40ABC0sub_40ABC0文件搜索枚举

五、执行流程(Mermaid 图)

start (0x41FC06)

__scrt_common_main_seh

WinMain (0x40F7A0)

sub_401020: 将 pololiberty.com 写入全局变量

sub_404100: 初始化 IOCP + ASIO

[循环]

sub_415A10: 设置 UnknownUser / UnknownHostName

sub_41AB50 + sub_405A40: 配置 strand executor

sub_419510: 初始化 tcp::resolver

sub_40A040: 执行连接

sub_40A120: 收集系统信息

sub_40A9E0: DNS解析 + TCP连接

sub_40EF20: 命令分发

sub_40F000: 数据接收 → sub_40CC30: 命令执行

命令处理分支

sub_406760: HTTP GET (取命令)

sub_4086F0: HTTP POST (上传文件)

sub_40B570: 磁盘枚举

sub_40C190/40C980: 文件枚举

sub_40B0E0: 屏幕截图

CreateProcessW / OpenProcess / TerminateProcess

连接失败 → Sleep 5秒 → 重试


六、威胁评估

维度评级说明
危害等级具备完整 RAT 能力
隐蔽性使用合法 Boost.Asio 框架,HTTP 流量混合在正常流量中
功能完整度文件管理、进程控制、屏幕监控、系统侦查
反分析未使用混淆、加密字符串、反调试或 hash-based API 解析
API 解析方式直接导入无 ROR/ROL 指令,无 GetProcAddress/LoadLibrary 调用