2026 年 8 月,波兰国家安全与基础设施保护计算机紧急响应团队(CERT Polska)发布了一份重量级的跟进报告,复盘了 2025 年 12 月 29 日发生在波兰能源系统的一场攻击。那是一个给约 5 万居民供热的、规模并不大的热电联产(CHP)电厂,但攻击者通过一条此前从未在实战中被公开展示过的路径——私有 APN(蜂窝网专用接入点)——完成了从风电场到 OT 网络的漫长渗透,最终关停了一台蒸汽汽轮机与工艺水处理系统。CERT Polska 直言,这是它已知的第一起"通过私有 APN 横向移动进入 OT 网络"的实战案例。
更耐人寻味的是运营商起初的判断:他们一度把这次过程中断当作承包商工程师的操作失误,只是作为信息件上报,直到 CERT Polska 基于其他已知事件主动介入、逐条反推日志,才挖出了背后的攻击链。这场攻击没有动用任何炫目的零日,靠的全是"看起来挺正常"的网络设计与默认配置——而这正是它最值得警惕之处。
一、入口:挂着 VPN 的 FortiGate,和一台没人提要求的蜂窝路由器
攻击的起点并不在这座 CHP 电厂,而在几十公里外的可再生能源侧。调查显示,攻击者先打进了超过 30 个可再生能源电网接入点(Grid Connection Points,GCP),这些点位通常用 FortiGate 设备同时充当 VPN 集中器和防火墙。问题是这些设备的 VPN 接口可以直接从互联网访问,只靠设备配置里定义的账号认证,而且没有部署多因素认证(MFA)。攻击者拿到管理员权限后,很可能也获得了能触达多个网络段的 VPN 账号凭证。
在受攻击的变电站网络内,攻击者找到了一台 Teltonika RUTX50 蜂窝路由器——它插着一张 SIM 卡,接入的是由当地配电网运营商(DSO)管理的私有 APN 网络。这台路由器被配置成了"双用途":串行接口连着一台 RTU,用来满足 DSO 要求的 DNP3.0 协议通信;以太网接口则连着一个由中心防火墙(恰恰是那台已被攻击者控制的那台)管理的 VLAN。运营商对通信协议有明确要求,但对这台蜂窝路由器的管理接口该怎么安全配置,却一个字都没规定。
于是攻击者直接通过 SSH 登录了这台 Teltonika 路由器,并从 2025 年 12 月起多次登录,用 SSH 隧道把自己桥进了 DSO 管理的私有 APN。一个本应"与互联网隔离"的专用网络,就这样被当成跳板打开了。
二、转折:私有 APN 里没有客户端隔离,等于把靶子摆进了网
跨进私有 APN 之后,真正决定成败的关键点出现了:这个所谓"专用"的 APN,竟然缺乏最基本的客户端隔离(client isolation)。APN 内任意设备之间都能互相通信,没有任何东西阻止攻击者从一个电力工段摸到另一个电力工段。
从 2025 年 12 月 18 日起,攻击者开始在 APN 里持续扫描,寻找 VNC、HTTP 服务,以及 S7、Modbus 这类工业协议。很快,他们在这个 APN 里发现了目标 CHP 电厂的 WAGO PFC200 PLC——它的 Web 管理界面直接暴露在 APN 网络上,更重要的是,它使用的是出厂默认凭据 admin/admin。
对一个防御者来说,看到这里应当脊背发凉:一台承载着工业控制职责、且与 OT 网络连通的 PLC,其管理界面既暴露在"专用但缺乏隔离"的 APN 中,又从不更换默认口令。攻击者用这套默认凭据登录后,启用了一侧的 SSH 服务,再用一条 SSH 隧道,把心跳从这台 PLC 一路接到了电厂真正的 OT 网络里。
三、潜伏一周的侦察,与那个挑在节假日的破坏时刻
进入 OT 网络后,攻击者并没有急着动手,而是花了大约一周时间(12 月 18 到 25 日)做侦察。调查显示他们尝试过用 admin、user 之类的账号去登录防火墙和 VPN 网关,但都失败了;随后转向内部网络扫描,目标覆盖 S7(102/TCP)、Modbus(502/TCP)、CODESYS、RTSP、RDP、VNC 等一长串协议。12 月 21 日(周日)起,扫描从 SCADA 系统所在的 IP 段开始;12 月 22 日尝试连接两台远程桌面主机,疑似手动猜测凭据;到 12 月 25 日圣诞节当天,他们已经成功通过 S7 协议连上了三台西门子 PLC,为随后的破坏做好了铺垫。
真正的破坏发生在 12 月 29 日 05:30 到 10:10。攻击者通过 WAGO PLC 这条已打通的路径,先访问了 SCADA 服务器的 Web 界面,然后通过 S7 协议连接三台西门子 PLC(S7-300、S7-1200、S7-1500),把控制器切到 STOP 模式并设置密码保护——操作员无法再改变控制器的状态和控制逻辑。蒸汽汽轮机与工艺水处理系统随之关停,热电联产过程被迫中断。
破坏远不止于此。攻击者还恢复了 7 台 Moxa 串口设备服务器和 3 台 Moxa 网络交换机的出厂设置、改掉了密码、把它们的 IP 改成 127.0.0.1 这类不可达的地址;篡改了 ABB 和 Schneider Electric 变频器的配置;最绝的是,把 WAGO 控制器的分区表给损坏了——即使做工厂重置也无法恢复。CERT Polska 指出,这起事件整体延续着纯粹的破坏性目标:没有数据窃取,没有勒索,就像在物理世界里放一把火。
四、归因与背景:十年后,同一类动作再次指向电网
对于这起事件的幕后黑手,不同机构给出了有交叉的归因。CERT Polska 将其关联到公开已知的"Static Tundra"集群(也就是 CrowdStrike 口中的 Berserk Bear、微软的 Ghost Blizzard、赛门铁克的 Dragonfly),理由是在 VPS、路由器、流量模式与匿名化基础设施上有高度重叠;这个集群长期盯梢能源行业,具备攻击工业设备的能力。而 ESET Research 则基于 DynoWiper 擦除型恶意软件的分析,将目标指向俄罗斯关联的 Sandworm APT(中等置信度),并特别指出:2025 年 12 月 29 日,恰好是 Sandworm 2015 年攻击乌克兰电网的十周年——那场攻击曾让约 23 万人停电数小时,也是历史上首例由恶意软件引发的停电。
值得注意的是,在这座小 CHP 电厂里,攻击者用的主要是 SSH 隧道、PLC STOP 切换、配置篡改和分区表破坏;而在 CERT 对大型 CHP 电厂和风电场另一些事件的报告中,则可以看到擦除型恶意软件的影子,其中一次大型电厂攻击还被 EDR 拦了下来。这提示我们:即便是同一批攻击者,也会根据环节与防护密度灵活切换手法。
五、教训:别再把"专用APN"默认为安全疆域
把整条链路摊开,真正薄弱的地方几乎全在"看起来合情合理"的地方:
- 私有 APN 被当成了"内部安全网络",可它本质上仍应被视作不受信任的外部网络——信任级别应当等同于互联网;
- 蜂窝路由器的管理接口(Web/SSH)默认暴露,运营商连一条安全要求都没提;
- WAGO PLC 用着出厂默认 admin/admin 凭据,管理界面还敞在 APN 里;
- FortiGate VPN 接口没有 MFA;
- 以及那颗让整条链得以串联的钉子:私有 APN 缺乏客户端隔离,让攻击者能从一个工段横跨到另一个工段去摸 PLC。
CERT Polska 给出的应对没有一条是"高科技":在 APN 里启用客户端隔离;把私有 APN 当外部网络对待;对 APN 网关与 OT 之间的流量做白名单放行;关掉暴露在 APN 上的 SSH/Telnet;改掉所有默认口令;对管理界面做严格访问控制。而它那句判断最值得反复咀嚼:"这种私有 APN 配置在波兰当时很常见,而且类似安排很可能在国际上广泛使用。"——也就是说,这枚定时炸弹从不是波兰某个电厂的孤立配置,而是整个业界共享的一种默认习惯。
这场对一座小电厂的攻击,最终没有造成居民断热断电,但它用一次完整且可复制的路径,戳穿了"OT 与互联网隔离所以安全"这一流传多年的假设。面对这类对手,最该被重构的不是某台设备的某个补丁,而是我们把蜂窝专用网络、边缘设备与管理面默认为"可信"的那套心智模型。
参考:CERT Polska 能源行业事件跟进报告与事件报告、SecurityAffairs 与 BleepingComputer 对私有 APN 入侵的分析报道、ESET Research 关于 Sandworm 与 DynoWiper 的归因分析、IndustrialCyber 对多阶段攻击链的拆解。