Snort在工控系统入侵检测的应用
2021-06-07 12:29:01 Author: blog.nsfocus.net(查看原文) 阅读量:136 收藏

阅读: 3

一、前言

近年来,国内外的工控安全事件频出,越来越多国家级APT组织的攻击目标开始转向工控领域,检测工控系统中的入侵行为具有重大意义。本文从实战出发,研究对施耐德的启停攻击过程,搭建开源Snort框架来完成对施耐德M580的攻击检测。

二、Snort框架

Snort是一款优秀的开源入侵检测系统,在IT系统中已经有广泛应用,该框架的优点如下:

  1. 开源而且免费,相对于昂贵的工控安全设备来说是非常合适的。
  2. 支持插件扩展,用户可以编写工控协议插件来支持工控协议的解析。
  3. 多平台支持,不仅支持linux,还支持windows下的部署。
  4. 友好的规则语法,用户可以很轻松地使用snort规则语法来编写检测规则来检测对应的入侵行为。
  5. 活跃的开源社区,用户可以很容易获取到大量的snort规则集合,这些规则集合一直在不断更新和丰富。

Snort官网地址如下所示:https://www.snort.org/

三、攻击M580

为了编写出检测规则,我们先从最简单的启停攻击着手。顾名思义,启停攻击就是直接对PLC进行启动和停止操作。

使用Unity Pro对该PLC进行启动/停止操作:

众所周知,UMAS是基于modbus的90功能码的,所以下面描述略过了这部分的数据包头部。

启动PLC数据报文如下,UMAS功能码为0x40:

停止PLC数据报文如下,UMAS功能码为0x41:

请求数据包格式如下所示:

报文字段长度(字节)描述
sessionkey1会话密钥
functioncode1UMAS的协议功能码
data变长协议数据,不同功能码有不同的数据部分

攻击流程如下:

先通过0x10获取session key,再通过0x40/0x41对PLC进行操作,为了入侵让检测系统检测这一行为,我们关注点是在操作这一部分,只要功能码能匹配上,即可判断是对应的行为。

四、攻击检测

4.1 测试规则

在虚拟机中安装snort工具,安装目录为C:\Snort,首先在C:\Snort\rules文件下新建一个规则文件”umas.rules”,写入检测规则并保存:

并在配置文件C:\Snort\etc\snort.conf文件启用该规则,删除掉其他规则防止干扰,如下所示:

运行snort对包含启停的umas.pcap进行检测,看是否能检测到攻击流量:

Snort.exe -c c:\Snort\etc\snort.conf -r umas.pcap -l c:\Snort\log

参数解释:-c:配置文件路径  -r: pcap数据包路径  -l: 输出日志文件路径

打开c:\Snort\log下的告警日志文件:

内容如下,说明成功命中了umas.rules的规则:

4.2 检测攻击

在上面我们已经测试了编写的规则已经可以检测流量中针对M580的启停操作,当然,我们直接可以从网卡中抓取流量,实时检测攻击。

运行:snort -W

选择网卡4,运行如下命令开始启动IDS检测流量:

Snort.exe -c c:\Snort\etc\snort.conf -l c:\Snort\log -I 4

五、总结

本文通过编写Snort规则来完成对施耐德M580的攻击检测,当然网上的安全研究人员也公开了大量的工控相关的Snort规则,感兴趣的用户可以自行下载。Snort不仅可以检测相关恶意流量,还可以联动防火墙还可以直接阻断恶意行为,具体操作方法可以自行探究。

版权声明

本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。


文章来源: http://blog.nsfocus.net/snort%e5%9c%a8%e5%b7%a5%e6%8e%a7%e7%b3%bb%e7%bb%9f%e5%85%a5%e4%be%b5%e6%a3%80%e6%b5%8b%e7%9a%84%e5%ba%94%e7%94%a8/
如有侵权请联系:admin#unsafe.sh