0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文讀懂工控安全MMS協(xié)議

倩倩 ? 來源:未知 ? 作者:安全客 ? 2019-09-28 02:07 ? 次閱讀

最近看了看工控安全相關(guān)內(nèi)容,在此進(jìn)行簡單分析。

MMS簡介

MMS(Manufacturing Message Specification)中文翻譯為制造報(bào)文規(guī)范,在介紹MMS之前我們先簡單科普一下IEC61850標(biāo)準(zhǔn)。

IEC61850是電力系統(tǒng)自動(dòng)化領(lǐng)域唯一的全球通用標(biāo)準(zhǔn),而本文主要介紹的MMS就是運(yùn)用在IEC61850標(biāo)準(zhǔn)站控層和間隔層之間,MMS通過對實(shí)際設(shè)備進(jìn)行面向?qū)ο蠼7椒?,?shí)現(xiàn)了網(wǎng)絡(luò)環(huán)境下不同制造設(shè)備之間的互操作。在2015年前MMS在電力系統(tǒng)遠(yuǎn)動(dòng)通信協(xié)議中并未應(yīng)用,但是IEC61850標(biāo)準(zhǔn)將其引入電力自動(dòng)化領(lǐng)域,將其核心ACSI服務(wù)直接映射到MMS標(biāo)準(zhǔn)

由于MMS是由ISO技術(shù)委員會184(TC184)開發(fā)和維護(hù)的一種涉及用來在設(shè)備或程序之間傳送實(shí)時(shí)數(shù)據(jù)和監(jiān)督信息的信息傳遞系統(tǒng)的國際標(biāo)準(zhǔn),它的定義如下。

每個(gè)設(shè)備中必須存在一組標(biāo)準(zhǔn)對象(standard objects),可以執(zhí)行如,讀寫事件信令(event signaling)等操作。

VMD是主要對象,諸如變量,域,日志,文件等都屬于VMD范圍內(nèi)。

在客戶端和服務(wù)器站之間有一組用來監(jiān)視或控制上述對象的一組標(biāo)準(zhǔn)信息。

一組用于在傳輸時(shí)將信息映射到位和字節(jié)的編碼規(guī)則。

說完MMS的定義后,我們來看一看MMS的協(xié)議棧。其實(shí)早在1990年就已經(jīng)根據(jù)ISO / IEC 9506-1和ISO / IEC 9506-2兩個(gè)標(biāo)準(zhǔn)進(jìn)行了標(biāo)準(zhǔn)化,但是由于OSI的實(shí)施不是很簡單,所以這個(gè)原始版本并沒有流行?,F(xiàn)在流行的MMS是于1999年波音公司根據(jù)互聯(lián)網(wǎng)協(xié)議創(chuàng)建的全新版本。以下是新版MMS堆棧。

一文讀懂工控安全MMS協(xié)議

相比于以前的版本,新版協(xié)議的前三層沒有變化,使用了與以前相同的OSI協(xié)議,而底層四層則更依賴于TCP ARP等協(xié)議而非原本的RFC1006。

MMS協(xié)議

介紹完之前的一些基礎(chǔ),終于要開始分析MMS數(shù)據(jù)包了,我們先來看下面這個(gè)IEC61850的數(shù)據(jù)包。

我們能清楚地看到這個(gè)數(shù)據(jù)包的組成,首先是TCP的三次握手,建立連接,這段內(nèi)容是計(jì)算機(jī)網(wǎng)絡(luò)的核心知識,相信大家都有所了解,這里就不再多說了。接下來是兩個(gè)COTP包。

COTP

簡單的介紹一下,COTP(ISO 8073/X.224 COTP Connection-Oriented Transport Protocol),翻譯為面向連接的傳輸協(xié)議,這個(gè)協(xié)議的作用就是進(jìn)行傳輸連接的建立,我們仔細(xì)觀察上圖中的兩個(gè)COTP包,分別被標(biāo)記為CR和CC,是connect request和connet confirm,功能就是COTP的連接包和返回包。一下我們來分別看一下他們的結(jié)構(gòu)組成。

1. COTP Connection Packet

我們從上面的圖可以看出,主要由如下的結(jié)構(gòu)(前方數(shù)字代表對應(yīng)字節(jié))。

0 Length:無符號整型,1byte,用于標(biāo)記COTP不包括length的后續(xù)內(nèi)容長度,一般為17byte(但我看到的幾個(gè)包都是14…)

1 PDU Type:無符號整型,1byte,標(biāo)記狀態(tài),注意上圖中這行后面的0x0e,代表連接請求,還有其他類型如下所示。

0×1: ED Expedited Data,加急數(shù)據(jù)

0×2: EA Expedited Data Acknowledgement,加急數(shù)據(jù)確認(rèn)

0×4: UD,用戶數(shù)據(jù)

0×5: RJ Reject,拒絕

0×6: AK Data Acknowledgement,數(shù)據(jù)確認(rèn)

0×7: ER TPDU Error,TPDU錯(cuò)誤

0×8: DR Disconnect Request,斷開請求

0xC: DC Disconnect Confirm,斷開確認(rèn)

0xD: CC Connect Confirm,連接確認(rèn)

0xE: CR Connect Request,連接請求

0xF: DT Data,數(shù)據(jù)傳輸

2~3 Destination reference:2bytes,目的地參照符,用來標(biāo)識目標(biāo)。

4~5 Source reference:2bytes,來源參考,用來標(biāo)識來源。

6 option:1byte,其中有Extended formats和No explicit flow control,值是布爾型。

7~ parameter :參數(shù),一般為11bytes,一般包含Parameter code,Parameter length,Parameter data三部分。

這些就是CR包的組成部分,接下來我們看看CC包。

2. COTP Fuction Packet

其實(shí)這兩個(gè)包并沒有什么區(qū)別,我們對比一下這兩個(gè)包,主要就是在PDU Type上由0x0e變成0x0d,標(biāo)志著由連接包變成返回包。

到這里我們這COTP也基本分析完成了,接下來終于要進(jìn)入我們正題MMS了。

MMS

我們看一下下面的數(shù)據(jù)包,

我們能看到其中包括四種MMS包,分別是initiate-RequestPDU(啟動(dòng)-請求PDU)、confirmed-RequestPDU(確認(rèn)-請求PDU)、initiate-ResponsePDU(啟動(dòng)-應(yīng)答PDU)、confirmed-ResponsePDU(確認(rèn)-應(yīng)答PDU),接下來我們來詳細(xì)的看一下這四種。

1. initiate-RequestPDU

首先看一下這個(gè)包,我們可以看到它的組成有以下幾個(gè)方面

5~7 localDetailingCalling: 本地詳細(xì)呼叫,這個(gè)字節(jié)數(shù)不固定,取決于后面數(shù)字大小,根據(jù)國家規(guī)定通用MMS要求里寫的這個(gè)值不應(yīng)小于64,但推薦至少支持512個(gè)8位位組。

10 proposedMaxServOutstandingCalling:提出最大服務(wù)端呼叫,這個(gè)和下面部分內(nèi)容都和confirmed-RequestPDU有著聯(lián)系,具體放到下面再講。

13 proposedMaxServOutstandingCalled: 提出最大服務(wù)端被呼叫

15 propodedDataStructureNestingLevel:預(yù)先編碼的數(shù)據(jù)結(jié)構(gòu)嵌套級別,下面簡單提一下這個(gè)嵌套級別。

對于結(jié)構(gòu)類型數(shù)據(jù),如SEQUENCE OF內(nèi)容Value字段中是一個(gè)或多個(gè)數(shù)據(jù)的TLV,形成分層結(jié)構(gòu),從外層開始層層嵌套最后嵌套成最簡單的數(shù)據(jù)類型為止。如下圖所示。

最后一部分是MMSInitRequestDetail(MMS初始請求詳細(xì)信息)主要由proposedVersionNumber、proposedParameterCBB、services Supported Calling組成,分別標(biāo)識 相關(guān)參數(shù)和服務(wù)支持的參數(shù),我們著重看一下最后一部分,存在著identify、fileopen等參數(shù),很明顯這部分就是標(biāo)記著全包內(nèi)容的管理。

2. initiate-ResponsePDU

我們再來看看initiate-ResponsePDU的內(nèi)容,總體結(jié)構(gòu)和initiate-RequestPDU相似,重復(fù)之處就不再多說了,這里重點(diǎn)看一下這幾個(gè)部分。

negociatedMaxServoutstandingCalling:議最大服務(wù)端呼叫

negociatedMaxServoutstandingCalling:議最大服務(wù)端被呼叫

negociatedDataStructureNestingLevel:相關(guān)的數(shù)據(jù)結(jié)構(gòu)嵌套級別

我們可以發(fā)現(xiàn),initiate-ResponsePDU的這三條和上面initiate-RequestPDU的內(nèi)容是相對應(yīng)的,這是因?yàn)閕nitiate-ResponsePDU的作用就是對initiate-RequestPDU的內(nèi)容進(jìn)行應(yīng)答,所以要將傳遞內(nèi)容進(jìn)行檢測,這也是為什么連這三條后面參數(shù)也是一致的。

再看mmsInitResponseDetail的內(nèi)容,前兩條也是作為對之前內(nèi)容回答,內(nèi)容一致就不分析了。直接看最后的serviceSupportedCalled,這一段內(nèi)容里存在很多參數(shù),主要作用就是對之前包中內(nèi)容的回應(yīng),傳遞一個(gè)回復(fù)服務(wù)端呼叫的內(nèi)容。

3. confirmed-RequestPDU

相比于之前的兩個(gè)包,剩下的就簡單多了,還是先看內(nèi)容。

invokeID:調(diào)用者ID,作為數(shù)據(jù)包唯一標(biāo)識存在

confirmedServiceRequest:確認(rèn)服務(wù)請求,后接服務(wù)內(nèi)容,如本次就是getNameList,像這樣的服務(wù)還有諸如read、write、getVariableAccessAttributes、getNamedVariableListAttributes、fileOpen、fileRead、fileClose、fileDirectory接下來就是getNameList內(nèi)容參數(shù),如擴(kuò)展對象類和擴(kuò)展范圍。

4. confirmed-ResponsePDU

基本內(nèi)容和confirmed-Request一樣,只是由confirmed-RequestPDU-》confirmed-ResponsePDU、confirmedServiceRequest-》confirmedServerResponse,具體的內(nèi)容也由上個(gè)包的提出變成回答,這兩個(gè)包都是相對應(yīng)的,一問一答的形式存在。

2018年工業(yè)信息安全技能大賽(東北賽區(qū))協(xié)議分析

關(guān)于MMS的基礎(chǔ)知識上文已經(jīng)介紹完畢了,下面我們來看一下一個(gè)工業(yè)協(xié)議分析題目。題目首先給出了一個(gè)智能電廠項(xiàng)目的IEC61850數(shù)據(jù)包,由于題目中已經(jīng)提示MMS了,所以我們直接篩選所有MMS。一共不到兩千個(gè)MMS數(shù)據(jù)包

首先嘗試搜索flag關(guān)鍵字。

發(fā)現(xiàn)存在flag.txt,接著搜索,在1771包處發(fā)現(xiàn)一個(gè)confirmed-Request數(shù)據(jù)包,這個(gè)包的作用是fileopen,這只是告訴了我們存在這樣一個(gè)有著flag.txt的文件,我們暫時(shí)沒法看到,還得找到fileread或者filewrite,根據(jù)fileopen后面的72我們可以推測一下fileread和filewrite的位置,應(yīng)該是在70~75之間,而且要在1764后面那么我們嘗試找一下73。

可以看到invokeID=527,我們之前已經(jīng)介紹過了invokeID的作用,所以直接根據(jù)這個(gè)查找對應(yīng)的confirmed-Resonse包。

可以看到fileData,進(jìn)行asc解碼即可得到答案。

這題的另一種解法是通過MMS協(xié)議的結(jié)構(gòu)編寫腳本得到答案,像S7comm等協(xié)議相關(guān)題目都可以通過這樣實(shí)現(xiàn)。

總結(jié)

MMS協(xié)議作為一個(gè)公有協(xié)議,但實(shí)施時(shí)間還不是很長,還有許多漏洞點(diǎn)可以挖掘,這篇文章只是按照我個(gè)人的思路基本的介紹了一下MMS這個(gè)協(xié)議,有一部分內(nèi)容是根據(jù)相關(guān)資料自行總結(jié)猜測得出,有不對的地方希望各位可以指出。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • MMS
    MMS
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    17055
  • 工控安全
    +關(guān)注

    關(guān)注

    2

    文章

    20

    瀏覽量

    7895
收藏 人收藏

    評論

    相關(guān)推薦

    讀懂接口模塊的組合應(yīng)用有哪些?

    讀懂接口模塊的組合應(yīng)用有哪些?
    發(fā)表于 05-17 07:15

    讀懂如何去優(yōu)化AC耦合電容?

    讀懂如何去優(yōu)化AC耦合電容?
    發(fā)表于 06-08 07:04

    讀懂什么是NEC協(xié)議

    讀懂什么是NEC協(xié)議?
    發(fā)表于 10-15 09:22

    讀懂中斷方式和輪詢操作有什么區(qū)別嗎

    讀懂中斷方式和輪詢操作有什么區(qū)別嗎?
    發(fā)表于 12-10 06:00

    讀懂傳感器的原理與結(jié)構(gòu)

    讀懂傳感器傳感器在原理與結(jié)構(gòu)上千差萬別,如何根據(jù)具體的測量目的、測量對象以及測量環(huán)境合理地選用傳感器,是在進(jìn)行某個(gè)量的測量時(shí)首先要解決的問題。當(dāng)傳感器確定之后,與之相配套的測量方法和測量設(shè)備也就
    發(fā)表于 01-13 07:08

    TCPIP的IEC61850特定通信服務(wù)映射MMS的實(shí)現(xiàn)

    MMS(MicrosoftMediaServerprotocol)是種串流媒體傳送協(xié)議,用來訪問并流式接收Windows Media服務(wù)器中.asf文件的
    發(fā)表于 03-05 15:13 ?51次下載
    TCPIP的IEC61850特定通信服務(wù)映射<b class='flag-5'>MMS</b>的實(shí)現(xiàn)

    讀懂無線充電產(chǎn)業(yè)鏈

    讀懂無線充電產(chǎn)業(yè)鏈,新用戶關(guān)注【電子發(fā)燒友網(wǎng)】微信公眾號,輸入“積分”,立送10積分!
    發(fā)表于 12-04 19:13 ?46次下載

    讀懂NB-IoT 的現(xiàn)狀、挑戰(zhàn)和前景

    讀懂 NB-IoT 的現(xiàn)狀、挑戰(zhàn)和前景
    的頭像 發(fā)表于 02-28 15:42 ?6261次閱讀

    讀懂MCU的特點(diǎn)、功能及如何編寫

    讀懂MCU的特點(diǎn)、功能及如何編寫
    發(fā)表于 12-05 09:51 ?24次下載
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b>MCU的特點(diǎn)、功能及如何編寫

    讀懂方殼電池倉段差缺陷檢測

    讀懂方殼電池倉段差缺陷檢測
    的頭像 發(fā)表于 01-12 15:46 ?790次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b>方殼電池倉段差缺陷檢測

    讀懂,什么是BLE?

    讀懂,什么是BLE?
    的頭像 發(fā)表于 11-27 17:11 ?1848次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b>,什么是BLE?

    讀懂車規(guī)級AEC-Q認(rèn)證

    讀懂車規(guī)級AEC-Q認(rèn)證
    的頭像 發(fā)表于 12-04 16:45 ?778次閱讀

    讀懂微力扭轉(zhuǎn)試驗(yàn)機(jī)的優(yōu)勢

    讀懂微力扭轉(zhuǎn)試驗(yàn)機(jī)的優(yōu)勢
    的頭像 發(fā)表于 11-30 09:08 ?444次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b>微力扭轉(zhuǎn)試驗(yàn)機(jī)的優(yōu)勢

    MMS協(xié)議是什么?MMS協(xié)議詳細(xì)介紹

    MMS協(xié)議全稱Manufacturing Message Specification,即制造消息規(guī)范,是由國際電工委員會(IEC)制定的通用工業(yè)自動(dòng)化領(lǐng)域的通信協(xié)議。MMS
    的頭像 發(fā)表于 01-11 16:27 ?2002次閱讀

    讀懂新能源汽車的功能安全

    電子發(fā)燒友網(wǎng)站提供《讀懂新能源汽車的功能安全.pdf》資料免費(fèi)下載
    發(fā)表于 09-04 09:22 ?2次下載