2010年6月,伊朗纳坦兹核设施的技术人员注意到一件怪事。离心机转速异常,一批接一批地报废。没人知道原因,病毒?当时没人往那方面想。毕竟,核设施的控制网络是物理隔离的,对吧?——直到后来,人们才发现那是史上最精巧的工控攻击:震网(Stuxnet)。
震网改变了我们对SCADA安全的全部认知。它告诉我们,即便没有连接互联网,即便用的是西门子Step7这种专用软件,照样能被打穿。说实话,这事儿让我脊背发凉。
为什么SCADA这么脆?
SCADA(数据采集与监控系统)天生就不是为安全而生的。上世纪六七十年代,当这些系统披着古老的外衣走进电厂、水厂、石油管道时,设计者脑中只有一个词:可靠。只要能7×24小时采集到RTU(远程终端单元)的信号,能远程控制PLC(可编程逻辑控制器),谁会考虑什么网络攻击?那还是Modbus协议刚刚萌芽的年代,RS-485串口线上跑着天真无邪的报文,甚至没有校验机制。今非昔比了。
但问题根深蒂固。我下工厂调研时发现,很多SCADA上位机还跑着Windows XP,补丁永远不打,因为供应商说“打了补丁监控软件会崩”。真是黑色幽默。HMI(人机界面)上跑着ActiveX控件,密码常常是admin/admin。现场控制网络呢?扁平架构!一旦攻破边界,整个生产网就像剥了壳的鸡蛋。
来看看这混乱的局面:

别以为这是孤例。2021年,美国奥尔兹马水厂的攻击者试图将氢氧化钠浓度调高100倍——差点酿成大祸。他们怎么进去的?就是远程桌面没关好,密码太简单。一个水处理工程师用自己的电脑远程登录,然后……就没有然后了。
问:SCADA系统最薄弱的环节通常是哪里?
答:人——永远是人。你能想象一个操作员为了方便,把U盘从办公网插到控制室工控机上,就为了传一份报表吗?这就是震网病毒进入纳坦兹的方式之一。但除了人,最脆弱的是那些老旧协议。Modbus TCP、DNP3、S7comm这些协议在设计时完全没有安全机制,没有认证,没有加密,只要你能接入网络,就能发送恶意指令。还有边界模糊化,现在到处喊着工业4.0,IT和OT(运营技术)融合,防火墙策略常常出现漏洞,不知不觉中,办公网就成了攻击的跳板。
攻击面正在疯涨

几年前我参加一个工控安全会议,有位老工程师拍着桌子说:“我的SCADA系统从没连过互联网,绝对安全!”我问他:你的PLC有以太网口吗?他愣了。是的,现在的PLC、RTU、智能传感器都恨不得插上网线,内置web服务器,远程诊断方便了,可威胁也随之而来。更别说那些IIoT(工业物联网)设备,动不动就往云端传数据,谁能保证数据传输隧道万无一失?
最近几年,勒索软件盯上了SCADA。2021年Colonial Pipeline管道公司被DarkSide勒索,整个美国东海岸燃油管道被迫关闭。攻击并不是直接破坏SCADA,而是通过企业网络渗透,再跳转到运营网络。好嘛,油气公司这下慌了,支付了500万美元赎金。这些事件暴露了一个可怕的事实:很多工控网络看似隔离,实则千疮百孔,一条小小的VPN隧道、一个被遗忘的远程支持账号,都可能变成潘多拉钥匙。
还有一个趋势让我焦虑——供应链攻击。去年SolarWinds事件够震撼了吧?但更可怕的想象是:如果SCADA的软件供应商被植入后门,比如某个HMI配置软件更新包被篡改,那所有使用该软件的电厂、水厂都会瞬间沦陷。这种攻击隐蔽性极高,检测难度极大。说实话,就像在家里发现一只蟑螂,意味着暗处已经有一千只了。
问:中小型工厂该怎么保护自己的SCADA系统?没钱没团队那种。
答:先别悲观。有几个最基础也最有效的动作:第一,网络分段,哪怕只有一台简单的防火墙,也要把控制网络和办公网隔开,严格控制访问列表。第二,禁用所有不必要的服务,尤其是PLC上那些花哨的web管理界面。第三,补丁管理,我知道很多工控软件升级会中断生产,但至少把那些有公开漏洞的设备单独划一个VLAN,严禁跨界访问。第四,备份!备份!备份!关键配置文件、工程文件必须离线备份,这是抗勒索的最后一道防线。别指望供应商,他们往往比你还拖沓。
纵深防御:从理论到实践
安全圈有个词叫“纵深防御”,说起来玄乎,其实落地就几条:把你的网络想象成洋葱,攻击者得剥开好多层才能碰到核心资产。最外层是边界防火墙,然后是企业网络,再到SCADA的DMZ区(非军事区),最后才是控制级网络。每一层都要有检测、防护和审计能力。

我见过一家石油化工厂做得比较好。他们在SCADA的DMZ区部署了工控专用防火墙(比如Tofino或Nozomi),利用协议深度解析,能识别Modbus函数码是否正当。假如有人突然发送一个“停止所有泵”的命令,系统会立刻报警并阻断,因为正常操作不会在凌晨三点执行全局停机。他们还启用了白名单机制——只允许已知的可执行程序运行,任何未签名的代码哪怕被下载到上位机也无法启动。这招对震网病毒这类利用零日漏洞的恶意软件很有效,因为它需要运行特定程序来篡改PLC代码。
不过,再好的技术也得人用。很多工厂连基本的日志审计都做不到,被攻击了几个月才发现。我告诉他们的运维:你必须假设自己已经被入侵了,然后去找异常。比如,周一早上突然有一台RTU的时钟同步异常?查!某台HMI上突然出现一个未知的.exe进程?虽然它可能只是供应商遗留的一个工具,但也必须验证。
问:现在有AI辅助的SCADA安全工具吗?靠不靠谱?
答:有,而且越来越多。比如利用机器学习分析网络流量基线,发现偏离正常模式的通信。但我的态度是谨慎乐观——AI检测可以大幅降低误报,但它需要大量高质量的训练数据,而工控协议流量往往很“干净”,缺乏足够多的攻击样本,所以容易产生漏报。更实际的做法是将AI与传统特征规则结合,比如先用AI筛出可疑事件,再由工程师人工研判。千万别指望一键部署就能高枕无忧,那是骗子卖货的话术。
最后说一点很多人忽略的:物理安全。你能想象一个快递员随便出入控制室,插上电脑就能下载PLC程序吗?这种事真实发生过。有些工厂的现场总线(比如Profibus或DeviceNet)根本没有任何接入控制,在厂房角落找到一个裸露的接头,拿个USB转接线就能注射指令。所以,上锁的机柜、门禁系统、视频监控,这些老掉牙的物理措施,依然是SCADA防御不可或缺的一环。
震网病毒已经是十多年前的故事了,但它的幽灵还在游荡。现在的攻击者更聪明,更耐心,更有针对性。而我们的SCADA系统呢?或许外表美化了,内核却依然脆弱。没办法,这就是工业的惯性。但每次事故都在提醒我们:安全这事,不投入真的会死人。