第四章:工控系统威胁建模:STRIDE模型在工控场景的应用、资产识别与威胁树分析

4.1 为什么工控系统需要威胁建模?

说实话,我见过太多工控项目,安全都是「出了事再补」。PLC被攻击了,才想起来加防火墙。上位机中毒了,才想起来做白名单。这种事后补救,成本高,效果还差。

威胁建模是什么?说白了,就是在攻击发生之前,先把自己当成黑客,想想「如果我要搞破坏,从哪里下手?」。这不是纸上谈兵,而是实打实的防御前置。

我个人习惯,每个新项目启动时,第一件事不是写代码,而是拉上工艺工程师、网络工程师,一起做威胁建模。你想想看,连敌人可能从哪里来都不知道,你防什么?

核心观点:威胁建模不是安全团队的独角戏,而是需要工艺、自动化、IT三方共同参与的「沙盘推演」。

4.2 STRIDE模型在工控场景的应用

STRIDE是微软提出的威胁分类模型,六个字母代表六类威胁。我在工控项目中,把这六个维度做了「本土化」改造,更贴合现场实际。

STRIDE维度 原意 工控场景解读
Spoofing(欺骗) 身份伪造 伪造工程师站身份,向PLC下发恶意程序
Tampering(篡改) 数据篡改 修改PID参数、篡改配方数据、改写梯形图逻辑
Repudiation(抵赖) 否认操作 操作员否认执行过危险指令,日志被删除
Information Disclosure(信息泄露) 信息泄露 工艺参数、配方数据被窃取,暴露核心工艺
Denial of Service(拒绝服务) 拒绝服务 对PLC发起DoS攻击,导致产线停机
Elevation of Privilege(权限提升) 权限提升 普通操作员获取工程师权限,修改安全联锁逻辑

我在一个汽车焊装车间项目里,就遇到过典型的Spoofing攻击。攻击者伪造了工程师站的MAC地址,直接往PLC里灌了一段恶意程序,导致机器人动作异常。嗯,从那以后,我们所有工控项目都强制启用了802.1X端口认证。

实战技巧:做STRIDE分析时,不要只盯着IT层面的威胁。工控场景下,Tampering(篡改)DoS(拒绝服务)是最致命的。篡改可能导致设备损坏、人员伤亡;DoS直接导致停产,每分钟损失都是真金白银。

4.3 资产识别:你得先知道家里有什么

做威胁建模之前,必须先做资产识别。你连家里有什么值钱的东西都不知道,怎么防盗?

工控系统的资产,我习惯分成三类:

  1. 硬件资产:PLC、DCS控制器、RTU、HMI、工程师站、操作员站、工业交换机、防火墙、串口服务器
  2. 软件资产:组态软件(WinCC、Intouch)、编程软件(TIA Portal、RSLogix)、数据库、OPC服务器、SCADA系统
  3. 数据资产:工艺参数、配方数据、报警记录、历史趋势、设备台账、网络拓扑

我记得有一次去一个化工厂做评估,对方说「我们资产很清晰」。结果我让他们拿出资产清单,发现连现场有多少台PLC都说不清楚。最后我们花了三天,拿着手电筒,一个机柜一个机柜地数。你想想看,连资产都不清楚,威胁建模就是空中楼阁。

避坑指南:我曾经见过一个项目,资产清单里只列了PLC和HMI,完全忽略了串口服务器和工业交换机。结果攻击者就是从一台无人维护的串口服务器切入,横向移动到了核心控制器。记住:所有联网的设备,都是潜在的攻击面。

4.4 威胁树分析:把攻击路径画出来

威胁树(Attack Tree)是一种结构化的分析方法。根节点是攻击目标,子节点是达成目标所需的步骤。我个人觉得,这是和工艺工程师沟通最有效的工具——画出来,一目了然。

举个例子,攻击目标:导致反应釜超温爆炸

攻击目标:导致反应釜超温爆炸
├── 1.0 篡改温度设定值
│   ├── 1.1 获取HMI操作权限
│   │   ├── 1.1.1 弱口令爆破
│   │   └── 1.1.2 社会工程学获取密码
│   └── 1.2 直接修改PLC内部寄存器
│       ├── 1.2.1 通过编程软件在线修改
│       └── 1.2.2 通过恶意脚本批量写入
├── 2.0 禁用温度联锁保护
│   ├── 2.1 修改安全PLC程序
│   └── 2.2 物理断开温度传感器信号
└── 3.0 导致冷却系统失效
    ├── 3.1 攻击冷却水泵变频器
    └── 3.2 篡改冷却水阀门开度指令

画完威胁树,你会发现:很多攻击路径其实可以通过简单的防护措施阻断。比如,只要启用了HMI的账户锁定策略,1.1.1这条路径就基本废了。

我的经验:威胁树不要画得太复杂。我一般控制在3层以内,超过3层,工艺工程师就看不懂了。重点是找到那些「低成本、高收益」的防护点,优先加固。

4.5 实战:STRIDE+威胁树联合建模

在实际项目中,我通常把STRIDE和威胁树结合起来用。先用STRIDE做「广度扫描」,找出所有可能的威胁类型。再用威胁树做「深度分析」,把高危威胁的路径画出来。

具体步骤:

  1. 第一步:资产盘点——列出所有工控资产,贴上标签
  2. 第二步:STRIDE分类——对每个资产,逐一问六个问题(能不能伪造?能不能篡改?能不能DoS?...)
  3. 第三步:威胁树展开——对高风险项,画出攻击路径
  4. 第四步:制定防护策略——针对每条路径,给出具体防护措施

举个例子,对一个PLC资产:

STRIDE维度 威胁描述 风险等级 威胁树分析 防护措施
Spoofing 伪造工程师站连接PLC 路径:伪造MAC→绕过认证→下载恶意程序 启用端口安全、802.1X认证
Tampering 篡改PLC运行程序 极高 路径:获取在线权限→修改逻辑→触发危险动作 程序写保护、版本比对、数字签名
DoS 对PLC发起网络风暴 路径:扫描PLC端口→发送大量无效请求→CPU过载 工业防火墙限流、ACL访问控制

个人建议:做完威胁建模后,一定要输出一份「威胁处置优先级清单」。把「极高风险」的项标红,要求必须在1周内完成整改。我曾经在一个项目中,就是因为没有及时处置一个「篡改PLC程序」的高风险项,结果被红队演练直接打穿。嗯,从那以后,优先级清单就成了我的标配。

4.6 常见误区与避坑

做了这么多年工控安全,我总结几个常见误区:

  • 误区一:只做IT层面的威胁建模。工控场景下,物理安全、人员操作安全同样重要。一个被收买的内部人员,比外部黑客更可怕。
  • 误区二:威胁建模做一次就完事。产线改造、设备升级、网络变更后,威胁面会发生变化。我建议每半年重新做一次。
  • 误区三:过度依赖工具。威胁建模工具只是辅助,真正有价值的是你和工艺工程师、操作员聊出来的那些「非标操作」和「潜规则」。

我曾经踩过的坑:有一次,我们花了两周做了一份非常完美的威胁建模报告,各种图表、数据、分析一应俱全。结果拿给车间主任看,人家说「这玩意儿我看不懂」。后来我学乖了,威胁建模的输出一定要有两份:一份给管理层看的「一页纸摘要」,一份给技术团队看的「详细分析报告」。

好了,这一章的内容就到这里。威胁建模不是一次性的工作,而是一个持续迭代的过程。下一章,我们会聊聊工控系统的安全架构设计,看看怎么把今天分析的威胁,变成实实在在的防御措施。