背景
2022年4月12日烏克蘭計算機應急響應中心(CERT-UA)發布了針對烏克蘭能源設備的針對性攻擊安全事件公告,公告中描述了名為SandwormGroup的組織在2022年4月8使用Industroyer2和CADDYWIPER惡意軟件對烏克蘭最大的能源公司能源設施開展攻擊,造成了變電站斷線,截至到4月12日攻擊的實施已經被阻止。其中CADDYWIPER惡意軟件曾多次被報道在俄烏戰爭中用于擦除磁盤文件,Industroyer2則和造成2016年烏克蘭停電的Industroyer一脈相承,病毒使用C++編寫,利用IEC 60870-5-104協議改變RTU設備狀態,使用高度定制化的方式操作指定IP地址的指定IOA(信息對象地址),以達到破壞電網的目的。
博智安全非攻研究院對Industroyer2樣本展開了分析,并對樣本中的工控網絡行為進行了進一步研究。
樣本分析
樣本的編譯時間為2022年3月23日,距被報道的3月28日不到一星期。
程序為控制臺應用程序,默認會進行控制臺輸出:
這些控制臺調試信息實際記錄了樣本的網絡行為,包括目標的IP端口,發送數據包的數量等,和目標成功建立連接后甚至會打印收發包數據內容。
從程序中可以看到,樣本支持對收發數據包的解析,并且有專門的配置選項控制是否輸出。每一個執行的步驟都有專門的編號,可以從日志中追蹤到具體步驟。
上圖中的26784就是這段步驟的編號。樣本支持-o參數將標準控制臺輸出重定向到文件,便于后面進行調試分析;-t參數支持樣本執行延遲。
從這個角度看,該樣本更像是開發調試狀態下的工具:因為正式投入攻擊的版本一般會盡可能減少調試信息以提高被分析溯源的難度,但也不排除時間過于緊迫倉促上馬的可能。
主要行為
配置文件
該樣本有三套硬編碼的配置,程序啟動三個線程執行這三個配置:
三個配置都以字符串形式給出,再在線程中解析并使用。這種繞彎的方式很難不讓人聯想,很有可能是一個payload用另一個殼包裹了一下,同時執行三個配置。
結束進程并重命名文件
在執行配置線程中,樣本首先結束掉指定進程,即PServiceControl.exe和PService_PPD.exe,并將指定目錄中的對應進程可執行文件重命名,對應即是將 D:OIKDevCounterPService_PPD.exe重命名為D:OIKDevCounterPService_PPD.exe.MZ。此操作的目的可能是破壞已存在的控制服務,并阻止服務重啟。
IEC-60870-5-104網絡行為
該樣本的主要行為就是使用IEC-60870-5-104(簡稱IEC-104)協議和目標設備進行通信,IEC-104協議基于IEC-101協議演化而來,主要用于電力系統控制和信息采集。
通信過程
主要通信過程可以概況為:
1. 根據配置建立socket連接
2. 向目標發送Test Frame Activation IEC-104數據包
3. 向目標發送Start DataTransfer Activation IEC-104數據包
2、3步主要目的是測試目標存活,如果沒有回應則停止繼續發送
4.向目標發送 typeid 為C_IC_NA_1 (Interrogation Command)的activation數據包
5.根據配置中的數組循環發送激活/關閉命令到對應的IOA (Address of the Object)
6.根據配置循環發送,直到達到最大循環次數或網絡錯誤則退出
不難看出前4步都是為了確保設備在活動狀態,可以接受IOA設置的命令。IOA對于工控設備來說一般類似于唯一地址,準確來說是ASDU 和IOA 合起來構成唯一地址。一般在配置中ASDU只有C_SC_NA_1 (Single Command) 和C_DC_NA_1(Double Command)兩種,對應某個選項開關,或是某個采樣數值。下表中列出了三個目標操作的IOA,該表為了方便,對連續的IOA進行了合并,實際上發送的IOA命令是帶有順序編號的,和表中并不一致。
實際對應動作
OA代表的實際意義對于不同的設備廠商、設備型號,定制化開發均不相同。由于工控領域的封閉性,在沒有對應設備的詳細信息之前,是難以進一步確定的。通過搜索相關公開信息,發現第二個目標的1101-1108 IOA操作,與西門子SIPROTEC IOA 的對應表可以基本對應起來,SIPROTECT1101-1108 對應信息如下表所示:
SIPROTECT 是西門子的繼電保護器系列產品,支持以太網和IEC-104協議,如下圖所示:
1101–1108 的類別是HMI設備,假如目標192.168.122.XX是一個HMI設備,針對此設備的IOA命令就可以理解為,讓HMI設備顯示繼電保護狀態的各項為 Active,同時顯示外部電壓異常,而此時繼電保護可能已經被關閉了。這樣推理 10.82.XX.XX 比較可能是繼電保護器,192.168.121.XX可能是SCADA上位機。
行為仿真
通過在仿真靶場中構建IEC-104Server,配置Server為指定IP地址,在靶場中執行樣本,可成功監測到病毒使用IEC-104協議連接、操作IOAs的行為:
結論
Industroyer也被稱為 CrashOverride,是“自震網病毒以來對工業控制系統的最大威脅”,它既是模塊化的,又能夠直接控制配電變電站的開關和斷路器。Industroyer2繼承和延續了Industroyer風格,但僅保留了IEC60870-5-104協議對電站控制系統攻擊,同時樣本中的攻擊目標IP地址明確,攻擊過程清晰、直達要害,這些種種跡象均表明攻擊者對目標電力系統環境非常了解,但入侵者是如何將病毒從 IT 網絡轉移到工業控制系統網絡目前尚不清楚,基本可以肯定的是,Industroyer2是對電力系統成功攻擊的又一個案例。