首頁>技術>

前面我們系統得說了工業控制系統的通訊,大家肯定會想到PROFINET、ETHERNET/IP、ETHERCAT等工業乙太網:

技術解讀PROFINET、Ethernet/IP等7種主流工業乙太網

最全整理工業通訊上的領域各種匯流排+協議+規範+介面—資料採集與控制

但是說到協議的分析,我們 不得不提到安全問題,前面我們系統的介紹過關於工業控制系統的架構、安全等:

工業控制系統安全入門與實踐—從五層架構和安全標準說起

工業控制系統安全入門與實踐——工控安全入門分析

也聊了西門子、施耐德、羅克韋爾等國際大廠的相關安全漏洞:

基於S7協議對西門子PLC S7-1500的漏洞分析與復現(附演示影片)

施耐德PLC漏洞歷險記—一次與施耐德PLC的非正常接觸

羅克韋爾 MicroLogix PLC漏洞的復現及解決方案

西門子、施耐德、羅克韋爾PLC程式設計漏洞探秘

今天來解析下由羅克韋爾主導的ETHERNET/IP協議~

作者 | 長揚科技(北京)有限公司 汪義舟 梁 澤 張國棟

一、Ethernet/IP協議

EtherNet/IP是一個現代化的標準協議。由控制網國際有限公司(ControlNet International)的一個技術工作組與ODVA(開放式DeviceNet供應商協會)在20世紀90年代合作設計。EtherNet/IP是基於通用工業協議(Common Industrial Protocol,CIP)的。CIP是一種由ODVA支援的開放工業協議,它被使用在諸如 DeviceNet 和 ControlNet 以及 EtherNet/IP 等序列通訊協議中。美國的工控裝置製造商Rockwell/Allen-Bradley已經圍繞EtherNet/IP進行了標準化,其他廠商如Omron也在其裝置上支援了EtherNet/IP。EtherNet/IP已經變得越來越受歡迎,特別是在美國。儘管EtherNet/IP比Modbus更現代化,但仍然存在協議層面的安全問題。EtherNet/IP通常透過TCP/UDP埠44818執行。此外,EtherNet/IP還有另一個埠 TCP/UDP埠2222。使用這個埠的原因是 EtherNet/IP實現了隱式和顯示兩種訊息傳遞方式。顯式訊息被稱為客戶端/伺服器訊息,而隱式訊息通常被稱為I/O訊息。

EtherNet/IP是為了在乙太網中使用CIP協議而進行的封裝。EtherNet/IP的 CIP幀封裝了命令、資料點和訊息等資訊。CIP幀包括CIP裝置配置檔案層、應用層、表示層和會話層四層。資料包的其餘部分是EtherNet/IP幀,CIP幀透過它們在乙太網上傳輸。EtherNet/IP分組結構如圖

CIP規範對資料包結構有很多的規定,這意味著每個使用 EtherNet/IP的裝置必須實現符合規範的命令。下面是EtherNet/IP首部中封裝的CIP幀欄位:

• 命令

兩位元組整數,對應一個 CIP 命令。通用工業協議規範標準要求,裝置必須能接收無法識別的命令欄位,並處理這種異常。

• 長度

兩位元組整數,代表資料包中資料部分的長度。對於沒有資料部分的請求報文,該欄位為0。

• 會話控制代碼

會話控制代碼(session handle)由目標裝置生成,並返回給會話的發起者。該控制代碼將用於後續與目標裝置的通訊。

• 狀態碼

Status欄位儲存了目標裝置執行命令返回的狀態碼。狀態碼“0”代表命令執行成功。所有的請求報文中,狀態碼被置為“0”。其它的狀態碼還包括:

0x0001 無效或不受支援的命令

0x0002 目標裝置資源不足,無法處理命令

0x0003 資料格式不正確或資料不正確

0x0065 接收到無效的資料長度

• 傳送方上下文

命令的傳送者生成這六位元組值,接收方將原封不動的返回該值。

• 選項

該值必須始終為0,如果不為零,資料包將被丟棄。

• 命令相關資料

該欄位根據接收/傳送的命令進行修改。

如果請求傳送方是工程師站,大多數會話中執行的第一條命令是“ListIdentity”命令。如下所示的資料包,命令欄位是0x63,代表“List Identity”命令,上下文是“0x00006a0ebe64”。這個命令與Modbus功能碼43非常相似,可以查詢裝置資訊,如供應商、產品、序列號、產品程式碼、裝置型別和版本號等。使用在Github專案pyenip中找到的Python 指令碼ethernetip.py,你可以查詢Ethernrt/IP 裝置的資訊。預設情況下,這個指令碼不會解析一些響應,你需要取消指令碼底部的 testENIP() 函式的註釋後,它才會傳送和接收“List Identity”命令。在執行指令碼的同時,你可以使用Wireshark檢視請求和響應的資料包。

二、EtherNet/IP協議身份鑑別請求攻擊

Digital Bond 在專案 Redpoint 中實現了一個指令碼,可以用來從遠端裝置中獲取資訊。Redpoint 指令碼使用了 “List Identity”命令字,並使用Nmap中的資訊進行解析。它的“Conmmand Specific Data”部分包含了一個套接字地址(ip 地址和埠號)。這是暴露的遠端裝置的真實 ip 地址和埠號,即使它位於NAT裝置之後。

我們發現大量的裝置暴露的IP欄位和實際掃描的IP地址不同。所以我們得出結論,大多數的Ethernet/IP裝置部署在內部網路中,而不是直接暴露在網際網路上。如下圖所示的是使用Nmap掃描CompactLogix控制系統的掃描結果,可以看到暴露的裝置ip和掃描ip不匹配,說明目標系統位於路由器或防火牆之後。

上圖顯示了一些資訊,包括裝置的製造商“Rockwell”。裝置的製造商在響應中是一個兩位元組的製造商 ID,它映射了一組支援 Ethernet/IP 的廠商名單。但是,這個廠商名單不是公開的。我們在深入研究 Wireshark 捕獲的資料包後,發現數據包被 Wireshark 解析後,製造商 ID 被替換成了製造商名稱。這說明 Wireshark 擁有如何對映製造商ID和名稱的資訊。透過對Github上Wireshark原始碼的一些搜尋,我們發現瞭如下程式碼片段,它告訴我們該如何解析製造商 ID。在解析工控協議的時候,Wireshark 常常是一個強大而好用的資源。

使用像“List Identity”這樣的命令,你可以簡單的重放資料包,幾乎不用修改資料包。會話控制代碼將被設定為0,意味著沒有會話生成,因為該命令只是簡單的傳送命令和接收系統響應。為了進一步與裝置進行通訊,需要傳送註冊會話命令(0x65)。這個命令會設定會話控制代碼ID,這個ID將用於後續會話的通訊。如下圖所示,註冊會話的請求使用標準ID“0x00000000”,目標裝置返回了它生成的會話控制代碼“0x03A566BB”。

三、Ethernet/IP中間人攻擊

簡單的資料包重放對Ethernet/IP的某些指令無效。這使得攻擊變得稍微複雜了一些。然而,對於大多數攻擊者而言,只要對 Ethernet/IP 的協議稍有了解,這點困難將是微不足道的。一旦會話控制代碼透過協商被確定,只要透過手動改變序列號,就可以實現像中間人攻擊。

攻擊例項:

網路拓撲:

網路環境:

• 虛擬機器

• Ettercap工具

• Wireshark

• 交換機

• PLC控制器

攻擊測試:使用VM-Linux中的嗅探工具ettercap對目標主機進行嗅探。

單擊Hosts選項,選擇Scan for host,待掃描完成之後再選擇Scan for host,然後選擇Host list,此時可以看到已經掃描的主機列表,如圖所示:

然後就可以選擇要攻擊的目標了,選擇192.168.210.200的IP地址,如圖所示:

明確攻擊方式之後,我們選擇"Sniff remoteconnections" — "確定"。

攻擊示意圖:

此時使用Wireshark抓包工具可以發現,被攻擊PLC的所有流量都是透過攻擊者的VM主機發送出去的。透過此操作可直接給PLC下發指令。

四、EtherNet/IP協議終止CPU執行攻擊

有些Ethernet/IP裝置是支援終止CPU命令的。Metasploit模組,可以被用來終止一個Allen-Bradley ControlLogix控制系統中的大量 PLC,還可以引發其他惡意攻擊事件比如令乙太網卡崩潰。

只要瞭解 Session Handle 即可輕鬆攻擊 Ethernet/IP。是這個攻擊奏效的另一個關鍵是Allen-Bradley實現的一個命令字。Allen-Bradley在NOP(0x00)命令中實現了終止 CPU 的功能。如下圖

這個命令在CIP或Ethernet/IP的規範中沒有記錄,是Allen-Bradley/Rockwell控制器的私有實現。透過對大量裝置的測試,我們發現,在一些舊的韌體中,不僅 ControlLogix CPU 被終止,而且裝置崩潰,需要重新啟動硬碟。對於當前的型號,PLC 必須拔下並重新插入才能再次執行。極少數情況下,PLC需要重新程式設計。

五、結束語

上述的攻擊都是非常危險的攻擊形式,時常與釣魚網站、掛馬網站等攻擊形式結合,不僅造成資訊的洩漏,還可能被借用於病毒木馬的傳播。更重要的是,這類攻擊可能將我們認為絕對安全的網路連線變成完全被人監聽控制的連線,使得網路連線的私密性得不到保障,造成重要資料輕易落入攻擊者之手。由於網路環境的複雜性,我們有必要對各類攻擊進行了解,具備初步判斷網路連線安全性的能力。

防護手段:使用專業的工控防火牆系統,能智慧識別和防護各類惡意攻擊,結合工控協議的深度解析和黑、白名單策略相結合的防護機制,可有效的阻止針對工控系統的已知和未知的惡意攻擊行為,極大的降低了工控系統受損的風險。

硬核專輯

工業熱點 | 資料採集 | 應用與庫(西門子、羅克韋爾、倍福等)

WinCC技術 | 工業網路 | MES技術相關| 工業巨頭戰略佈局 | 工業通訊案例

模擬與虛擬除錯 | 職業感悟、認知提升 | 自動化控制標準合集

西門子TIA Portal+庫卡機器人+VNCK實現數字化機床虛擬除錯

2020-12-06

超炫酷的西門子TIA Portal的大神級操作~

2020-11-27

自動化+資訊化:徐工傳動數字化工廠實施方案

2020-11-24

基於TIA Portal V15的動態加密計時催款程式

2020-11-16

軟體定義製造:五層架構下數字化工廠的資訊系統

2020-11-13

智慧自動化物流系統AGV基礎知識(完整介紹)

2020-11-14

機床數字化通訊三大標準-OPCUA、MTConnect、NC-Link

2020-11-07

一文講透PROFINET組態除錯、程式設計、應用等最重要的文件和知識點

2020-11-08

數字化工業,IT大佬與工業自動化巨頭的IT\OT融合之旅

2020-11-02

PLC高階程式設計-西門子SCL結構化控制語言官方培訓.pptx

2020-10-29

MES、SCADA下的資料採集—C#實現掃碼器的串列埠通訊例項

2020-10-28

IT融合OT:資料、網路與WMS、MES如何貫穿五層自動化金字塔?

2020-10-20

6
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 佇列實現棧|棧實現佇列