進一步了解班尼·查尼(Benny Czarny)的著作《顛覆性的網路安全》

瞭解更多資訊
我們利用人工智慧進行網站翻譯,雖然我們力求準確性,但它們可能並不總是 100% 精確。感謝您的理解。

保護 OT 系統免受遠端攻擊:如何MetaDefender OT Security™ 保護 Micrologix™ 1400 控制器免受 CVE-2021-22659 的影響

作者: OPSWAT 發布
保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊
OPSWAT 研究員計畫參與者

保護工業控制系統和 OT 環境免受遠端攻擊比以往更加重要,尤其是CVE-2017-14469和現在的 CVE-2021-22659 等漏洞都是針對 Rockwell Automation 廣泛使用的 Micrologix 1400 控制器。來自OPSWAT 研究員計畫的學生在受控環境中測試此漏洞,突顯安全的必要性。

在本文章中,我們探討了學生如何展示攻擊者如何利用該漏洞導致系統崩潰,以及如何利用缺乏適當的輸入驗證來破壞 PLC 操作。

什麼是 PLC?羅克韋爾自動化 Micrologix 1400 解說

PLC (可程式邏輯控制器) 是一種工業電腦,設計用來控制機械和其他工業作業,使流程自動化。它可在惡劣的環境下工作,並根據感測器輸入進行編程,以執行特定的任務。Rockwell Automation 的 MicroLogix 1400 控制器是一種精巧的模組化 PLC,常用於中小型應用。它以成本效益和彈性著稱,支援各種通訊協定,並提供數位和類比 I/O 選項,以便與設備連接。

保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊

編程通常是使用 Rockwell Automation 的軟體透過階梯邏輯來完成,讓使用者可以建立控制序列。MicroLogix 1400 用途廣泛,適用於機器控制和製程自動化等任務。其模組化功能可讓使用者根據特定的應用需求來擴充和自訂系統。

CVE-2021-22659 簡介

2021 年 1 月,羅克韋爾自動化(Rockwell Automation)接獲來自印度 Veermata Jijabai 科技學院(VJTI)COE-CNDS 中心的 Parul Sindhwad 及 Faruk Kazi 博士的報告,內容涉及 MicroLogix™ 1400 控制器中的一項漏洞。 他們發現 21.6 版及更早版本中存在一項安全漏洞,該漏洞允許未經身份驗證的遠端攻擊者發送經過特殊設計的 Modbus 封包,從而使攻擊者能夠讀取或修改寄存器中的隨機值。若此漏洞被成功利用,可能會導致緩衝區溢出,進而引發服務拒絕狀況。此時「FAULT」指示燈將閃爍紅色,且通訊可能中斷。要從服務拒絕狀況中恢復,必須由使用者手動清除該故障。

NVD 評估此安全漏洞為高度嚴重。

保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊

攻擊階段

保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊

未經驗證的遠端攻擊者,若能透過網路存取有漏洞的 MicroLogix 1400 PLC,就能傳送特製的封包來修改暫存器中的值。這可能會造成裝置阻斷服務,導致系統損毀及停機。此類事件可能會嚴重擾亂組織的製造作業及其他業務活動。

Modbus 通訊協定

Modbus 通訊協定於 1979 年由 Modicon 開發,是專為建立智慧型設備之間的客戶端伺服器通訊而設計的訊息結構。它最初是為 Modicon 的 PLC 所設計,後來成為工業電子設備間通訊的標準通訊協定。

有適用於乙太網路 (Modbus TCP) 和序列線 (Modbus RTU 和 Modbus ASCII) 的 Modbus 通訊協定。Modbus RTU(Remote Terminal Unit) 直接透過序列通訊以二進位形式傳輸資料,而Modbus TCP(Transmission Control Protocol) 則將 Modbus 通訊協定資料嵌入 TCP 封包,透過 TCP/IP 網路傳輸。

保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊

Modbus 訊息結構

Modbus 是一種請求-回應通訊協定,其中用戶端傳送請求至 Modbus 裝置,而裝置隨後會提供回應。

保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊

從主站傳送至副站的 Modbus 訊息包含副站的位址、「指令」(例如「讀取暫存器」或「寫入暫存器」)、資料和檢查總和(LRC 或 CRC)。

保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊

讀取或修改資料時,資料位址會用在 Modbus 查詢訊息中。Modbus 定義了四種資料類型:線圈、輸入狀態、輸入暫存器和保持暫存器。其中兩個儲存開關 (1 位元) 值,稱為線圈和離散輸入;另兩個儲存數值為 16 位元字元,稱為暫存器。每一個都是唯讀或讀/寫。

資料類型

存取

說明

線圈

讀寫

單位元輸出。

離散輸入

唯讀

單位元輸入。

輸入暫存器

唯讀

16 位元輸入暫存器。

暫存器

讀寫

16 位元輸出暫存器。

Modbus 功能代碼分為三類:

  • 公共功能代碼 - 從 1 到 127,使用者定義的代碼除外。
  • 使用者定義功能代碼 - 分為 65 至 72 和 100 至 110 兩個範圍。
  • 保留功能代碼 - 由某些公司用於傳統產品,不提供給公眾使用。

功能類型

功能名稱

功能代碼

資料存取

位元存取

物理離散輸入

讀取離散輸入

2

內部位元或物理線圈

讀取線圈

寫入單線圈

寫入多個線圈

1

5

15

16 位元存取

物理輸入暫存器

讀取輸入暫存器

4

內部暫存器或實體輸出暫存器

讀取多個暫存器

寫入單個暫存器

寫入多個暫存器

讀/寫多個暫存器

遮罩寫入暫存器

讀取 FIFO 佇列

3

6

16

23

22

24

檔案記錄存取

讀取檔案記錄

寫入檔案記錄

20

21

診斷

讀取異常狀態

診斷

取得通訊事件計數器

取得通訊事件日誌

報告從屬 ID

讀取裝置識別

7

8

11

12

17

43

其他

封裝介面傳輸

43

功能類型:資料存取
子類型:位元存取
類別:實體離散輸入
功能名稱:讀取離散輸入
功能代碼:2

功能類型:資料存取
子類型:位元存取
類別:內部位元或物理線圈
功能名稱:讀取線圈
功能代碼:1

功能類型:資料存取
子類型:位元存取
類別:內部位元或實體線圈
功能名稱:寫入單一線圈
功能代碼:5

功能類型:資料存取
子類型:位元存取
類別:內部位元或實體線圈
功能名稱:寫入多個線圈
功能代碼:15

功能類型:資料存取
子類型:16 位元存取
類別:物理輸入寄存器
功能名稱:讀取輸入寄存器
功能代碼:4

功能類型:資料存取
子類型:16 位元存取
類別:內部寄存器或實體輸出寄存器
功能名稱:讀取多個暫存寄存器
功能代碼:3

功能類型:資料存取
子類型:16 位元存取
類別:內部寄存器或實體輸出寄存器
功能名稱:寫入單一暫存寄存器
功能代碼:6

功能類型:資料存取
子類型:16 位元存取
類別:內部寄存器或實體輸出寄存器
功能名稱:寫入多個暫存寄存器
功能代碼:16

功能類型:資料存取
子類型:16 位元存取
類別:內部寄存器或實體輸出寄存器
功能名稱:讀取/寫入多個寄存器
功能代碼:23

功能類型:資料存取
子類型:16 位元存取
類別:內部寄存器或實體輸出寄存器
功能名稱:遮罩寫入寄存器
功能代碼:22

功能類型:資料存取
子類型:16 位元存取
類別:內部寄存器或實體輸出寄存器
功能名稱:讀取 FIFO 佇列
功能代碼:24

功能類型:資料存取
子類型:檔案記錄存取
功能名稱:讀取檔案記錄
功能代碼:20

功能類型:資料存取
子類型:檔案記錄存取
功能名稱:寫入檔案記錄
功能代碼:21

功能類型:診斷
功能名稱:讀取例外狀態
功能代碼:7

功能類型:診斷
功能名稱:診斷
功能代碼:8

功能類型:診斷
功能名稱:取得通訊事件計數器
功能代碼:11

功能類型:診斷
功能名稱:取得 Com 事件日誌
功能代碼:12

功能類型:診斷
功能名稱:回報從機 ID
功能代碼:17

功能類型:診斷
功能名稱:讀取裝置識別碼
功能代碼:43

功能類型:其他
功能名稱:封裝介面傳輸
功能代碼:43

開發

漏洞分析

透過分析,我們的OPSWAT 研究員發現,在 Modbus TCP 通訊期間,協定缺乏對傳輸封包的驗證和加密。此外,MicroLogix 1400 PLC 的輸入驗證並沒有正確執行。因此,遠端攻擊者可以透過封包嗅探分析 Modbus TCP 封包,並透過 Modbus TCP 通訊協定在未認證的情況下傳送任何要求至 PLC。由於 MicroLogix 1400 PLC 裝置缺乏輸入驗證,已驗證的遠端攻擊者可以傳送大量具有隨機值的封包,可能導致 PLC 當機。

暫存器覆寫

最初,我們嘗試擷取用於讀取或寫入 PLC 上暫存器的 Modbus TCP 封包。為了達成這個目標,我們檢查了一個名為 Modbus Poll 的應用程式所產生的封包,該應用程式有助於讀取和寫入 MicroLogix 1400 PLC 上的暫存器。

保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊

透過使用 Wireshark 擷取網路介面的所有封包,我們可以識別出寫入單一暫存器的 Modbus TCP 封包:

保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊
保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊

根據擷取封包的結構,我們開發了一個簡單的 Python 腳本來傳送 TCP 封包,要求寫入目標 PLC 上的暫存器。在此情境中,PLC 的 IP 位址為192.168.93.89。

保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊

PLC 的暫存器在收到我們的惡意未驗證封包後被變更。

保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊
保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊

在 Micro Logix 1400 中,大部分數學指令使用三個參數:來源 A、來源 B 和目的地

來源 A 和來源 B 的值可以來自名為 N13:3 和 N13:4 的兩個 16 位元暫存器。此外,這些 16 位元暫存器(例如 N13:3 和 N13:4)中的值被限制在 -32,768 到 +32,767 的範圍內。如果 N13:3 和 N13:4 的值很大,匹配指令的結果可能會超過資料類型的最大範圍,可能會導致 PLC 當機。因此,要誘發 PLC 當機,就必須將大隨機值寫入所有暫存器,包括 N13:3 和 N13:4。為了達到這個目的,我們修改了 Python 腳本如下:

保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊

模擬攻擊

為了模擬真實世界中的攻擊,我們的OPSWAT 畢業研究員嘗試引發位於OPSWAT CIP 實驗室的 MicroLogix 1400 PLC 當機,假設攻擊者和 PLC 位於同一個網路,並且能夠彼此通訊。

在OPSWAT 實驗室的 MicroLogix 1400 PLC 的正常操作狀態下,當 PLC 處於 REMOTE RUN 模式時,所有暫存器的值都是有效的,並落在其資料類型的指定範圍內,表示使用者程式運作正常。

保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊

執行我們的 Python 腳本後,會有許多 Modbus TCP 封包傳送至 PLC,要求在未認證的情況下,將大量隨機值寫入所有暫存器:

保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊

接收到這些惡意封包請求後,包括 N13:3 和 N13:4 在內的所有暫存器的值都會被設定為 16,990。N13:3 和 N13:4 暫存器的 ADD 操作結果超出 16 位元暫存器的有效範圍。此問題會造成整數溢出,導致故障並中斷 PLC 的運作,如 FAULTED 狀態所示。

保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊

我們的OPSWAT 研究員已成功利用 CVE-2021-22659 令 MicroLogix 1400 PLC 崩潰。

修復

保護 OT 系統免受遠端攻擊:MetaDefender OT Security™ 如何保護 Micrologix™ 1400 控制器免受 CVE-20 攻擊

面對 CVE-2021-22659 之類的漏洞,全面的修復對於保護 OT 和網路物理系統至關重要。以下是一些可以用來防止攻擊擴散的關鍵策略:

  1. 偵測已知的 CVE:定期掃描網路以偵測 CVE-2021-22659 等弱點。
  2. 監控異常行為:標記與 Micrologix 1400 PLC 通訊頻率的異常增加,這可能暗示未經授權資料傳輸的持續攻擊。
  3. 識別新的裝置連接:當有新的裝置連線到 PLC 時,系統應該偵測到。
  4. 網路分割:隔離受影響的裝置有助於防止攻擊的橫向擴散,從而將影響降到最低。

OPSWAT的MetaDefender OT Security 可偵測 CVE、持續監控網路異常行為,並識別未經授權的連線,以滿足這些需求。它使用 AI 學習正常流量模式、建立基線行為,並實施政策以警告異常。這樣就能對潛在威脅立即做出明智的回應。

若發生利用 CVE-2021-22659 的攻擊,MetaDefender OT Security 會與MetaDefender Industrial Firewall 整合,以根據設定的規則封鎖可疑的通訊。防火牆使用 AI 來學習規律的流量模式,並執行政策以防止未經授權的連線。

透過整合這些偵測、警示與網路分段功能,MetaDefender OT Security 成為工業環境的理想防禦機制,能顯著降低營運技術環境中網路威脅的風險與影響。

探索OPSWAT的深度防禦網路安全平台如何強化和成熟您的勢態。立即與專家聯絡,免費試用。

隨時瞭解OPSWAT 的最新資訊!

立即註冊,即可接收最新的公司動態、故事、活動資訊等內容。