*本文作者:scu-igroup,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
前言
工控安全关系着国家安全,从工控网络流量中发现威胁行为是保护工控系统的手段之一。由于工业控制中的网络流量大多是由工控设备按照生产工艺自动产生,与大部分由人为产生的互联网流量有极大的区别。因此,充分了解工业控制系统流量的特点有利于更好地开发有效的威胁检测手段。由于大部分的研究都是基于流量统计特性来对周期性进行说明,却没有深入到数据包的字段中。本人即是通过深入解析工控流量的字段,来探寻工控流量的特点。
实验数据
本次的实验数据由工控实验平台产生,由上位机控制西门子S7-300PLC,PLC控制电机转速设备。在无任何人为操作的情况下,本次实验共抓取111815个数据包,足够用来对工控流量的特点进行分析。如下图所示。
上位机的IP为:192.168.1.33;PLC的IP为:192.168.1.10。由于上位机到PLC是命令下达的方向,而PLC到上位机一般是响应答复。因此,本文主要探寻上位机到PLC方向的控制信道流量特点。为了更好地分析数据包,本人写了一个简单的程序帮助分析[传送门]。首先,提取上位机到PLC的数据包。利用程序,先查看实验数据的四元组信息。
如图所示,上位机到PLC的流量为第[1]条。并通过程序过滤出这一方向的数据包,保存为102.pcap。下面就开始正式的分析吧。
分析步骤
用wireshark打开102.pcap,先粗看下数据包是否具有周期性。
由上图可得,仅从数据包长度看为:91-61-91-61-61-91-61-61-61-91-61-61-91…感觉有点周期,但并不是整齐的周期。其中还出现了少量长度为87的数据包。但一想到,控制信道中,数据包种类固定,可以先来看看,这个信道中有多少种不同长度的数据包。还是运行程序。
由上图可得,有3种不同长度的数据包。这里的数据包长度取的是传输层tcp协议承载的数据长度,而wireshark取的是数据帧的长度,所以数值不一样。我这里的长度加上14就与wireshark的长度一致了。可以看到,控制通道里只出现47,77,73这三种长度,对应到wireshark,刚好是61,91,87。那出现的这3种数据包,自身具不具备周期性呢,这就可以看下数据包应用层数据的分布了。还是借助程序。先选取长度为47的数据包。
分别得到了两个文件,out_47.txt中可以看到应用层的分布,packets_47.pcap中为过滤出的长度为47的数据包。先来看看out_47.txt, 取前20条看。
传输层tcp协议,data内容没有变化。在wireshark中可以看到。
该数据包协议为COTP,为S7协议中第6层协议,负责进行连接。再来看看长度为77和长度为73的包。
上图可以看到,长度为77的数据包,第一排红框中的值为递增变化,第二排红框中的字在有规律的变化,变化规律为0258-0320-00c8-0190,一直在交替周期变化,其余值不变。在wireshark中可看到。
变化的字段为S7协议的Protocol Data Unit Reference,逐个递增;和Data中的item中的Data字段。值得一提的是这类数据包的function code为write var(0X05)。再来看看长度为73的数据包。
唯一有变化的即是Protocol Data Unit Reference,这类数据包是用来请求读取PLC中的信息。
长度为73的数据包但从字节上看,很难看出周期性;长度为77的function code为write的数据包,也只有item的data字段具有周期性。但这只是数据包内容的特点,可以再来看看数据包的时间分布是否具备周期性。运行程序,提取每个数据包的时间戳。并根据规律打印出如下信息。
上图打印的长度为73的包,第一列为数据包内容,第二列为时间戳,第三列为相邻数据包之间的时间戳的差。可以看到,具有高度固定的时间间隔,在98.2秒左右。
上图打印的是长度为77的包,据观察,只有相隔4个数据包的时间戳(即是第5个数据包时间戳减去第1个的,第6个减第5个的,以此类推)的差值才会有大致固定的时间间隔,为3秒左右,也即是说明是以4个数据包为周期。这也符合数据包内容item的data字段的变化规律。
对于长度为47的数据包,据观察,大约在相隔6个数据包时差值会固定,大约相隔2秒,但是存在一些异常点,相隔时间并不整齐。由于这种数据包不带S7协议的应用层数据,比较好区分出来。实际检测中,可以将这类数据包过滤掉。
到此,需说明的是,本文是在一个简单的实验环境下抓取的数据包,实际过程中的工艺流程更为复杂,但同样可以用此类方法来进行分析,发现工控流量中的特点和规律。
总结
由此,可以得到,工业控制系统的流量总体上讲,大致具有周期性的规律。如果按长度细分下去,带有S7协议应用层数据的数据包某些字段呈周期性变化规律,如长度为77的item的data字段。在时间维度上,带有S7协议应用层字段的数据包具有极高的时间周期性,如长度为73和77的包。通过深入的分析,本文确实发现了工控数据流量的部分周期性特点。在未来的研究中,可以依据此类周期性的特点,有针对性的为工控系统设计异常检测方案。希望本文能给大家一点启示,如有不妥之处,欢迎一起讨论。
*本文作者:scu-igroup,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。