基于规则引擎的工控资产分析系统设计与应用
2023-01-30孔令源段滨雪梁尚福
孔令源,段滨雪,梁尚福
(西南石油大学计算机科学学院,四川 成都 610500)
0 引言
当前,我国已将工业控制系统(以下简称“工控系统”)大规模应用于石油、化工和交通等重要领域,以提高生产效率并达到产业信息化。由于大部分工控系统是通过公共网络连接传递信息,其系统安全将时刻面临被非法入侵的威胁,因此,做好网络资产探测和分析尤为重要。根据ISO 13335-1:2004《IT安全管理指南》中的定义,资产作为网络安全管理的对象,包括信息、硬件、软件、服务等。网络资产探测是指追踪、掌握网络资产情况的过程,通常包括操作系统识别、服务识别等,能够为网络安全监控、威胁态势感知提供系统认知基础[1-4]。
本文主要探讨IP、操作系统、网络设备等工控环境中的网络资产,并对传统的资产探测系统进行问题分析,最终结合实际应用场景提出一种基于规则引擎的工控资产分析系统,显著提升了工控环境中网络资产的监控和探测水平,为工控安全的维护提供有力帮助。
1 相关研究工作分析
新型资产探测技术主要分为主动和被动两大类。基于主动的资产探测尽管适用于全网与内网,然而该方法噪声大,从而易触发报警,对资产分析的准确性不高;并且仅能了解当前探测的状态,对安全设备保护的网络资产探测的难度大,而现在大多数工控系统都有安全设备的保护,因此不适合在实际情况下使用[5]。基于被动的资产探测技术无额外网络流量插入,对目标网络运行的影响小;对受安全设备保护的网络资产也具备一定的探测能力;支持历史数据的积累。因此,非常适合于工控集群中的资产分析[6]。
通过以上分析,本文以流量分析和统计分析为基础,通过被动方式对工控集群内部的网络流量进行采集监控,运用机器学习的方法对工业网络流量进行细粒度分析,得到工控资产信息,最终构建一个基于B/S架构工控资产分析系统。通过被动式探测来实现对网络空间资产的测绘摸底,便于理清网络资产边界,及时发现隐形资产。该系统使用了基于规则引擎的流量分析技术,对网络无入侵且无需要人工干预,使用场景较为广泛。并且,创新性地引入面向流量特征的机器学习模型,用于识别资产类型,如个人主机、服务器或其他工控设备等。除此之外,通过可视化全景展示资产流量规律和网络通信关系,进一步提升网络资产可见性。
2 系统功能设计与实现
网络资产分析系统(见图1)分为数据采集模块、分析模块、存储模块和展示模块[7]。
图1 网络资产分析系统模块
2.1 数据采集模块
Suricata是一个完整的系统,通过利用Suricata进行数据包采集。
2.2 分析模块
流量分析模块:通过Suricata.yaml配置出最后Json输出的信息,从而得到需要的资产各种信息。由于Suricata输出的流量日志中已经按照事件类型及字段进行存储,因此在对其进行处理时,本系统分类的方式是对日志数据进行分析、拆分、存储。考虑到要提取的属性差异性较大,所以在不同类型字段进行了分表分类存储。资产数据提取的过程如图2所示。
注:A类:临时数据;B类:直接存储数据。
考虑到拆分之后得到的数据比较松散,因此通过IP地址建立不同属性之间的逻辑关系,从而聚合形成资产信息。通过“分类拆分、逻辑聚合”的方式,实现从日志信息到资产信息的提取过程。
机器学习模块:机器学习模块首先从数据库中获取得到相应的流信息和端口,包括pkt_toserver(发送包数量)、pkt_toclient(接收包数量)、to_server(发送字节大小)、to_client(接收字节大小)以及flow_bytes(接收发送字节大小);接着形成Dataframe格式对数据进行预处理,由于该特征属性数量少,因此没有进行相关的降维处理;然后利用Scikit_learn的Cluster模块中的Kmeans对资产进行聚合得到资产类型,最后将资产类型存入数据库中。机器学习模块整个流程如图3所示。
图3 机器学习模块流程图
经过对机器学习模型的轮廓系数的计算,整个机器学习模型的轮廓系数为0.88,取得了较好的效果。
2.3 存储模块
存储模块由临时数据、直接存储数据、分析结果数据组成。其中,tb_asset_osmsg、tb_asset_mac、tb_record用于临时存储获取的属性数据,便于之后的聚合;tb_stats、tb_asset_flow用于保存可以直接存储的数据;tb_asset、tb_service、tb_host用于保存聚合之后的资产信息,值得注意的是,tb_asset和tb_service两表中存在一对多的关系。表之间的ER关系如图4所示。
图4 数据库ER图
2.4 展示模块
本系统使用了SpringMVC、Mybatis-Plus、Spring、Thymeleaf、AdminLTE、Drools等技术来构建Web端系统,实现对资产的展示。Web端包括4个模块,分别为导航模块、详情模块、通信关系模块和搜索模块。
为了保证专供沥青车辆随到随装,崔晓波和运输车队的司机师傅们互加微信好友,打开位置共享就能时刻掌握车辆位置信息,精准把握提货单开具时间。同时,崔晓波还在装车现场密切关注每辆罐车的装车进度,提前与其他罐车师傅协调,确保专供沥青运输车辆随到随装,装不完就加班装。
导航模块使用Morris Charts实现对资产总体流量情况的可视化展示,用户能够通过该界面获取资产数量、服务数、未知设备数的统计信息,对工控环境中的网络资产进行全局了解,如图5所示。
图5 导航模块
资产详情模块使用Flot Charts实现对单个资产近期流量的展示,用户能够通过该界面获取单个资产面临的恶意流量的威胁信息,为工控安全的维护提供帮助,如图6所示。
图6 资产详情模块
通信模块使用Cytoscape实现对资产通信关系的展示,通过可视化展示使用户清楚了解多个资产之间的通信关系,从而有利于用户确定与威胁相关的网络资产,如图7所示。
图7 通信模块
搜索模块能够对指定的资产进行查询,并将查询结果进行展示,用户能够通过输入查询条件对主机信息进行查询,并通过点击特定主机内容框获取主机详细信息,包括更新时间、应用层服务等,为工控环境中的网络安全监控提供信息基础,如图8所示。
图8 搜索模块
3 系统测试
本系统测试环境基于阿里云应用主机,主要配置如下。操作系统:Centos7.3。CPU/内存:1核/2 GB。硬盘:40 GB。带宽:1 Mbps。
软件环境如下。JDK:OpenJDK 1.8.0。数据库:MySQL5.7.2。缓存中间件:Redis 5.0.2。流量解析工具:Zeek 4.0.2。浏览器版本:Firefox Version68。
图9 系统首页测试
3.1 测试数据上传模块
由于目前系统中并没有数据,因此先通过数据上传模块,对数据进行上传分析,测试系统上传模块的功能如图10所示。
图10 文件上传测试
文件通过上传模块上传到服务器之后,服务器将会对数据根据配置好的规则进行解析,如图11所示。从图中可以看出,由于192.168.0.106以及192.168.0.100符合工控资产的规则(位于192.168.0.X),因此在规则引擎执行完之后,isAsset会从“false”被标记为“true”。资产识别的规则如图12所示。
图11 后台日志部分信息
图12 资产识别规则图
3.2 测试数据展示模块
在文件上传模块将数据上传之后,后台会自动对数据进行分析识别,得到资产信息。通过访问首页能够查看识别出来的资产汇总信息,如图13所示。系统一共识别出了9个资产信息,总服务数位7 836,未知设备数以及恶意设备数都为0。
图13 系统首页测试
3.3 测试数据搜索模块
对搜索模块进行访问,查看数据概览信息,如图14所示。资产信息主要是以192.168.0.X网段为主。通过专业的开源包分析工具Wireshark对test2.pcapng进行分析,可以得出该pcap是以192.168.0.X网段的包,如图15所示。
图14 搜索模块测试
图15 Wireshark分析
3.4 测试数据展示模块
在搜索模块,选择任意一个资产,进入查看其详情信息(以192.168.0.109为例),如图16所示。
图16 资产详情信息测试
进一步查看资产通信关系,如图17所示。测试数据集中的资产主要与192.168.0.1进行通信,原因就是192.168.0.1是一个路由器,所有节点需要通过路由器与互联网的其他主机通信,测试结果符合样本实际。
图17 资产关系测试
4 结语
本文就当前工控网络安全现状,提出使用基于规则引擎的流量分析技术对工控资产进行高效分析的工控资产分析系统的设计方案,对网络无入侵性且无需人工干预,使用场景较为广泛。除此之外,通过可视化全景展示资产流量规律和网络通信关系,进一步提升网络可见性,并通过被动式探测来实现对网络空间资产的测绘摸底,便于理清网络资产边界,及时发现隐形资产。