2026 年 4 月,SentinelOne首次公开发布了对 Fast16 的分析。这是一个此前未被发现的破坏框架,其最早的组件可追溯至 2005 年左右,比震网(Stuxnet)首次活跃还要早约两年。
该框架由三部分组成:嵌入早期 Lua 5.0 虚拟机的服务二进制文件、在可执行代码从磁盘读取时拦截并对其进行补丁的启动型文件系统驱动程序,以及基于规则的Hook引擎,该引擎会重写单一、范围极窄的目标应用程序内的特定指令序列。
赛门铁克威胁猎人团队对 Fast16 的Hook引擎进行了审查,确认其目标应用程序为 LS-DYNA 和 AUTODYN。这两款软件均用于模拟现实世界问题,包括车辆耐撞性、材料建模以及爆炸模拟。除此之外,还发现 Fast16 的设计目的是篡改高爆炸药爆轰模拟,几乎可以肯定是为了对核武器研究实施战略性破坏。
总结如下
Fast16 的Hook引擎仅针对性关注 LS-DYNA 和 AUTODYN 软件中的高爆炸药模拟程序。
所有证据均表明,攻击者的明确目标是核爆模拟过程。
该恶意软件会检测模拟材料的密度,仅当该值超过 30 克 / 立方厘米时才会激活 , 这是铀在内爆装置的冲击压缩下才能达到的阈值。
多达 10 个不同的软件版本带有定制化Hook,表明这是一场持续多年的行动,攻击者一直在跟踪目标组织的软件更新。
篡改行为仅在全尺寸瞬态爆炸和爆轰模拟运行期间触发。
Fast16 通过共享枚举和身份仿冒在目标网络内部传播,但被设计为不会离开该网络。
确认目标应用程序
驱动程序安装完成后,会创建一个内核文件系统过滤器来监控所有被访问的文件。它首先等待 EXPLORER.EXE 启动,然后通过匹配 PE 头中的 "Intel" 字符串,瞄准所有使用英特尔编译器编译的.EXE 扩展名文件。每当此类文件被加载到内存中时,如果包含匹配的操作码序列,Hook引擎就会对其进行即时补丁。
Fast16 内部的Hook引擎包含 101 条字节模式规则。每条规则在从磁盘读取到特定指令序列时触发,要么捕获绝对地址,要么在注入的.xdata 节中放置指向恶意代码的Hook。
以下是第 46 条和第 47 条规则的示例,它们捕获并覆盖了一个非常特定的 x87 浮点运算序列:
fstp dword [ebp+0] ; 将结果存储到调用方的REAL*4输出参数 fld dword [abs] ; 从数组重新加载 fld dword [imm32] ; 静态全局REAL*4常量 —— 被捕获 fmul dword [imm32] ; 乘以第二个全局REAL*4常量 ; 随后远调用注入的处理程序
这些规则匹配的模式并非适用于那个时代所有由英特尔 Fortran 编译的单精度显式动力学求解器,但存在于 LS-DYNA 和 AUTODYN 的多个版本中。这些模式特定于不同版本的软件,部分也可能属于其他模拟程序。
Fast16 的最终目的
最值得关注的问题是,Fast16 在 LS-DYNA 或 AUTODYN 中完成安装后究竟在做什么。它在模拟程序中放置的Hook包含三种攻击策略,我们将其分别称为机制 A、机制 B 和机制 C。所有机制均针对高压冲击行为模拟。
机制 A
当机制 A 的Hook点第 1 次和第 16 次被触发时,Fast16 会直接返回控制权。除此之外,如果模拟输入值在 30 到 65 之间,Fast16 会将输出值缩小至正常值的 10%,并在此后一直保持该比例。可以想象出如下的假设曲线图:

图 1. 正常值与被篡改值的假设对比图
机制 B
专为 LS-DYNA 设计的机制 B Hook点,首先会检查状态方程(EOS)的选择是否为 2(琼斯 - 威尔金斯 - 李模型,JWL)、3(萨克 - 星期二模型)或 7(高能炸药反应点火与增长模型)。状态方程是一种数学模型,用于确定材料的压力在其体积或密度被压缩或膨胀时如何变化,而上述特定模型均用于模拟高爆炸药。
如果满足状态方程选择条件,代码仅在模拟的某些属性达到初始值的 5 倍时才会启动篡改例程。随后,当材料密度达到 30 克 / 立方厘米时,所有后续模型运行的柯西应力张量输出值(sig_xx、sig_yy、sig_zz)将被修改为真实值的 1%。代码不会立即将这些输出值降至 1%,而是通过计算斜率,在密度达到 60 克 / 立方厘米时自然地将其缩减至 1%。需要注意的是,模拟无需实际达到 60 克 / 立方厘米。
根据所使用的数值可以判断,目标材料是铀,而柯西应力张量值代表材料的热力学压力,该参数决定了材料的可压缩性。测试表明,在模拟压缩至 33 克 / 立方厘米时,这种篡改会导致材料的压缩程度高于实际情况。

图 2. 被篡改的测试结果
机制 C
专为 AUTODYN 设计的机制 C Hook点,首先会检查数值是否为 3、5 或 11。在 AUTODYN 中,这些数值分别对应理想气体状态方程(3)、JWL 模型(5)和李 - 塔弗模型(11)。
机制 C 同样仅在模拟的某些属性达到初始值的 5 倍(阈值),且内存中存在 AUTODYN 特有的字符串 "$Loading co" 时才会生效。根据模拟软件的版本不同,机制 C 会以不同速率缩放输出值(如压力)。输出值的降低从模拟中铀的密度成功压缩至 30 克 / 立方厘米时开始,并根据下表将输出值缩放至不同的最终密度对应的比例。模拟无需达到最终密度,该值仅用于计算执行缩减的斜率。
起始密度 | 最终密度 | 缩减比例(真实值的百分比) |
|---|---|---|
30g/cm³ | 60g/cm³ | 42% |
30g/cm³ | 40g/cm³ | 10% |
30g/cm³ | 47g/cm³ | 10% |
30g/cm³ | 48g/cm³ | 8% |
可以想象,在设计的不同阶段,目标方使用了当时最新版本的模拟软件,而攻击者则针对当时正在进行的模拟设计了不同的篡改方法。事实上,这 101 条Hook规则可以进一步分为 9-10 个Hook组,每个组对应 LS-DYNA 或 AUTODYN 的不同构建版本。
针对核爆模拟的精准打击
正常情况下,中子会从铀中泄漏而不会撞击任何原子核,但当铀被压缩时,这些中子更有可能撞击另一个铀原子核,导致原子核分裂(裂变)并释放更多中子,这些中子又会撞击更多的铀原子核,从而引发爆炸性链式反应。在核武器中,高爆炸药被放置在铀芯周围,产生的压力波会压缩铀,进而引发核爆炸。
在模拟核武器中铀的性能时,研究人员会模拟压力和材料效应,以确定铀是否会被压缩到足够程度以达到超临界状态,此时引入中子就会引发核爆炸。Fast16 所选择的特定状态方程模型、材料模型和缩放因子,均与核武器中铀的性能模拟完全吻合。机制 B 和机制 C 首先要求进行高爆炸药模拟,然后才会篡改铀的压力模拟。所有篡改机制都会有效降低柯西应力张量等输出值,从而破坏模拟结果。
模拟用户对这些修改的反应目前尚不清楚。虽然输出值和图表在外行看来可能合理,但专家仍可能发现结果中的不一致之处。由于仅修改了单个输出值,这可能会导致模型中出现意外的反馈和不一致,以及相关依赖值的偏差。
有两个间接证据表明,其影响仅仅是损害软件的运行,有时甚至是明显的损害。如果Hook规则组是按需依次添加的,会看到在新版本软件发布后,攻击者又为旧版本添加了Hook组。可以想象,模拟用户在遇到异常时会回退到旧版本,直到该版本也被针对。其次,这些Hook组对应多达 10 个不同版本的模拟软件,说明模拟用户会较为频繁地更新软件版本。
无论结果是显示未达到超临界状态时却显示达到、实际达到超临界状态时却显示失败,还是仅仅出现统计异常,Fast16 都很可能延迟并破坏了核武器的成功研制。
Fast16 安装程序
Fast16 被设计为在目标网络内部安装和传播,但不会扩散到网络之外。初始可执行文件 svcmgmt.exe 通过命令行参数提供五种运行模式:
无参数:作为 Windows 服务运行
p:处理远程安装和执行
i:安装并运行 Lua 代码
r:运行 Lua 代码
参数≥2:用于劫持合法 Windows 程序(映像文件执行选项 IFEO 持久化)
Lua 代码通过 13 个库提供 Fast16 的主要执行行为,涵盖主机操作、远程服务控制、注册表操作以及嵌入式资源容器。
安装前,脚本会检查 NtfsMetaDataMutex 以确保单实例运行,并扫描 18 个端点安全注册表项,如果存在任何一项则拒绝传播。在安装标志下,Fast16 将自身复制到 % windir%\\system32\\svcmgmt.exe,通过克隆 services.exe 的创建日期和 ACL 权限来修改文件时间戳,并将自身注册为 SvcMgmt 服务。随后,它将 fast16.sys 内核驱动程序放入系统驱动程序文件夹,将其时间戳与 beep.sys 匹配,并配置注册表使其在下次启动时作为 SCSI 类过滤器驱动程序加载。
为实现持久化,Fast16 滥用映像文件执行选项(IFEO),将自身路径写入 HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options <目标程序> 下的 Debugger 值,导致 Windows 启动 Fast16 而非所选应用程序。执行时,恶意软件会删除该注册表项,启动原始应用程序,重新添加该键以保持持久化,然后使用 "r" 命令行参数重新运行自身以进入正常执行模式。用户看到的是正常运行的应用程序,而劫持过程已被静默恢复。
在传播方面,Fast16 会提取 svcmgmt.dll 并将其注册为多提供者路由器(MPR)网络提供者通知程序,导致 Windows 将该 DLL 加载到任何调用 WNetAddConnection 的进程中,并通过命名管道 \\.\\pipe\\p577 报告新的共享连接。
同时,Fast16 会枚举所有域、服务器和共享,以发现更多远程主机。每个候选主机名都会被解析为 IP 地址,并与本地网络范围(10.x.x.x、172.16.x.x、192.168.x.x)和同子网规则进行比对。对于符合条件的机器,Fast16 会仿冒本地登录用户的凭据,将自身复制到 \\<远程主机>\\admin$\\system32\\svcmgmt.exe,并创建远程 SvcMgmt 服务以在新主机上启动执行。经过配置的休眠时间后,它会重复该循环以寻找更多可感染的机器。
事件意义
Fast16 以规则级的精度,瞄准了核武器爆轰的核心模型。这种程度的领域知识 —— 例如了解哪些状态方程适用于相关物质、哪些编译器会产生哪些调用约定,以及哪些类别的模拟会触发或不会触发攻击门限 —— 在任何时代都极为罕见,在 2005 年更是非同寻常。该框架与震网属于同一概念谱系:恶意软件不仅针对特定厂商的产品,还针对该产品所模拟或控制的特定物理过程。
目前尚不清楚是否存在现代版本的 Fast16。
担心类似破坏能力威胁的组织,应定期对所有端点进行全面扫描,清点已加载的驱动程序,标记任何未签名或不熟悉的驱动程序。应部署并严格调优应用控制策略,阻止未经批准的可执行文件和 DLL 运行,从源头上杜绝攻击者投放和侧加载自定义工具的机会。
https://www.security.com/threat-intelligence/fast16-nuclear-sabotage
声明:本文来自黑鸟,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。