初识APT

最近拜读了三篇 APT 样本分析报告:一篇是 CYFIRMA 发布的针对印度政府实体的 APT36(Transparent Tribe)多阶段 LNK 恶意活动报告,另外两篇分别是 SideWinder(APT-C-17)木马加载链分析和国内厂商发布的 海莲花新型木马攻击活动分析。
三篇报告的攻击目标、地域、技术栈各不相同,但串起来看恰好覆盖了 APT 攻击中最经典的几类入口技术:LNK 快捷方式伪装、合法数字签名滥用、MSI 安装包 + 变换补丁。

声明:本文仅为安全学习与研究目的的技术分析笔记,所有内容基于公开报告整理,请勿用于任何非法用途。 文中第二、三篇报告的细节依据报告截图整理,个别哈希、域名拼写可能存在识别误差,以原文为准。

APT(Advanced Persistent Threat),翻译过来就是高级持续性威胁。在网络安全领域,它特指一类由国家背景或受国家资助的、具有极高技术水平和明确政治/经济目的的黑客组织。

它是网络空间里的“特种部队”,而不是普通的“小偷”。

  1. A - Advanced(高级)

这意味着他们的技术手段非常高超,通常会使用0-day 漏洞(未公开的漏洞)、社会工程学(如精心伪造的钓鱼邮件)、高级免杀技术以及定制化的恶意软件。

  1. P - Persistent(持续)

这是 APT 与普通黑客(如勒索软件、黑产)最大的区别。普通黑客追求“快进快出”,拿到钱就走;而 APT 追求的是长期潜伏。

他们可能会在目标网络中隐藏几个月甚至几年。

他们会建立隐蔽的 C2(命令与控制)通道,定期发送“心跳包”(如前面看到的 30 秒一次)。

他们会千方百计地实现持久化驻留(如修改注册表启动项、植入计划任务),确保即使电脑重启,木马也能自动运行。
  1. T - Threat(威胁)

这里的威胁通常不是针对普通网民,而是带有强烈的政治、军事或经济目的。目标往往是:

政府机构、军队、国防工业。

高科技企业(窃取商业机密)。

能源、金融、通信等关键基础设施。

持不同政见者或特定领域的专家学者。

一、APT36 “LNK 伪装 PDF” 多阶段攻击

1.1 组织与活动背景

APT36,又称 Transparent Tribe(透明部落),是巴基斯坦背景的威胁组织,长期针对印度政府、军事、学术及战略部门进行网络间谍活动。CYFIRMA 于 2025-12-30 发布的这份报告披露了该组织 2025 年 12 月中旬(首次观测 2025-12-15)的一次攻击活动,其诱饵非常有意思:”Online JLPT Exam Dec 2025”(12 月 JLPT 日语能力考试)相关的考试资料,猜测瞄准的是与考试、教育、涉外事务相关的政府人员。

基础信息一览:

项目 内容
目标平台 Windows
威胁类型 鱼叉钓鱼活动
文件类型 LNK(Windows 快捷方式)
关键标识 Online JLPT Exam Dec 2025.pdf.lnk
首次观测 2025-12-15
影响 数据窃取
诱饵压缩包 MD5 30fda797535a0f367ea2809426760020
LNK MD5 ceb715db684199958aa5e6c05dc5c7f0
HTA MD5 6baf7121594b84177eec4420875908cf

1.2 攻击全流程

下面按环节一一学习。

1.2.1 初始访问:鱼叉钓鱼 + ZIP 附件(T1566.001)

攻击从一封鱼叉钓鱼邮件开始,附件是名为 Online JLPT Exam Dec 2025.zip 的压缩包。考试资料类诱饵的点是:目标人群明确、打开意愿强、文件本身”应该”有内容——这为后面”LNK 里内嵌完整 PDF”的伪装策略做了铺垫。

1.2.2 伪装艺术:双扩展名 LNK + “体积伪造”

解压后是一个 Online JLPT Exam Dec 2025.pdf.lnk。这里有两个精心设计的点:

  • 双扩展名(T1036 Masquerading):由于 Windows 默认隐藏已知扩展名,即使开启了”显示扩展名”,.lnk 的显示行为也具有很强的迷惑性,用户看到的是一个”PDF”;
  • 体积伪造:正常 Windows 快捷方式只有 10~12 KB,而这个 LNK 超过 2 MB。分析师检查文件内容发现了大量 endstream、endobj 标记和内嵌图片对象——攻击者把一份完整的 PDF 结构整体塞进了 LNK 文件,让文件体积、图标观感都逼近真实 PDF,从”文件名像 PDF”伪装到”体量和内容都像 PDF”。

这是一个非常值得学习的细节。正常业务场景里几乎不存在几 MB 的快捷方式,”可疑体积”(LNK 过大)就可以成为一条检测规则。

压缩包内还有一个隐藏目录 usb,内含 usbsyn.pim 文件(推测为加密数据/代码,运行时解密使用),与后续 RAT 的 USB 感染模块相呼应。

1.2.3 执行入口:滥用 mshta.exe(T1218.005)

LNK 被点击后,调用系统自带的 mshta.exe 拉取并执行远程 HTA 脚本:

  • HTA 地址:https://innlive[.]in/assets/public/01/jlp/jip.hta
  • 远程图标:https://drjagrutichavan[.]com/assetl/hp/pk5//ico/wd.ico

这是典型的 LOLBin(Living-off-the-Land Binary) 用法:不落地任何可执行文件、滥用系统受信任的二进制、直接从远端拉代码——杀软和 EDR 对 mshta.exe 天然宽松。

1.2.4 HTA Loader:混淆、解密与环境操控

HTA 脚本作为隐蔽加载器,做了四件事:

  1. 窗口隐藏:把窗口尺寸调整为 0,用户全程无感知;
  2. 自定义解密:定义 USBContents、SyncDataToCD、CDDownload 等函数,实现自定义 Base64 解码 + XOR 解密例程;脚本内两个关键变量 ReadOnly 和 WriteOnly 分别是两个加密载荷容器;
  3. ActiveX 环境操控:通过 WScript.Shell 查询注册表确定系统可用的 .NET 运行时版本,并动态设置 COMPLUS_Version 环境变量——提高兼容性和可靠性;
  4. 辅助欺骗:下载并打开一份合法 PDF,让用户确信自己打开的就是真文档。

1.2.5 Stage-1(ReadOnly):用 XAML 反序列化”关掉” .NET 的安全开关

这是本篇报告技术含量最高的部分。

ReadOnly 载荷在内存中重建一个 2312 字节的对象,解密后是一个序列化的 .NET 对象,其中包含基于 XAML 的配置数据,通过 BinaryFormatter 在内存中反序列化。该 XAML 内嵌恶意 ResourceDictionary,滥用 ObjectDataProvider 元素:

  • 操纵 System.Workflow.ComponentModel.AppSettings;
  • 把内部字段 disableActivitySurrogateSelectorTypeCheck 设为 true。

这个开关有什么用呢:.NET 为了防御不安全的反序列化攻击,提供了 ActivitySurrogateSelector 类型校验;把它禁用后,后续阶段就可以执行任意不安全的反序列化。所以 ReadOnly 本质是一个”配置初始化器”——先解除系统防御,再给 Stage-2 (WriteOnly)开路。

ObjectDataProvider + BinaryFormatter 是 .NET 反序列化利用的经典组合(最早在 CMS/渗透工具链中常见),APT 把它搬到了载荷加载流程里,用合法的 .NET 机制去关闭 .NET 自己的安全检查,全程无需内核漏洞、无需提权利用,非常”方便安全”。

1.2.6 Stage-2(WriteOnly):Fileless 内存 DLL

WriteOnly 是备用/第二级加密载荷(约 359 KB),同样不落盘,反序列化后在内存中直接执行,即 ki2mtmkl.dll——感染链的核心组件。

1.2.7 ki2mtmkl.dll:诱饵、环境感知与”杀软自适应持久化”

ki2mtmkl.dll 加载后调用 Work() 主例程,编排后续所有活动。三个关键行为:

① 诱饵 PDF 释放:从内嵌编码数据中重建并解压一份合法 PDF 写入临时目录并自动打开。受害者阅读”真文档”的同时,恶意代码在后台继续运行——“用户看到的”和”系统执行的”一明一暗。

② 杀软感知(Security Posture Profiling):通过 WMI root\SecurityCenter2 命名空间枚举已安装杀软及显示名称,然后按杀软类型选择不同的持久化与执行路径:

检测到的杀软 标志位 持久化策略
Kaspersky flag7 工作目录 C:\Users\Public\core\,落盘混淆的 flow.hta,启动文件夹放置快捷方式,PowerShell 调 mshta.exe 执行
Quick Heal flag6 生成 bat 批处理 + 恶意快捷方式放入启动目录,通过 bat 间接执行 HTA
Avast / AVG / Avira flag4/3/5 简化策略:直接把载荷拷贝到启动目录执行
未检出已知杀软 — 兜底例程:bat 执行 + 注册表持久化 + 载荷部署

针对不同杀软的行为审计盲区定制投放路径——对 Kaspersky 用 mshta+lnk 组合绕其强项,对弱查杀产品则省事直接落启动目录。这种”防御环境自适应”也是APT高技术的体现,之前遇到的普通样本都没有这样的策略。

③ 二次 HTA 投递:新落地的 flow.hta 重复类似的混淆/解密逻辑,解出:

  • ReadOnly:序列化 XML 配置数据;
  • WriteOnly:名为 iinneldc.dll 的恶意 DLL——功能完整的 RAT。

1.2.8 iinneldc.dll:双线程 RAT

iinneldc.dll 启动即创建两个并行线程:

  • 线程一:C2 命令与控制(DoMainWork)
  • 线程二:USB 插拔事件监听——检测 U 盘插入并实施感染,让木马可以借助移动介质向物理隔离/受限网络扩散。

C2 通信:

  • 硬编码 C2:2.56.10.86:8621(TCP 长连接,非 HTTP,T1095);
  • 上线即回传用户名、计算机名、操作系统版本;
  • 命令接收:先读消息长度再取载荷,使用 AES 解密,硬编码密钥 ZAEDF_98768_@$#%_QCHF;
  • 解密后交 parse() 分发执行。

命令集(解析结果就是一份”间谍功能清单”):

命令/功能 行为
Disconnected 断开网络流
SystemInformation getsystem() / GetDeepInfo() 收集主机信息回传
pkill <pid> 杀指定进程并回传最新进程列表
RD 前缀 远程桌面:CopyFromScreen() 截屏 → 按攻击者指定尺寸缩放 → JPEG 压缩 → Base64 → 以 “RemoteDesktop” 标签回传,近实时窥屏
剪贴板读写 getclipboardtext() 窃取复制内容(密码、钱包地址);setclipboardtext() 篡改剪贴板(可实施加密货币地址替换)
runshell 隐藏窗口调用 cmd.exe 执行任意命令并回传输出
文件管理 枚举、上传、下载、重命名、删除、移动文件/目录
其他 设置光标、列举进程/软件、窃取已保存密码

数据窃取:CopySubfiles 函数递归扫描目录,定向收集 doc/docx/xls/xlsx/ppt/pptx、PDF、TXT、mdb/accdb 数据库文件——典型的办公情报窃取画像。所有外传数据先 Base64 编码再 AES 加密后经 C2 通道发送(T1041)。

二、SideWinder(APT-C-17)木马加载链分析

响尾蛇组织, 又称Sidewinder、APT-C-17、T-APT-04,是一个来自于南亚地区的境外APT组织。该组织主要针对中国、巴基斯坦、尼泊尔、斯里兰卡等亚洲地区国家进行网络间谍活动,主要针对高校,新闻,金融,媒体,政府和电信公司进行攻击,以窃取敏感信息为主要目标。该组织的相关攻击活动最早可以追溯到2012年,至今还非常活跃,大多数行动是对巴基斯坦进行攻击,窃取机密信息。

Step1:样本执行,解密 C2 地址

木马启动,读取内置加密字符串CE 4*k,使用硬编码密钥$*VYGETRMPHG@%9bvdsf984574398546573d6#^%*&异或解密,
得到 C2 域名govmm.org。

解密C2地址代码

Step2:生成主机标识(ClientID)

  1. 通过 GetTempPath2W 获取系统用户 Temp 目录 C:\Users\<username>\AppData\Local\Temp\
  2. 拼接固定文件名TMP987979RND得到临时文件路径
  3. 生成随机数字作为ClientID写入该临时文件,作为被控主机唯一 ID

Step3:构造 C2 请求 URL,上线通信

ClientID 拼接固定路径,生成访问 URL:
/softwareapp-updates/{ClientID}/serveupdate.php?updateapps=78778JvGFDTS879843


调用 WinHttp API 发起HTTP POST 请求(Content-Length=0,空包上线,向 C2 报到)。

tep4:接收 C2 下发指令,分支处理

木马读取 C2 服务器返回数据,识别GOTCHAA=指令前缀,分两条分支:

分支 A:文件窃取(download 指令)

  1. 解析download后面的文件路径,下载文件的命令格式如下:

    GOTCHAA=download


2. 读取本地目标文件内容
3. 文件内容做 Base64 编码
4. 按照分片协议封装为updateoutput参数
5. POST 发包,分片把文件数据传回 C2 服务器,返回包数据格式如下:

updateoutput=totsize=1---chunkno=1---chunkvalue=base64(content)
totsize为数据分片的总个数
chunkno为当前数据分片的序号
chunkvalue为base64编码后的文件内容

分支 B:任意系统命令执行

  1. 异或解密 C2 下发的命令字符串

  2. 调用CreateProcess启动cmd.exe /c执行命令
  3. 通过管道捕获命令标准输出回显
  4. 回显内容 Base64 编码,同样使用分片协议封装 POST 回传给 C2

三、海莲花(OceanLotus)

海莲花(OceanLotus),又称 APT32,是一个被广泛认为具有东南亚某国背景的国家级 APT 组织,自 2012 年起活跃至今。长期针对中国及部分东南亚国家实施网络攻击,以窃取敏感情报为主要目标,服务于其地缘政治与战略需求。该组织技术能力持续演进,攻击手法已从早期的鱼叉钓鱼发展为具备高级免杀、无文件驻留和跨平台攻击能力的高水平威胁团体。在目标选择上,其攻击重点已从基础情报收集转向战略级涉外情报窃取。

核心攻击手法

  1. MST(Microsoft Transform)文件滥用,隐蔽植入
    MST 是 Windows 安装程序的合法变更文件,攻击者将恶意 DLL(Binary.Transforms.dll)封装在 MST 内部;依托合法 MSI 安装流程执行,规避静态特征查杀;安装结束后 MST 会被系统自动清理,溯源难度高。不需要修改原始 MSI,就可以注入代码、执行命令、篡改配置。
  2. 注册表持久化驻留
    恶意载荷释放 PCHealthCheck.exe(合法载体)+ tbs.dll 到 %LOCALAPPDATA%\PCHealthCheck\;在 HKCU\Software\Microsoft\Windows\CurrentVersion\Run 添加自启动项,开机自动拉起程序,维持长期控制。

  3. Process Hollowing 进程镂空内存执行(无文件落地对抗)
    • tbs.dll 内置 AES 加密的 shellcode;先 AES 解密、解压得到 shellcode
    • 加载系统自带 xpsservices.dll,掏空该进程内存,替换代码区块为解密后的 shellcode,修改内存权限后执行恶意代码
    • 恶意代码不落地,直接在内存运行,绕过常规文件查杀
  4. Rust 编写远控,加密心跳 C2 通信
    • 底层远控主体使用 Rust 开发,HTTP 协议和 C2 交互
    • 心跳包自定义结构:2 字节密钥长度 + 可变长异或密钥 + 4 字节数据长度 + 异或加密数据
    • 定期心跳上报,C2 下发指令经过 AES 解密后执行
    • 支持能力:主机信息收集、枚举进程、文件上传、文件下载

四. 三篇报告横向对比:攻击流程与攻击手法

对比维度 SideWinder 海莲花 (OceanLotus) APT36
初始载体 伪装成更新程序的 PE 文件 manarupdate.exe MST (Microsoft Transform) 文件,寄生合法 MSI 安装流程 ZIP 内的超大 LNK,双扩展名 .pdf.lnk,内嵌完整 PDF 结构
执行链路 单阶段:进程直接运行,调 WinHttp API 上线 MST → Binary.Transforms.dll → 释放 PCHealthCheck.exe + tbs.dll → 解密 shellcode LNK → mshta 拉远程 HTA → Base64+XOR → .NET 反序列化 → ki2mtmk1.dll → flow.hta → tinneldc.dll
内存对抗 弱:载荷全落地,仅加密配置串 强:Process Hollowing 掏空 xpsservices.dll 写 shellcode,白程序侧载 强:关 disableActivitySurrogateSelectorTypeCheck 绕 .NET 防护,DLL 全程内存加载
持久化 无自启动机制,仅靠 ClientID 临时文件维持身份 HKCU Run 注册表添加PCHealthCheck 自启动项 WMI 查 SecurityCenter2 探测杀软,按结果分支:Startup LNK / bat / Run 注册表 / 备选多重组合
C2 通道 HTTP POST,伪装浏览器 UA;路径 /softwareapp-updates/(ClientID)/serveupdate.php;域名 govmm.org 异或解密 HTTP + 自定义二进制心跳:2 字节密钥长 + 变长异或密钥 + 4 字节数据长 + 异或数据;远控体 Rust 编写 原始 TCP 2.56.10.86:8621 + TLS;指令用硬编码 AES 密钥解密
指令与外传 GOTCHAA= 前缀;download 读文件、cmd 执行命令,回显 Base64 后按 updateoutput=tosize–chunkno–chunkvalue 分片回传 AES 解密指令;支持信息收集、进程枚举、文件上传下载 Base64 + AES 外传;扩展截屏、剪贴板窃取与篡改、凭据抓取、USB 事件监听横向
加密手法 单一硬编码密钥异或 (C2 地址、命令串) AES 加密 shellcode + 自定义异或心跳包 (双层) Base64 + XOR 混淆载荷 + AES 加密指令 (多层混合)
迷惑受害者 靠“更新程序”文件名伪装,无诱饵文档展示 释放并打开诱饵文档,热点议题标题降低戒心 LNK 体积与真实 PDF 相当 + 运行时释放打开诱饵 PDF,双重可信度

原文:APT | SideWinder组织远控木马加密通信分析 —— TahirSec, 2025.12.31
网络安全联创中心:APT组织海莲花新型样本风险提示 —— 信息通信行业联创中心, 2025.10.30
APT36 : Multi-Stage LNK Malware Campaign Targeting Indian Government Entities —— CYFIRMA, 2025.12.30