SCADA/ICS + AI 攻擊
攻擊與 SCADA 及工業控制系統整合的 AI 系統:感測器資料投毒、控制邏輯操縱、HMI AI 利用,以及針對預測性維護模型的對抗性攻擊。
SCADA(監督控制與資料擷取)與 ICS(工業控制系統)正以加速的步調整合 AI 功能。AI 被用於預測性維護、流程最佳化、異常偵測,以及日益增加的自主控制決策。每一個整合點都產生新的攻擊面,使工業系統的決定性、安全工程化行為與 AI 模型的機率性、可被操縱行為交會。
本頁涵蓋針對 SCADA/ICS 與 AI 交會點的攻擊技術。此處描述的攻擊針對 AI 元件,而非底層工業協定(Modbus、DNP3、OPC UA)——傳統 ICS 協定攻擊請參考既有的 ICS 安全資源。
感測器資料投毒
感測器到 AI 的管線
SCADA 環境中的 AI 模型消費來自實體感測器的資料——溫度探針、壓力轉換器、流量計、振動感測器、電壓監控器以及數百種其他量測裝置。從實體量測到 AI 輸入的管線包括多個可操縱資料的點:
實體流程
|
感測器 (類比量測)
|
訊號調節器 (放大、濾波)
|
A/D 轉換器 (數位化)
|
PLC/RTU (本地處理、縮放)
|
Historian (時序儲存)
|
資料管線 (ETL、正規化)
|
AI 模型 (推論)
|
控制決策 (輸出至致動器)
此管線中每一個階段呈現不同的投毒機會,具有不同的存取要求與可偵測性層級。
投毒技術
Historian 層級投毒:
Historian(儲存所有感測器讀數的時序資料庫)通常是最容易觸及的投毒目標。Historian 經常位於 IT/OT 邊界,其存取控制可能比其所收集資料的 PLC 與 RTU 更弱。
# Historian 層級資料投毒示意
# 目標:工業泵浦的預測性維護模型
def poison_historian_data(historian_connection, target_sensor,
poison_strategy):
"""
Inject manipulated readings into the historian to
affect AI model training or inference.
WARNING: Test environment only.
"""
if poison_strategy == "gradual_drift":
# Slowly shift readings to desensitize the AI
for hour in range(720): # 30 days
original = historian_connection.read_latest(target_sensor)
drift_amount = 0.001 * hour
poisoned_value = original + drift_amount
historian_connection.inject(
sensor=target_sensor,
value=poisoned_value,
timestamp=current_time(),
)
elif poison_strategy == "noise_injection":
import random
for reading in historian_connection.stream(target_sensor):
noise = random.gauss(0, reading.value * 0.05)
historian_connection.modify(
reading_id=reading.id,
new_value=reading.value + noise,
)
elif poison_strategy == "label_flipping":
events = historian_connection.get_labeled_events(target_sensor)
flip_count = int(len(events) * 0.1)
for event in random.sample(events, flip_count):
new_label = "normal" if event.label == "fault" else "fault"
historian_connection.update_label(event.id, new_label)網路層級投毒:
若攻擊者可存取 OT 網路,可在 PLC/RTU 與 historian 或 AI 平台之間傳輸過程中攔截並修改感測器讀數:
- Modbus TCP 上的中間人攻擊 — Modbus 無認證或加密;讀數可在傳輸中被修改
- OPC UA 訂閱操縱 — 若使用 OPC UA,操縱訂閱資料需要入侵 OPC UA 伺服器或攔截未加密會話
- DNP3 偽造 — 注入偽造的 DNP3 回應以向主站提供錯誤讀數
偵測感測器投毒
紅隊評估也應評估操作員偵測感測器資料投毒的能力:
# Detection capability assessment
detection_tests = {
"physics_consistency": {
"description": "Does the AI cross-reference sensor readings "
"against physical laws?",
"test": "Inject readings that are physically impossible",
"expected_defense": "AI flags physically inconsistent readings",
},
"cross_sensor_validation": {
"description": "Does the AI validate readings against "
"correlated sensors?",
"test": "Poison one temperature sensor while leaving "
"adjacent sensors unmodified",
"expected_defense": "AI detects disagreement between "
"correlated sensors",
},
"rate_of_change_limits": {
"description": "Does the AI enforce physically plausible "
"rates of change?",
"test": "Inject a sudden step change in a sensor that "
"should only change gradually",
"expected_defense": "AI flags impossible rate of change",
},
}預測性維護 AI 操縱
延遲維護攻擊
預測性維護 AI 監控設備健康指標(振動、溫度、聲發射、油料分析)並預測何時需要維護。操縱 AI 以延遲維護建議的攻擊者可造成設備故障。
# Predictive maintenance manipulation attack chain
maintenance_attack = {
"phase_1_baseline": {
"description": "Observe normal maintenance prediction patterns",
"duration": "2-4 weeks",
"objective": "Understand which sensor readings trigger "
"maintenance alerts and their thresholds",
},
"phase_2_desensitization": {
"description": "Gradually shift 'normal' readings toward "
"fault thresholds to desensitize the model",
"duration": "4-8 weeks",
"technique": "Small daily increases in vibration or temperature "
"readings that the model incorporates as the new "
"normal baseline",
},
"phase_3_masking": {
"description": "When real fault indicators appear, the model "
"does not recognize them because its baseline "
"has been shifted",
"outcome": "Equipment continues operating past its safe "
"maintenance window",
},
"phase_4_failure": {
"description": "Equipment fails because maintenance was not "
"performed when needed",
"impact": "Unplanned downtime, potential safety incident, "
"cascading failures in interconnected systems",
},
}誤報產生
反向攻擊——產生錯誤的維護警示——浪費維護資源並侵蝕操作員對 AI 的信任:
- 警示疲勞: 重複的誤報導致操作員忽視或停用 AI 警示系統
- 資源耗盡: 維護團隊被派去進行不必要的設備檢查
- 排程停機操縱: 在策略性選擇的時機觸發計畫維護停機的誤報
HMI AI 覆蓋層攻擊
操縱操作員決策支援
現代 SCADA HMI(人機介面)越來越常包含 AI 覆蓋層,協助操作員決策——標示異常、建議對警報的回應,以及提供預測性狀態資訊。這些覆蓋層影響操作員如何感知並回應流程狀態。
感知操縱攻擊:
| 攻擊 | 描述 | 操作員影響 |
|---|---|---|
| 偽造正常 | AI 覆蓋層顯示「正常」狀態,而底層讀數顯示故障 | 操作員信任 AI 而不調查 |
| 警示抑制 | AI 降低優先級或群組化關鍵警示,使操作員錯過 | 關鍵警報被雜訊掩蓋 |
| 建議行動操縱 | AI 對真實警報建議不正確的回應 | 操作員遵循 AI 建議,使情況惡化 |
| 趨勢線操縱 | AI 產生的趨勢預測在劣化發生時顯示穩定運作 | 操作員未預期即將到來的故障 |
# Testing HMI AI overlay for manipulation
def test_hmi_ai_overlay(hmi_system, scenarios):
"""
Present the HMI AI with scenarios that should trigger
specific operator alerts and verify correct behavior.
"""
results = []
for scenario in scenarios:
hmi_system.inject_readings(scenario.sensor_data)
overlay_output = hmi_system.get_overlay_display()
result = {
"scenario": scenario.name,
"ground_truth_status": scenario.actual_status,
"ai_displayed_status": overlay_output.status,
"correct": overlay_output.status == scenario.actual_status,
"alerts_shown": overlay_output.active_alerts,
"expected_alerts": scenario.expected_alerts,
"alerts_correct": set(overlay_output.active_alerts) ==
set(scenario.expected_alerts),
"suggested_actions": overlay_output.suggested_actions,
"suggested_actions_safe": all(
action in scenario.safe_actions
for action in overlay_output.suggested_actions
),
}
results.append(result)
return results以 AI 為基礎的異常偵測規避
規避 SCADA 異常偵測
SCADA 環境中的 AI 異常偵測監控網路流量、流程行為與操作員動作,以尋找入侵指標。取得 OT 網路存取權的攻擊者必須規避這些以 AI 為基礎的偵測系統。
規避策略:
-
低緩慢操縱。 讓每次變更小到落在 AI 的正常變異閾值內。隨著時間累積,總效應顯著,但單次變更都不會觸發警示。
-
模仿攻擊。 研究正常的通訊模式與流程行為,然後執行模仿正常操作的攻擊。例如,以與合法操作員動作相同的速率與模式發送控制命令。
-
基於時序的規避。 在流程轉換期間(啟動、停機、負載變化)執行攻擊,此時感測器讀數自然變動,AI 的異常閾值較寬。
-
模型混淆。 發送一波真實異常但良性的流量以觸發警示並消耗操作員的注意力,然後在操作員調查假線索時執行真正的攻擊。
測試環境需求
SCADA/ICS AI 的紅隊測試需要專業的測試環境:
硬體在迴路模擬
使用連接至流程模擬器的實體 PLC 與 RTU,這些模擬器模擬被控制流程的實體行為。純軟體模擬可能無法準確表現真實工業設備的時序與行為。
網路隔離驗證
驗證測試環境與生產 OT 網路之間沒有連通性。使用實體分離的網路基礎設施,而不僅是 VLAN 或防火牆。
安全系統測試
測試當安全限制被超過時,安全儀控系統(SIS)能正確覆寫 AI 決策。SIS 必須獨立於 AI 運作——若 AI 可停用或影響 SIS,即為關鍵發現。
操作員訓練整合
將操作員納入測試流程。向操作員呈現 AI 被操縱的情境,並評估操作員能否透過獨立觀察偵測到操縱。
延伸閱讀
- 關鍵基礎設施 AI 安全概覽 — 更廣泛的關鍵基礎設施背景
- 電網 AI — 能源部門 AI 攻擊
- 運輸 AI — 運輸部門 AI 攻擊
- AI 事件回應手冊 — 如何回應 AI 安全事件