拓冰建站拓冰建站
首页 / 资讯中心 / 正文

私有蜂窝APN入侵OT实战:波兰电厂汽轮机关停事件复盘、检测脚本与加固配置

摘要2025‑12‑29波兰热电联产厂遭遇网络攻击攻击者不走互联网直连OT利用风电场地边界设备作为入口通过运营商私有蜂窝APN完成跨厂区横向跳转拿下WAGO控制器作为跳板进入电厂OT内网直接把西门子PLC切至STOP停机状态关停汽轮机与工艺水处理系统。这是公开威胁情报里第一起完整利用私有蜂窝专网作为IT‑OT跨越通道的破坏性工控攻击。攻击者全程几乎不投放恶意软件依靠协议操作、配置篡改实现破坏行为传统杀毒产品完全失效。国内大量风电、光伏、变电站、分布式热电项目都在大规模部署同类私有APN组网绝大多数工程实施阶段默认开启设备P2P互通风险完全复刻波兰现场。本文还原完整攻击链路拆解底层架构缺陷给出可直接运行的检测Python脚本、设备加固清单同时站在第一性原理视角重新审视工业蜂窝专网的安全边界对抗式审查现有设计院、集成商通用组网方案里潜藏的逻辑漏洞。1 事件基础背景2025‑12‑29波兰全国能源行业发生协同攻击30个风光电站、两座热电联产设施遭到Electrum威胁团伙打击。大部分公开报告聚焦Windows主机上的DynoWiper擦除恶意软件而这座小型CHP热电厂的入侵细节滞后三个多月才由CERT‑Polska对外披露。这座热电厂为本地5万居民提供供热汽轮机停机之后现场运维人员第一反应怀疑是承包商调试操作失误没有第一时间上报安全事件这个误判直接给攻击者留出长达数小时的内网驻留窗口。攻击没有造成居民断热断电运维人员快速物理介入恢复PLC程序、重置通信设备抢修过程中攻击者仍然保持网络会话在线一边修复一边对抗。为抢生产恢复时效运维直接恢复出厂回填备份原始设备日志大量丢失取证工作遭遇巨大阻碍。很多人会把这次事件简单归为弱口令问题。弱口令是突破口但不是根源。就算WAGO修改默认密码私有APN无客户端隔离这个架构缺陷依旧存在攻击者换一台边界设备依旧可以完成跨厂区扫描、横向移动。很多电力行业从业者形成思维惯性私有蜂窝APN属于运营商隔离专网不会被外部触及不用做边界防护。这次事件直接推翻这个认知。1.1 什么是工业私有APN普通手机APN接入公网互联网。私有APN由运营商给行业客户单独开通蜂窝终端工业路由器、RTU、控制器接入之后终端获取私网IP流量不进入公网路由理论上只和客户侧后端内网互通。电力、新能源场景大量使用这套方案分散在野外的风机、光伏、变电站RTU通过4G/5G工业路由器接入私有APN回连调度中心SCADA采集遥测遥信数据下发控制指令。设备厂商、设计院、集成商普遍宣传私有APN具备天然隔离能力可以替代物理隔离削减防火墙、网闸部署成本。工程交付经常直接使用运营商默认配置。运营商默认配置选项里有一个高危开关客户端隔离关闭。关闭隔离之后接入这个私有APN下所有SIM卡对应的终端互相之间可以直接二层/三层P2P访问。风机的蜂窝路由器可以直接访问几十公里外另一座热电厂挂在同一个APN下的WAGO控制器不需要经过调度中心防火墙流量不走企业IT内网直接在运营商蜂窝核心网内部转发。这就是本次攻击能够发生的底层条件。subgraph 运营商核心网【私有APN域关闭客户端隔离】R1[“Teltonika RUTX50 风场路由器”]WAGO[“WAGO PFC200 热电厂边界控制器”]RTU1[“光伏RTU终端”]RTU2[“变电站RTU”]R1 – WAGOR1 – RTU1WAGO – RTU2endsubgraph 风场IT网络FW[“FortiGate VPN防火墙未开启MFA”]FW -- R1endsubgraph 热电厂OT网络WAGO -- PLC1[“S7‑300 汽轮机PLC”]WAGO -- PLC2[“S7‑1500水处理PLC”]PLC1 -- TURBINE[“蒸汽汽轮机”]PLC2 -- WATER[“工艺水处理系统”]end2 完整攻击链路逐环节拆解攻击者行动分成5个阶段入口立足点获取、进入私有APN域、突破IT‑OT边界、一周静默侦察、执行破坏性操作。全部行为来自CERT‑Polska官方报告与第三方威胁复盘去掉猜测成分只保留可被日志佐证的动作。阶段1攻陷风场FortiGate VPN账号无MFA获取风场IT内网权限阶段2定位内网Teltonika RUTX50登录路由器开启SSH隧道阶段3隧道切入私有APN网络APN无客户端隔离全域扫描HTTP、S7、Modbus阶段4发现WAGO PFC200使用默认账号密码登录Web管理界面阶段5Web界面开启WAGO WAN侧SSH服务把WAGO当做跳板机渗透热电厂OT网段阶段612.18‑12.25静默侦察扫描S7协议枚举PLC型号绘制OT拓扑不触发告警阶段712‑29 05:30执行破坏PLC切STOP模式设置保护密码锁死Moxa交换机恢复出厂篡改IP阶段8擦除跳板痕迹销毁WAGO分区表清除本地日志阶段9运维抢修期间攻击者持续在线至10:10现场重置设备回填备份取证日志丢失图2完整攻击时间线流程图2.1 阶段一获取风场FortiGate立足点攻击者瞄准风场对外暴露的FortiGate SSL‑VPN。该VPN使用本地账号认证完全没有开启多因素MFA。威胁团伙拿到账号凭据之后接入风场IT内网。凭据来源没有完全确认有可能是社工、泄露库、钓鱼或者其他站点同源密码复用。这里要区分本次波兰CHP攻击和同期其他风电设施攻击不一样别的站点大量投放DynoWiper磁盘擦除恶意软件而这一座热电厂路径里攻击者几乎没有落地任何exe脚本全部靠现有设备自带管理接口、工业协议完成横向移动与破坏。进入风场内网之后攻击者遍历内网资产找到Teltonika RUTX50工业5G蜂窝路由器。该路由器一边接入风场IT VLAN另一边插私有APN的SIM卡。路由器管理地址可以被风场IT网段直接访问。2.2 阶段二SSH隧道打入私有APN域攻击者登录RUTX50启用路由器SSH服务搭建SSH远程隧道。隧道出口落在运营商私有APN网络内部。到这一步攻击者主机流量就不再经过风场防火墙直接跑到运营商核心网的私有APN地址空间。很多安全工程师会产生错觉私有APN是运营商隔离网络外部互联网无法抵达所以内部扫描没有风险。但攻击者已经把脚跨进这个专网内部APN域内成千上万分布在各地的工业终端全部暴露在扫描之下。攻击者在APN网段做大规模扫描探测80/443Web管理、22SSH、S7 102端口、Modbus 502端口。跨不同运营主体、不同厂区只要设备接入同一个私有APN扫描报文就可达。2.3 阶段三WAGO PFC200作为IT‑OT跳板扫描结果命中热电厂的WAGO PFC200控制器。该控制器作为热电厂OT网络对接私有蜂窝专网的边界网关使用出厂默认管理员账号密码Web管理界面在APN侧WAN接口开放访问。攻击者登录Web管理页面在WAN侧接口手动开启SSH功能。WAGO出厂SSH默认关闭攻击者不是利用漏洞是拿到合法管理员权限之后手动打开这个服务。之后建立SSH隧道流量穿过WAGO直接进入热电厂生产OT网段。这是整个攻击链最致命一跳。WAGO一边属于私有APN域一边直连电厂SCADA与PLC生产网络。设备本身是合规工业控制器没有固件漏洞只是配置错误叠加网络架构缺陷直接变成打通IT‑OT的跳板。对抗式审查提示国内很多项目WAGO、MOX网关、工业路由器直接同时挂接蜂窝专网与OT只做简单访问控制没有独立防火墙/网闸做二次隔离。一旦边界网关被接管OT内网直接裸奔。2.4 阶段四为期一周静默侦察 12.18‑12.25拿到OT内网访问通道之后攻击者保持低姿态持续一周侦察。扫描OT网段识别西门子S7‑300、S7‑1200、S7‑1500探测SCADA Web页面读取PLC元信息摸清汽轮机、水处理系统对应的控制器点位。全程不修改任何工艺参数不触发工艺报警。工控环境的告警体系大多聚焦工艺越限对于S7协议的批量读、设备枚举行为很多工厂没有部署专门的ICS协议异常检测运维控制台看不到异常。攻击者完整绘制生产网络拓扑等待协同攻击窗口。2.5 阶段五破坏性执行 12‑29 05:30攻击时间选在凌晨现场人员最少。攻击者执行两组动作。第一组针对PLC通过S7协议把多台PLC强制切换STOP停机模式并且设置新的保护密码锁死PLC现场工程师本地无法直接切换回RUN运行模式。汽轮机、工艺水处理系统立刻停止工作热电联供流程中断。这里没有注入恶意代码直接使用西门子原生S7协议功能实现停机杀毒软件完全看不到威胁行为。第二组针对通信基础设施7台Moxa串口服务器3台工业交换机被批量恢复出厂设置管理员密码篡改IP地址改写为无效回环地址127.0.0.1。现场远程管理通路直接失效。完成破坏之后攻击者对跳板WAGO控制器执行分区表销毁擦除自身入侵痕迹。早上7点半工厂运维人员发现系统异常最开始归因为承包商调试操作失误。抢修过程中攻击者仍然维持SSH会话在线直到上午10点10分才断开连接。运维团队为快速恢复供热选择设备恢复出厂导入历史备份工程。操作直接抹除设备本地日志后续取证缺少原始记录。3 第一性原理分析问题到底出在哪很多事故复盘最后总结写一堆加强弱口令管理、定期更改密码。但只改密码解决不了根源。我们剥离表层现象拆解三层底层失效。3.1 第一层安全边界认知发生错位行业普遍假设私有APN 安全隔离边界。私有APN实现的隔离仅仅是公网和APN域之间的隔离。它不做APN域内部设备之间的隔离。运营商默认配置关闭客户端隔离同一个APN下所有SIM终端处于互通网络。设计院、集成商做方案的时候把私有蜂窝专网当成信任域接入APN的工业网关直接放行访问OT内网没有二次安全校验。攻击者攻陷任意一个接入APN的站点就拿到整个专网横向移动入口。运营商本身不做客户业务层安全管控它只提供二层三层转发通道不识别S7、Modbus工业协议不会做攻击检测。安全责任全部落在使用专网的能源企业身上大量企业完全没有意识到这点。3.2 第二层边界网关的身份混淆WAGO、MOX、Teltonika这类设备在工程里定位是协议转换网关同时具备完整操作系统、Web管理、SSH、用户账号体系。实施人员只关心协议转发功能忽略它本质上是一台通用嵌入式计算机。网关一边连接不可信蜂窝专网一边直连高价值OT生产网。网关本身没有部署入侵检测没有会话审计。一旦网关被攻陷等同于OT大门敞开。工程实施普遍习惯网关WAN侧蜂窝接口开启Web、SSH管理方便远程运维调试调试结束忘记关闭。攻击者拿到网关权限直接完成跨域跳转。3.3 第三层无恶意软件破坏模式的防御失效传统安全建设思路围绕恶意代码、病毒、勒索病毒。但本次攻击几乎不投放任何恶意样本。攻击者使用设备自带管理接口、标准工业协议完成全部杀伤动作。PLC STOP、修改密码、恢复出厂全部是设备原生支持合法功能。杀毒、EDR看不到任何恶意文件。防御检测需要转向行为异常检测识别非运维时段PLC被切STOP、批量S7协议写操作、网关WAN侧开启SSH、APN域内设备之间出现大量扫描流量。国内很多电厂ICS审计设备只做简单协议解析缺少这类行为基线规则。3.4 对抗式审查现有国内通用组网方案国内分布式新能源、配网自动化大量复制这套组网现场RTU/控制器 → 工业路由器 → 运营商私有APN → 调度中心防火墙。很多方案文档明确写明依靠私有APN实现安全隔离无需额外部署边界防护。站在对抗视角推演攻击路径攻击者拿下任意一个风场/光伏站的边界设备通过私有APN横向扫描直接触及变电站、热电厂的OT网关。风险和波兰现场完全一致。部分项目虽然开启APN客户端隔离但只是开通业务时勾选后续运营商版本升级、SIM卡重开、业务变更客户端隔离配置会被重置为关闭没有自动化校验手段运维感知不到配置变更。4 私有APN与工业网关现场检测脚本下面提供两套可直接复制运行的脚本。第一套Python脚本用于审计私有APN接入环境扫描识别风险特征不做破坏性写操作仅检测。注意脚本仅用于企业内部安全自查禁止在未授权网络环境运行扫描遵守网络安全法律。#!/usr/bin/env python3# private_apn_ics_audit.py 私有APN工控环境风险检测脚本# 功能扫描网段识别风险端口、WAGO、Teltonika、S7/Modbus输出风险报告# 仅做探测无任何写入、修改设备操作importsocketimportargparseimporttimefromdatetimeimportdatetime RISK_PORTS{22:SSH服务,80:HTTP WEB管理,443:HTTPS WEB管理,102:S7西门子PLC协议,502:Modbus TCP,8080:备用WEB管理,8443:备用HTTPS管理}defport_scan(host,port,timeout1.5):socksocket.socket(socket.AF_INET,socket.SOCK_STREAM)sock.settimeout(timeout)try:resultsock.connect_ex((host,port))sock.close()returnresult0exceptException:returnFalsedefprobe_s7(host,port102):try:ssocket.socket(socket.AF_INET,socket.SOCK_STREAM)s.settimeout(2)s.connect((host,port))s.send(b\x03\x00\x00\x16\x11\xe0\x00\x00\x00\x01\x00\xc1\x02\x01\x00\xc2\x02\x01\x00\xc0\x01\x0a)datas.recv(256)s.close()iflen(data)0:returnTrueexceptException:passreturnFalsedefprobe_modbus(host,port502):try:ssocket.socket(socket.AF_INET,socket.SOCK_STREAM)s.settimeout(2)s.connect((host,port))s.send(b\x00\x01\x00\x00\x00\x06\x01\x03\x00\x00\x00\x01)datas.recv(128)s.close()iflen(data)0:returnTrueexceptException:passreturnFalsedefscan_segment(ip_prefix,start1,end254):report[]print(f[*] 开始扫描网段{ip_prefix}.{start}~{ip_prefix}.{end}{datetime.now()})foriinrange(start,end1):hostf{ip_prefix}.{i}open_services[]forp,descinRISK_PORTS.items():ifport_scan(host,p):open_services.append((p,desc))ifnotopen_services:continues7_flagprobe_s7(host)modbus_flagprobe_modbus(host)item{ip:host,services:open_services,s7:s7_flag,modbus:modbus_flag}report.append(item)print(f[]{host}开放:{open_services}S7:{s7_flag}Modbus:{modbus_flag})time.sleep(0.1)returnreportdefsave_report(report,filenameapn_audit_report.txt):withopen(filename,w,encodingutf‑8)asf:f.write(f私有APN工控安全审计报告 生成时间:{datetime.now()}\n)f.write(*60\n)forentryinreport:f.write(fIP:{entry[ip]}\n)f.write(f开放端口:{entry[services]}\n)f.write(fS7协议可达:{entry[s7]}Modbus可达:{entry[modbus]}\n)risk_level【高风险】if(entry[s7]orentry[modbus])else【中风险】f.write(f风险等级:{risk_level}\n)f.write(‑*40\n)print(f\n[*]报告已输出至{filename})defmain():parserargparse.ArgumentParser(description私有APN工控网络风险检测脚本)parser.add_argument(--net,requiredTrue,help网段前缀例10.123.45)parser.add_argument(--start,typeint,default1)parser.add_argument(--end,typeint,default254)argsparser.parse_args()resscan_segment(args.net,args.start,args.end)save_report(res)if__name____main__:main()运行示例# 安装依赖仅标准库无需额外pip包python3 private_apn_ics_audit.py--net10.150.80--start1--end254第二套shell脚本用于网关设备本地自查Teltonika、嵌入式Linux网关检查是否WAN侧开启SSH、Web管理、检查APN客户端隔离配置标记。#!/bin/bash# gateway_local_check.sh 工业蜂窝网关本地安全自查脚本# 在网关设备本地执行输出配置风险点REPORT./gateway_check_report.logecho网关本地安全检查报告$(date)$REPORTecho$REPORTecho[1] 检查监听端口$REPORTnetstat-tlnp$REPORTss-tlnp|grep-E:22|:80|:443$REPORTecho-e\n[2] 判断SSH是否监听WAN侧外网接口$REPORTSSHD_LISTEN$(ss-tlnp|grepsshd)echo$SSHD_LISTEN$REPORTifecho$SSHD_LISTEN|grep-q0.0.0.0:22;thenecho风险SSH监听全部接口WAN侧可访问$REPORTfiecho-e\n[3] 检查防火墙规则是否放行WAN到内网$REPORTiptables-L-n$REPORTecho-e\n[4] 检查APN相关配置文件标记$REPORTgrep-iapn/etc/*2/dev/null|head-30$REPORTecho-e\n[5] 检查是否存在默认账号$REPORTcat/etc/passwd|grep-Eadmin|root|wago$REPORTecho-e\n[*]检查完成报告文件$REPORTcat$REPORT5 分层加固配置清单分成四层运营商APN层、工业蜂窝路由器层、边界控制器网关层、OT内网防护层。全部基于CERT‑Polska给出的缓解建议结合国内工程落地实际情况。5.1 运营商私有APN层面强制开启APN客户端隔离Client Isolation。开启之后APN域内终端之间不能互相直接通信终端只能访问调度中心指定后端IP。这是最高优先级配置。每一次SIM卡重开、业务变更、运营商版本升级之后自动化校验这个配置不要只靠开通工单。配置APN侧访问白名单APN终端出站仅允许访问调度中心固定IP地址与端口拒绝其他任意目标。向运营商索要APN网络变更日志任何配置修改要有通知防止运营商后台操作重置隔离开关。不要把不同业主、不同厂区的SIM卡混在同一个私有APN实例按业务域拆分APN。风场一套APN热电厂一套APN变电站单独实例。对抗式审查点很多集成商交付时口头确认开启客户端隔离没有输出运营商配置截图后期升级被重置无人发现。需要把配置校验纳入定期安全巡检。5.2 Teltonika RUTX50 工业蜂窝路由器加固修改出厂默认账号密码密码复杂度≥16位定期轮换。WAN蜂窝接口禁止开放SSH、Web管理界面。管理接口只允许LAN内网侧访问。蜂窝WAN侧完全关闭管理服务。远程运维走VPN隧道不在WAN直接暴露管理端口。开启设备防火墙蜂窝WAN侧默认全部拒绝仅放行业务需要的回连调度中心IP。升级固件至官方最新稳定版本关闭不必要服务SSHFS、DDNS、WiFi功能现场不用就直接禁用。开启设备日志外送日志转发至安全审计平台留存至少6个月。禁用不必要路由功能不允许蜂窝WAN流量转发到内网其他VLAN最小化路由转发权限。5.3 WAGO PFC200边界控制器加固删除默认admin账号新建强密码管理员账号。WAN蜂窝APN接入侧接口永久关闭SSH服务。Web管理界面禁止在WAN侧启用。调试完毕立刻关闭不要长期开启。波兰事件攻击者就是Web界面登录之后手动打开WAN‑SSH。使用控制器防火墙WAN侧仅放行必要工业协议拒绝所有管理协议。控制器不能同时直连APN域与OT生产网。中间增加独立工业防火墙/网闸做访问控制。网关不能作为IT‑OT直接桥接跳板。固件版本升级关闭不需要的协议栈、web插件。开启事件日志外送到审计服务器禁止本地日志被轻易擦除。5.4 OT内网层面防护PLC设置强保护密码禁止默认密码。西门子S7‑1200/1500开启保护阻止外部STOP指令下发。部署ICS协议异常检测重点监控告警规则非工作时段收到PLC STOP请求S7协议批量读设备元信息大规模枚举网关WAN侧突然开启SSH/Web管理私有APN网段内部出现大量横向扫描报文网络分段汽轮机、水处理等关键工艺单独划分VLAN和边界网关之间做访问控制网关不能随意访问全部PLC。准备离线备份工程定期导出PLC程序备份。抢修场景尽量避免直接恢复出厂防止取证数据全部丢失。建立应急预案当边界网关出现异常具备一键切断蜂窝专网物理链路的手段。6 威胁组织TTP与同类攻击演进Electrum团伙部分厂商标记为Static Tundra/Berserk Bear在2025‑12‑29波兰协同攻击中使用两套作战路径。一部分目标Windows主机投放DynoWiper擦除恶意软件覆盖大量风电光伏站点。另一路针对这座CHP热电厂采用无恶意软件路径利用现有设备接口、协议操作完成破坏。后者更难检测不需要落地样本绕过传统终端安全。整理该团伙本次行动关键TTP入口未开启MFA的SSL‑VPN边界设备横向移动利用工业蜂窝专网作为横向移动通道凭据设备出厂默认账号密码持久化SSH隧道不植入恶意程序侦察S7协议批量读取PLC元信息静默潜伏数天至一周杀伤S7协议下发STOP指令锁PLC密码通信设备恢复出厂篡改配置痕迹清除破坏跳板设备分区表删除本地日志对抗取证抢修阶段持续在线逼迫运维人员重置设备销毁证据。工控攻击正在发生明显转向。过去大家更多关注互联网直连PLC零日漏洞、勒索病毒。现在攻击者瞄准组网架构缺陷利用行业信任的专网、边界网关作为突破口。不需要高危漏洞依靠配置错误完成杀伤。分布式新能源大规模建设大量野外边缘设备接入私有蜂窝4G/5G同类攻击面会持续扩大。很多人会有一个误区国内没有发生同类事件就代表风险不存在。攻击发生需要条件攻击者能力、可利用配置、地缘驱动。组网架构缺陷已经存在只等待触发条件。7 落地过程中容易踩的现实阻碍做加固落地工程层面会遇到现实阻力不能只纸上谈安全。第一现场运维人员依赖WAN侧Web/SSH远程调试。现场地处野外人员到场成本很高运维习惯直接蜂窝WAN管理网关。解决方案WAN侧完全关闭管理服务必须远程维护通过调度中心建立VPN隧道从内网侧访问网关。不要为了运维便利把管理接口暴露在不可信APN域。第二运营商APN客户端隔离开启之后部分老RTU设备业务异常。部分老旧终端实现有缺陷开启隔离之后业务断流。不能直接关闭隔离妥协。要做测试对老旧终端分批改造同步推动设备固件升级而不是把安全配置回退。第三设计院原有设计文档写死依靠私有APN作为安全边界修改方案涉及变更流程、预算。安全团队需要提前介入方案评审对抗式审查组网拓扑不能等施工完成再整改。第四巡检只做密码修改忽略APN配置校验。密码改完但是APN客户端隔离被运营商重置风险依旧完整保留。巡检脚本要加入APN配置校验项。8 总结波兰电厂私有APN入侵事件真正的警示不是某一台设备弱口令而是整个行业对“专网天然安全”这个假设的崩塌。私有蜂窝APN只能隔离公网不能隔离专网内部威胁。一旦攻击者拿到专网内任意一个立足点跨厂区横向移动路径直接打通。攻击者不需要复杂漏洞利用设备自带管理接口、标准工业协议就可以关停汽轮机这类核心生产设备传统杀毒产品完全看不到威胁。防御不能只盯着密码补丁要回到第一性原理审视整个网络信任模型不要把业务专网当成可信域边界网关不能直接桥接IT与OT工业协议行为检测要放到和病毒查杀同等位置把APN客户端隔离这类运营商侧配置纳入常态化安全巡检。互动问题你们项目在使用私有APN/工业蜂窝专网时有没有确认过客户端隔离配置是否真正生效如果现场运维强烈要求在蜂窝WAN侧保留网关远程管理你会设计一套什么样折中方案平衡运维便利与安全风险
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门