
本週我們將介紹第六個研討會案例研究:鐵路車站火車停靠安全監控系統上的重放攻擊。我們將全面介紹攻擊的策略、技術和程序 (TTP),並將包括關於重放攻擊效果的實際演示,整個攻擊情境還包括 FCI 攻擊和韌體攻擊,這些已在之前的案例研究中介紹過。如果您對其他案例研究感興趣,請參考以下連結:
- 案例研究 1:偽造資料/命令注入攻擊
- 案例研究 2:OT 網路 ARP 欺騙攻擊
- 案例研究 3:對 Modbus 通道的 DDoS 攻擊
- 案例研究 4:HMI-PLC 控制鏈上的中間人攻擊
- 案例研究 5:無人機韌體攻擊與防禦
程式設計目的:此網路攻擊案例研究的目標是開發一個研討會,旨在展示對鐵路 OT 系統內車站火車停靠安全監控攝影機進行重放攻擊的實際演示。在攻擊情境中,重放攻擊是由 OT 系統內一位老練的網路攻擊者執行的,他們利用了一次成功的攝影機韌體攻擊。具體來說,該攻擊針對位於車站停靠區域的火車偵測攝影機,該攝影機是火車監控系統的關鍵安全機制。該情境涉及一個紅隊攻擊者將惡意韌體植入火車偵測攝影機,從而破壞其功能。然後,這個被入侵的攝影機被用來捕獲影片片段,隨後將其重放並發送回車站控制室。這次攻擊的目標是擾亂安全監控系統並欺騙車站操作員,突顯 OT 系統中固有的漏洞以及網路攻擊對關鍵基礎設施的潛在影響。
攻擊者向量:韌體攻擊、重放攻擊
重要提示:所演示的攻擊案例用於不同級別 IT-OT 網路安全 ICS 課程的教育和培訓,請勿將其應用於任何真實世界的系統。
演示影片:https://youtu.be/nTv7dcfjZts?si=h-ptx8jN6Gs1Q1JK
# Author: Yuancheng Liu
# Created: 2024/03/11
# Version: v_0.1.4
# Copyright: Copyright (c) 2024 LiuYuancheng
# License: MIT License
簡介
本案例研究旨在建立一個簡化的鐵路火車偵測監控系統模擬,該系統是火車站停靠輔助系統中的雙重安全機制。主要目標是使用此平台來說明重放攻擊對系統的潛在影響。該專案包含兩個主要部分:
-
鐵路 OT 系統車站停靠輔助系統:在我們的鐵路模擬設置中,我們將設計一種機制,使車站操作員能夠管理鐵路停靠程序。該系統採用雙重安全檢查機制,同時使用火車位置/運動感測器和火車視覺偵測攝影機。當任一感測器偵測到火車在運動中進入車站時,它會觸發火車煞車以降低火車的速度。
-
OT 系統重放攻擊演示:本節將演示一個情境,其中紅隊攻擊者滲透到鐵路系統 OT 網路中,然後透過對火車位置感測器訊號控制鏈進行偽造資料注入 (FCI) 攻擊來攻擊停靠的雙重安全檢查機制,並透過攝影機影片重放攻擊來擾亂安全攝影機偵測系統。
該演示利用了火車偵測安全攝影機系統、偽造資料注入、攝影機韌體攻擊、攝影機影片重放攻擊以及論文中概述的動態韌體認證演算法 PAtt: Physics-based Attestation of Control Systems。
鐵路 OT 系統車站停靠輔助系統簡介
在我們的鐵路 OT 系統中,每個車站的入口停靠區域都配備了兩個不同的感測器:
-
一個位於鐵路旁邊的火車運動和位置偵測感測器。
-
一個面向停靠區域的火車物體偵測監控攝影機。
這兩個感測器的任務都是偵測火車進入車站時的運動。系統工作流程如下圖所示:

當火車接近車站並進入停靠準備區時:
-
連接到車站控制 PLC 的位置和運動偵測感測器會偵測到火車的存在,促使 PLC 發送一個訊號,指示火車到達車站的 HMI(在工作流程圖的藍色訊號部分中描述)。
-
同時,火車物體偵測攝影機會將經過火車的影片片段串流傳輸到專用的火車偵測電腦。該電腦利用電腦視覺 (CV) 物體偵測演算法來識別火車並計算其速度,隨後將此資訊發送到 HMI(在工作流程圖的綠色訊號部分中說明)。
-
HMI 處理來自 PLC 和火車偵測電腦的資料,評估火車是否正在減速並相應地管理車站的運營。
OT 車站停靠監控系統重放攻擊演示
攻擊演示將側重於破壞兩個安全機制:火車運動偵測感測器和火車物體偵測攝影機。
對於連接到 PLC 的運動偵測感測器,紅隊攻擊者可以透過偽造資料注入攻擊來操縱其感測器狀態。
對於火車物體偵測攝影機,駭客很難透過中間人攻擊來修改影片串流中的位元組資料。相反,攻擊者將對攝影機實施韌體攻擊以建立「後門」。隨後,將執行以下步驟來進行重放攻擊:
-
啟動韌體攻擊以將後門注入到攝影機中。
-
利用攝影機的後門來錄製一段指示未偵測到火車的影片。
-
與 PLC-HMI 部分的偽造資料注入攻擊同時,攻擊者將把預先錄製的影片傳輸到火車偵測電腦,從而觸發重放攻擊。
透過結合對 PLC 的偽造資料注入攻擊和對攝影機的重放攻擊,紅隊攻擊者可以擾亂車站停靠輔助系統,使車站 HMI 和操作員無法偵測到即將進站的火車以進行停靠。
重放攻擊的關鍵策略、技術和程序 (TTP)
監控攝影機重放攻擊的策略、技術和程序 (TTP) 涉及多個步驟,攻擊者可能會採取這些步驟來攔截、操縱和重放來自 OT(營運技術)系統中監控攝影機的影片片段。
偵察
-
策略:識別 OT 系統中的目標監控攝影機。
-
技術:收集有關攝影機的製造商和型號、位置、網路配置以及任何現有安全措施的資訊。
-
程序:紅隊攻擊者將掃描網路服務以找到攝影機託管的 RTSP 影片伺服器主機,並根據攝影機管理頁面找到攝影機的型號,然後從線上文件中找到一些攝影機 API。
攔截和分析
-
策略:監控監控攝影機與監控/錄製系統之間的通訊。
-
策略:捕獲透過網路傳輸的影片片段和相關的資料封包。
-
程序:紅隊攻擊者將分析攝影機連線封包的詳細資訊,以找到連線的影片處理電腦,從而識別重放攻擊目標。
重放
-
策略:將操縱過的影片片段重放到監控/錄製系統或操作員。
-
策略:確保重放的影片片段符合攻擊者的目標,例如隱藏未經授權的存取、篡改或其他惡意活動。
-
程序:紅隊攻擊將把預先儲存的偽造影片發送到影片處理電腦,以擾亂火車偵測安全機制。
背景知識
在本節中,我們將介紹重放攻擊和即時串流協定的基本知識,該協定用於將攝影機影片發送到火車影像 CV 偵測電腦。
重放攻擊
在 OT 系統網路攻擊中,重放攻擊經常被用來針對使用複雜協定或處理大量資料流的通訊通道或控制鏈。此方法不同於傳統的攻擊方法,例如 FDI/FCI(偽造資料注入/偽造命令注入)或中間人 (MitM) 攻擊。重放攻擊不是直接篡改資料或命令,而是涉及攔截和重新傳輸先前捕獲的資料封包。在處理複雜協定或大量資料串流時,此方法可能特別有效,使攻擊者能夠利用通訊過程中的漏洞,而無需直接更改傳輸的資訊。
重放攻擊是一種網路攻擊,其中攻擊者捕獲有效的網路傳輸,然後稍後重新傳輸它。主要目標是欺騙系統接受資料的重新傳輸作為合法的傳輸。此外,重放攻擊是危險的,因為它很難偵測。此外,即使原始傳輸已加密,它也可能成功。
攻擊者可以發動重放攻擊來獲得對系統或網路的未經授權的存取。此外,重放攻擊可以透過重複的請求淹沒系統來擾亂系統的正常運作。攻擊者可以計劃透過攔截和重新傳輸網路上的資料封包來執行此攻擊。此外,可以透過重放錄製的音訊或影片傳輸來執行成功的重放攻擊。
一個簡單的重放圖如下所示:

參考:https://www.baeldung.com/cs/replay-attacks
OT(營運技術)系統中對攝影機的重放攻擊涉及從攝影機捕獲影片片段、更改或重放它,然後將其發送回去以欺騙系統或其操作員。這種攻擊可能會產生各種影響,具體取決於攝影機在 OT 系統中的特定應用。
即時串流協定
為了使重放攻擊可以輕鬆實施,我們用於攝影機的影片協定是 RTSP(未加密)。
即時串流協定 (RTSP) 是一種應用層網路協定,專為多工和封包化 多媒體傳輸串流(例如互動式媒體、影片和音訊)透過合適的傳輸協定。RTSP 用於娛樂和通訊系統中,以控制串流媒體 伺服器。RealNetworks 在 1996 年開發了 RTSP,旨在控制串流伺服器中的娛樂和通訊系統。RTSP 利用使用者資料包協定 (UDP) 和即時傳輸協定 (RTP)。RTSP 是用於從 IP 攝影機串流影片資料的標準協定,並支援可靠的分段串流,使使用者能夠在仍在下載串流時觀看串流。該協定還提供廣泛的自訂選項,以幫助您建立自己的串流應用程式並新增新功能。RTSP 的主要缺點是它沒有廣泛用於透過網際網路廣播多媒體。
下面顯示了一個 RTSP 在運作中的範例,其中影片和音訊資料透過單獨的基於 UDP 的 RTP 串流傳輸:

該協定用於在端點之間建立和控制媒體會話。媒體伺服器的用戶端發出諸如播放、錄製和暫停等命令,以促進從伺服器到用戶端(隨選視訊)或從用戶端到伺服器的媒體串流的即時控制。
參考https://www.informit.com/articles/article.aspx?p=169578&seqNum=3
專案設計
在本節中,我們將介紹如何設計鐵路 OT 系統車站停靠輔助系統以及重放攻擊的詳細步驟。
鐵路 OT 系統車站停靠輔助系統的設計
火車安全監控攝影機是使用配備攝影機模組的 Raspberry Pi 3B+ 構建的。在物理設置中,在鐵路車站的指定減速區之前,放置了兩個熱反射感測器。這些感測器連接到 PLC 以用於火車偵測目的。在這些感測器旁邊,安裝了我們的監控攝影機以進一步偵測接近的火車。攝影機捕獲影片片段,然後將其傳輸到專用的影片處理電腦。我們的程式利用電腦視覺 (CV) 演算法來執行運動和火車物體偵測。
攝影機和感測器的位置如下所示:

在我們的數位雙生真實世界模擬器中,我們忠實地複製了此配置。當火車通過感測器和攝影機偵測區域時:
-
PLC 將來自感測器的電訊號轉換為數位格式,並將其傳輸到人機介面 (HMI)。HMI 顯示火車偵測結果,並根據偵測時間和火車長度計算火車的速度
speed-val-1。 -
同時,在攝影機的影片處理電腦上運行的運動偵測程式會觸發火車物體偵測演算法以確認火車的通過。隨後,它會計算火車的速度
speed-val-2。
如果兩個速度值(speed-val-1 和 speed-val-2)中的任何一個超過指定的火車停靠速度,則車站控制 HMI 會發出訊號以指示火車減速。
詳細的操作情境如下所示:

監控攝影機重放攻擊的設計
正如前面鐵路 OT 系統站台對接輔助系統工作流程的介紹所示,有兩種安全機制:列車運動檢測感測器和列車物體檢測攝影機。關於連接到 PLC 的運動檢測感測器,惡意行為者可以通過偽造數據注入攻擊來改變其狀態。然而,通過中間人攻擊來操縱列車物體檢測攝影機的視頻流中的字節數據,對於駭客來說是具有挑戰性的。因此,攻擊者選擇對攝影機執行韌體攻擊,創建一個「後門」以方便重放攻擊,步驟如下:
-
實施韌體攻擊,使攝影機能夠運行帶有後門的修改後韌體。
-
利用攝影機的後門錄製一段沒有列車通過的鐵路視頻。
-
在對 PLC-HMI 介面進行偽造數據注入攻擊的同時,中斷從攝影機傳輸到列車檢測電腦的視頻流。隨後,重放先前步驟中捕獲的預錄製視頻。
詳細的攻擊流程如下所示:

通過對 PLC 進行偽造數據注入攻擊和對攝影機進行重放攻擊,紅隊攻擊者擾亂了站台對接輔助系統,使站台 HMI 和操作員無法檢測到即將進站的列車。
程式設定
開發環境
Python 3.7.4, C
額外需要的函式庫
-
Python OpenCV (需要安裝以進行運動檢測和目標追蹤)
Raspberry PI install opencv:
sudo pip3 install opencv-contrib-python==3.4.3.18
sudo apt-get install libhdf5-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libjasper-dev
sudo apt-get install libqt4-test
sudo apt-get install libqtgui4
sudo apt-get update
-
numpy (圖像編碼/解碼需要)
pip install numpyHardware (Raspberry PI3B+ with Camera module)
硬體需求
Raspberry PI3B+ with Camera module. https://projects.raspberrypi.org/en/projects/getting-started-with-picamera

程式檔案列表
| 程式檔案 | 執行環境 | 描述 |
|---|---|---|
| cameraClient.py | python3.7 | 此模組將創建一個在 Raspberry PI 上運行的客戶端程式,以捕獲攝影機圖像並將圖像回傳到連接的攝影機伺服器。 |
| cameraServer.py | python3.7 | 此模組將創建一個攝影機檢視器伺服器,以通過 UDP 客戶端連接到 |
| pattChecker.py | python3.7 | 此模組將創建一個攝影機韌體 PATT 檢查功能。 |
| pattClient.py | python3.7 | 此模組創建一個檔案 PATT 檢查客戶端,並在伺服器連接並將位址列表發送到該客戶端時回傳 PATT 值。 |
| pattServer.py | python3.7 | 此模組將創建一個 PATT 檔案檢查器程式。它會將 PATT 字節檢查列表發送到客戶端,並比較回傳的 PATT 值。 |
| udpCom.py | python3.7 | 此模組將提供 UDP 客戶端和伺服器通信 API。 |
| udpComTest.py | python3.7 | 此模組將提供一個多線程測試案例程式,以使用埠 5005 測試 UDP 通信模組。 |
| firmwareSample | 測試模式下使用的韌體範例檔案。 | |
| my_video.h264 | 用於顯示受攻擊情況的 H264 視頻。 |
程式用法/執行
通信協定
系統使用 UDP 進行攝影機視頻流控制和認證檢查。
| 攝影機客戶端 + 伺服器和 PATT 檢查 + 驗證器將通過具有不同埠的 UDP 相互通信。 |
|---|
| 攝影機客戶端 [ UDP 伺服器埠:5005] <= 圖像請求 <= 攝影機伺服器 [UDP 客戶端] |
| 攝影機客戶端 [ UDP 伺服器埠:5005] => 編碼圖像 => 攝影機伺服器 [UDP 客戶端] |
| PATT 檢查器 [ UDP 伺服器埠:5006] <= 隨機位址列表 <= PATT 驗證器 [UDP 客戶端] |
| PATT 檢查器 [ UDP 伺服器埠:5006] => cameraClient PATT 值 => PATT 驗證器 [UDP 客戶端] |
通信詳細圖如下所示:

運行程式
韌體更新認證:在本節中,我們將創建一個韌體檢查器和一個驗證器程式,以使用 PATT(基於物理的控制系統認證)演算法進行韌體認證。在 Raspberry PI 中運行的檢查器將根據驗證器發送的隨機字節位址計算攝影機韌體(攝影機客戶端)的 PATT 雜湊值。驗證器會將韌體的 PATT 值與其本地檔案的計算結果進行比較,以給出認證結果。
在 Raspberry PI 上運行程式:
IOT IP camera program: python cameraClient.py
Attestation program checker: python pattClient.py
在 Host Computer 上運行程式:
IOT camera targets detection program: python cameraServer.py
Attestation program verifier: python pattServer.py
認證程式驗證器將顯示如下結果:

詳細用法請查看 doc 資料夾中的 Usage menu.pdf。
參考文獻
-
PATT 韌體認證:https://www.usenix.org/system/files/raid2019-ghaeini.pdf
-
RTSP 視頻協定:https://www.informit.com/articles/article.aspx?p=169578&seqNum=3
感謝您的閱讀,如果您有任何問題和建議,請隨時給我留言。如果您能提供一些意見並分享任何改進建議,我們將不勝感激,以便我們能夠使我們的工作做得更好〜
上次編輯者:LiuYuancheng([email protected]) 於 26/03/2024,如果您有任何問題,請隨時給我留言。
No comment for this article.