多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

工控资产管理:工业安全态势感知绕不开的地基工程

工控资产管理:工业安全态势感知绕不开的地基工程 聊工业安全态势感知很多人习惯把注意力都放在流量探针、日志审计、威胁检测这些模块上巴不得感知引擎越灵敏越好。但工控资产管理这块最不显眼的地基往往才是项目成败的真正分水岭。而我在一个个现场看到的现实却经常是反过来的平台部署完第一个被问住的问题往往不是“有没有威胁”而是“咱们车间到底有多少台PLC、几套DCS、哪些设备没人管”。连资产清单都不完整态势感知引擎再强也不知道该盯着谁、该信任谁、该对谁告警。这篇是“工业安全态势感知三部曲”的第一篇专门把工控资产管理这个地基拆开讲透——资产怎么发现、台账怎么治理、怎么把资产数据真正喂给态势感知引擎以及我落地过程中踩过的几个坑。适合正在规划或已经部署工业态势感知平台的甲方安全负责人、集成商老哥和工控运维同行照着这篇文章的思路走至少能少走半年弯路。1. 为什么态势感知的地基是资产台账从一次应急复盘说起1.1 一次应急复盘中的“查无此机”有一次帮一家化工企业做安全事件复盘场景其实很简单态势感知平台在某个深夜报了一条内网横向行为的异常告警说有一个内网IP尝试访问多台控制器而且协议行为与正常业务模式明显不符。按道理告警出来就应该立刻定位设备、联系责任人、判断影响范围。结果我们围着屏幕查了一个多小时——这家企业的资产台账里根本没有这个IP。最后是请值班老师傅翻出手机相册才确认这是某个车间前年技改时加上的一台触摸屏HMI因为在原始自动化系统设计里没有登记网络组也没收到任何通知。这件事让我印象很深。资产台账缺失的一个直接后果是所有依托于资产上下文的检测逻辑都会“悬空”。态势感知的核心能力本质上是在回答三个问题网络里应该有什么、现在实际有什么、正在发生的行为是否偏离预期。这三个问题里前两个都要靠资产管理来回答。连设备在哪、归谁管、是什么型号都说不清楚任何告警都只能停留在“有流量异常”的层面没法收敛到“哪台设备出了问题、影响哪条产线”。1.2 资产不清引发的三个连锁反应第一层连锁反应是告警闭环做不了。工业安全事件处理和IT不一样时间窗口短、现场操作权限分散发现异常后要立刻联系仪表车间或电气车间的人去现场确认。如果你连IP对应的责任人、物理位置、所属系统都查不出来那告警就只是告警闭环动作完全没法开展。第二层是被忽视的攻击面会一直在网上挂着。工业现场有大量年代久远的老旧设备很多还在跑早已不维护的固件。这些设备在没有被资产清查之前往往就默默地暴露在网络上——可能是一个多余的网口、一条测试留下的跳线或者某个无人记录的新增网关。攻击者做勘察比你快、比你全等出现异常再排查可能已经晚了。第三层也是最容易被忽略的没有资产目录检测引擎就没有“误报判据”。很多态势感知产品都号称能建立设备行为基线可基线是拿什么做的就是资产的类型、角色、业务关系。一台操作员站定期去读历史库是正常但如果一台变频器频繁访问工程师站这个行为可能就有问题。没有资产生命周期提供的“谁是谁”的上下文检测系统要么把所有异常流量都报出来制造大量误报要么为了压误报把阈值调得很高真正的问题又被漏掉。2. IT资产管理那套玩法为什么搬到工控现场会翻车2.1 三个常规手段在OT现场的失效场景很多甲方一听到“资产管理”第一反应是把已有的IT机房资产管理系统拿来改造一下。我很理解这个思路毕竟IT资产管理已经很成熟CMDB、自动发现、扫描工具随手都是。但拿到工控现场去试基本都会卡在三个细节上。先说客户端Agent。IT资产管理流行的做法是在每台主机上装Agent自动采集软件、补丁、配置。但工业现场的核心设备根本不是“主机”PLC是嵌入式实时系统DCS控制器连通用操作系统都没有不可能装Agent就算有的新控制器支持厂商也基本不会同意在运行中的生产控制器上装第三方软件。再说SNMP。IT网络用SNMP轮询交换机、服务器几乎是无痛的。但控制网络里的很多老旧设备包括不少型号的PLC、IO卡件和工业交换机默认关闭SNMP甚至根本不支持在实时控制网络上开着SNMP轮询频繁的查询会造成网络负担很多老工程师一听到“扫描”两个字就警惕。最后是“一台设备一个IP”的资产模型。IT里一台服务器一个IP基本成立但工控设备的结构完全不同。一套DCS就是一个机架一个机架里可能有多个控制器、多块IO卡件只有维护口或以太网口才暴露IP一台PLC可能有多个通信模块每个模块一个IP还有的控制器内部有背板CPU与IO的隶属关系完全不体现在IP层。如果你把资产清单做成“IP列表”根本表达不了真实的控制层级和隶属关系。2.2 工控资产清单必须补上的六类字段工控资产在做台账设计时我建议在IT资产管理常用字段之外至少补全下面这几类信息工艺位号和物理位置设备现场唯一编号相当于给设备上身份证例如P-101是泵、T-201是罐再加上“厂区-车间-产线-机柜”的路径确保出问题时能按图索骥找到现场。所属控制系统到底是DCS、SIS安全仪表系统、SCADA还是独立PLC直接决定设备在安全体系里的关键等级。SIS设备出问题可能直接导致停车它的防护策略和普通PLC完全是两个级别。设备类型与角色PLC、RTU、HMI、工程师站、操作员站、历史库、OPC服务器、网关、工业交换机等角色不同正常行为基线就不同。通信协议与端口清单比如Modbus TCP的502、S7comm的102、OPC UA的4840这个信息会直接影响检测引擎的协议解析优先级和告警判断。组态与固件版本厂商、型号、序列号、硬件版本、固件版本、最后组态变更时间。组态变更时间尤其重要攻击者修改控制逻辑的动作往往体现为一个组态文件的变更如果没有这个时间字段事后追溯很困难。冗余与隶属关系A/B控制器冗余对、每个控制器挂了哪些IO卡件、通信模块对应的上位机是谁。这些关系是攻击影响面分析的基础——一台设备被打通能波及谁全看这张关系网。我在好几个项目里都遇到过类似的例子某个PLC因为技改换过CPU模块但因为备件紧缺换成了另一个子型号项目的资产表完全没更新。后来态势感知平台推送了异常固件漏洞情报才把这条差异暴露出来但距离设备变更已经过去大半年。字段设计的时候把“组态变更时间”和“固件版本”留下就是在为这种场景留后路。2.3 命名规范台账内容之外更麻烦的事六类字段之外还有个经常被忽略的坑就是命名规范。我去过的不少现场资产表里同一类东西的叫法五花八门有的工程师站叫“ES-01”有的叫“工作站1”有的干脆只填一个IP。同一个PLC可能在不同系统里有三四个别名联查时根本对不上。资产命名的原则我建议固定成“厂区-车间-系统-位号-冗余标识”的结构比如“一期-聚合车间-DCS-A区-PLC201-冗余A机”。这不是为了好看是为了让每个字段都能被机器识别让态势感知平台在关联分析时可以直接按车间、按系统做聚合统计。命名规范定下来后还需要把所有历史别名做一次对照归档保留别名到新名的映射关系避免老文档失联。这一步做扎实了后续所有资产数据的质量才有保障。3. 资产发现三件套主动扫描、被动解析和存量台账怎么组合3.1 主动扫描的禁区、灰度区与安全探测策略资产靠什么发现圈里的人第一反应是“扫”。但工控网络不是随便能扫的——这是所有做工业安全的人都懂的第一条铁律。主动探测的优势很直接它可以拿到那些从不主动通信的资产信息尤其是只有工程师组态时才上线的设备以及设备上开放的端口和服务信息。但在实时控制网络上主动扫描具有真实风险。老型号的PLC、RTU处理器能力弱面对大流量探测可能出现通信处理延迟极端情况下引发控制器异常复位这在生产一线是完全不能接受的。所以主动探测在工控现场遵循一个基本的分层策略。禁区正在运行的生产控制网络控制器、IO、实时通信链路默认不做任何主动探测。灰度区允许在指定的维护窗口或者停产检修窗口内做低强度探测。安全区办公网、管理网、历史数据区可以在业务低峰期进行周期性扫描。即使获得了窗口授权探测参数也要刻意收敛。以常见的工控资产测绘工具为例至少要做三件事第一限速把探包间隔控制在百毫秒级以上单位时间内发包数压到最低第二限制端口只探测目标设备实际可能开放的关键端口例如102、502、4840不做全端口大范围爆破第三限定目标范围扫到某个网段之前先做存活判断排除掉明显是控制器的地址段。下面这段是我们在隔离测试环境里做资产识别的参数示意线上环境请务必先走审批流程# 仅在停机检修窗口内使用且先经工控运维团队确认 # 探测间隔至少150ms并发数限制在6以内避免冲击老旧控制器 probe --target 192.168.10.0/24 \ --ports 102,502,4840,1024 \ --interval 150ms \ --concurrency 6 \ --timeout 2000ms \ --fallback-passive现在很多厂商的平台支持“主动探测排队执行并实时感知控制网流量负载自动退避”的机制但这个机制再智能审批流程和窗口管理仍然要靠人。你要是直接买台设备接上就开扫出了生产事故讲什么都没有用。3.2 被动流量解析看着不说话但覆盖面有上限被动探测是被低估但其实更贴合工控现场的方式。它不主动发包只通过在核心交换机镜像口或旁路TAP上分析实时流量识别设备IP、MAC、厂商、型号、协议类型、上下位通信关系。优势非常明显无侵入、不影响生产能持续发现“正在通信的一切资产”包括那些谁都没登记的幽灵设备——只要它上线通信过。被动解析的部署位置通常选在生产网核心交换机的镜像口或者汇聚层能够看到跨车间流量的节点。合理的做法是同时引流控制网和管理网的流量做联合分析否则资产视图会碎成一块一块。下面以常见的交换机命令行风格示意镜像口配置具体语法以现场设备厂商型号为准# 在生产网核心交换机上配置镜像口示例各厂商语法有差异 monitor session 1 source interface Gi1/0/1 , Gi1/0/2 rx monitor session 1 destination interface Gi1/0/47被动方式也不是万能的这一点必须说清楚。它的识别完全依赖“看过流量没有”——一台设备如果长期不上线不通信被动解析就永远发现不了它串行总线、背板通信这类非交换网络里的资产被动解析在当前架构下完全看不见还有一些私有协议尤其某些国产DCS的内部协议没有公开解析规则平台只能识别IP和端口识别不了设备型号。另外加密流量也是一个越来越明显的问题很多新协议开始支持TLS加密被动侧能拿到的东西会进一步打折。对我个人来讲被动解析才是工控资产发现的“主炮”。不是因为它的覆盖面最全而是因为它对生产网络绝对安全而且可以把“资产清单”和“实时行为基线”放在同一套数据里后续喂给态势感知引擎做行为基线分析时几乎零成本。3.3 存量台账和组态文件导入最低成本的半程加速第三个手段经常被忽略却是三个手段里性价比最高的——把已有的存量信息导入资产库。工控现场其实已经有很多“资产信息”只是散在各个系统里。DCS工程师站里存着整个控制系统的组态文件里面有控制器型号、模块列表、IO通道、IP配置甚至还有版本号运维部门的工单系统里记录了很多设备的更换历史仪表台账和PID图纸上画着每一个仪表的位号和类型。这些数据虽然格式五花八门但对初始资产库的构建而言是扫描六个月都拿不到的信息富矿。我的建议是资产管理系统部署第一周不要急着扫先做数据对接。DCS组态文件能导出的先导出解析能对接运维工单系统的直接对接实在不行就把离线的Excel台账整理录入。做这一步的意义在于给被动解析一个起始参照设备在线了、通信了立刻能对上“这可能是哪台设备”没有对应关系的未知设备一出现就是值得关注的新增资产线索。在项目实践中三种手段组合下来90%以上的资产覆盖率是够得着的。存量台账提供骨架被动解析提供活体主动扫描在窗口期补齐盲点。单靠任何一种都会留下明显的资产空洞。4. 从“一堆IP”到“一份可信台账”的治理流程4.1 资产去重与指纹归一化有了大量发现数据之后下一步是治理。工控资产治理的第一步是去重和归一化——这真不是小事。同一台PLC可能在主动扫描结果里有一个IP在被动流量里又出现多个IP因为现场有人手动配置了临时地址运维台账里还有一个位号。三个来源都对不上到底信谁的我一般建议用多维度指纹匹配来去重IPMAC厂商型号固件版本位号多个字段交叉验证。匹配规则上设定优先级人工确认过的台账数据优先于被动解析被动解析优先于主动扫描。也就是说当冲突出现时以人工确认和维护过的信息为准而不是让机器自动覆盖。在发现的初始阶段可以先用自动化做初步合并再出一个“冲突清单”让现场工程师人工仲裁。这一步自动化率能做到60%-80%就很好剩下的必须人来判断因为涉及现场特殊工况机器很难理解。4.2 资产分级分类与安全基线绑定资产治理的第二个关键动作是分级分类。没有分级态势感知给所有资产一视同仁地打分风险评估就会失真。我个人习惯用一套四档分级具体划分可以结合现场业务进行合理裁剪等级典型设备判定逻辑事件影响示例S级SIS控制器、安全联锁系统直接影响安全保护功能被非法访问可能导致联锁失效或误触发A级DCS控制器、关键PLC、核心RTU直接影响生产工艺连续性被篡改可能引起非计划停车或产品质量事故B级工程师站、OPC网关、历史库、操作员站间接影响生产运维核心节点被攻破后可作为跳板横向渗透控制器C级智能仪表、变频器、无源传感设备、工业交换机影响有限但数量大被扫描或利用可能中断局部通信分级完成之后资产治理就真正和安全工作挂上钩了每一类资产都要绑定安全基线。S级设备的网络访问应该被严格限制到“只允许特定工程师站在特定时间访问协议行为只允许组态下载和监控指令”操作员站的控制行为有固定模式偏离一旦超过阈值就是告警工程师站在日常运行中不应该有频繁变动行为凌晨批量修改组态这种动作出现在工程师站上就值得重点追踪。这些基线后来都会被态势感知引擎用来做行为分析——这是资管和检测联动的关键接口。4.3 变更、退役与定期复核的闭环最后是资产生命周期的末段流程。工控资产不是静态的技改、大修、备件更换、设备退役每天都在发生。我见过最极端的情况车间技改期间一周里新上线了十几台变频器和两套PLC没有任何人通知安全团队态势感知平台那周天天告警“未知设备上线”大家都以为是被攻击了。所以资产的变更管理一定要进入流程而不是靠事后发现。最基本的闭环是技改或检修申请时同步抄送资产管理人员变更实施后48小时内完成台账更新并触发一轮针对性复核相关网段重扫或重新关联。退役设备不得直接删除要标记为“退役状态”保留审计信息——你总要知道它曾经在哪、影响过谁后续分析历史事件时会用得上。日常治理层面我的经验是新建系统上线时做全面盘点平时每月抽查一个车间每季度做一次全网校验。任何超过三个月没有更新维护的资产台账我基本判定它已经“失去现场可信度”在应急响应的关键时刻这种台账不但帮不上忙还会误导处置。5. 资产台账怎么喂给态势感知引擎让“看到”变成“看懂”5.1 资产上下文是告警去噪的最重要原料资产台账治理好了不能放在那儿落灰它最大的价值是喂给态势感知引擎。很多平台部署之后误报率居高不下问题不出在检测引擎本身而是检测引擎面对的是“没有身份的网络”。举个例子。态势感知平台发现一台设备持续主动访问多个控制器的102端口如果平台不知道这台设备的角色它会怎么判断大概率会报一个“横向扩散”高危告警。但如果资管数据告诉平台这是工程师站且设备型号、IP与组态文件一致访问的又恰好是它所管理的DCS控制器组那么这就是一条正常的例行巡检或组态查看行为。再进一步如果资管显示这台工程师站近期有新登录失败和异常外联配合同一时间段的控制器访问行为那就需要重点关注——攻击者很可能已经拿到了工程师站的控制权正在对控制器做侦察。同样是流量有没有资产上下文结论可能是完全相反的。资管还支撑“基线偏离”检测。所谓基线就是某一类资产在正常情况下的行为画像操作员站通常在上班时间访问历史库工程师站的组态下载集中发生在大修期间控制器之间只有互相冗余的心跳通信。一旦某台设备的通信模式明显偏离同类资产基线比如半夜出现大流量的编程指令态势感知引擎就有足够依据打出高分告警。没有资产分类和角色信息这个逻辑根本建不起来。5.2 资产分级参与风险评分与影响面计算资产属性还应该直接进入风险计算公式。现在主流的工业态势感知平台基本都支持自定义资产价值权重我习惯的初始模型是这样风险评分 漏洞可利用性 × 暴露程度 × 资产关键性 × 行为偏离度其中“资产关键性”直接取自资产分级S级权重最高C级最低。同样一个中危漏洞如果打在SIS控制器上风险值会被放大数倍这个逻辑现场工程师都认可。没有分级的数据支撑所有设备一视同仁风险排名出来的结果就没有优先级安全团队也没法决定先处理谁。影响面分析也要依赖资产关系网络。攻击者从办公网突破到历史库再横向到OPC服务器最后摸到DCS控制器——这一步一步的渗透过程每一步影响到的设备和系统完全依靠资产台账里记录的隶属关系和通信拓扑来展开。好的平台能把控制器、工程师站、操作员站、网关之间的关系画成一张图入侵路径在图上逐级推进现场专家一看就知道哪台受影响、下一步该隔离哪段链路。这张图的数据来源不是流量而是资产管理阶段输入进去的关系数据。6. 落地工控资产管理时我踩过的几个真实教训6.1 主动扫描的“时间戳”问题第一个教训来自一次主动扫描。当时供应商默认启用了资产识别的banner抓取并且在探测包里加上了本地时间戳。这个功能放在IT场景毫无问题但在带审计的工业网络里时间戳在抓包里非常扎眼。客户的安全审计人员从协议流量里发现了这个戳立刻追问“这是不是有人在搞网络勘察”。最后我们花了不少精力解释才没被定性为异常行为。后来所有工控场景下执行主动扫描我都建议先关掉或模糊化时间戳字段不要在数据包里留多余的“指纹”。不要以为这是小事。工业安全圈的信任非常脆弱一旦被运维方怀疑扫描器会乱动设备项目后续推进就会变得很麻烦。做主动扫描之前跟运维团队把方案、窗口、范围、退避机制一条条说清楚比什么都重要。6.2 资产命名混乱带来的联动误报第二个教训是关于命名规范的。一个项目上我们把工程师站和操作员站统统归成了“PC”类资产由于资产角色没有细分态势感知的基线引擎把操作员站的行为基线套用了同一个模板。结果一台操作员站因为班组临时要求接入了某个管理网段触发了频繁的横向访问告警安全团队连续排查了两周最后发现只是操作员站的正常业务调整——浪费了大量人力。这个问题的根源在资管设计阶段资产分类的粒度决定了后续检测的精度。“PC”这种粗粒度分类在工控场景里完全不合格至少要精确到工程师站、操作员站、历史库工作站、维护终端等角色。分类粗了基线就粗告警就跟着失真。做资管字段设计的时候要把检测引擎将来会怎么消费这些数据想清楚。6.3 大修改造期资产保鲜是场持久战第三个教训发生在一个大修改造季。那时整个园区都在做自动化升级每天都有新设备上线旧设备下线资产台账几乎是一天一变。我们维护起来的台账不到两周就严重过时了态势感知平台连续出现“未知资产上线”告警安全团队被搞得疲于奔命。后来我们把改造工单系统和资产管理系统做了打通新设备在工单审批阶段就先登记预约再上线上线当日由仪表车间确认并触发资产复核。同时给平台配置了“改造期间已知变更白名单”让“不是未知的变更”不再刷屏。这一套流程走通之后资产保鲜就不再是一个技术问题而是一个管理习惯。我在好几家工厂落地的感受是工控资产管理的建设工作最难的不是技术而是让各车间、仪表、电气、安全部门接受“资产清册属于全厂公共基础设施”这个观念。数据准确性最终来自现场人员的日常维护习惯扫描设备只能提供初版数据和持续校验数据真正的日常保鲜靠的是工单触发、定期复核和人工确认这套机制。这套机制运转起来后面的态势感知联动才有底气运转不起来再贵的平台也是在沙滩上盖楼。这也是我把资产管理放在三部曲第一篇的原因——没有它后面聊检测算法、聊响应处置全是空中楼阁。
返回列表