摘 要
PLC(Programmable Logic Controller,可編程邏輯器件)是關鍵基礎設施中的基礎控制設備,其安全性涉及到整個控制系統(tǒng)的穩(wěn)定運行。但是,隨著兩化融合的不斷加深以及工業(yè)4.0的推進,工業(yè)控制系統(tǒng)在提高信息化水平的同時,其信息安全問題也日益突出。PLC遭受黑客攻擊的途徑也日益翻新,各種木馬和病毒變體數(shù)量不斷攀升,威脅工業(yè)控制系統(tǒng)的安全穩(wěn)定運行和人員生命財產安全。本文通過介紹常見的幾種PCL遭受攻擊的途徑,為工業(yè)控制系統(tǒng)安全敲響警鐘。
隨著技術的不斷進步,PLC在向著智能化的方向發(fā)展,接口數(shù)量和類型越來越多,功能也日益豐富。目前的PLC一般都是基于裁剪后的嵌入式系統(tǒng),同時將原來位于串行鏈路上的通信協(xié)議轉移到TCP/IP之上,為黑客實施攻擊提供了便捷的途徑。
1、通過嵌入式系統(tǒng)漏洞實施攻擊
PLC采用的大多是經過裁剪的實時操作系統(tǒng)(RTOS),比如Linux RT、QNX、Lynx、VxWorks等。這些操作系統(tǒng)廣泛的應用于通信、軍事、航空、航天等高精尖技術及實時性要求較高的領域中。但是其安全問題不容忽視。常見的PLC使用的操作系統(tǒng)如表1所示。
表1 常用PLC的操作系統(tǒng)
Beresford等[1]指出,Simatic PLC運行在x86 Linux系統(tǒng)之上,那就意味著如果插入一段載荷,就可以對shell進行爆破并連接到該設備。尤其需要注意的是PLC上運行的所有程序都是以root權限運行的,一旦被攻擊者攻入,后果非常嚴重。如圖1所示:
圖1 對shell系統(tǒng)的爆破
西門子、施耐德的多款PLC設備軟件搭載在VxWorks系統(tǒng)上運行,wdbrpc是VxWorks的遠程調試端口,以UDP方式進行通信,端口號為17185。該協(xié)議基于sun-rpc,提供的服務主要用于支持系統(tǒng)遠程通過集成開發(fā)環(huán)境Tornado交互(如圖2)。根據(jù)燈塔實驗室公布的資料[2],黑客可以通過wdbrpc協(xié)議dump全部內存空間數(shù)據(jù),找到內存中的所有ftp、telnet登錄密碼,進一步可以實現(xiàn)的攻擊有:篡改bootline繞過登錄驗證、Dump內存數(shù)據(jù)從中抓取登錄密碼等。通過攻擊嵌入式實時操作系統(tǒng)進而控制PLC的正常運行。
圖2 Tornado開發(fā)環(huán)境與VxWorks系統(tǒng)圖
2、通過PLC通信協(xié)議漏洞實施攻擊
一般常見工控協(xié)議中包含了大量的命令字,如讀取、寫入數(shù)據(jù)等,然而其中一部分高級或協(xié)議約定的自定義功能往往會給用戶安全帶來更多的威脅,如Modbus協(xié)議的從機診斷命令將會造成從機設備切換到偵聽模式、CIP協(xié)議某些命令字還能導致設備直接重啟、S7協(xié)議的STOP CPU功能將會導致PLC程序運行停止,在大多數(shù)的情況下用戶在上位機進行組態(tài)時僅會使用協(xié)議的某些讀取數(shù)據(jù)功能和固定范圍、固定地址的寫數(shù)據(jù)功能,而協(xié)議棧上更多的功能則不會應用于系統(tǒng)集成中。
Langner等[3]指出不需要控制系統(tǒng)內部知識,不需要編程技巧就可以實現(xiàn)一次攻擊。利用S7協(xié)議漏洞,注入代碼到組態(tài)OB1(相當于main函數(shù))之前,這樣PLC在每次掃描之前都會首先執(zhí)行惡意代碼,并可以通過調用BEC(block end condition)指令,隨時終止合法代碼的運行。就Stuxnet而言,終止條件是基于時間和工業(yè)過程。
Meixell等[4]指出,簡單的串口協(xié)議(比如Modbus 和DNP3)已經被包含在IP數(shù)據(jù)報內,攻擊者僅僅構造一個基于IP的控制數(shù)據(jù)包并發(fā)送給PLC就可以造成嚴重的后果。以Modbus協(xié)議為例,其常用主要功能碼如下表2所示:利用功能碼0x05就可以將所有的寄存器置1,打開所有的閥門。
表2 Modbus數(shù)據(jù)包結構及主要功能碼
Tzokatziou等[5]指出,由于PLC通信協(xié)議是明文傳輸,而且對于通信對象沒有認證過程。因此攻擊者可以利用CoDeSys 系統(tǒng),直接和PLC進行連接,捕獲兩者之間的通信的數(shù)據(jù)包,然后直接給PLC發(fā)送篡改后的控制指令,達到任意啟停PLC的操作。
3、通過PLC軟件漏洞實施攻擊
PLC的軟件系統(tǒng)包括系統(tǒng)監(jiān)控軟件和用戶組態(tài)軟件,前者用于監(jiān)視控制器本身的運行,后者用于編寫用戶程序。以西門子(Siemens)PLC為例,STEP 7 編程軟件用于PLC的編程、參數(shù)設置和在線調試,而WinCC則主要用于過程監(jiān)視。
典型的攻擊案例是2010年的“震網”病毒攻擊伊朗核電站事件[6]。“震網”病毒除了利用windows操作系統(tǒng)的4個0-day漏洞,還利用了西門子WinCC中的兩個漏洞(1)WinCC系統(tǒng)中存在一個硬編碼漏洞,保存了對訪問數(shù)據(jù)的默認賬戶名和密碼,Stuxnet利用這一漏洞嘗試訪問該系統(tǒng)的SQL數(shù)據(jù)庫;(2)在WinCC需要使用的Step7工程中,打開工程文件時,存在DLL加載策略上的缺陷,從而導致一種類似于“DLL預加載攻擊”的利用方式。然后Stuxnet通過使用自身的s7otbxsx.dll替換Step7軟件中的s7otbxsx.dll,實現(xiàn)對一些查詢、讀取函數(shù)的額Hook。
其他的攻擊途徑包括攻擊人機交互界面(HMI),使得操作員失去視圖。典型的攻擊案例是2015年的烏克蘭電網攻擊事件[7]。攻擊者取得工作站節(jié)點的控制權,獲取與操作員一致的操作界面和操作權限,通過遠程控制對PLC進行開關控制或改變運行參數(shù),從而引起電網故障或者斷點。燈塔實驗室指出[8],Unity Pro是施耐德系列PLC的編程軟件,Unity Pro 附帶的OSLoader軟件可以完成PLC的操作系統(tǒng)固件升級。OSLoader登錄設備后會嘗試遠程讀取文件系統(tǒng),這樣即可實現(xiàn)遠程上傳下載,攻擊者可以通過替換固件的方式輕松讓PLC宕機。
4、通過PLC互連實施攻擊
當前的工業(yè)控制網絡朝著“一網到底”的方向發(fā)展,工業(yè)控制系統(tǒng)橫向和縱向連接更加緊密:業(yè)務層可以直接訪問控制層的數(shù)據(jù),甚至對設備進行控制;同一層次內的設備由于相互間的協(xié)作工作而聯(lián)結在一起。對于PLC而言,由于PLC主要用于過程控制,而生產流程往往由諸多控制過程組成,因此需要多個PLC協(xié)同工作,共同完成某項生產任務。
圖3 利用人機交互界面攻擊PLC過程
Radvanovsky等[9]指出,美國啟動的SHINE(SHodan Intelligence Extraction)項目是為了提取關于可以從互聯(lián)網訪問的SCADA和ICS設備的信息(尤其是PLC和RTU)。SHODAN搜索引擎是通過搜索常用的TCP/UDP端口來工作的,如表3:
表3 常用協(xié)議及端口對照表
Newman[10]指出,監(jiān)獄中控制室值班通過在線瀏覽圖片和電影引入病毒和蠕蟲。一些監(jiān)獄為犯人提供上網服務,雖然不和監(jiān)獄控制和監(jiān)視系統(tǒng)直接連接,但是也是一個可攻入的脆弱點。還要監(jiān)獄的巡邏車,使用的是無線信號,需要連接監(jiān)獄網絡上傳數(shù)據(jù),也是一個攻擊入口。
Klick[11]在2015 USABlackHat上指出,PLC缺乏安全機制,通常可以上傳代碼到這些面向互聯(lián)網的PLC,利用這些PLC作為網關,滲透生產網絡,甚至是公司IT網絡。Kclik利用PLC編程語言STL編寫端口掃描器和SOCKS代理,然后利用感染的PLC去掃描本地網絡,并將其作為網關,從而連接與其相連的其他PLC甚至滲透到公司業(yè)務網絡,如圖4所示:
圖4 公司內系統(tǒng)層級圖
McLaughlin[12]設計了一款針對PLC的惡意軟件,能夠生成動態(tài)數(shù)據(jù)包載荷,攻擊者使用這個工具,可以不用提前對控制系統(tǒng)有先驗知識就可以實施攻擊,極大的降低了攻擊PLC的門檻。首先利用生成的載荷感染一個到多個主機,然后進行工業(yè)過程分析,接著對二進制文件進行解碼,最后對生成的載荷進行裁剪,上傳到PLC并運行,具體過程如圖5所示:
圖5 動態(tài)生成惡意載荷過程
McLaughlin在另一篇文章[13]中開發(fā)了一種自動生成PLC載荷的工具—Sabot,自動識別PLC邏輯控制,并生成惡意的PLC代碼,具體過程如圖6所示:
圖6 Sabot攻擊過程示意圖
Spenneberg[14]等在2016 Asia BlackHat上西門子SIMATICA S7-1200為例,展示了一款專門在PLC上存活的蠕蟲。此蠕蟲不需要依賴于PC電腦去擴散,僅僅活躍并運行于PLC中,通過網絡掃描來發(fā)現(xiàn)新的目標(PLC),然后攻擊這些目標并將復制自身到新的PLC中,而且受感染的PLC主程序不會發(fā)生任何改變。從而可以做到目標發(fā)現(xiàn),攜帶惡意載荷等攻擊手段。而且,清除這些蠕蟲非常困難,目前只能通過恢復出廠設置或者復寫蠕蟲所在的功能塊(Function Block)。感染過程如圖7所示:
圖7 蠕蟲感染PLC過程
代碼的執(zhí)行過程如圖8所示:
圖8 蠕蟲惡意代碼執(zhí)行過程
綜上所述,PLC的安全態(tài)勢不容樂觀,針對PLC的攻擊路徑比較多,而且攻擊層次在逐漸深入,要做好PLC的安全防護任重道遠。
-
控制系統(tǒng)
+關注
關注
41文章
6768瀏覽量
111890 -
plc
+關注
關注
5031文章
13816瀏覽量
472812 -
控制設備
+關注
關注
0文章
142瀏覽量
11019
發(fā)布評論請先 登錄

基于能量攻擊的FPGA克隆技術研究
GPU發(fā)起的Rowhammer攻擊常見問題
網絡攻擊路徑的生成研究
Linux內核提權攻擊研究

基于因果知識網絡的攻擊路徑預測
APT攻擊檢測研究綜述

基于SQAG模型的網絡攻擊建模優(yōu)化算法

基于SQAG模型的網絡攻擊建模優(yōu)化算法

基于概率屬性網絡攻擊圖的攻擊路徑預測方法

多智能體路徑規(guī)劃研究綜述
常見網絡安全攻擊路徑分析及防護建議
PLC攻擊類型研究分析

評論