欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

工控安全MMS协议分析

来源:本站整理 作者:佚名 时间:2019-09-23 TAG: 我要投稿

最近看了看工控安全相关内容,在此进行简单分析。
MMS简介
MMS(Manufacturing Message Specification)中文翻译为制造报文规范,在介绍MMS之前我们先简单科普一下IEC61850标准。
IEC61850是电力系统自动化领域唯一的全球通用标准,而本文主要介绍的MMS就是运用在IEC61850标准站控层和间隔层之间,MMS通过对实际设备进行面向对象建模方法,实现了网络环境下不同制造设备之间的互操作。在2015年前MMS在电力系统远动通信协议中并未应用,但是IEC61850标准将其引入电力自动化领域,将其核心ACSI服务直接映射到MMS标准
由于MMS是由ISO技术委员会184(TC184)开发和维护的一种涉及用来在设备或程序之间传送实时数据和监督信息的信息传递系统的国际标准,它的定义如下。
每个设备中必须存在一组标准对象(standard objects),可以执行如,读写事件信令(event signaling)等操作。
VMD是主要对象,诸如变量,域,日志,文件等都属于VMD范围内。
在客户端和服务器站之间有一组用来监视或控制上述对象的一组标准信息。
一组用于在传输时将信息映射到位和字节的编码规则。
说完MMS的定义后,我们来看一看MMS的协议栈。其实早在1990年就已经根据ISO / IEC 9506-1和ISO / IEC 9506-2两个标准进行了标准化,但是由于OSI的实施不是很简单,所以这个原始版本并没有流行。现在流行的MMS是于1999年波音公司根据互联网协议创建的全新版本。以下是新版MMS堆栈。
Application
Association Control Service Element (ACSE)- ISO 8649/8650
Presentation
Connection Oriented Presentation – ISO 8822/8823 Abstract Syntax Notation (ASN)- ISO 8824/8825
Session
Connection Oriented Session – ISO 8326/8327
Transport
Connection Oriented Transport – ISO 8072/8073
Network
Connectionless network – ISO 8348
Link
MAC – ISO 8802-3 [Ethernet] MAC – ISO 8802-4 [Token Ring]
Physical
Ethernet Token Ring
相比于以前的版本,新版协议的前三层没有变化,使用了与以前相同的OSI协议,而底层四层则更依赖于TCP ARP等协议而非原本的RFC1006。
 
MMS协议
介绍完之前的一些基础,终于要开始分析MMS数据包了,我们先来看下面这个IEC61850的数据包。

我们能清楚地看到这个数据包的组成,首先是TCP的三次握手,建立连接,这段内容是计算机网络的核心知识,相信大家都有所了解,这里就不再多说了。接下来是两个COTP包。
COTP
简单的介绍一下,COTP(ISO 8073/X.224 COTP Connection-Oriented Transport Protocol),翻译为面向连接的传输协议,这个协议的作用就是进行传输连接的建立,我们仔细观察上图中的两个COTP包,分别被标记为CR和CC,是connect request和connet confirm,功能就是COTP的连接包和返回包。一下我们来分别看一下他们的结构组成。
COTP Connection Packet

我们从上面的图可以看出,主要由如下的结构(前方数字代表对应字节)。
0 Length:无符号整型,1byte,用于标记COTP不包括length的后续内容长度,一般为17byte(但我看到的几个包都是14…)
1 PDU Type:无符号整型,1byte,标记状态,注意上图中这行后面的0x0e,代表连接请求,还有其他类型如下所示。
0×1: ED Expedited Data,加急数据
0×2: EA Expedited Data Acknowledgement,加急数据确认
0×4: UD,用户数据
0×5: RJ Reject,拒绝
0×6: AK Data Acknowledgement,数据确认
0×7: ER TPDU Error,TPDU错误
0×8: DR Disconnect Request,断开请求
0xC: DC Disconnect Confirm,断开确认
0xD: CC Connect Confirm,连接确认
0xE: CR Connect Request,连接请求
0xF: DT Data,数据传输
2~3 Destination reference:2bytes,目的地参照符,用来标识目标。
4~5 Source reference:2bytes,来源参考,用来标识来源。
6 option:1byte,其中有Extended formats和No explicit flow control,值是布尔型。
7~ parameter :参数,一般为11bytes,一般包含Parameter code,Parameter length,Parameter data三部分。
这些就是CR包的组成部分,接下来我们看看CC包。
COTP Fuction Packet

其实这两个包并没有什么区别,我们对比一下这两个包,主要就是在PDU Type上由0x0e变成0x0d,标志着由连接包变成返回包。
到这里我们这COTP也基本分析完成了,接下来终于要进入我们正题MMS了。
 
MMS
我们看一下下面的数据包,

我们能看到其中包括四种MMS包,分别是initiate-RequestPDU(启动-请求PDU)、confirmed-RequestPDU(确认-请求PDU)、initiate-ResponsePDU(启动-应答PDU)、confirmed-ResponsePDU(确认-应答PDU),接下来我们来详细的看一下这四种。
initiate-RequestPDU

首先看一下这个包,我们可以看到它的组成有以下几个方面

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载