第四章:工控系统威胁建模: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 资产识别:你得先知道家里有什么
做威胁建模之前,必须先做资产识别。你连家里有什么值钱的东西都不知道,怎么防盗?
工控系统的资产,我习惯分成三类:
- 硬件资产:PLC、DCS控制器、RTU、HMI、工程师站、操作员站、工业交换机、防火墙、串口服务器
- 软件资产:组态软件(WinCC、Intouch)、编程软件(TIA Portal、RSLogix)、数据库、OPC服务器、SCADA系统
- 数据资产:工艺参数、配方数据、报警记录、历史趋势、设备台账、网络拓扑
我记得有一次去一个化工厂做评估,对方说「我们资产很清晰」。结果我让他们拿出资产清单,发现连现场有多少台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做「广度扫描」,找出所有可能的威胁类型。再用威胁树做「深度分析」,把高危威胁的路径画出来。
具体步骤:
- 第一步:资产盘点——列出所有工控资产,贴上标签
- 第二步:STRIDE分类——对每个资产,逐一问六个问题(能不能伪造?能不能篡改?能不能DoS?...)
- 第三步:威胁树展开——对高风险项,画出攻击路径
- 第四步:制定防护策略——针对每条路径,给出具体防护措施
举个例子,对一个PLC资产:
| STRIDE维度 | 威胁描述 | 风险等级 | 威胁树分析 | 防护措施 |
|---|---|---|---|---|
| Spoofing | 伪造工程师站连接PLC | 高 | 路径:伪造MAC→绕过认证→下载恶意程序 | 启用端口安全、802.1X认证 |
| Tampering | 篡改PLC运行程序 | 极高 | 路径:获取在线权限→修改逻辑→触发危险动作 | 程序写保护、版本比对、数字签名 |
| DoS | 对PLC发起网络风暴 | 高 | 路径:扫描PLC端口→发送大量无效请求→CPU过载 | 工业防火墙限流、ACL访问控制 |
个人建议:做完威胁建模后,一定要输出一份「威胁处置优先级清单」。把「极高风险」的项标红,要求必须在1周内完成整改。我曾经在一个项目中,就是因为没有及时处置一个「篡改PLC程序」的高风险项,结果被红队演练直接打穿。嗯,从那以后,优先级清单就成了我的标配。
4.6 常见误区与避坑
做了这么多年工控安全,我总结几个常见误区:
- 误区一:只做IT层面的威胁建模。工控场景下,物理安全、人员操作安全同样重要。一个被收买的内部人员,比外部黑客更可怕。
- 误区二:威胁建模做一次就完事。产线改造、设备升级、网络变更后,威胁面会发生变化。我建议每半年重新做一次。
- 误区三:过度依赖工具。威胁建模工具只是辅助,真正有价值的是你和工艺工程师、操作员聊出来的那些「非标操作」和「潜规则」。
我曾经踩过的坑:有一次,我们花了两周做了一份非常完美的威胁建模报告,各种图表、数据、分析一应俱全。结果拿给车间主任看,人家说「这玩意儿我看不懂」。后来我学乖了,威胁建模的输出一定要有两份:一份给管理层看的「一页纸摘要」,一份给技术团队看的「详细分析报告」。
好了,这一章的内容就到这里。威胁建模不是一次性的工作,而是一个持续迭代的过程。下一章,我们会聊聊工控系统的安全架构设计,看看怎么把今天分析的威胁,变成实实在在的防御措施。