前两天和一个做汽车零部件厂自动化的老铁吃饭,他中途把手机递过来,屏幕上是一份威胁情报通报,标题比我写这篇还耸动:“AI黑客正在批量扫描暴露的工控设备,西门子PLC成头号目标”。他问我,这玩意到底是安全厂商在吓唬人,还是真有事。我说,标题虽然抓眼球,但方向没有错——你打开任一个公网资产测绘平台,搜“Siemens PLC”和端口102,再按国家和地区排个序,会看到一排排工业设备就那么挂在公网上,有些甚至连默认口令都没改过。再往后翻几条漏洞库记录,S7协议相关的认证绕过、拒绝服务、固件篡改,几乎每年都在更新。
这篇不打算整那些吓唬人的话术,就按一个干过多年自动化、又帮着客户做过几次工控安全整改的工程师视角,把三件事讲透:为什么偏偏是西门子PLC,AI在攻击链里到底干了什么,以及我们这些手上管着几十上百台设备的工程师,现在能做点什么保命的事。适合搞自动化的同行、刚转行做工控安全的新人,还有被上级突然点名要求“做个安全自查”的技术负责人。
1. 为什么黑客偏偏盯上西门子PLC
1.1 存量惊人:市占率带来的“靶子效应”
西门子在工业控制器领域的地位,不用我多解释。从老一代的S7-200、S7-300,到现在满大街的S7-1200、S7-1500,再加上WinCC、TIA Portal这套生态,几乎任何一个制造业基地里都能翻出几十台。对攻击者来说,选攻击目标从来不看“技术难度”,而看“投入产出比”。一个漏洞打一万台设备,和打十台设备,成本一样,收益差三个数量级。西门子PLC就是那个被所有攻击者盯上的“最大公约数”。
更麻烦的是存量设备的年代跨度太大。有的厂里,2005年投用的S7-300还在跑关键工序,旁边是新上的S7-1500,中间还夹着各种第三方通信模块。老设备当年设计的时候,压根没考虑过“网络安全”这四个字——那时车间网络物理隔离,连不了互联网,也不需要加密认证。现在企业搞数字化、智能制造,把产线数据往MES、ERP里接,等于把这些“上世纪的安全水平”直接暴露在新的网络环境里。
公网暴露面是另一个残酷现实。根据我看到的测绘数据,全球暴露在公网上的工控设备里,西门子相关协议(S7COMM、ISO-TSAP等)占了相当比例。有些是厂家远程调试完忘了关端口映射,有些是集成商图省事把PLC直接接到企业出口路由器上。这些设备一旦被扫到,攻击者只需要几个现成脚本就能读取设备名称、模块信息、运行状态,为下一步攻击攒情报。
1.2 S7协议与固件的历史包袱
西门子PLC之间的通信,老一代走的S7协议在设计时压根没考虑加密和认证,这在当时不算缺陷——车间里没人想干坏事。但后来发现,S7COMM本身有先天的认证缺口,抓包工具可以把通信报文解析得明明白白,甚至重放攻击都能成立。你来一条“停止”指令,它可能连校验都不做就执行了。
新一代S7-1200/1500补了不少课,支持TLS加密通信,固件里也修了一堆CVE。但现实是,很多工厂用的还是老固件,甚至故意不升级——因为“设备跑得好好的,动了固件怕出事”。这种心态我太理解了,做自动化的最怕半夜被电话叫醒去处理一条停摆的产线。但风险不会因为你怕就消失:西门子官方安全公告里,几乎每季度都有针对PLC的漏洞更新,拒绝服务、权限提升、错误校验造成的异常停机,种类齐全。不升级等于把这些洞原样留给攻击者。
更深层的“历史包袱”是工控协议的碎片化。一条产线上,西门子PLC要跟ABB变频器通信,跟三菱变频器走Modbus,跟MES走OPC UA,老的和新的混在一起。攻击者只要攻破其中任何一条通信链路,就能借力打力。这也是为什么后面我会专门讲网络分段和白名单——协议太老,没法指望它自己变安全,就只能从网络边界上找补。
1.3 工业现场的三座大山:停机、兼容、合规
给IT系统打补丁,选个凌晨重启就行。给PLC打补丁,你得先问生产答应不答应。这是所有工控安全整改绕不开的第一座大山:生产连续性。设备全年无休,一个补丁如果引入兼容性问题,乙方的服务工程师未必能立刻到场,产线一停就是几十万上下。你说“安全很重要”,生产说“停线我更受不了”。两边都没错,但局面就是这么僵着。
第二座大山是兼容性。老PLC配老组态软件,老工程师站跑的还是Windows 7,你要给它装安全代理、上EDR、做端口管控,大概率先把工艺软件的授权搞崩。很多数字化改造项目就是在这种“改一下就可能跑不起来”的恐惧中,把安全问题搁置了十年。
第三座大山是合规。食品、医药、汽车零部件的客户审计一年好几轮,每次都要你填“如何保障数据完整性、防止未授权访问”。填表的时候头头是道,实际上工程师站密码写在显示器便利贴上,U盘随便插,机柜门锁形同虚设。这三座大山不搬开,任何安全方案都是纸上谈兵。
2. AI加持之后,攻击手段到底变了什么
2.1 从“人工翻报告”到“AI批量挖洞”
传统的漏洞挖掘靠人肉看代码、翻文档、试错。一个研究员一个月可能也就挖到两三个有价值的漏洞。AI出现以后,这件事的性质变了:大模型可以快速吃掉海量CVE库、固件二进制、补丁差异,然后用自动化工具去定位可疑函数。
打个比方,以前找漏洞像人工翻字典,一个词一个词找;现在等于让一个记性极好、不知疲倦的实习生把整本字典背下来,再帮你全文检索。很多原来需要专家经验的活——比如“这段代码为什么在异常输入下会崩溃”——现在用大模型配合模糊测试工具就能做,速度是过去的几十倍。
对PLC这类嵌入式设备尤其明显。固件更新后,AI可以自动对比新旧版本,找出补丁修掉的那个函数,反推出对应的漏洞利用点。这招在安全研究圈叫“补丁对比”,以前是高级研究员的专属手艺,现在门槛被AI拉到了地板。对防守方来说,这意味着漏洞从披露到被利用的时间窗口被压缩得极短,你必须赶在别人武器化之前完成封堵。
2.2 从“一把梭”到“定制化载荷”
以前的工控攻击载荷,基本是“通用型”的,写好了谁都能打,但容易被特征库查杀。AI时代不一样,攻击者让大模型根据目标设备的类型、固件版本、通信协议,生成定制化攻击代码。同一套渗透框架,打西门子PLC是一套变种,打AB PLC是另一套变种,代码风格、调用方式、通信特征都不一样,传统的基于已知特征的检测规则很难拦住。
更让我警惕的是“智能变种”这个方向。AI可以不断改写恶意代码的变量名、执行流程、伪装方式,每次生成的样本都不一样。安全厂商的沙箱和特征引擎疲于奔命,查杀率被大幅稀释。这已经不是理论推演——我见过几个网络安全圈的朋友测试过类似工具,效果确实比人工编写变种快得多。
不过这里要说明白:攻击代码是一回事,真正让它起作用还得靠“人能进得去、权限拿得到”。AI解决了“怎么写”的问题,但“怎么渗透进去”还是得依赖目标暴露面和人的失误。这也是后面说防守策略时我总是把“减少暴露面”放在第一位的原因——你让攻击者的AI再聪明,他没门可进,代码写得再花也没用。
2.3 钓鱼和信息收集的成本归零
说句不好听的,产线工程师和安全意识的交集,往往不如想象的那么坚固。过去想对某个工厂做定向钓鱼,攻击者得先研究这家企业用哪款PLC、谁的邮箱能搜到、技术负责人的姓名职务,慢慢拼出一封不那么假的邮件。这些信息收集很耗时,错误率也高。
AI把这块成本直接归零了。给它一个目标企业名称,它能在几分钟内生成一封完全贴合业务场景的钓鱼邮件:署名为供应商的“固件升级通知”,附带一个看起来完全正常的“补丁安装说明”PDF;或者是伪装成集团IT的“季度安全自查表”,语气、措辞、格式都跟真的一模一样。如果攻击者再花点钱做域名仿冒,普通员工根本分不清楚。
这行干久了都知道,很多工控网络的突破口根本不是技术漏洞,而是某台办公电脑被钓鱼攻破,然后横向摸进生产网。AI让这扇门的打开难度降到了历史最低,所以后面聊防守时,我会反复强调对办公网的管控和网络分段——这已经不是“建议”,而是“必须”。
2.4 工控知识门槛被AI拉低到什么程度
以前想攻击PLC,你多少得懂点梯形图、STL、SCL,知道什么是OB块、DB块,知道S7通信和Modbus TCP的区别。这些知识散落在厚厚的编程手册和多年现场经验里,不是突击两天就能补上的。这也是工控相对IT安全显得“安全”的原因之一:不是没人想打,是很多黑客压根看不懂。
AI把这层“语言屏障”几乎抹平了。你用自然语言描述“我想让西门子S7-1200的某个输出点保持导通,要怎么写程序”,大模型会直接给出结构化文本代码,甚至附带上载方法和注意事项。它可能写得不完美,但足以让一个对PLC一窍不通的人在几小时内拼凑出可用的攻击载荷。
更要命的是,大模型还能辅助分析攻击目标——把厂商手册喂给它,它能告诉你这款PLC的通信端口、认证机制、已知漏洞点,不仅当“翻译”,还当“军师”。网络安全圈对这事争论了很久:是不是该限制大模型的这类能力?但从实际攻防演进看,限制是滞后的,攻击者已经用上了。我们防守方唯一理性的应对,就是假设“代码能力优势已经不在我们这边”,然后老老实实把基础防护做扎实——这反而让工控安全回到了最朴素的逻辑:别让人进去,别让通信裸奔。
3. 一条攻击链的完整还原
3.1 教科书案例:震网病毒做了什么
工控安全领域绕不开的案例就是2010年曝光的Stuxnet(震网)。虽然已经过去十几年,但它定义的模式到现在依然有效:利用U盘和漏洞进入内网,通过西门子系统的多个安全缺陷实现逐步渗透,最终用恶意代码修改PLC的组态和逻辑,让受控设备在物理层面发生故障。这套“从IT到OT、从网络到物理”的链路,后来几乎成了所有高级工控攻击的标准模板。
当时它利用的包括Windows系统的多个零日漏洞,以及西门子WinCC和Step 7软件的缺陷,感染后通过伪造驱动程序签名躲避检测。最关键的一步是:恶意代码会先记录正常工艺的组态信息,再偷偷替换成恶意逻辑,同时向操作员展示虚假的“正常状态”。操作员在HMI上看到一切如常,底下的设备却已经按错误参数运行,直到物理损坏。
震网给防守方留下的最大教训是:不要在“检测到异常”时才想起安全。它已经告诉我们,PLC一旦被拿到控制权,后果可以直接投射到物理世界——离心机超速、电机烧毁、管道压力骤升。对于今天所有做智能制造、产线联网的工程师,这个案例不是历史课本,是现实行动的参照系。
3.2 当下典型路径:从办公网一路摸进产线
把震网的思路代入今天的AI时代,一条典型的攻击路径是这样的:
- 公网测绘:攻击者用AI批量扫描暴露的S7COMM端口,标记所有可直接访问的PLC,记录品牌、型号、固件版本。
- 入口突破:如果PLC暴露在公网,直接利用固件漏洞或弱口令进场;否则先对同企业办公网发钓鱼邮件,拿下某台OA电脑。
- 内网横向:从办公网摸到MES层,再从MES层找到通往PLC网段的通路。这一步最依赖“网络未分段”或“防火墙规则形同虚设”的常见疏漏。
- 控制工程师站:很多工厂的工程师站既连着办公网,又连着PLC网段,且TIA Portal工程文件不加密、密码简单,攻击者登录后等于有了全套“钥匙”。
- 篡改逻辑或勒索:可以直接在线修改PLC程序,设定某个时间点让产线“意外停机”;也可以把程序加密或上传密码锁住,然后勒索赎金。
这五步里,真正的技术门槛其实不高。只要网络分段没做好、口令还停留在出厂默认状态,攻击者连AI都不用多发力就能得逞。我在给客户做安全评估时,见过某工厂的PLC管理密码是“123456”,而它的公用IP直接映射了S7端口——这种局面下,谈再高级的AI攻击都是多余,人家用最原始的工具就能进来。
3.3 PLC程序保护和EN/ENO背后的隐忧
再聊一个特别容易被工程师忽略的细节:PLC的程序保护。
很多同行在交付设备时,并没有给项目加密,程序文件直接明文放在工程师站里。TIA Portal打开项目,在线连接PLC,一点“下载”,全套逻辑直接泄底。攻击者拿到程序后,分析工艺逻辑、找出关键设备控制点,比在现场观察一天还高效。
西门子其实提供了“专有技术保护”和“防拷贝保护”两类机制:前者给程序块加密码,没有密码就看不了代码;后者把程序绑定到存储卡或序列号,防止复制到另一台PLC运行。老实说,这两项功能普及率并不高。一方面是因为加密解密流程增加调试麻烦,另一方面很多工程师自己都觉得“没必要”。
关于EN/ENO,不少新手在学梯形图时会疑惑这两个引脚到底有什么用。简单说,EN是使能输入,只有EN为真,功能块才会执行;ENO是输出反馈,告诉调用者这个块是否正常执行完。很多工程故障的根源,就是把多个功能块串在一起时没有判断ENO状态,上游调用失败,下游还继续跑。这本来是一个功能性设计,但如果攻击者篡改了某个功能块的使能条件,ENO可能一直输出“正常”但实际什么都没干,HMI上看起来一切平安——这种“软故障”是最难查的。
所以我的建议很朴素:给每个PLC项目启用专有技术保护,密码不要用企业名缩写加生日;核心工艺块单独加密;工程师站不外借、不连接公共网络。攻击者读不到你的代码,哪怕进来了,分析成本也会成倍上升。
4. 防守方行动指南:把自己当成蓝军
4.1 第一步 摸清家底,先把资产台账做干净
很多工厂以为自己“有台账”,打开一看,是五年前的Excel表,一堆IP对不上。工控安全整改的第一件事不是上设备,是把家底彻底摸清楚:每台PLC的型号、固件版本、所在网段、承载工艺、连接关系、维护窗口,一个都不能漏。
这个工作可以借助自动化工具,但别指望纯扫描。工控设备对扫描流量比较敏感,尤其老PLC在异常探活下可能直接停机——真出这种事,生产部门能把你吃了。更稳妥的方式是:从交换机上做端口镜像,抓几天流量,从真实的通信记录里识别设备;再结合TIA Portal的离线项目文件,交叉核对出完整的资产清单。我在实际项目里用这种方式,既能拿到准确的通信矩阵,又不会让产线冒一点风险。
台账建好之后,还要确认几件事:每台PLC的密码是不是出厂默认值、远程访问映射是否还开着、工程师站的杀毒软件是否在更新、项目文件有没有加密。这些“基础动作”全做到位,比你去部署一套几十万的工控安全审计平台都管用。
4.2 第二步 白名单访问控制是刚需
工控网络的安全和IT不一样,IT讲究“防住已知威胁”,工控场景下,最有效的是“默认拒绝”:明确告诉网络,谁可以和PLC通信、可以走哪些协议、可以使用哪些功能。产线里PLC的通信对象基本是固定的——HMI、工程师站、特定服务器、上下游控制器,把这些关系梳理出来,配成白名单,攻击者就算打得进办公网,也会发现PLC的通信端口根本不通。
具体到配置上,有几点可以照着做:
- 防火墙规则按最小权限来:办公网到PLC网段默认全部拒绝,只开放明确需要的端口。
- 工程师站单独划VLAN,只在维护窗口内开通到PLC的访问,其余时间禁止。
- HMI和PLC之间允许的协议端口固定,比如西门子的102端口、OPC UA的4840端口,其他一律不通。
- 远程运维一律走带外管理通道,配双因子认证,不要直接做端口映射到公网。
哪怕不买商业工控防火墙,用现有交换机的ACL也能实现其中大部分效果。难的不是技术,是想办法让生产部门同意在维护窗口做一次规则切换。每次切换前先在测试环境验证,确认不影响正常通信再推生产——这一步稳住了,后面就好办了。
4.3 第三步 补丁与固件的“风险平衡术”
完全不打补丁的危险,前面说过了;但无脑打补丁的风险,也是实打实的。工控安全没有标准答案,只有平衡:每台设备根据自己的生产重要性,定一个补丁周期。不连公网、只和HMI通信的PLC,补丁优先级可以低一些;直接暴露在MES网络或接入了物联网关的设备,必须优先处理。
我的建议是固定节奏:每周花十分钟看一眼西门子官方安全公告,把和自己设备相关的条目记录下来;每月做一次盘点,给相关设备按“漏洞可利用性”和“业务影响”打分排序;每年至少做一次固件升级。升级前一定做好三件事:完整备份项目、备份固件版本(保证可回退)、找产线最闲的时间窗口,并提前通知生产。
这里还要提醒一个细节:固件升级后,有些老通信模块的驱动可能不兼容,第三方设备(比如ABB变频器、三菱变频器的Modbus通信)也会出现对接异常。所以升级前要和供应商确认通信兼容性,最好先在备机或测试台上跑一遍工艺联动。我在现场吃过这种亏——只升了PLC固件,没考虑变频器侧的协议兼容,结果手动模式全正常,自动模式一联动就报错,折腾了大半夜。
4.4 第四步 让AI帮你盯流量
防守方最大的优势是:你熟悉自己的网络。哪怕攻击者再聪明,他的行为一定会偏离正常基线——正常产线通信是周期性、规律性的:PLC每隔几百毫秒采集一次数据,HMI又每隔一段时间读取一次变量,很少有人在凌晨三点用TIA Portal在线修改程序。
把“正常基线”定义清楚,AI就可以当你的哨兵。具体可以做两件事:一是在核心交换机做端口镜像,把流量引到日志分析平台,用规则或机器学习模型识别异常;二是针对PLC通信深度解析,不只看到IP和端口,还能分辨出“这是一条正常的采集读操作,还是一条修改写操作”。
举个例子,可以设几条简单检测规则:
- 同一源IP对PLC的连接次数远超正常轮询频率。
- 出现针对PLC的写命令,特别是写程序块、改运行状态这类高风险操作。
- 一个从未见过的IP地址尝试访问PLC网段。
- 半夜时段出现登录工程师站的行为。
不用等到分析平台给出完美结论,原始告警已经能帮你快速定位异常。真上了AI模型之后,它还能学习每个设备的历史通信习惯,连“某个PLC今天多通信了3次”这种细微差异都能发现。工具可以选择商业工控异常检测平台,也可以用开源日志系统加自训练模型,关键在于:先建基线,再谈检测。
5. 工控安全常见问题速查与踩坑实录
5.1 PLC时间锁:自我埋雷的最高发形式
做这行久了,你迟早会遇到“时间锁”。有些设备供应商搞分期付款,在PLC程序里写了一段授权逻辑:用系统时钟和预设日期比较,超过日期就锁定某些输出,设备整体停机。前两天还见一个案例,供应商内部人员变动,联系方式全断,客户的产线到点直接罢工,打电话给谁都找不到解密的。厂里急得跳脚,才把程序导出来想找触发点。
从技术手段讲,这类逻辑通常藏在某个FC块或FB块里,用SCL或梯形图写一个日期比较,一旦判断超期就置位一个故障位或者把使能变量清零。排查方式一般是:在TIA里在线连接PLC,把所有块的调用关系捋一遍,找出那个“读系统时钟的块”和“置使能位的块”,然后看条件变量。
但我要强调一句:对于合法维护方,正确做法是联系供应商按合同解锁,或者走法律途径处理,而不是自己破解。你可以在和供应商的合同里明确约定:验收合格后必须提供完整源码和解除时间锁的授权码,否则项目不验收。这种事,说破无毒,落到纸面上比事后扯皮有用得多。另外,作为设备使用方,也要养成定期检查系统时钟的习惯——PLC时钟如果跑偏,不仅影响时间锁,还可能让数据采集的时间戳乱得一塌糊涂。
5.2 OPC UA:把PLC“裸奔”到MES面前
现在做数字化改造,最流行的就是OPC UA。用Process Simulate这类仿真软件通过OPC UA和PLC通信,能实现在线调试、虚拟调试,确实方便。但OPC UA有个大坑:默认配置下,它可能不启用加密和认证。
我见过不止一个项目,集成商把OPC UA服务器配好,连接是通了,但安全策略选的是“None”,用户认证也没开。相当于给所有能访问这台服务器的人开了一扇无锁大门,任何IP都能连接并且读写变量——如果你的MES网段又被办公网打通,那攻击者顺着OPC UA这根管子就能直接摸到工艺数据甚至下发控制命令。
正确的配置路径其实不复杂:安全策略至少选Basic256Sha256,启用证书认证,服务器端配置允许的用户名单和账号,关闭匿名访问;客户端连接时校验服务器证书;PLC侧只保留OPC UA通信所需的端口,做好访问控制白名单。记住一个原则:OPC UA给你的是协议灵活性,安全还是要靠自己配出来的。
5.3 变频器通讯:Modbus RTU的暗门
再来聊聊变频器。热词里那些“ABB变频器与西门子PLC通信”“S7-200 SMART与森兰SB200通信”,基本都是走Modbus RTU或USS协议。这类串口通信有两个特点:一是明文传输,没有加密;二是广播式,总线上的设备都能听到。
Modbus RTU在工控场景里最常见的安全隐患是:只要总线物理链路能被接触,任何人都能往线上灌数据。比如RS485线缆从电柜穿到室外设备,中间有一段暴露在公共区域,攻击者拿个USB转485工具接上去,就能发送“停止运行”或“修改频率”的指令帧,而PLC和变频器根本不会验证帧的发送者是谁。
防守角度,能做的是:控制柜上锁,室外线缆套金属管保护;PLC和变频器之间要设固定的轮询周期和超时判断,收到异常帧就报警;如果是支持Modbus TCP的新设备,把访问控制规则加在交换机ACL上,只允许PLC的IP跟变频器通信。记住,串口协议天生没有网络安全机制,中线缆物理安全是最后防线。
5.4 真的出事了怎么办:应急隔离流程
最后聊应急,这是所有工控安全里最腥风血雨的部分。真检测到攻击行为,别慌,按顺序走:
- 断:第一时间在网络层面切断可疑连接,优先级从PLC网段到核心交换机的路径开始。如果怀疑某台PLC被篡改,直接拔掉它连交换机的网线——宁可停机,不能扩大。
- 存:保存证据。镜像工程师站日志、导出防火墙会话记录、对PLC做在线上传(如果还能传),保证现场状态能被事后复盘还原。
- 评:评估影响范围。确认攻击者碰了哪些设备、改了什么程序、是否给其他设备留了后门。
- 复:恢复生产。用备份程序恢复PLC逻辑,改掉所有密码,更新固件到已修复版本,确认正常后再重新接入网络。
- 理:复盘。问自己三个问题:他是怎么进来的?为什么没拦住?下次怎么防?
这里最忌讳的是“先汇报、后处理”,层层审批完,黄金时间早过了。作为工程师,你第一责任是止损,哪怕暂时违反一点流程,把设备物理隔离了再说。我见过一次真实的勒索,厂里因为犹豫要不要通知领导,让攻击者又多控制了两条产线——每多一分钟,恢复成本就翻一倍。
我自己做过一次完整的工控网络整改,把一百多台老设备的通信关系理了个遍,给每台PLC都建立了白名单访问规则,给每个工程师站配了加密盘和强密码。那段时间很痛苦,生产抱怨调试时间变长了,个别通信偶尔抽风还要我去排查。但后来一次红队演练,攻击方试了两天,最终只打穿了办公网,怎么也进不了生产网段。项目验收那天,生产主管跟我说了句实在话:“以前觉得你们搞安全就是添乱,现在觉得,你们拦住的不是演习,是不敢想的那种事故。”这大概就是我写这篇东西的意义——别等出事了才想起PLC也是需要上锁的资产。每周花几分钟看一眼安全公告,每季度对一次资产清单,每次动PLC之前先备份——这些小事,比任何昂贵设备都值钱。