安全威胁与风险:针对工控系统的攻击类型、攻击面分析与风险建模方法
工控系统(ICS/SCADA)从封闭的专用网络走向开放互联的IT/OT融合架构后,其面临的威胁已从早期的偶然性故障演变为国家级、组织化的定向攻击。震网病毒摧毁伊朗离心机、勒索软件瘫痪 Colonial Pipeline 输油管道、APT 组织长期潜伏篡改工艺参数——这些事件表明,工控安全的核心命题已从“防病毒”转向“防攻击者完成其攻击链”。本章将系统梳理针对工控系统的典型攻击类型、攻击面构成,并重点讲解 STRIDE 与攻击树两种风险建模方法,帮助安全工程师建立“从威胁视角看风险”的实战能力。
3.1 针对工控系统的典型攻击类型
3.1.1 核心原理:从 IT 攻击到 OT 攻击的演变
工控系统攻击与普通 IT 攻击的本质区别在于攻击目标——IT 攻击追求数据泄露或系统瘫痪,而 OT 攻击追求对物理过程的操纵与破坏。这种差异导致攻击手法、检测难度和影响后果完全不同。典型攻击类型包括:
- 震网(Stuxnet):首个以破坏物理设施为目标的网络武器。利用 Windows 零日漏洞(MS10-046 打印后台漏洞、MS10-061 任务计划程序漏洞)传播,通过 USB 摆渡进入隔离的核设施网络,最终篡改西门子 S7-300 PLC 的离心机转速控制逻辑,同时向监控系统回放正常数据,实现“物理破坏+感知欺骗”双重效果。
- 勒索软件(Ransomware):近年来针对工控系统最猖獗的攻击类型。攻击者通过钓鱼邮件或 RDP 爆破进入 IT 网络,横向移动到 OT 网络后加密工程站、HMI 和历史数据库。典型案例:2021 年 Colonial Pipeline 遭 DarkSide 勒索攻击,被迫关闭 5500 英里输油管道;2023 年 Clop 勒索组织利用 MOVEit 漏洞攻击多家工业巨头。
- APT(高级持续性威胁):国家级或组织级攻击者实施的长期潜伏、定向攻击。典型如 Dragonfly(蜻蜓)组织针对欧美能源行业,入侵工控软件供应链植入后门;APT33 针对沙特石化设施;还有针对乌克兰电网的 BlackEnergy 和 Industroyer 攻击,直接导致大范围停电。
3.1.2 判断方法:攻击类型识别特征
| 攻击类型 | 主要目标 | 典型特征 | 检测难点 |
|---|---|---|---|
| 震网 | 破坏物理设备 | 利用零日漏洞、USB摆渡、篡改PLC逻辑 | 回放正常数据,监控系统无法感知 |
| 勒索软件 | 经济勒索 | 文件加密、勒索信、RDP爆破、钓鱼 | 加密行为与正常文件操作难以区分 |
| APT | 长期情报窃取/蓄意破坏 | 潜伏期长、多阶段攻击、定制化工具 | 攻击行为分散,单点检测难以发现 |
3.1.3 案例拆解:震网病毒攻击链复盘
震网攻击是理解工控攻击链的经典教材。其攻击过程可分为四个阶段:
- 初始渗透:通过 5 个 Windows 零日漏洞和 2 个西门子漏洞,借助 U 盘摆渡进入纳坦兹核设施内部网络。攻击者事先收集了工程师的社会工程学信息,制作了伪装成离心机图纸的 LNK 文件。
- 内网扩散:利用 MS08-067 等漏洞在内网横向移动,同时通过 SMB 共享和打印后台服务传播。感染了约 20 万台计算机,但只有特定配置的离心机控制系统才会触发最终载荷。
- 物理破坏:向 S7-300 PLC 上传恶意组态代码,修改离心机转速控制逻辑。攻击者劫持了 OB1 主循环,在特定条件下将转速提升至共振频率,同时向 HMI 回放正常转速数据。
- 痕迹清理:恶意代码在完成破坏后自动删除自身,并利用 PLC 的故障自恢复机制掩盖异常。
复盘要点:震网的成功在于攻击者深刻理解了工控系统的“物理-逻辑”耦合关系。它不依赖单一漏洞,而是构建了完整的攻击链。防护启示是:即使网络隔离做得再好,也必须假设“摆渡攻击”可能发生,应在 OT 网络内部部署异常行为检测。
3.2 工控系统攻击面分析
3.2.1 核心原理:攻击面的构成与暴露
攻击面是指系统所有可被攻击者利用的入口和路径。工控系统的攻击面比传统 IT 系统更广泛,因为它不仅包含网络层,还包含物理层、协议层和人员层。完整的攻击面分析应覆盖以下维度:
- 网络边界:IT/OT 之间的防火墙、DMZ 区、远程访问 VPN、无线接入点。这是最常见的攻击入口,Colonial Pipeline 攻击即通过 IT 网络 VPN 账号进入。
- 现场设备:PLC、RTU、DCS 控制器、智能仪表、传感器。这些设备往往存在固件漏洞、硬编码凭据、未加密的调试接口。
- 人机接口:HMI、工程站、操作员站。这些系统通常运行 Windows 操作系统,且因兼容性原因无法及时打补丁。
- 通信协议:Modbus、DNP3、OPC UA、S7comm、EtherNet/IP 等。多数 OT 协议缺乏认证和加密机制,攻击者可伪造报文或实施中间人攻击。
- 供应链:设备固件、组态软件、第三方库、维护笔记本。2020 年 SolarWinds 事件证明供应链攻击可影响大量下游用户。
- 人员与流程:运维人员的社会工程学弱点、外包维护人员的访问权限、离职员工的账号残留。
3.2.2 判断方法:攻击面评估流程
- 资产盘点:建立完整的 OT 资产清单,包括硬件型号、固件版本、IP 地址、开放端口、运行的服务。使用主动扫描(Nmap、Shodan)和被动监听(流量分析)相结合。
- 网络拓扑映射:绘制 OT 网络拓扑图,标注所有边界设备、路由路径、防火墙规则。重点识别“隐形通道”——如维护拨号线路、无线桥接、未记录的 VPN。
- 协议分析:抓取 OT 网络流量,识别使用的协议类型、功能码、寄存器地址范围。检查是否存在未加密的明文协议。
- 漏洞评估:对每个资产进行漏洞扫描,结合 CVE 库和 ICS-CERT 公告。注意 OT 漏洞扫描需谨慎,避免触发设备故障。
- 威胁建模:基于攻击面分析结果,使用 STRIDE 或攻击树方法识别高风险路径。
GRASSMARLIN 进行 OT 网络被动映射,Shodan 搜索暴露的工控设备,Nmap 的 modbus-discover 脚本识别 Modbus 设备,Wireshark 的 dissector 分析 S7comm 协议。
3.2.3 实战场景:某制造企业攻击面评估
某汽车零部件制造企业委托进行 OT 安全评估。初步信息:工厂有 3 条生产线,使用西门子 S7-1500 PLC 和 WinCC 组态软件,IT 与 OT 之间部署了防火墙。
评估发现:
- 防火墙规则过于宽松,允许 IT 网段直接访问 OT 网段的 102 端口(S7comm)和 3389 端口(RDP)。
- 工程站使用 Windows 7 系统,未安装补丁,且存在弱口令(admin/admin)。
- PLC 的 CPU 密码为空,任何能访问网络的人都可以上传/下载程序。
- 无线网络使用 WEP 加密,可被轻易破解。
- 维护人员使用 TeamViewer 远程访问 HMI,但未启用双因素认证。
整改措施:
- 收紧防火墙规则,仅允许特定 IP 和端口通信,部署工业防火墙(如 Tofino、SISCO)进行深度协议检测。
- 升级工程站系统,部署白名单软件(如 Application Control),禁止非授权程序运行。
- 为 PLC 设置强密码,启用 CPU 访问保护。
- 升级无线网络为 WPA2-Enterprise,并启用 MAC 地址过滤。
- 远程访问改为堡垒机+双因素认证,并记录所有操作日志。
复盘经验:攻击面评估不是一次性的,应每季度或每次网络变更后进行。评估过程中要平衡安全与生产——某些扫描操作可能影响 PLC 运行,需在停产窗口期进行。
3.3 风险建模方法:STRIDE 与攻击树
3.3.1 核心原理:两种建模方法的定位
风险建模是将攻击面分析结果转化为可量化、可决策的风险清单的过程。STRIDE 和攻击树是两种互补的方法:
- STRIDE:由微软提出的威胁分类模型,从六个维度系统性地识别威胁。适用于系统设计阶段,帮助架构师在开发早期发现设计缺陷。
- 攻击树:以树形结构描述攻击者的目标与达成路径。适用于已有系统的风险评估,帮助安全团队理解攻击者的具体手法和所需条件。
| STRIDE 维度 | 威胁描述 | 工控场景示例 |
|---|---|---|
| Spoofing(仿冒) | 冒充合法用户或设备 | 伪造 Modbus 主站身份写入寄存器 |
| Tampering(篡改) | 修改数据或代码 | 篡改 PLC 组态逻辑 |
| Repudiation(抵赖) | 否认已发生的操作 | 操作员否认执行了危险操作 |
| Info Disclosure(信息泄露) | 敏感数据被未授权访问 | 工艺参数、配方数据被窃取 |
| Denial of Service(拒绝服务) | 系统不可用 | DoS 攻击导致 HMI 无响应 |
| Elevation of Privilege(提权) | 获得更高权限 | 从操作员权限提升至管理员权限 |
3.3.2 操作流程:STRIDE 建模步骤
- 绘制数据流图(DFD):将系统分解为进程、数据存储、外部实体和数据流。对于工控系统,外部实体包括操作员、维护工程师、ERP 系统;进程包括 HMI、PLC、历史数据库;数据存储包括组态文件、报警记录。
- 逐元素应用 STRIDE:对 DFD 中的每个元素,逐一检查六类威胁。例如,对 PLC 与 HMI 之间的通信链路,检查是否存在仿冒(Spoofing)风险——攻击者能否伪造 HMI 发送写命令。
- 记录威胁场景:为每个威胁编写具体场景描述,包括攻击者位置、所需权限、攻击步骤、影响后果。
- 评估风险等级:使用 DREAD 模型(Damage 破坏性、Reproducibility 可复现性、Exploitability 可利用性、Affected Users 受影响用户、Discoverability 可发现性)或 CVSS 评分对威胁排序。
- 制定缓解措施:针对高风险威胁设计控制措施,如认证、加密、审计、冗余。
3.3.3 操作流程:攻击树建模步骤
- 定义根目标:攻击者最终想达成什么?例如“导致反应釜超压爆炸”或“窃取产品配方”。
- 分解子目标:将根目标分解为多个子目标,用 AND(所有子目标都必须达成)或 OR(任一子目标达成即可)逻辑连接。
- 递归分解至叶子节点:继续分解子目标,直到叶子节点为具体攻击动作,如“利用 CVE-2021-1234 漏洞”“暴力破解 HMI 密码”。
- 标注条件:为每个节点标注所需条件,如“需要物理接触”“需要网络可达”。
- 计算风险:根据叶子节点的可行性和所需成本,评估整体攻击路径的风险。
根目标:导致 PLC 输出错误控制信号
├── OR 1: 篡改 PLC 组态逻辑
│ ├── AND 1.1: 获得 PLC 访问权限
│ │ ├── 1.1.1 利用空密码登录
│ │ └── 1.1.2 暴力破解密码
│ └── AND 1.2: 上传恶意组态
│ ├── 1.2.1 使用 TIA Portal 上传
│ └── 1.2.2 使用恶意脚本上传
├── OR 2: 篡改 HMI 显示数据
│ ├── 2.1 中间人攻击修改 HMI 与 PLC 通信
│ └── 2.2 直接修改 HMI 组态文件
└── OR 3: 物理攻击
├── 3.1 更换 PLC 模块
└── 3.2 修改传感器信号
3.3.4 常见误区与总结复盘
- 误区一:只关注 IT 层威胁。很多安全团队将 STRIDE 应用于 IT 网络,却忽略了 OT 协议和物理设备。实际上,OT 层的仿冒和篡改威胁往往更危险。
- 误区二:攻击树过于复杂。攻击树应聚焦于高价值目标,不要试图穷举所有可能路径。建议控制在 3-5 层深度,重点关注可达性高、影响大的路径。
- 误区三:建模后不更新。系统架构、设备型号、网络拓扑变化后,风险模型必须同步更新。建议将风险建模纳入变更管理流程。
- 误区四:忽略人的因素。STRIDE 和攻击树主要关注技术威胁,但社会工程学攻击往往是最容易成功的路径。应在建模中考虑钓鱼、内部人员恶意行为等场景。
总结复盘:风险建模不是一次性的学术练习,而是安全决策的输入。STRIDE 帮助我们从攻击者视角系统性地审视系统设计缺陷,攻击树则帮助我们理解具体攻击路径和所需条件。两者结合使用,可以构建完整的风险视图。在实际项目中,建议先使用 STRIDE 进行初步威胁识别,再对高风险领域使用攻击树进行深入分析。最终输出应包含:威胁清单、风险等级、缓解措施、责任人和时间表。