安全動態(tài)

FireEye報告:揭露新型工控系統惡意軟件TRITON

來源:聚銘網絡    發(fā)布時間:2017-12-24    瀏覽次數:
 

信息來源:FreeBuf

Mandiant最近針對中東某企業(yè)關鍵基礎設施遭受的攻擊事件進行了安全響應,攻擊者通過部署特制的惡意軟件來控制目標工業(yè)安全系統,由于工業(yè)安全系統具備對工控系統的緊急關閉功能,因此我們有足夠信心斷定,該惡意軟件是攻擊者針對工控系統的硬件破壞或突然關停而開發(fā)的。目前,我們把這種惡意軟件命名為TRITON,攻擊者利用TRITON攻擊框架能與施耐德電氣公司的Triconex安全儀表系統控制器(SIS)形成通信交互,盡管我們暫時還未追溯定位到實際的攻擊者,但我們肯定該攻擊事件的幕后黑手為國家支持型黑客。

TRITON特點

TRITON是繼2010年針對伊朗的Stuxnet和2016年針對烏克蘭的Industroyer后,為數不多可以被公開檢測識別到的工控系統惡意軟件系列之一,TRITON與這些攻擊類似,它可以破壞工控系統安全機制并執(zhí)行預期惡意功能,從而造成嚴重的物理破壞攻擊后果。

2017-12-19_160520.png

攻擊事件概述

攻擊者通過獲得安全儀表系統(SIS)工作站的遠程訪問控制權限,對SIS控制器進行了重編譯,進而在SIS系統中部署了TRITON攻擊框架。

此次攻擊事件中,一些SIS控制器都形成了失效保護狀態(tài)(failed safe state),造成工控進程的自動關閉,因此引起了管理者的察覺并展開了調查。調查后發(fā)現,當應用代碼在冗余處理單元之間驗證失效時(可引發(fā)量產診斷錯誤消息),就會導致SIS控制器進入安全關閉狀態(tài)。

我們確信攻擊者希望隱蔽執(zhí)行自動關閉操作造成對工控系統的物理破壞,主要基于以下幾方面原因:

修改安全儀表系統(SIS)可以導致功能異常,增加物理破壞機率

TRITON會修改SIS控制器中的應用程序內存導致驗證失效

驗證失效狀態(tài)在TRITON處于運行狀態(tài)時發(fā)生

工控網絡中存在的孤立或外部條件不可能造成這種錯誤

攻擊溯源

針對此次攻擊事件,FireEye目前還暫未準確溯源定位到實際的攻擊者,但可以肯定的是這是國家支持型的黑客攻擊。攻擊以關鍵基礎設施為目標,具備持續(xù)性,且缺乏明確的經濟利益目的,結合創(chuàng)建TRITON攻擊框架所需的充足技術資源來看,這明顯是國家黑客形為??梢詮囊韵聨追矫鎭碜鞒雠袛啵?

攻擊者以SIS系統為目標,體現出其希望造成嚴重物理破壞的目的,這與網絡犯罪集團行為不符。

攻擊者在獲得SIS系統后不久就部署了TRITON,表示他們已經預先構建并測試了需要訪問硬件和軟件的工具。 TRITON也被設計為使用專有的TriStation協議進行通信,該協議沒有被公開記錄,暗示對手獨立地反向設計了該協議。

攻擊者在取得SIS系統控制權后不久就部署了TRITON,明顯表示他們已經預先創(chuàng)建并測試過該惡意工具的軟硬件運行環(huán)境;另外,TRITON框架還被設置為使用專門未公開的TriStation協議來進行通信,可以說明,攻擊對手已經可以完全獨立地逆向該通信協議。

這種以關鍵基礎設施為目標的破壞、中斷或癱瘓攻擊特征,與俄羅斯、伊朗、朝鮮、美國和以色列在全球進行的大量網絡攻擊和偵察活動相符,這種攻擊不會馬上造成立竿見影的破壞效果,它會形成駐留為后續(xù)的深入攻擊進行潛伏。

過程控制和安全儀表系統(Safety Instrumented Systems)背景

現代工業(yè)過程控制和自動化系統依靠各種先進的控制系統和安全功能,這些系統和功能通常被稱為工業(yè)控制系統(ICS)或操作技術(OT)。

分布式控制系統(DCS)為操作人員提供遠程監(jiān)視和控制工業(yè)過程的能力。它是由計算機、軟件應用程序和控制器組成的計算機控制系統。工程工作站是用來對控制系統應用和其他控制系統設備進行配置、維護和診斷的獨立計算機。

安全儀表系統(Safety Instrumented Systems,SIS)是一個獨立的控制系統,可獨立監(jiān)控受控過程狀態(tài)。如果過程超過定義危險狀態(tài)的參數,則SIS會嘗試將過程恢復到安全狀態(tài)或自動執(zhí)行過程的安全關閉。如果SIS和DCS控制都失效,那么只有看工業(yè)設施的安全設計了,如對設備(e.g防爆片)的機械保護、物理警報、應急程序和其他危險狀況的緩解機制。

資產設備管理者會采用不同方法將工廠的DCS與SIS系統連接起來,傳統方法是依賴通信基礎設施和控制策略的隔離原則。至少在過去十年間,基于低成本、易用性和信息交流目的,出現了集成DCS和SIS設計的趨勢。此次TRITON攻擊反映出了DCS與SIS集成設計雙向通信的安全風險。

安全儀表系統(SIS)威脅建模和攻擊場景

針對工控系統(ICS)破壞性攻擊的生命周期與其他類型網絡攻擊類似,但有幾個關鍵的區(qū)別。 首先,攻擊者的任務是破壞業(yè)務流程而不是竊取數據;其次,攻擊者必須進行OT偵察,并有足夠的專業(yè)工程知識來了解目標系統工業(yè)過程,以實現對其成功的控制利用。

上圖表示過程控制環(huán)境中的網絡安全和安全控制之間的關系,即使網絡安全措施失效,安全控制措施也會防止物理破壞,為了最大化實現物理破壞,網絡攻擊者還需繞過一些安全控制手段。

以下安全儀表系統(SIS)威脅模型揭露了多種攻擊者可用的攻擊路徑:

攻擊路徑 1: 使用SIS系統進行過程關閉。攻擊者重編譯SIS邏輯控制器導致其跳閘或關閉一個處于安全狀態(tài)的控制過程,換句話說,也能觸發(fā)誤報。

目的:導致停機后造成經濟損失,或引起停工后復雜的啟動程序。

攻擊路徑 2: 重編譯SIS以支持不安全狀態(tài)。攻擊者重編譯SIS邏輯控制器,讓其支持不安全狀態(tài)的存在。

目的:由于SIS功能喪失,增加的危險狀況會導致嚴重物理后果風險,如對設備、產品、環(huán)境和人員安全的影響。

攻擊路徑 3:重編譯SIS控制器,當使用DCS時,讓其支持不安全的危險狀態(tài)。攻擊者可以控制DCS進程形成危險狀態(tài),并阻止SIS系統正常運行。

目的:對人身安全、工廠環(huán)境或設備造成破壞,其影響程度取決于過程和設備設計的物理限制條件。

攻擊意圖分析

我們認為攻擊者的長期目的是造成物理破壞,基于這樣的事實,攻擊者具備了操縱過程或關閉設備的能力后,首先會在DCS系統上形成駐留,以伺機入侵SIS系統。對DCS和SIS系統的入侵會導致物理和機械保障措施的最大程度破壞。

一旦滲透進入SIS網絡后,攻擊者會立即部署預先構建的TRITON攻擊框架,利用TriStation協議與SIS控制器發(fā)起通信,攻擊者可以發(fā)送停止命令形成進程關閉,或向SIS控制器上傳惡意代碼造成保護失效。與此不同的是,攻擊者為了在SIS控制器中形成功能控制邏輯,會在一段時間內反復進行多次嘗試,即使由于攻擊腳本的條件檢查提示出錯,但攻擊者還會繼續(xù)嘗試,這也表明攻擊者的最終意圖就是要造成控制進程的意外關閉。

值得注意的是,我們曾多次發(fā)現了一些長期入侵工控系統(ICS)但并未造成系統破壞或中斷的攻擊事件,如長年入侵西方ICS的俄羅斯沙蟲團隊(Sandworm)等組織,他們似乎只是入侵,還沒表現出明顯的指哪打哪的系統中斷攻擊能力。

TRITON惡意軟件功能

TRITON攻擊框架具備多種惡意功能,包括程序讀寫、各種功能讀寫以及查詢SIS控制器狀態(tài),但trilog.exe樣本只具備某些功能,不包括TRITON的全面?zhèn)刹旃δ堋?

TRITON惡意軟件具備與Triconex SIS控制器進行通信的能力(如發(fā)送特定指令,實現關?;騼热葑x取),并可用攻擊者定義的Payload對其進行遠程重編譯。Mandiant分析的TRITON樣本中包含了攻擊者制作的運行Triconex控制器執(zhí)行表的程序,該樣本包含了一個正常且監(jiān)控控制器運行狀態(tài)的合法程序,如果控制器發(fā)生失效故障,TRITON會嘗試返回一個偽造的正常運行狀態(tài);如果控制器發(fā)生故障而在規(guī)定時間內未恢復到安全狀態(tài)時,則該樣本將會用無效數據覆蓋SIS控制器中的惡意程序形成隱蔽。

TRITON攻擊技術分析

Fig4 HR.png

TRITON攻擊框架會被部署在運行有Windows操作系統的SIS工程工作站中,其中的惡意軟件偽裝成合法的用于查看日志的TriStation Triconex Trilog應用程序,并通過一個Py2EXE編譯后的Python腳本進行植入,而該Python腳本程序又依賴于一個包含標準Python庫和開源庫的zip壓縮文件,以及攻擊者開發(fā)的用于與Triconex控制器交互的Triconex攻擊框架。 與可執(zhí)行的惡意程序一起,還會生成兩個二進制文件inject.bin(惡意功能代碼)和imain.bin(惡意控制邏輯)作為攻擊控制器的Payload,這兩個文件名也被硬編碼寫入到了Py2EXE編譯的python腳本中。

Trilog.exe在命令行中會選擇目標Triconex設備IP地址作為攻擊選項,它沒有利用底層TRITON庫的Triconex設備發(fā)現功能,而是為環(huán)境中的每個目標控制器分別調用trilog.exe實例,一旦被調用,trilog.exe將檢查控制器狀態(tài),然后讀取由TriStation協議公開的配置信息,如果控制器處于運行狀態(tài),trilog.exe會把兩個Payload文件inject.bin和imain.bin進行編碼,并將它們傳遞給通信庫,以便將其附加到控制器的程序存儲器和執(zhí)行表中。

當Payload文件被插入Triconex控制器內存后,腳本開始倒計時,并執(zhí)行控制器狀態(tài)定期檢查,如果檢測到控制器錯誤,通信庫的方法SafeAppendProgramMod會嘗試使用TriStation協議命令將控制器重置為之前狀態(tài),如果檢測到控制器失效,trilog.exe會向內存嘗試寫入一個小的“虛擬”程序。我們認為這是一種反取證技術,用于隱藏Triconex控制器中的攻擊代碼。

Mandiant與被攻擊企業(yè)合作,利用實驗室環(huán)境中有效的Triconex控制器運行trilog.exe后,在惡意軟件中發(fā)現了一個防止Payload文件持久駐留的檢查條件,Mandiant通過修改攻擊腳本刪除該檢查條件后,Payload文件則會持久駐留于控制器內存中,且不影響控制器運行。

TRITON可以執(zhí)行合法TriStation應用程序的TriStation協議,并通過該協議來配置SIS控制器。

另外,攻擊者還創(chuàng)建了一個名為TsHi的高層接口,通過該接口使用TRITON框架實現攻擊腳本執(zhí)行。TsHi接口暴露了惡意軟件的偵察和攻擊能力,這些功能實現通常需要接收來自用戶的二進制數據,并在數據傳遞到低級庫中以進行序列化到網絡的過程之前,會進行代碼“簽名”和校驗步驟。

另一個攻擊者編寫的模塊TsBase則包含了TsHi調用函數,它能將攻擊者的預期操作轉化為相應的TriStation協議功能代碼。對于某些功能而言,它還可將數據打包填充為適當格式。

TsLow攻擊模塊實現了TriStation UDP通信協議。TsBase庫則主要依賴ts_exec方法,該方法采用功能代碼和預期響應代碼,并通過UDP將Payload命令序列化,它還會檢查控制器對期望值的響應,并當檢查成功或失敗時,返回相應的數據結構表示對象。

TsLow中還包含了用于檢查目標控制器連通性的連接測試方法,如果調用沒發(fā)現目標,它會運行設備發(fā)現功能detect_ip,該功能使用IP廣播包方式,通過腳本調用,在TriStation協議中執(zhí)行“ping”消息,來探測控制器。

防護建議

為避免遭受TRITON類攻擊,資產設備管理者可以考慮以下幾種防護措施:

以技術可行方式,將儀表安全系統網絡與過程控制和信息系統網絡隔離,能對SIS控制器執(zhí)行編程的工程工作站不應與其它任何DCS過程控制或信息系統形成雙宿網絡;

充分利用對安全控制器進行控制編程的硬件功能,這些功能通常采用物理鑰匙形成交換控制,在Triconex控制器上,除了預定的編程事件期間,其它時候,鑰匙不應處于編程模式狀態(tài);

對鑰匙關鍵位置變化實施變更管理措施,定期審核當前的關鍵狀態(tài);

對于依賴SIS系統提供數據的任何應用程序,應使用單向網關而不是雙向網絡進行連接;

在任何通過TCP / IP訪問SIS系統的服務器或工作站終端上,實行嚴格的訪問控制和應用程序白名單機制;

監(jiān)控ICS系統異常的網絡通信流量。

下圖為Triconex系統主機架鑰匙開關:

IoC威脅指標

Indicators


ioc1.png

ioc2.png



 
 

上一篇:中國電信告別程控交換 開啟中國全光高速新時代

下一篇:2017年12月24日 聚銘安全速遞