一款“只出现一次”的顶级间谍软件,牵出了一张隐藏六年的基础设施暗网

admin 2026-08-04 07:54:25 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文深入剖析了一款名为AngrySpark的顶级间谍软件,它采用三段式架构、虚拟机加载和双重自毁机制,隐蔽性极强,但仅在一台英国电脑上出现过一年便消失。研究人员通过一种名为IP-ESSENCE的路径指纹技术,发现其基础设施与著名的三角行动间谍软件集群存在关联,暗示两者可能共享工具或基础设施搭建手册。 综合评分: 90 文章分类: 恶意软件,威胁情报,逆向分析,网络安全,实战经验


二、另一条时间线:2020 年夏天的一次“命中”

现在切换到 Bill Marczak 团队的视角。他们的故事比 Gen 的报告早开始了六年。

2020 年夏天,他们注意到一个中东网络正在与一个疑似间谍软件 C&C 通信:ad43-nxs[.]com。按照追踪间谍软件的经验,运营者通常会把目标分摊到多台行为相似的服务器上,于是团队尝试以 ad43-nxs[.]com 的特征为支点做关联扩展(pivot)——搜索相似的 HTTP 响应头、响应体、JARM 指纹。

结果一无所获。

常规手段全部失效后,他们注意到了这台服务器一个有趣的选择:运营者把 443 端口上收到的 TCP SYN 包,经过多级中间跳转转发后,才由末端真实节点的 TCP/IP 协议栈生成 SYN/ACK 响应。判断依据是响应 IP 包的 TTL 值低于预期,而往返时延(RTT)又高于预期。

这个架构本来是为了隐藏末端节点,但它也带来一个副作用:既然 SYN 会穿透整条转发链,那么测量者不仅可以直接探测末端真实节点,还能对转发路径本身进行指纹识别。

三、IP-ESSENCE:把“转发路径”变成指纹

Marczak 团队据此构建了一种路径指纹技术,命名为 IP-ESSENCE,其核心是 IP 协议中一个古老而冷门的选项——Record Route(记录路由)

Record Route 的工作机制如其名:当 IP 包携带该选项时,沿途每一个处理该包、且协议栈选择支持该选项的中间跳点,都会把自己的 IP 地址追加到选项中最早的一个空槽位里;已被填充的槽位则原样转发。更关键的是,Linux 内核的 TCP 实现会把入站 SYN 包中的 Record Route 选项复制到回应的 SYN/ACK 包的 IP 头里——尽管研究者在任何 RFC 中都找不到对这一行为的规定。

也就是说,向目标发送一个带 Record Route 的 SYN,就能在 SYN/ACK 中收回一份“沿途跳点名单”。对于把流量层层转发的 C2 基础设施而言,这份名单就是它的指纹。

当然,现实中有一个障碍:路由器在公网上转发时倾向于丢弃带 IP 选项的包,但这种过滤大多发生在网络边界。于是团队把测量节点部署在与目标服务器同一个云厂商(Amazon)、同一个 EC2 区域(ap-southeast-1)内,成功稳定地触发带有 Record Route 的响应。

这套方法后来被打造成大规模扫描能力:团队在多数 Amazon EC2 区域的免费套餐内部署测量实例,进行区域内扫描,累计探测约 1.3 亿个 IP,其中近 80 个匹配上了指纹。他们最后一次在 EC2 上成功的 IP-ESSENCE 扫描是在 2024 年。耐人寻味的是,当他们在一个受邀制的闭门威胁情报会议上公开了这套方法论之后,IP-ESSENCE 的有效性大幅下降——显然,有人听完之后修补了自己的基础设施。

四、两个集群:OBTUSE 与 SCALENE

在 IP-ESSENCE 有效的窗口期内,团队在 Amazon EC2 上发现了两个主要的疑似间谍软件活动集群。

第一个集群命名为 OBTUSE:代理链长度为 3 级,分散在多个 EC2 区域。集群内还有若干按地理区域划分的子集群,包括聚焦俄罗斯的 OBTUSE-RU 和聚焦中东的 OBTUSE-ME-1(ad43-nxs[.]com 即属于后者)。

2023 年,OBTUSE 的身份被证实为货真价实的间谍软件活动——它就是“三角行动”(Operation Triangulation)。证据有两条:

  1. 卡巴斯基披露“三角行动”的报告列出的 IOC 中,包含了团队识别的四个 OBTUSE-RU 域名之一 ans7tv[.]net
  2. BreachForums 上有人公开了一批据称泄露自卡巴斯基实验室的 Snort 规则,其中 ans7tv[.]net 与 ad43-nxs[.]com 并列,双双被标记为 “EquationGroup-TriangleDB”

值得注意的是,这份泄露的 IOC 清单并未包含更多 OBTUSE 域名。这说明清单作者大概率没有独立发现 IP-ESSENCE 这套方法(否则能挖出的域名远不止这些),但他们又确切知道 ad43-nxs[.]com 与 ans7tv[.]net 之间的关联。Marczak 据此推测:清单的作者(或许就是卡巴斯基)在 2023 年或更早,识别过“三角行动”间谍软件在中东的一次部署。

第二个集群命名为 SCALENE,特征与 OBTUSE 明显不同:代理链长度为 4 级、TLS 证书使用三级域名、且全部集中在伦敦的 eu-west-2 区域。SCALENE 还有一些不常见的响应特征,让团队得以继续 pivot 到 EC2 之外的基础设施——这些“EC2 之外”的节点主要托管在各云服务商的英国 IP 上。令人困惑的是,团队始终无法摸清 SCALENE 的受害者画像,只能推测相关间谍软件行动要么量级很小,要么严格局限在特定地理区域。

OBTUSE 的身份揭晓了,SCALENE 却一直是块难啃的骨头——直到 2026 年 4 月。

五、交汇点:一台服务器,两条故事线

Gen Digital 报告提供的那块“缺失拼图”是:他们观测到的新型间谍软件的第二阶段(“Stage 1”)所通信的服务器 pick.storewebzone[.]net(托管于 185.151.31[.]111),正是 Marczak 团队当年在 EC2 之外发现的 SCALENE 基础设施中的一台

至此,两个集群都被证实对应真实的间谍软件活动:OBTUSE 是“三角行动”,SCALENE 则与 AngrySpark 重叠。

同一套指纹技术挖出的两个基础设施集群,分别对应着:

  • 一场针对 iPhone 的零点击攻击行动(“三角行动”,卡巴斯基称其攻击链为前所未见的复杂,且至少部分与美国存在关联——证据包括在采购 IP 地址空间时的 OPSEC 失误,而这类问题长期困扰着美国情报界);
  • 一款针对 Windows、字符串里带着英式拼写、C2 扎堆在英国托管商和伦敦区域的间谍软件(AngrySpark)。

“美式 iOS 间谍软件”与“英式 Windows 间谍软件”的基础设施出现了重叠——这意味着什么?

六、巧合,还是协同?——一份克制的归因讨论

Marczak 在原文中对归因保持了明显的克制,只给出了两种可能性,我们也应当在此止步,不做过度推论:

可能性一:pivot 过头了。 从 OBTUSE 跳到 SCALENE 也许纯属巧合——同一套指纹误打误撞,把一场与“三角行动”毫不相干的间谍软件部署也圈了进来。IP-ESSENCE 匹配的是“转发路径”的特征,理论上,不同行动者如果租用相似架构的转发设施,确实存在撞车的可能。

可能性二:共享工具或“施工手册”。 Marczak 认为这是更可能的解释。理由有三:其一,AngrySpark 和“三角行动”都呈现出高度定向(highly targeted)的特征;其二,整个 pivot 过程似乎没有滑出西方阵营行动的范围;其三,两套基础设施在架构风格上高度相似(多级代理链、EC2 区域选择、英国托管)。因此,OBTUSE 与 SCALENE 背后,可能共享了某些私有工具,或至少共享了一份搭建基础设施的“playbook”(施工手册)。

需要强调的是,即便采信第二种解释,它能支持的结论也仅限于“基础设施搭建方法存在关联”,而非“两场行动由同一实体执行”。Windows 与 iOS 的平台差异、英美拼写差异,都是真实存在的反差。原文谨慎,我们亦应谨慎。

#

七、对当下的几点启示

把这两份报告放回 2026 年的威胁图景中,有几个观察值得安全从业者思考。

其一,间谍软件的“隐身周期”可能远超我们的假设。 AngrySpark 从 2022 年运行到 2023 年消失,2026 年才被公开剖析;而 Marczak 团队 2020 年发现的 C2,到 2026 年才与一份公开报告对上号。这意味着当前可能还有相当数量的高投入、低流量的定向行动从未进入公众视野。“没被发现”与“不存在”之间,隔着整套威胁狩猎方法论。

其二,基础设施层正在成为归因与狩猎的新战场。 样本可以 VM 化、可以自毁、可以只出现一次,但行动者搭建 C2 时总有反复出现的“施工习惯”——代理链长度、证书风格、云厂商与区域的选择。IP-ESSENCE 这类方法的价值,在于把狩猎对象从“恶意软件”上移到了“运营架构”。而它在闭门会议上被公开后迅速失效,也说明攻击方对这类研究保持着密切跟踪——攻防双方在“基础设施指纹”这条战线上的军备竞赛已经展开。

其三,顶级行动的“可弃置化”设计正在成为标配。 AngrySpark 的心跳死锁开关、服务器端击杀命令、失联即自毁,与商业间谍软件行业近年来展现的“任务完成即焚毁”特征一脉相承。对事件响应而言,这压缩了取证窗口:等你注意到它时,它往往已经自我清场。这也意味着,内存取证能力、对出站流量的持续可见性(尤其是伪装成图片、静态资源的 HTTPS 请求),比事后的磁盘取证更为关键。

其四,归因话语需要保持克制。 无论是 Gen 用“sombrely”暗示英国背景,还是泄露 Snort 规则上的“EquationGroup-TriangleDB”标签,抑或是“三角行动”被指与美国存在关联——这些都属于拼图碎片,而非完整画面。在国家级网络行动的技术归因中,单个语言特征、单条基础设施重叠都不足以支撑结论。Marczak 这种“列出可能性、标注置信度”的写法,值得行业借鉴。

技术附录

附录 A:MITRE ATT&CK 技术映射(AngrySpark)

| 战术阶段 | 技术编号 | 技术名称 | AngrySpark 中的体现 | | — | — | — | — | | 持久化 | T1053.005 | Scheduled Task/Job: Scheduled Task | DLL 伪装为任务计划程序扩展组件 WptsExtensions.dll,经由任务计划程序加载 | | 防御规避 | T1036.005 | Masquerading: Match Legitimate Name or Location | DLL 文件名、导出函数(WptsCopyActionData 等五个)、版本信息均仿冒微软合法组件 | | 防御规避 | T1055 | Process Injection | 向 svchost.exe(-k netsvcs -p)注入位置无关 shellcode | | 防御规避 | T1027.002 | Obfuscated Files or Information: Software Packing | 自定义 VM 字节码解释器,payload 由 25KB blob 在运行时现场组装 | | 防御规避 | T1140 | Deobfuscate/Decode Files or Information | 级联 XOR 编码(校验种子 0x23/0xA5)解码字符串、API 名与代码块 | | 执行/防御规避 | T1106 | Native API | 直接系统调用,内置 24 项“构建号→系统调用号”对照表绕过用户态 Hook | | 防御规避 | T1620 | Reflective Code Loading | 无导入表、无重定位、无 PE 头,全部代码在内存中组装执行 | | 防御规避 | T1497.001 | Virtualization/Sandbox Evasion: System Checks | CPUID 检测 hypervisor;RDSSPQ 读取影子栈指针;命中即以 0xAACFBB1A 中止 | | 防御规避 | T1070.004 | Indicator Removal: File Deletion | MoveFileExW(MOVEFILE_DELAY_UNTIL_REBOOT)安排 DLL 延迟删除;RegDeleteValue 擦除注册表配置 | | 防御规避 | T1134 | Access Token Manipulation | 自毁前动用 SeSecurityPrivilege / SeRestorePrivilege / SeTakeOwnershipPrivilege 转移文件并改权限 | | 发现 | T1082 | System Information Discovery | RtlGetVersion 收集系统构建号、SP、产品类型 | | 发现 | T1057 | Process Discovery | Toolhelp 快照枚举进程(备选 NtQuerySystemInformation 类 5),进程名 MD5 后上报 | | 发现 | T1518.001 | Software Discovery: Security Software Discovery | 注册表检查 Windows ATP 状态;尝试加载 ctiuser.dll(CrowdStrike Falcon 指标) | | 命令与控制 | T1071.001 | Application Layer Protocol: Web Protocols | HTTPS 信标,check-in 伪装为 PNG 图片请求,指令经 HTTP 302 重定向下发 | | 命令与控制 | T1001.002 | Data Obfuscation: Steganography | 下发的加密 shellcode 藏于 PNG 自定义 chunk(magic 0xA1 + 24 字节头) | | 命令与控制 | T1573.002 | Encrypted Channel: Asymmetric Cryptography | DLL 通道使用 AES-256-CBC + RSA-4096;TLS 证书指纹锁定 | | 命令与控制 | T1573.001 | Encrypted Channel: Symmetric Cryptography | shellcode 通道使用 XXTEA(双密钥分离出入向)+ 每次配置轮换的自定义 Base64 字母表 | | 命令与控制 | T1105 | Ingress Tool Transfer | 接收服务器下发的加密 shellcode 并在新分配内存中执行 | | 渗出 | T1041 | Exfiltration Over C2 Channel | 主机画像数据经 XXTEA 加密后通过 HTTP POST 回传 .php 端点 |

附录 B:失陷指标(IOC)

B.1 AngrySpark(来源:Gen Digital《Chasing an Angry Spark》)

文件指标:

| 类型 | 值 | | — | — | | DLL (SHA256) | 491870264FA2D666FB8859508A6A44B80BCB868E2F43C00F03199DF2651C757D | | DLL (MD5) | 592D663AD71575E4C52E0C810008C3C2 | | ImpHash | 068AB3CB0F28916EA64C27EA58A680C8 | | 内存 dump #1 (SHA256) | 9C492A39823AA0FF14F3131A2346F833827A1C423E77DCC9682BB939AEA0E215 | | 内存 dump #2 (SHA256) | 20F19A37E17772C38B6F89AF40FA941D55BAD9FFCF3B3382206A0CADFA937025 | | 内存 dump #3 (SHA256) | 96883ABD45ECA3F076F1D5E2A9E75E37B588A37A99FE42EC4BEDD34F7926760E |

网络指标:

| 类型 | 值 | | — | — | | C2 域名(DLL 侧) | s13035516[.]server-sys[.]com | | C2 域名(shellcode 侧) | pick[.]storewebzone[.]net | | C2 IP #1 | 185.151.31[.]6 | | C2 IP #2 | 185.151.31[.]111 | | 所属网段/ASN | 185.151.28[.]0/22,AS48254(20i Limited,英国) | | User-Agent | wininet/10.0.19044 | | 信标 URL 模式 | /assets/static/img/<6-8字符>_<2位数字>.png | | C2 URL 模式 | /prod/<8字符>/<4位数字>/<6-8字符>.php | | 父域名 | server-sys[.]com(Tucows 注册,WHOIS 隐私保护)、storewebzone[.]net(Name.com) |

主机指标:

| 类型 | 值 | | — | — | | DLL 文件名 | WptsExtensions.dll | | 注册表键 | HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\CompatibilityAdapter | | 注入目标进程 | svchost.exe -k netsvcs -p | | C++ 命名空间 | angry_spark:: | | Blob 版本 | 0x0303 | | XOR 校验种子 | 0x23、0xA5 | | DJB2 参数 | init=5381,mul=33 | | 反沙箱中止错误码 | 0xAACFBB1A |

B.2 OBTUSE / “三角行动”相关域名(来源:Bill Marczak 文章及卡巴斯基报告)

| 类型 | 值 | 备注 | | — | — | — | | 域名 | ad43-nxs[.]com | OBTUSE-ME-1(中东方向),2020 年观测 | | 域名 | ans7tv[.]net | OBTUSE-RU(俄罗斯方向),卡巴斯基“三角行动”报告 IOC |

附录 C:检测与防御建议

  1. 出站流量画像:重点审计伪装成静态资源(PNG/CSS/JS)的 HTTPS 请求,留意符合 /assets/static/img/<6-8字符>_<NN>.png 与 /prod/<8字符>/<4位数字>/<6-8字符>.php 模式的 URL;对固定 300 秒间隔、带 90 秒抖动的周期性心跳保持敏感。
  2. 内存层面的可见性:AngrySpark 全程无文件落地(注入 + 内存组装),仅依赖磁盘扫描无法发现。应部署具备内存扫描与直接系统调用检测能力的 EDR,关注 svchost.exe 中无 PE 头、无导入表的可执行内存区域。
  3. 注册表与持久化审计:监控 HKLM\...\Schedule\CompatibilityAdapter 等非常规路径下的加密 blob 写入,以及名为 WptsExtensions.dll 但并非微软签名的文件。
  4. 基础设施侧狩猎:对 185.151.28.0/22 及 AS48254 上的历史通信记录做回溯;对“多级代理转发”型 C2,可参考 IP-ESSENCE 思路利用 Record Route、TTL/RTT 异常进行路径指纹识别(注意该方法在目标方知晓后可能失效)。
  5. 移动侧防护:针对“三角行动”类 iOS 零点击攻击,高风险人群建议启用 Lockdown Mode、保持系统及时更新、定期重启设备(内存驻留型 implant 重启即失效),可使用卡巴斯基公开的 triangle_check 工具备份自检。

主要参考来源

  1. Bill Marczak, An Angry Spark, or a Triangle in Disguise?(2026-07-27) https://medium.com/@billmarczak/an-angry-spark-or-a-triangle-in-disguise-ac32852a1be3
  2. Gen Digital, Chasing an Angry Spark(2026-04-14) https://www.gendigital.com/blog/insights/research/chasing-an-angry-spark
  3. Kaspersky Securelist, Operation Triangulation 系列报告 https://securelist.com/trng-2023/
  4. Kaspersky, TriangleDB: The Spyware Implant of Operation Triangulation https://www.kaspersky.com/blog/triangledb-mobile-apt/48471/

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:奇安信威胁情报中心 威胁情报中心 威胁情报中心《一款“只出现一次”的顶级间谍软件,牵出了一张隐藏六年的基础设施暗网》

评论:0   参与:  0