工业协议逆向工程中的聚类方法
一、摘要
在本文中,我们提出了一种分析私有协议结构的方法,可以用于工业协议。该方法由六个模块组成:流量收集、消息提取、消息大小聚类、消息相似度聚类、字段提取和会话分析。我们使用Schneider Modicon M580收集流量,并通过将收集的流量与现有的协议逆向工程方法(Netzob、AutoreeEngine和FieldHunter)进行比较,证明了所提出方法的有效性。
二、介绍
在本文中,我们提出了一个使用施耐德Modicon设备(包括具有代表性的PLC设备)推导Modbus/TCP协议结构的系统。系统根据大小对协议消息进行分类,并使用mean-shift算法对协议消息进行聚类,这些分组消息被定义为一种类型。对于每种类型,该系统使用连续序列模式(CSP)算法提取定义字段的公共子字符串。在字段定义之后分析消息的结构。最后,消息类型的顺序和结构可用于识别工业现场使用的消息类型、字段的含义以及网络通信传输的命令。
我们提出的自动工业协议逆向工程方法包括六个阶段,该系统的结构包括以下步骤:流量收集、消息提取、基于大小的消息聚类、基于相似性的消息聚类、字段提取和会话分析。
(一)流量收集
此步骤收集EWS和PLC设备之间的流量。收集流量时,EWS指定函数并执行该函数以收集流量,必须通过多次执行此过程来收集至少两个流量集。
(二)信息提取
收集的流量集存储在pcap类型中。此步骤提取pcap类型文件作为此方法中使用的消息格式。消息形式提取时,按方向分割为请求和响应消息。这是因为请求中的消息类型与响应中的消息类型不同。信息中包含的信息如下:
(三)基于大小的消息聚类
此步骤通过根据大小分隔从消息提取步骤提取的消息来指定类型。提取的消息分为请求和响应,因此,该步骤执行两次。首先,此步骤接收请求消息;然后,输入的邮件根据大小进行排序;最后,排序后的邮件从最小大小的邮件开始按顺序格式化。详细步骤如下图所示:
(四)基于相似性的消息聚类
此步骤测量按大小分隔的消息之间的相似性,执行更详细的聚类,相同大小的消息之间的相似性被测量和分类。我们使用了几种算法来获得对消息进行最佳分类的聚类算法,这些算法包括K-means、UPGMA和mean-shift算法。比较之后,我们最终确定使用mean-shift算法,下图显示了通过均值漂移算法按相似性对消息进行分类的过程:
通过此步骤确定所输入消息的消息类型数。
(五)字段提取
字段提取步骤为消息派生静态字段和动态字段。静态字段是指同一类型消息中的一系列公共字符串。动态字段是指除同一类型消息中的公共字符串外的其余消息。
在此步骤中,使用CSP算法提取静态字段。CSP算法基于Apriori算法提取公共字符串,使用CSP算法的静态字段提取过程将相同类型的消息提取到一组序列中。CSP算法从一组序列生成长度为1的内容。长度为1的内容分为通过最低支持度检查不满足最低支持度的内容和满足最低支持度要求的内容。将删除不满足最低支持要求的内容,并创建内容长度为2的满足要求的内容。重复此过程,直到无法再增加长度。下图显示了静态字段提取的过程:
CSP算法需要最小的支持。最小支持度是指候选内容可以扩展到下一个长度的条件。在本研究中,最小支撑始终设置为100%,100%表示从相同类型的所有消息中提取的公共字符串。
(六)会话分析
会话分析步骤通过对齐推导的消息序列,显示执行函数时定义的消息类型的顺序。消息信息包括流位置和分组位置信息。因此,此信息可用于在会话中实现消息类型序列。实现结果可以分析流中协议消息的结构。
三、实验评估
本文所提出的方法基于Modbus/TCP协议的分析结果来评估性能。最后,通过对比分析以及Netzob和AutoreeEngine的结果,验证了该方法的有效性。
(一)流量收集
项目传输PLC至EWS的功能包括将现有PLC执行的项目信息发送至EWS。我们收集流量并分析以下三个典型功能的协议结构。收集信息如下:
(二)消息聚类
我们通过分析实验数据的消息类型来手动分类消息类型,分类结果如下:
我们应用消息聚类算法,分类结果如下,我们确定mean-shift算法与手动分类消息类型的结果最为相似。
(三)性能评估
从简洁性和覆盖面两个方面对绩效评估指标进行了评估。简洁性将输入数据的消息类型评估为手动生成的全局真相类型和从每个方法中提取的消息类型。Coverage评估在提取消息类型时覆盖所有消息的能力。
下图显示了本文所使用方法与Netzob与AutoreeEngine简洁性比较:
下图显示了Netzob、AutoreeEngine和建议方法的覆盖率值比较:
四、结论
本文提出了一种分析工业用私有协议结构的方法,此方法可用于有效监控工业协议的网络流量。实验表明,现有的协议逆向工程方法在分析工业协议时存在一些局限性。
作为未来的工作,我们打算应用更多不同的工业协议来开发可用于工业现场的系统。此外,我们的目标是开发一个适用于商业、私有和工业协议的系统。
1. Zetter K. Attack code for SCADA vulnerabilities released online. http://www.wired.com/threatlevel/2011/03/scada-vulnerabilities/,
2011.
2. Spenneberg R, Brüggemann M, Schwartke H. PLC-blaster: a worm living solely in the PLC.Black Hat Asia. 2016;16:1–16.
3. Langner R. Stuxnet: dissecting a cyberwarfare weapon.IEEE Security & Privacy. 2011;9(3):49-51.
4. Tridgell A. (2003). How Samba was written. [Online]. Available: http://samba.org/ftp/tridge/misc/french_cafe.txt
5. Pidgin. (2018). About Pidgin. [Online]. Available: http://www.pidgin.im/about
6. Caballero J, Song