西門子PLC蠕蟲病毒研究
西門子PLC蠕蟲病毒研究
目 錄
1.PLC概述
2.PLC蠕蟲研究
2.1 研究背景
2.2 PLC脆弱性攻擊模型
2.3研究內容
2.4 下一步研究思路
1.PLC概述
可程式設計邏輯模組,英文名為“Programmable Logic Controller”,簡稱“PLC”,是一種專門為工業環境下應用而設計的數字運算操作電子系統。
PLC裝置從本質上來說是一臺工業計算機。其基本架構包含用於運算的中央處理器(CPU),用於儲存系統程式、使用者程式和資料的儲存器,以及用於實現對輸入和輸出裝置的自動控制的程式設計器。PLC與馮諾依曼體系結構定義一致,即“一臺計算機必須有一個儲存器、一個控制器,一個運算器,並且程式和資料統一儲存並在程式控制下自動工作”。如圖1所示。
圖1 PLC體系架構
PLC是工業網路現場層的最為基礎的控制器件。其具有光電隔離和電器隔離特性,可靠性高;產品實現系列化和模組化,通用性強;支援梯形圖(LAD)和SCL語言等程式語言,部署靈活,對工藝要求適應性強。由於以上特點,PLC廣泛應用於電力、石油和軌道交通等行業。
在工業環境中,PLC用途包括“運動控制”、“生產過程控制”、“資料處理”和“通訊”。PLC作為現場控制層的下位機裝置,可採集、記錄和少量儲存現場過程層的工藝資料,傳送到過程監控層;另一方面,過程監控層的上位機裝置可將工藝邏輯下裝到PLC裝置,從而實現對生產工藝的運動控制、過程控制、資料處理和通訊等功能。如圖2所示。
圖2 PLC功能和用途
為了實現上位機與下位機、下位機之間的通訊功能,需要通訊協議支援。如圖3所示,目前常見的應用通訊協議分為公開協議和私有協議。公開協議包括施耐德的Modbus和羅克韋爾的Ethernet/IP等;私有協議包括西門子的S7等。
圖3 PLC通訊協議
2.PLC蠕蟲研究2.1研究背景
2.1.1工控安全趨勢發展
表1 年新增漏洞統計和年安全事件數量統計對比
從2010年到2015年的權威統計資料看,工控網路安全漏洞逐年遞減,但年安全事件數量卻逐年遞增。
2010年,“網路超級武器”Stuxnet病毒針對性地侵入工業控制系統,嚴重威脅到伊朗布什爾核電站核反應堆的安全運營;
2012年,伊朗石油部和國家石油公司內部計算機網路遭受病毒攻擊,為安全起見,伊朗方面暫時切斷了海灣附近哈爾克島石油設施的網路連線;
2014年出現的Havex是一種專門感染SCADA工控系統中的控制軟體的惡意軟體,它先後攻擊了歐、美地區的一千多家能源企業。除此之外,黑客們可通過Havex成功訪問到能源行業的工控系統。
2015年12月23日,烏克蘭電力網路遭受BlackEnergy攻擊,這是首個針對電網的成功攻擊案例,導致數十萬使用者斷電數小時。
2017年,WannaCry病毒席捲全球,波及150多個國家和30多萬臺電腦,涉及能源、電力和交通等重點行業領域。其後又相繼出現了多種專門針對工業網路的勒索病毒。
2.1.2 PLC安全研究跟蹤
如表2 所示,自2010年震網事件後,PLC安全研究的幾個重要方向包括:惡意功能,韌體篡改,重放攻擊,後門程式,PLC病毒和邏輯炸彈。
年份 |
研究成果 |
2011 |
Stephen McLaughlin等對PLC惡意Payloads動態生成進行研究。 |
2013 |
Zachry Basnight等人首先對PLC韌體進行了分析,然後通過逆向工程揭祕校驗演算法,首次實現對韌體進行修改攻擊。 |
2015 |
Grigoris Tzokatziou等人開發出Teensy裝置,實現了在PLC與HMI之間的重放攻擊。 |
2015 |
在blackhat-US會議上Johannes Klick等人在s7-300中注入了一種新型的後門程式。 |
2016 |
在blackhat亞洲會議上Ralf Spenneberg等人在s7-1200上開發了一種新型的PLC Blaster病毒 |
2017 |
印度海德拉巴和新加坡的學者,給出了PLC的邏輯炸彈的演示 |
表2 PLC安全研究成果
2.2 PLC脆弱性攻擊模型
從國際上安全事件和相關安全研究成果看,PLC的脆弱性明顯,主要體現在以下幾個方面:
一是PLC是工業網路的基礎控制環節,對其實施攻擊,可直接影響現場裝置工藝邏輯,造成物理損傷。二是PLC是一臺工業計算機,其可程式設計性為攻擊程式碼提供了程式執行環境。
三是PLC的協議缺陷問題,通訊協議弱認證,記憶體讀寫弱保護,造成惡意程式輕易獲取操作許可權。
經前期研究,對PLC的脆弱性攻擊可遵循以下模型。如圖4所示。
圖4 PLC攻擊模型
2.2.1情報收集
情報收集的主要目的是獲取PLC裝置資訊,包括裝置型別、訂單號,版本號、程式段和資料塊資訊等。可使用含有工控協議模擬功能和知識庫(包括裝置庫和協議庫)掃描器實現。如圖5所示,namp的s7協議外掛掃描結果。
圖5 nmap對SIMATIC 300裝置掃描結果
2.2.2 漏洞關聯
漏洞關聯的目的是根據裝置資訊精確發現其缺陷和漏洞。缺陷和漏洞可以在CVE等漏洞庫查詢,也可以通過FUZZ測試和逆向分析等手段挖掘。
圖6 漏洞庫查詢系統
2.2.3 漏洞利用
發現PLC漏洞後,搭建模擬環境,並開發漏洞利用工具,構建惡意程式程式碼。模擬環境可包含受攻擊裝置,狀態指示裝置(如燈泡,繼電器),網路裝置,傳輸介質(如雙絞線,RS485線),監測裝置(如協議分析儀,示波器)和攻擊機環境。
圖7 一種PLC蠕蟲模擬手提箱環境設計圖
2.2.4 內網滲透
內網滲透分為橫向滲透和縱向滲透。橫向滲透是指以現場控制層的已淪陷PLC裝置作為攻擊源,向該層其它裝置實施攻擊;縱向滲透是上位機與下位之間實施攻擊。如圖8所示。
圖8 內網滲透示意圖
2.2.5 持續控制
持續控制是指在惡意程式獲取了PLC控制權限並植入惡意功能後,與命令與控制伺服器(C&C伺服器)實現資料流與控制流的傳輸。如logicbit勒索軟體,在使用者支付贖金後,惡意程式可接受C&C伺服器指令,解鎖受控PLC裝置。如圖9所示。
圖9 持續控制示意圖
2.2.6 潛伏
潛伏是指惡意程式進入休眠狀態,等待喚醒觸發條件發生,執行惡意操作。惡意程式包含了休眠、喚醒的觸發條件,並在休眠狀態下有效隱蔽,防止被發現並查殺。
圖10 PLC惡意程式潛伏示意圖
2.3研究內容
PLC蠕蟲病毒的概念,是在2016年的BlackHat 大會上由Ralf Spenneberg, Maik Brüggemann, Hendrik Schwartke的報告提出 。 該報告闡述了TIA與PLC之間基於S7CommPlus協議通訊機制,針對西門子1200 (韌體版本3.0)協議認證缺陷,通過重放攻擊方式(Replay),實現了在PLC裝置之間的蠕蟲感染原理。該蠕蟲原理中對PLC遠端操作和網路通訊等相關問題是基於先前2011年和2015年的兩份BlackHat大會報告中的相關闡述。PLC蠕蟲病毒的具體實現細節並未在該報告中體現。
經研究分析,PLC蠕蟲病毒應具備以下幾個特徵: 自動執行、自我複製、傳播、惡意性和隱蔽性 。下文首先簡要介紹研究實驗環境和PLC蠕蟲病毒的執行邏輯,再從上述的幾個特徵闡述對PLC蠕蟲病毒的分析。
2.3.1 模擬模擬環境
模擬模擬環境是利用3臺西門子PLC(2臺SIMATIC 1200裝置和1臺SIMATIC 300裝置),1臺HMI上位機、1臺工業交換機、三組狀態指示燈(紅燈代表故障,綠燈代表正常)、攻擊機(攻擊源和C&C伺服器)和其它工控網路元器件構建而成。如圖11所示。
圖11 PLC蠕蟲模擬環境
2.3.2 PLC蠕蟲病毒的執行邏輯
PLC蠕蟲病毒實現在PLC裝置之間的傳播感染,以被感染PLC作為攻擊源,首先掃描網路中的其它PLC裝置,嘗試建立連線。若連線多次失敗,則繼續掃描;若成功建立連線,首先判斷從站PLC是否被感染,若被感染,則斷開連線,繼續掃描。若未被感染,則停止從站PLC,下裝蠕蟲程式碼和資料,啟動從站PLC,最後斷開連線。如圖12所示。
圖12 PLC蠕蟲病毒執行邏輯
2.3.3 自動執行
圖13 PLC蠕蟲病毒自動執行原理
西門子PLC裝置使用者程式主要包括“主迴圈程式執行”、“定期程式執行”和“事件驅動程式執行”。後兩類屬於中斷程式。主迴圈程式執行中的OB1為入口函式(相當於Main函式),而後依次執行OB2,OB3…OB9999。PLC蠕蟲病毒程式碼可被下裝到較大編號的OB塊中。如圖13所示,蠕蟲病毒被下裝到OB9999程式碼段,當執行到該程式碼段時,蠕蟲自動執行。
關鍵發現方面,一是寫入OB程式碼段位置問題。由於
2.3.4 自我複製
圖14 PLC蠕蟲病毒自我複製原理
如圖14所示,PLC蠕蟲傳播原理是,被感染PLC將自身的程式碼和資料下載到未被感染PLC的程式碼段和資料段。由於PLC的儲存空間有限,儘量減少程式碼和資料的體積。
關鍵發現方面,經驗證,可將啟停程式碼精簡到500個位元組以內,下裝程式碼精簡到30K以內。此外,精心構造的下裝程式應能實現“差異下裝”而非“全部覆蓋下裝”,不會覆蓋或清空未被感染PLC的已有程式碼和和資料。
2.3.5 傳播
圖15 西門子PLC支援的通訊協議
如圖15所示,西門子PLC通訊協議包括TCP,UDP,ISOonTCP,S7Comm,S7CommPlus等。S7類協議是西門子PLC的預置標準協議,且從站PLC不依賴通訊程式碼程式設計,蠕蟲病毒利用該類協議適應性更強。
如圖16所示。以S7CommPlus協議為例,PLC蠕蟲傳播過程分為六步,包括COTP協議握手,S7會話認證,讀取感染標誌位,停止PLC,下裝蠕蟲程式碼和啟動PLC。目前,針對西門子1200會話認證已實現完全破解。
圖16 PLC蠕蟲傳播協議互動過程
2.3.6 蠕蟲控制
PLC蠕蟲傳播完成後,基於TCP、UDP、S7等通訊協議,自動與C&C伺服器實現資料回傳和命令執行。PLC裝置無法直接與C&C伺服器建立連線,會掃描網路中一臺或者多臺PLC的SOCK4代理服務,將其作為跳板,實現與C&C服務的通訊。如圖17所示。
圖17 PLC蠕蟲控制方式示意圖
2.3.7 惡意功能
PLC蠕蟲的惡意功能包括篡改“系統配置”和“使用者程式”,從而達成對現場裝置工藝邏輯的篡改。
如圖18所示,TIA的裝置組態介面顯示的系統配置選項,蠕蟲病毒篡改任意配置資料,均會影響使用者程式的正常執行。此外,PLC蠕蟲還能將使用者程式讀取並返回到C&C伺服器,植入惡意程式碼,重新下載回PLC,從而實現使用者程式的篡改。
圖18 可篡改的系統配置和使用者程式
對惡意功能程式碼的實現,主要依賴對S7類協議功能碼。目前,S7Comm已經基本被破解;S7CommPlus協議功能碼為被完全掌握。圖19顯示了目前對S7類協議功能碼的整理。
圖19 已整理的S7類協議功能碼截圖
2.3.8 PLC蠕蟲病毒的檢測與防護
PLC蠕蟲病毒的有效檢測辦法包括, TIA的程式線上對比和誘捕性的工控檢測平臺。工程師站通過TIA線上功能,發現上、下位機程式碼存在差異,可以定位到被新增或者篡改的程式段和程式碼段,從而發現蠕蟲程式碼;此外,還可使用具有誘捕性的工控檢測平臺,PLC蠕蟲病毒在傳播過程中,若不能檢測出真假PLC裝置,就會對蜜罐PLC實施攻擊,從而實現有效檢測。
對蠕蟲病毒有效清除辦法是對PLC恢復出廠設定並重新下裝使用者程式。值得注意的是,重啟PLC不會清除蠕蟲程式碼。
2.3.9 研究成果
目前,通過上述研究和實踐,已成功復現了PLC蠕蟲病毒的程式碼。設計並組裝了模擬演示環境“工控PLC蠕蟲病毒演示手提箱”。該手提箱是集研究和展示為一體的行動式裝置。此外,還完成了三份文件性檔案《工控PLC蠕蟲病毒研究報告》《工控蠕蟲病毒演示手提箱白皮書》《工控蠕蟲病毒演示手提箱使用手冊》。如圖20所示。
圖20 研究成果
2.4下一步研究思路
一是擴充套件橫向研究。研究裝置物件跨廠商、跨型號和跨版本。
二是深入縱向研究。開展對公開協議與私有協議漏洞分析;公開漏洞復現與漏洞分析工作;通過逆向分析、Fuzz等手段挖掘未知缺陷或漏洞。重點是緊跟研究和分析復現國內外工控威脅事件,如工控勒索病毒事件等,提高威脅事件場景的構建能力。
三是電氣特性研究。研究工業4.0環境漏洞測試平臺;增強手提箱的擴充套件性和款式多樣性;對PLC裝置開展電器特性研究(研製專用示波器、網路協議分析等演示器件)。
寫在後邊:本文為安全研究人員劉儼濤、孔東林、閆大偉、鍾誠利用業餘時間,基於下述paper的自發研究成果。從很大程度上,證實了“突破隔離網路後,驅動PLC等嵌入式關鍵裝置惡意程式碼自傳播”執行惡意破壞工作的可行性,值得有關部門重視。
· Black Hat 2011報告《Exploiting Siemens Simatic S7 PLCs》,演示了通過西門子S7Comm協議的許可權缺失漏洞來遠端操作PLC,對PLC進行啟停控制、記憶體的讀寫;
· Black Hat 2015報告《Internet-facing PLCs – A New Back Orifice》,演示瞭如何通過PLC實現通訊代理,通過PLC突破網路邊界,來發現內網中更多的PLC裝置;
· Black Hat 2016報告《PLC-Blaster: A Worm Living Solely in the PLC 》,提出了PLC蠕蟲病毒的概念,提出了西門子1200 V3版本協議認證的缺陷,但沒有具體的實現細節。
文/DustinW
宣告:本文來自網信防務,版權歸作者所有。文章內容僅代表作者獨立觀點,不代表安全內參立場,轉載目的在於傳遞更多資訊。如需轉載,請聯絡原作者獲取授權。