【AI逆向】APT组织“蔓灵花”某恶意样本分析报告
📅 2026/7/9 12:04:20
👁️ 阅读次数
📝 编程学习
恶意样本AI分析报告
一、基本信息
| 项目 | 内容 |
|---|---|
| SHA256 | a850a903b74c1d3d21c41e03761e8e64b43962269e7649940b10368a005bce20 |
| MD5 | c0a438d69ae731ad705c46ac5209c8cc |
| 架构 | 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存储在.rdata段0x425d6c,由sub_401020在初始化时写入全局变量dword_4307BC,最终通过getaddrinfo进行 DNS 解析。端口56218在WinMain (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_40B0E0→sub_406040)
GetDC→ 获取桌面 DCEnumDisplaySettingsA→ 获取屏幕分辨率CreateCompatibleDC/CreateCompatibleBitmap→ 创建内存位图BitBlt/StretchBlt→ 屏幕内容拷贝GdiplusStartup→ 初始化 GDI+GdipCreateBitmapFromHBITMAP→ HBITMAP 转 GDI+ BitmapGdipSaveImageToStream→ 编码为 JPEG/PNG 写入流CreateStreamOnHGlobal→ 创建内存流- 截图保存路径:
C:\users\public\pictures\ss.jpg
四、关键函数映射
| 地址 | 函数名 | 功能 |
|---|---|---|
0x40F7A0 | WinMain | 主循环,初始化并连接 C2 |
0x404100 | sub_404100 | 初始化 IOCP + ASIO 框架 |
0x4032D0 | sub_4032D0 | 创建 Win IOCP 对象 |
0x40A120 | sub_40A120 | 收集系统信息 |
0x40A040 | sub_40A040 | 建立连接并进入命令循环 |
0x40A9E0 | sub_40A9E0 | 连接服务器(含 resolve+connect) |
0x40EF20 | sub_40EF20 | 命令分发入口 |
0x40F000 | sub_40F000 | 数据接收处理 |
0x40CC30 | sub_40CC30 | 命令执行核心(switch-case 风格) |
0x406760 | sub_406760 | 构建 HTTP GET 请求 |
0x4086F0 | sub_4086F0 | 构建 HTTP POST multipart 上传 |
0x412F90 | sub_412F90 | TCP 连接 + DNS 解析 |
0x413730 | sub_413730 | getaddrinfo封装(DNS 解析) |
0x40B0E0 | sub_40B0E0 | 屏幕截图主函数 |
0x406040 | sub_406040 | GDI+ 位图编码 |
0x40B570 | sub_40B570 | 磁盘驱动器枚举 |
0x40C190 | sub_40C190 | 文件目录递归遍历 |
0x40ABC0 | sub_40ABC0 | 文件搜索枚举 |
五、执行流程(Mermaid 图)
六、威胁评估
| 维度 | 评级 | 说明 |
|---|---|---|
| 危害等级 | 高 | 具备完整 RAT 能力 |
| 隐蔽性 | 中 | 使用合法 Boost.Asio 框架,HTTP 流量混合在正常流量中 |
| 功能完整度 | 高 | 文件管理、进程控制、屏幕监控、系统侦查 |
| 反分析 | 低 | 未使用混淆、加密字符串、反调试或 hash-based API 解析 |
| API 解析方式 | 直接导入 | 无 ROR/ROL 指令,无 GetProcAddress/LoadLibrary 调用 |
编程学习
技术分享
实战经验