紫队行动指南:OT与IoT测试中如何避免工厂停产或石油钻井平台沉没
作者:Umair Ahmed
大家好,我是目前在HelloFresh担任高级安全工程师的Umair Ahmed。最近参与了大量工业系统的紫队测试,希望在此分享经验。测试运营技术和物联网系统绝非易事,尤其是当风险涉及工厂停产或石油钻井平台事故时。每个参与OT/IoT系统测试的同行都对可能出现的意外状况保持高度警惕。本文献给所有希望在这些场景中表现出色的战友们:
1. 准备、规划与范围界定
开始前需重点关注以下方面:网络服务、Web/API、CMS/应用系统、无线安全、社会工程、IaaS/PaaS/SaaS、物理安全和运营技术。将其分解为可管理的类别有助于避免疏漏并改进规划。
关键步骤:
- 全景认知:全面了解现有技术、流程和人员架构
- 关键提问:询问第三方公司在部署维护中的角色,包括备份策略、灾难恢复计划、冗余机制等。例如:“第三方支持的响应时间是多少?"、“哪些系统部署了冗余?"、“重大故障时的灾难恢复协议是什么?”
- 研究准备:搭建社会工程基础设施、C2框架(参考C2 Matrix)、协作工具(如Vectr)、VPN(如需)以及不同用户行为的访问系统
2. 业务关键操作分析
基于CIA三要素(机密性、完整性、可用性)识别分析关键因素。
考量要点:
- 系统影响:评估系统宕机对财务和运营的影响(如工厂/钻井平台场景)
- 冗余机制:计算系统受影响时的业务/人力/财务成本
- 无线安全:评估对IoT/OT/PLC通信的影响
- 标准流程:审查物理安全和现场安全的SOP
- 环境规范:确保符合特定环境的操作准则
- 测试设备:确认硬件测试设备的可用性和成本
3. 威胁建模
基于对业务、设施、硬件和SOP的了解进行威胁建模。通过关键人员访谈、操作手册/事故报告审查、现场观察等方式有效收集信息。
关键步骤:
- APT研究:调查行业相关高级持续性威胁及其TTPs(参考MITRE ATT&CK)
- 风险登记:通过风险登记表验证可行性
- 威胁登记:纳入历史事件、威胁狩猎或预测产生的业务威胁
- 检测团队输入:结合检测响应团队的洞察验证威胁
- 业务洞察:整合业务和供应链团队的输入
- 杀伤链场景:使用洛克希德·马丁杀伤链等框架创建详细场景(配合Vectr等工具)
最后,务必全面记录投放器、shell、命令、战术、进程和工具,这将帮助利益相关方获得可见性,危险行为将在后续环节被排除。
4. 利益相关方对齐
协调各方有效降低风险。
关键行动:
- 目标定义:确保对目标、流程、时间线和行动达成共识
- 风险讨论:识别并缓解最坏情况
- 时机选择:安排在非业务高峰期测试
- 审批确认:获得所有利益相关方的书面同意
5. 执行阶段
执行时需谨慎进行扫描、枚举和漏洞利用。例如:进行漏洞扫描时使用低强度模式避免网络过载;漏洞利用时在受控环境模拟入侵场景评估影响而不干扰运营。
最佳实践:
- 扫描限流:避免引发可用性问题
- 预设入侵:对可能破坏系统的利用方案规划冗余
- API测试:从文档分析入手而非直接扫描
- 访问控制检查:在网络和应用层进行测试
- 无线测试:模拟攻击者远距离测试场景
- 社会工程:聚焦证据收集而非部署恶意载荷
- 安全差距分析:审查人员流程,将结果编入检查表供后续参考
- 物理安全:检查门禁系统,演示身份克隆技术(如Flipper Zero)
- OSINT与CTI:使用Shodan/Censys等工具追踪设备足迹
- 监控证据:记录检测和监控结果
6. 清理阶段
确保测试后环境复原。
操作步骤:
- 硬件软件:移除所有测试工具
- 配置回滚:恢复所有变更至原始状态
7. 报告撰写
制作适合技术人员和非技术决策层阅读的完整报告。包含执行摘要、方法论、带证据的详细发现、影响分析和可操作建议,使用图表使复杂数据更易理解。
核心要素:
- 发现记录:提供证据和复现步骤
- 成果总结:为技术人员和业务领导分别准备结论与行动项
- 汇报演示:向所有利益相关方汇报并确认责任归属
- 流程简化:制定易于团队跟进的流程,明确SLA和例外情况
切记这是最重要的环节,除非结果被正确传达、理解并实施缓解措施,否则整个测试将失去价值。
8. 漏洞管理(后续跟进)
此阶段考验团队的持续跟进能力。
实用技巧:
- 看板跟踪:使用前期创建的看板监控行动项进展
- 定期提醒:建立团队跟进机制
完成所有流程后,记得给自己喘息的空间——毕竟到达这个阶段时你肯定已经精疲力尽。