基于Wireshark与Nmap的工业控制系统安全联合分析方法

描述

写在前面

今天我们来聊一聊基于Wireshark的S7、OPC等工业协议分析与工业网络漏洞挖掘~

工控信息安全的现状分析

控制系统

工业控制系统的风险监测

当前工业控制系统安全面临严峻威胁,需要对工业控制系统网络进行安全监测,发现工业控制系统网络内部的安全威胁和存在的漏洞,从而采取相关的防护措施或修复相关漏洞,确保工业控制系统的设备和数据的安全。

2.1 工控网络安全监测相关技术

控制系统

2.2 工控网络安全分析方法

2.2.1 工业协议网络报文分析

控制系统

WireNmap的开发与实现

Wireshark与Nmap在工业协议分析与工业漏洞挖掘中是强有力的互补,而实际中两个软件是分立的,导致其使用效率偏低。在工业控制系统的应用中,Wireshark软件对工业协议支持不完整或不全面,而Nmap自带漏洞探测脚本有限,但其支持自主开发针对工业控制系统的脚本。

3.1 Wireshark源码结构

Wireshark源码软件组成,如图1所示。

控制系统

图1 Wireshark源码框架

图1中,Core为核心调度模块,包括报文的捕获(Capture)、报文分析(Epan)、报文读取与存储(Wiretap)、界面交互与呈现(GTK/Qt),具体模块的具体功能如表1所示。

表1 Wireshark各模块功能

控制系统

3.2 Nmap源码结构

控制系统

基于WireNmap的工业协议分析

WireNmap集成了自主研发的报文解析插件,如S7协议解析插件、OPC协议TAG深度解析插件等。

4.1 S7协议解析插件

控制系统

控制系统

图2 S7协议报文结构

控制系统

表2 空间类型对照表

控制系统

拆分值段,值段前3个字节跳过,取值段第4字节为值的长度。

S7原生Wireshark未解析报文,如图3所示。以图3中数据段未解析的十六进制部分拆分为例进行方法说明,如图4所示。

控制系统

图3 S7原生Wireshark未解析报文

控制系统

图4 S7协议未解析段数据结构

(1)第1字节和第2字节为第一区字段的长度20(0x0014),第3字节和第4字节为第二区字段的长度14(0x000e),点表数据在第二区;

(2)从第5字节起为第一区字段,第一区字段长度为20个字节,跳过20个字节;

(3)从25字节开始,25、26字节为数据点个数,十六进制表达为0x0001,转换为十进制为1,即后续数据点个数只有1个,则地址段和值段分别只有一个点;

(4)读取地址段的空间类型,取0x22&0xf0,根据表2得到空间类型;

(5)地址值按照图中标识部分为0x00000206,换算成十进制为518;

(6)读取值段,值段的第3字节即图4中的0x02为值的长度,换算为十进制,值的长度为2;

(7)读取值为0x2acd。

根据该方法,图3中的未解析字段在经过二次开发后结果如图5所示,可以得到点的个数、地址和值。

控制系统

图5 S7协议二次解析后前后对比

可见,经过开发后,S7插件可以读取空间类型、地址以及数值等更多信息。在实际工业控制系统中,这些信息可以对应实际的温度、压力以及转速等信息,因此可以更好地对工业控制系统进行指令级分析。

4.2 OPC协议

OPC是基于微软组件对象COM/DCOM/COM+等技术基础的一种接口标准,在标准下能够有效的进行信息集成和数据交换。在工业控制系统中,OPC协议规范中主要应用的是OPC DA规范。在OPC DA规范中,OPC由OPC服务器中包含OPC组,组内有一个或多个对象,其结构如图6所示。

控制系统

图6 OPC对象结构组成

在OPC DA规范中,IOPCItemMgt类型报文在客户端执行添加、删除对象时,协商客户端和服务器对象的句柄,在协商完成后,后续通信都通过句柄对该对象执行修改。由图7可知,Wireshark并未对句柄进行解析。

控制系统

图7 OPC原生Wireshark未解析报文示例

本文通过以下方法可以获取句柄和句柄相关的对象名称。

控制系统

控制系统

图8 OPC二次开发前后对比

由图8可知,经过开发后的WireNmap软件可以获取OPC协议的TAG名字、数据类型以及数值等更多信息。在实际的工业控制系统中,该信息可以与实际物理量进行转换,从而获取更多的数量信息。

基于WireNmap的工业漏洞扫描技术

WireNmap同时集成了自主研发的漏洞扫描脚本插件,如NSE脚本。

5.1 NSE脚本简介

一个完整的NSE脚本包括描述性字段、行脚本的rule以及实际脚本指令的action等多个模块,如图9所示。它的各个模块的主要的功能如表3所示。

控制系统

图9 NSE脚本组成

表3 NSE脚本各个模块的主要的功能

控制系统

控制系统

图10 NSE脚本首部

5.2.2 脚本portrule

这部分主要涉及一些特定的端口以及端口上的服务,在对服务器的访问中涉及到http,因此端口的选取是几个有关http服务的端口,具体如下:

portrule=shortport.port_or_service({80,8080},”http”)

一般来说,在Apache Tomcat服务器安装时会有默认的运行端口,端口一般为8080,有时会存在该端口被其他应用占用的情况,这时服务器启动后不能正常工作,可以在Apache Tomcat的文件中进行默认端口的修改。

5.2.3 脚本action

这是整个脚本的核心部分,利用put请求发送一个jsp格式的文件,之后判断服务器对http的put请求返回的响应码,若为201,说明此时服务器已经接受请求,对文件名以及一些细节输出即可,如图11所示。查看该脚本在Nmap中的运行结果,如图12所示。

控制系统

图11 NSE脚本主体

控制系统

图12 NSE脚本运行结果

控制系统

基于WireNmap的资产管理与联合分析技术

控制系统

控制系统

图13 WireNmap资产管理界面

由图13可以得出网络中的IP段与资产清单,如表4所示。

表4 WireNmap报文分析与IP资产对应关系

控制系统

图13中右侧框列出了当前所有的IP资产清单。点击对应的IP后,利用列举出来的与该IP地址相关的所有通信报文,可以直接分析该IP的流量,查看是否存在异常流量,同时结合已经开发的插件(如S7、OPC等),更好地对工业协议进行深度分析。图13中双击右侧IP地址,启动如图14所示的界面。对重点关注的资产IP进行深度探测,可以得出如表5所示的资产详细信息。

控制系统

图14 WireNmap资产扫描与深度探测

表5 资产详细信息

控制系统

结 语

本文提出了一种基于Wireshark与Nmap的工业控制系统安全联合分析方法,扩展了Wireshark的分析插件与Nmap的扫描插件,同时提出了将Wireshark与Nmap合并后的联合分析软件WireNmap。实际应用证明,WireNmap能更深层次解析工业协议,如S7、OPC协议,同时通过开发脚本能发现更多的漏洞,如CVE-2017-12617等。面对以窃取敏感信息和破坏关键基础设施运行为主要目的工业控制系统网络攻击,所提方法能更快速、全方位地适应工业控制系统安全威胁的需要。

 

 

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分