<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    原創 | 三菱PLC MELSOFT通信協議淺析

    上官雨寶2022-07-19 16:03:00

    原創 | 三菱PLC MELSOFT通信協議淺析

    1.概述

    三菱MELSOFT協議為三菱PLC私有組態協議,用于編程軟件與三菱PLC通信。針對該協議公開資料并不多,本次主要對該協議進行分析,并基于分析結果對三菱PLC進行MELSOFT協議模糊測試。

    2.環境配置

    GX WORKS2:三菱PLC編程軟件,適用于Q、QnU、L、FX等系列可編程控制器,并且支持PLC仿真。

    L61P-CM:L06系列CPU,默認使用TCP/5007或UDP/5008端口與編程軟件進行通信。該通信協議為三菱私有協議melsoft。

    逆向工具:IDA 7.5

    調試工具:x64dbg

    3.分析過程

    3.1 信息搜集及分析

    3.1.1 通信端口

    GX WORKS2默認以UDP廣播方式與PLC UDP 5008端口進行組態協議通信,在GX WORKS2上可通過配置連接目標,以TCP方式與PLC TCP 5007端口進行組態協議通信。

    3.1.2 協議相似性

    經過網上的一些資料以及對真實PLC流量進行分析,發現MELSOFT協議與三菱MC協議有一些相似之處(三菱MC協議是一個公開協議,可直接從三菱官網下載通訊協議參考手冊)。例如報文格式(MC協議3E幀)、“CPU型號讀取”功能。

    3.1.3 協議交互流程整理

    根據網絡搜集的資料,初步整理出協議的交互流程如下:

    3.2 動態調試GX Works2編程軟件

    在GX WORKS2運行后,使用x64dbg附加到程序,在“ws2_32.dll”的send/sendto函數設置斷點。在GX WORKS2中執行“數據讀取”、“遠程操作”等操作,查看調用堆棧,分析函數調用關系。

    3.3 編程軟件DLL調用分析

    3.3.1 調用堆棧分析

    從調用堆棧中可查找到相關的函數調用,以發送“5A 00 00 01”這條報文為例,主要函數調用順序如下(部分函數已重命名,括號中為相對dll基址的偏移地址),可以看到函數調用主要集中于ECUNIT_PLC_LN.dll。

    ws2_32.dll是用于執行TCP/IP網絡通信的操作系統動態鏈接庫。

    ECUdp.dll是對ws2_32.dll的簡單封裝,主要作用是發送和接收UDP數據包。

    ECUNIT_PLC_LN.dll主要負責的數據封包和解包,然后調用ECUdp.dll中的相關函數。

    ECCommunication2.dll對ECUNIT_PLC_LN.dll進行封裝。

    _DNavi.dll:調用ECCommunication2.dll中的相關函數。

    _DNaviPcEasyFunction.dll:調用_DNavi.dll中的相關函數。

    3.3.2 協議數據封裝分析

    3.3.2.1數據頭封裝函數

    Packet函數位于(ECUNIT_PLC_LN.dll + 0x6C2F)

    HeaderMake00位于(ECHEADER_ETHER_PLC_LN.dll + 0x5E3)

    3.3.2.2命令數據封裝函數

    以0101功能碼為例, BroadCastDataSend_fn57_0101位于 (ECUNIT_PLC_LN.dll + 0x257BF)

    3.3.3 授權碼計算

    位于(UNIT_PLC_LN.dll + 0x16461),根據CPU型號生成密鑰,然后對challenge_code進行編碼,最后生成授權碼。

    3.4 PLC模擬器分析

    分析過程與編程軟件類似,此處不再贅述,分析對象為QnUDSimRun2.exe。

    模擬器通信使用的通信協議與Melsoft略有不同,主要是數據包頭部不相同,命令數據部分基本一致。通分析其命令處理函數,可推測數據包中命令數據的字段類型及作用。所有命令處理函數基本都在一個函數中統一進行注冊(QnUDSimRun2.exe+0x9070),然后再進行調用。

    4.分析結果

    4.1 通信交互流程

    根據分析結果,推測Melsoft協議通信交互流程。

    4.2 數據包結構示例

    表1 數據幀類型

    表2-1讀取CPU型號請求報文 header

    表2-2讀取CPU型號請求報文 data

    表3-1讀取CPU型號響應報文header

    表3-2讀取CPU型號響應報文 data

    4.3 協議解析插件

    以讀取CPU型號功能碼0101為例,wireshark解析插件效果如下:

    5.協議Fuzz

    本次fuzz工具選擇Fuzzowski,該工具由python3編寫。根據逆向出melsoft協議格式定義出數據模型,然后進行fuzz測試。主要難點在于獲取PLC響應數據,然后計算授權碼,再發送到PLC,需要對工具中的checksum模塊進行擴展。

    5.1 獲取響應數據

    將Challenge Code響應報文中偏移16位置開始的10個字節存儲到全局字典當中,key為challenge_code。

    5.2 擴展算法

    在checksum模塊新增MelsoftAuth算法

    在數據塊定義中調用擴展的MelsoftAuth算法

    6.總結

    目前分析的報文中仍有部分字段語義不明,需要做進一步的分析。協議分析結果基于當前配置,不同配置環境下MELSOFT協議報文略有不同(如GX Works3和FX5U)。后續還需在其他配置下進行研究,以完善MELSOFT協議解析。本次研究僅完成了Melsoft協議的部分解析,希望對同行研究者有所幫助,不當之處還請批評指正。

    原文來源:網絡安全應急技術國家工程研究中心

    三菱通信協議
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    三菱MELSOFT協議為三菱PLC私有組態協議,用于編程軟件與三菱PLC通信。針對該協議公開資料并不多,本次主要對該協議進行分析,并基于分析結果對三菱PLC進行MELSOFT協議模糊測試。
    三菱MELSOFT協議為三菱PLC私有組態協議,用于編程軟件與三菱PLC通信。針對該協議公開資料并不多,本次主要對該協議進行分析,并基于分析結果對三菱PLC進行MELSOFT協議模糊測試。
    工業互聯網安全的落地第一步,是確保工控環境中的防護能力,之后是檢測/審計能力。本次《工業互聯網安全能力指南》的發布內容為報告中的工控防護能力部分,以及工控檢測/審計能力部分。
    6月10日,第十三屆全國人民代表大會常務委員會第二十九次會議通過《中華人民共和國數據安全法》。本法自2021年9月1日起施行。相較于《數據安全法(二次審議稿)》,最終稿做出以下修改:一是建立工作協調機制,加強對數據安全工作的統籌;二是明確對關系國家安全、國民經濟命脈、重要民生、重大公共利益等數據實行更嚴格的管理制度;三是要求提供智能化公共服務應當充分考慮老年人、殘疾人的需求,不得對老年人、殘疾
    提到工控系統惡意軟件,人們首先會想第一個能直接攻擊OT網絡的震網病毒(Stuxnet),但是震網病毒之后,又涌現大量新型惡意軟件,對工控系統構成嚴重威脅。 近年來,針對工控系統的惡意軟件正變得更加復雜且易用。最初的震網病毒需要通過U盤來潛入伊朗設施,但最新的工控惡意軟件工具可通過網絡遠程攻擊。
    Signal在端到端加密消息協議中加入抗量子加密算法。
    在新一輪科技革命和產業變革背景下,智能網聯汽車是新興技術與汽車產業融合創新的重要組成部分,汽車已不再是孤立的單元,而逐步成為智能交通、智慧能源、智慧城市等系統的重要載體和節點,被視為可移動的智能網絡終端。隨著人工智能、信息通信技術加速發展和跨界融合,智能網聯汽車與外界的交互手段不斷豐富,智能網聯汽車在積極融入網絡時代的同時,也不可避免地面臨信息安全問題。2015年,兩名黑客實現遠程操控行駛中的切諾
    MQTT協議是1999年IBM公司發布的一種基于發布/訂閱(Publish/Subscribe)模式的輕量級通訊協議。MQTT協議的底層構建基于TCP/IP協議,它的特點是其規范簡單,非常適用于低性能、低開銷和有限帶寬的物聯網場景。作為一種輕量級的傳輸協議,MQTT協議的傳輸過程有三方構成,分別是發布者(Publish)、代理(Broker)和訂閱者(Subscribe)。
    6G移動通信網絡將通信的領域邊界從物理世界進一步拓展至數字世界,通過在物理世界和數字世界之間提供即時、高效和智能的超連接來重塑世界,這一趨勢將開啟移動通信的新篇章。6G網絡超大規模的全局性連接將給網絡的運營和管理帶來巨大挑戰,亟待革命性的理論和技術創新。
    上官雨寶
    是水水水水是
      亚洲 欧美 自拍 唯美 另类