工控IDS规则构建及验证实战


威努特工控安全
威努特工控安全 2024-01-09 13:53:02 65106
分类专栏: 资讯

工控系统安全一直是工业领域的重要议题,随着工业互联网的普及和工控系统的复杂化,面临的安全挑战也日益严峻。为了应对不断变化的威胁,工控系统需要采取一系列的安全措施,其中工控入侵检测系统(Industrial Control System Intrusion Detection System,简称工控IDS)作为重要的安全组成部分,发挥着至关重要的作用。

 

本文主要介绍工控IDS规则编写及测试优化,以Snort规则为例,因其专业性较强,读懂、编写、测试规则会有一定的门槛。公网上有很多开源的Snort规则,这些规则存在很多问题,如存在错误、时效性、误报等,涉及工控方面的规则比较少,本文为解决此类问题,引入了一个更方便的Web形式的测试系统,依托于这个系统,对工控规则进行高效编写及测试优化。

 

(二)

工控IDS的作用与原理

工控IDS作为工业控制系统安全的重要组成部分,其作用主要体现在实时监测、检测和响应潜在的网络攻击。当工控IDS检测到潜在威胁或异常行为时,能够触发警报并采取相应的响应措施。这可能包括阻断恶意流量、隔离受感染的设备、记录事件日志等。及时的响应措施可以最小化潜在威胁造成的损害,并帮助系统尽快恢复正常状态。

 

工控IDS的基本原理是通过建立规则或者使用机器学习等技术,对系统中的网络流量和设备行为进行监测和分析。这些规则可以包含已知攻击特征、异常行为模式等。当系统检测到符合这些规则的行为时,就触发相应的警报。

 

通过这些作用和基本原理,工控IDS能够在实时性、准确性和自适应性等方面为工控系统提供强大的安全防护。在实际应用中,选择适合特定工控系统的IDS方案,并合理配置规则,是确保系统安全的关键一环。

 

(三)

工控IDS规则编写测试

在工控IDS中,规则的编写是确保系统能够准确、及时地检测潜在威胁的关键步骤。以下将以Snort规则为例,介绍工控IDS规则的基本编写方法,并重点介绍如何在Windows系统上使用Snort和BASE Web服务进行可视化的便捷高效测试。

 

3.1

Snort介绍及规则编写

  

3.1.1 Snort 介绍

 

Snort是一个轻量级的网络入侵检测系统,具有实时数据流量分析、网络数据包捕获的能力,通过编写规则文件,能够检测各种不同的攻击方式,对攻击进行实时告警。

 

Snort规则主要由规则头和规则选项组成。规则头定义了流量匹配的基本条件,包括动作、协议、源和目标地址/端口等元素。规则选项则提供了对规则的进一步定制,包括描述性消息、唯一标识符、版本号以及其他特定于协议或应用层的条件。通过这种结构,Snort能够灵活地配置以检测和响应不同类型的网络流量。

 

图片

3.1.2 规则编写

 

先写一个简单的规则,用于检测任意源IP和源端口UDP流量访问目标端口47808流量:

 

图片

alert规则动作,表示当规则匹配时发出警报。

udp协议,指定规则应用于UDP协议流量。

any any源IP和端口,表示任意来源的UDP流量。

any 47808目标IP和端口,表示匹配流向本地网络47808端口的流量。

-> 表示流量的方向,还有<>双向操作符(表示双向流量都可以进行匹配)。

msg: "Detected Access to Port 47808";:规则消息,当规则匹配时显示的警报消息。

sid: 1000001;:规则唯一标识符,用于标记规则的ID。

rev: 1; :规则版本,默认使用1,如果规则有调整,可以增加1。

3.1.3 BACnet协议  

 

UDP 47808端口一般为BACnet协议默认端口,BACnet是用于智能建筑的通信协议,是国际标准化组织(ISO)、美国国家标准协会(ANSI)及美国采暖、制冷与空调工程师学会(ASHRAE)定义的通信协议。可用在暖通空调系统(HVAC,包括暖气、通风、空气调节),也可以用在照明控制、门禁系统、火警侦测系统及其相关设备。

 

BACnet读属性数据包示例:

 

图片    

 

3.1.4 规则改进  

 

修改上面的规则,写一个检测BACnet未授权读取属性规则:

 

图片

!$BACNET_CLIENT不是Snort配置文件中定义的BACNET_CLIENT源IP范围的任何地址,!$BACNET_CLIENT表示取反。BACNET_CLIENT需要先在snort.conf配置文件中定义。
content: "|81|"; depth: 1;:从数据包开头匹配包含十六进制字符串“81”的内容,深度为1个字节,offset默认为0,此处省略offset。此规则项用于匹配BACnet请求头第1个字节是否为“81”。
content: "|0c|"; offset: 10; depth: 1;:从数据包偏移量10的位置开始,匹配包含十六进制字符串“0c”的内容,深度为1个字节。offset和depth都为content选项的修饰符。此规则项用于匹配数据包第10个字节是否为“0c”,即是否为BACnet读属性操作。

如在测试环境,规则可改为如下格式:

 

图片

3.2

Snort配置及规则测试

  

3.2.1 环境准备

 

注:相关脚本代码可在公众号留言,联系管理员获取。

 

环境准备如下: 

 

图片

测试机1:用于测试 Snort 规则触发情况,其它 Windows 系统版本亦可。

 

测试机2:安装配置 Snort,运行 BACnet模拟器,其它 Windows 系统版本亦可。

 

脚本1:用于扫描探测指定网段BACnet设备并获取设备信息及相关点位数据。

 

脚本2:用于读取或修改指定BACnet设备指定点位信息值。

 

脚本3:使用Python编写的BACnet设备模拟器。

 

测试机2启动BACnet模拟器:

 

图片

测试机1扫描获取BACnet设备信息(便于后续进行针对性测试):

 

图片

图片

可以看到IP为192.168.1.214存在一个BACnet设备,设备名称为:BAC0-SERVISYS,设备ID为:214。

 

3.2.2 规则配置

 

注:以下配置项在测试机2上操作。

 

1.$BACNET_CLIENT 配置

   

 修改D:\Snort\Snort\etc\snort.conf配置文件,增加如下内容(192.168.1.0/24为BACnet客户端网段):

 

图片

2.配置规则文件路径

 

 修改D:\Snort\Snort\etc\snort.conf配置文件,增加修改如下内容:

 

图片

3.新增规则文件

 

 创建D:\Snort\Snort\rules\local.rules文件,并将上面的规则内容写入到文件中:

 

图片

3.2.3 规则测试

  

1.测试机2查看网卡列表

 

图片

图片

 Index 1 为待测试设备网卡。

 

 Tips:低版本WinPcap或NPcap不显示具体的网卡设备名称,可借助WireShark Manage Interfaces功能结合Snort网卡显示列表确定具体的待测网卡。

   

2.测试机2命令行启动Snort并在控制台监控告警信息

 

图片

 -i 1:指定网卡编号1

 

 -A console将报警信息显示到控制台(命令终端)

 

 -c指定snort.conf配置文件

 

 -l指定日志目录

 

 除此之外还有以下命令参数可供测试:

 

图片

3.测试机1读取BACnet设备属性值

 

 测试机1执行脚本2,在192.168.4.0/24网段读取测试机2上面的BACnet设备属性,同时在测试机2上观察Snort告警情况,可以看到触发规则告警:

 

图片

从告警信息中可以看到是192.168.4.163:13579端口使用UDP协议访问了192.168.1.214:47808端口,规则中!$BACNET_CLIENT定义非192.168.1.0/24网段访问且符合BACnet请求头和读操作,即触发告警信息,所以触发了此告警。

 

3.3

Snort+BASE Web可视化配置测试

 

适用于规则较多情况,可在Web端检索告警信息,查看并导出相关PCAP数据包等。

 

3.3.1 环境准备

 

测试环境调整如下:

 

图片   
AppServ:PHP 网页架站工具组合包,包含Apache、PHP、MySQL、phpMyAdmin等软件。

 

BASE:基于Web的Snort探针和规则管理系统。

 

测试机2修改Snort配置文件支持BASE系统:

 

在安装配置好AppServ+BASE环境情况下,修改Snort配置文件使其支持BASE系统,修改D:\Snort\Snort\etc\snort.conf,增加如下配置:

 

图片

配置项与安装配置BASE系统时使用的数据库配置一致。

 

3.3.2 启动Snort

 

在测试机2重新启动Snort,使用如下命令:

 

图片

3.3.3 告警测试

 

重复前面在测试机1的操作步骤,观察告警情况,执行读取BACnet属性操作后,BASE Web系统首页告警情况如下:

 

图片    

告警信息总览:

 

图片

查看单条告警信息:

 

图片

从告警详情页面可以看到具体触发的数据包信息,并且可下载告警数据包数据便于后续分析或重放测试。

   

图片

 

3.4

总结

  

通过Snort规则的编写学习,及在Windows环境下配置Snort测试环境和Web可视化系统,可在日常工作中高效分析测试Snort规则,编写优质的Snort规则。实践出真知。

 

(四)

工控IDS规则优化与维护

 

工控IDS规则的优化与维护是确保系统安全的关键环节。

 

优化包括对网络流量进行深度分析,精炼规则以提高检测准确性,并考虑特定工控协议和设备的定制化规则设计。

 

维护方面,及时更新规则库以适应新威胁,监测系统性能,防止规则冲突和误报,同时对工控网络拓扑和设备变更进行持续跟踪,确保规则的有效性和适用性。

 

此外,建立规则变更日志与审计机制,跟踪规则调整的原因与效果,形成经验总结,为工控IDS的优化提供可持续支持,提高检测效能与系统稳定性。

 

以上策略有助于保持工控IDS规则的有效性,并在面临新威胁时及时作出调整,确保工控系统持续得到有效保护。

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=34980
赞同 4
评论 0 条
威努特工控安全L2
粉丝 0 发表 62 + 关注 私信
上周热门
银河麒麟添加网络打印机时,出现“client-error-not-possible”错误提示  1323
银河麒麟打印带有图像的文档时出错  1236
银河麒麟添加打印机时,出现“server-error-internal-error”  1023
统信桌面专业版【如何查询系统安装时间】  951
统信操作系统各版本介绍  944
统信桌面专业版【全盘安装UOS系统】介绍  903
麒麟系统也能完整体验微信啦!  889
统信【启动盘制作工具】使用介绍  499
统信桌面专业版【一个U盘做多个系统启动盘】的方法  441
信刻全自动档案蓝光光盘检测一体机  386
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

添加我为好友,拉您入交流群!

请使用微信扫一扫!