劉煜堃,諸葛建偉*,吳一雄,2
(1.清華大學(xué)網(wǎng)絡(luò)科學(xué)與網(wǎng)絡(luò)空間研究院,北京100084; 2.福州大學(xué)數(shù)學(xué)與計算機科學(xué)學(xué)院,福州350116)(*通信作者電子郵箱zhugejw@cernet.edu.cn)
工業(yè)控制系統(tǒng)(Industrial Control System,ICS)用于連接、控制和監(jiān)測諸如電力生產(chǎn)、輸配電、石油化工、水處理和傳輸?shù)裙I(yè)生產(chǎn)環(huán)境。近年來,由于物聯(lián)網(wǎng)及工控互聯(lián)網(wǎng)的發(fā)展,工控系統(tǒng)與互聯(lián)網(wǎng)的連接增多[1],工控系統(tǒng)暴露的安全問題也逐漸增多,工控系統(tǒng)安全愈發(fā)受到關(guān)注[2]。
工控系統(tǒng)的監(jiān)控和操作主要通過可編程邏輯控制器(Programmable Logic Controller,PLC)作為嵌入式信息物理系統(tǒng)(Cyber Physical System,CPS)連接到數(shù)據(jù)采集與監(jiān)測(Supervisory Control And Data Acquisition,SCADA)系統(tǒng),工程師可以通過SCADA系統(tǒng)的人機交互接口(Human Machine Interface,HMI)進行監(jiān)視和控制。PLC是一種專門為在工業(yè)環(huán)境下應(yīng)用而設(shè)計的數(shù)字運算操作電子系統(tǒng)。它們基于從輸入端口和存儲的程序接收到的信號來控制輸出端口的狀態(tài),并且在輸入和輸出方面的邏輯行為可由工程師編程。SCADA是以計算機為基礎(chǔ)的生產(chǎn)過程控制與調(diào)度自動化系統(tǒng),它可以對現(xiàn)場的運行設(shè)備進行監(jiān)視和控制。它需要運行在已有操作系統(tǒng)(如Windows)的計算機(該計算機可以直接發(fā)出操控命令,又被稱為上位機)上,并可以由工程師編程。
針對工控系統(tǒng)的攻擊可能會產(chǎn)生導(dǎo)致危及生命財產(chǎn)安全的嚴重后果。“震網(wǎng)”[3]是一個針對工業(yè)控制系統(tǒng)的蠕蟲,它的攻擊目標是伊朗的鈾濃縮設(shè)施;“震網(wǎng)”采用了一些未公開漏洞,可以逃避傳統(tǒng)的網(wǎng)絡(luò)安全檢測。“WannaCry”[4]是在2017年大規(guī)模傳播的勒索蠕蟲,它利用Windows系統(tǒng)的漏洞實現(xiàn)蠕蟲式傳播,并鎖定文件以此向用戶勒索。對工控系統(tǒng)來講,勒索蠕蟲軟件無疑是一個巨大的安全威脅[5]。
在以往的針對工業(yè)控制系統(tǒng)的攻擊方式研究之中,作者的攻擊思路與傳統(tǒng)的攻擊思路相同。他們通過首先發(fā)現(xiàn)暴露在公網(wǎng)上特定的工控組件,利用其漏洞獲取其權(quán)限,進而進行勒索或進一步傳播。但由于工控組件大部分位于內(nèi)網(wǎng)中,只有少部分暴露在公網(wǎng)上,所以這種攻擊路徑的威脅程度有限。針對工業(yè)控制系統(tǒng)高度隔離化的問題,本文提出一種基于新的攻擊路徑的勒索蠕蟲威脅模型。它可以穿越工控系統(tǒng)內(nèi)網(wǎng)限制,實現(xiàn)蠕蟲式感染和勒索;其傳播路徑基于工業(yè)控制系統(tǒng)實際的開發(fā)場景,較難檢測和防范。
本文的主要工作如下:
1)總結(jié)工業(yè)控制系統(tǒng)存在的安全風(fēng)險和攻擊方法。
2)根據(jù)觀察到的工業(yè)控制系統(tǒng)實際開發(fā)場景和存在的安全風(fēng)險,提出一種基于新的攻擊路徑的勒索蠕蟲威脅模型。
3)實現(xiàn)一種針對工業(yè)控制系統(tǒng)勒索蠕蟲原型“ICSGhost”。
4)提出針對工業(yè)控制系統(tǒng)勒索蠕蟲威脅的縱深防御方案。
工業(yè)控制系統(tǒng)網(wǎng)絡(luò)是一個高度定制化的網(wǎng)絡(luò),不同行業(yè)的工業(yè)控制系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)存在較大差異,但總體呈現(xiàn)出明顯的網(wǎng)絡(luò)層次結(jié)構(gòu)。自下往上可以劃分為:
1)現(xiàn)場儀表網(wǎng)絡(luò)。由現(xiàn)場的儀器儀表設(shè)備組成,如傳感器、電機等。
2)本地控制網(wǎng)絡(luò)。由對現(xiàn)場的儀器儀表進行數(shù)據(jù)獲取及控制的PLC、遠程終端單元(Remote Terminal Unit,RTU)等設(shè)備組成。
3)監(jiān)測控制網(wǎng)絡(luò)。工程師在此網(wǎng)絡(luò)進行監(jiān)測和控制物理過程,HMI、工程師站等在此網(wǎng)絡(luò)中。
4)非軍事區(qū)(DeMilitarized Zone,DMZ)網(wǎng)絡(luò)。非軍事區(qū)域,向上層網(wǎng)絡(luò)提供下層工業(yè)控制網(wǎng)絡(luò)內(nèi)的數(shù)據(jù)和應(yīng)用。
5)企業(yè)工作網(wǎng)絡(luò)。企業(yè)內(nèi)部辦公網(wǎng)絡(luò),包括企業(yè)辦公系統(tǒng)、內(nèi)部員工主機、打印機等。
6)互聯(lián)網(wǎng)。
在現(xiàn)場儀表網(wǎng)絡(luò)和本地控制網(wǎng)絡(luò)中針對PLC等工控組件的攻擊主要可以總結(jié)為以下幾種形式:
1)勒索軟件。2017年,F(xiàn)ormby等[6]首次提出了針對工控系統(tǒng)的勒索軟件,其將勒索軟件感染的目標從IT主機轉(zhuǎn)向工控組件,通過感染工控組件威脅受害者提供贖金,否則對工控系統(tǒng)發(fā)出破壞指令。其工作方式與傳統(tǒng)的勒索軟件相同,首先發(fā)現(xiàn)暴露在公網(wǎng)上特定的工控組件,利用漏洞獲取其權(quán)限,進而進行勒索或進一步傳播。但由于工控組件大部分位于內(nèi)網(wǎng)中,只有少部分暴露在公網(wǎng)上,所以這種攻擊路徑的威脅程度有限。
2)PLC蠕蟲。2016年,Spenneberg等[7]提出了針對 PLC的工控蠕蟲PLC Blaster。蠕蟲在感染第一個目標之后在內(nèi)網(wǎng)之中不斷自我復(fù)制并傳播直至感染整個內(nèi)網(wǎng),接著再執(zhí)行一些預(yù)置的惡意攻擊。
3)跳板機。2015年,Klick等[8]提出了一個新的攻擊路徑,其將暴露在公網(wǎng)之中的PLC作為一個跳板機進入內(nèi)網(wǎng)從而實施對內(nèi)網(wǎng)中工控系統(tǒng)的攻擊。
在監(jiān)測控制網(wǎng)絡(luò)中,上位機系統(tǒng)漏洞可能會被黑客利用從而實施攻擊。而工程師站則有可能收到魚叉式釣魚攻擊、U盤攻擊、密碼攻擊、社會工程學(xué)攻擊等方式組合的攻擊。
非軍事區(qū)網(wǎng)絡(luò)提供數(shù)據(jù)和應(yīng)用服務(wù)的服務(wù)器可能存在如未授權(quán)訪問、信息泄露等安全問題,而提供中轉(zhuǎn)服務(wù)的服務(wù)器可能存在被攻擊者進行水坑攻擊[9]的安全風(fēng)險。
企業(yè)工作網(wǎng)絡(luò)中的邊界服務(wù)器、打印等共享設(shè)備是可能被攻擊者攻擊的薄弱點,同時弱口令等配置不當問題也是在企業(yè)工作網(wǎng)絡(luò)中常出現(xiàn)的安全問題。
在互聯(lián)網(wǎng)接入時,由于運維以及業(yè)務(wù)需要,工控系統(tǒng)往往需要為工程師提供能夠進入工控網(wǎng)絡(luò)的遠程連接服務(wù)(如虛擬專用網(wǎng)絡(luò)(Virtual Private Network,VPN)服務(wù)等)。若遠程連接服務(wù)配置不當,諸如將內(nèi)部服務(wù)錯誤暴露在公網(wǎng)或使用弱口令,則攻擊者可以通過不當配置的遠程連接服務(wù)攻擊企業(yè)內(nèi)網(wǎng)。
本章將介紹觀察到的工控系統(tǒng)實際開發(fā)場景和存在的安全風(fēng)險。基于這些觀察,在第3章提出一種新的勒索蠕蟲威脅模型。
在實際的工控系統(tǒng)開發(fā)場景中,對于不同的工控組件,工程師需要采用不同的方式進行開發(fā),以下主要討論PLC與SCADA兩種主要的工控組件。
對于PLC的組態(tài)開發(fā)、安裝和維護的工作通常由PLC工程師完成。由于PLC設(shè)備被安裝在工程現(xiàn)場,所以PLC工程師通常需要前往工程現(xiàn)場,將其工作站通過諸如串口、以太網(wǎng)的方式直接接入到PLC,并通過組態(tài)軟件對PLC進行組態(tài)開發(fā)與調(diào)試。
對于HMI等SCADA系統(tǒng)的組件,由于其大多數(shù)基于通用操作系統(tǒng),所以可以通過操作系統(tǒng)的遠程連接功能接入進行開發(fā)。負責(zé)SCADA系統(tǒng)開發(fā)的工程師無須前往工程現(xiàn)場,可以在辦公室中通過遠程連接接入上位機,通過SCADA系統(tǒng)的組態(tài)軟件對SCADA系統(tǒng)進行開發(fā)、監(jiān)控與維護。由于工控網(wǎng)絡(luò)大多數(shù)處于內(nèi)網(wǎng)中,所以工程師需要使用諸如VPN等的遠程連接服務(wù)的方式接入到位于內(nèi)網(wǎng)的上位機。根據(jù)實際情況的不同,工程師有時候需要通過多級遠程連接的方式接入內(nèi)容的上位機。
此外,通過調(diào)研發(fā)現(xiàn),在現(xiàn)有的工控系統(tǒng)開發(fā)中,還存下著以下三個方面的安全風(fēng)險:
1)不設(shè)密碼。雖然工業(yè)控制設(shè)備一般都提供密碼控制的功能。但是由于忘記密碼需要設(shè)備廠商的工程師的支持才能重置,這導(dǎo)致很多工程師為了簡單起見就不為工業(yè)控制設(shè)備設(shè)置管理密碼。
2)固件和上位機系統(tǒng)不升級。由于工控系統(tǒng)的第一要求是高可用性,且工控軟件高度定制化,對于操作系統(tǒng)等基礎(chǔ)組件的升級可能會工控軟件產(chǎn)生兼容性問題,所以很多工控系統(tǒng)在部署之后基本不進行升級操作;而且,工業(yè)控制設(shè)備的生存周期長,這導(dǎo)致工控方面的漏洞存活周期長。
3)使用盜版軟件。由于不同工控廠商采用不同的組態(tài)軟件,在加上正版的組態(tài)軟件需要額外付費,許多工程師會在網(wǎng)上查找破解版的組態(tài)軟件進行組態(tài)開發(fā)工作。
基于第2章觀察到的工控系統(tǒng)實際開發(fā)場景及安全風(fēng)險,提出一種針對工控系統(tǒng)實際開發(fā)場景設(shè)計的勒索蠕蟲威脅模型。該威脅模型針對承載SCADA系統(tǒng)的上位機和PLC設(shè)備這兩種工控系統(tǒng)中的重要組件。該模型不同于傳統(tǒng)的發(fā)現(xiàn)暴露在互聯(lián)網(wǎng)上的受害者進行感染與傳播的感染思路,而是以工程師站作為入口,進而感染工控組件。對于三個工控系統(tǒng)的主要目標——工程師站、上位機及PLC,圖1展示了完整的攻擊模型。
在工控系統(tǒng)的開發(fā)和配置過程中,工程師需要先將工程師站通過接線等方式連接到相應(yīng)的工控組件。工程師站主要為筆記本電腦。工程師通過攜帶工程師站進入設(shè)備現(xiàn)場接入或通過遠程連接服務(wù)等方式連接到工控系統(tǒng)內(nèi)網(wǎng)從而對工控組件進行開發(fā)和配置。在此過程中,工程師站繞過了工業(yè)控制網(wǎng)絡(luò)內(nèi)網(wǎng)隔離或者物理隔離的限制,直接連接到位于工業(yè)控制網(wǎng)絡(luò)中的工控設(shè)備。

圖1 威脅模型Fig.1 Threat model
本文提出的威脅模型將工程師站作為初次感染目標,并以工程師站作為跳板,當工程師站接入工業(yè)控制網(wǎng)絡(luò)時,對處于內(nèi)部網(wǎng)絡(luò)的工業(yè)控制設(shè)備進行攻擊,實現(xiàn)蠕蟲式感染和勒索。該威脅模型在工控網(wǎng)絡(luò)內(nèi)的傳播路徑與工控系統(tǒng)實際開發(fā)運行場景相符。勒索蠕蟲的傳播隱藏在工程師對工控系統(tǒng)進行開發(fā)運維的行為之中,更加難以捕獲與發(fā)現(xiàn);并且,由于第一步的攻擊目標是經(jīng)常會接觸到互聯(lián)網(wǎng)的工程師站,所以更容易實現(xiàn)針對工控系統(tǒng)的大規(guī)模攻擊。
工程師站主要是運行著Windows系統(tǒng)的筆記本電腦,由于不同廠商生產(chǎn)的PLC及SCADA系統(tǒng)的差異,廠商會開發(fā)出專用的組態(tài)和SCADA編程軟件。由于這些軟件的購買使用價格不菲,相當多的工程師會下載和使用網(wǎng)絡(luò)上發(fā)布的破解版,所以在網(wǎng)上發(fā)布捆綁有勒索蠕蟲程序的工控軟件是一種非常有效的攻擊方式。XcodeGhost[10]就是一個類似的成功案例。攻擊者在網(wǎng)絡(luò)上發(fā)布了帶有惡意程序的Xcode,被大量開發(fā)者下載,導(dǎo)致使用此帶有惡意程序的Xcode開發(fā)出的軟件都被植入惡意程序。
釣魚攻擊也是非常有效的攻擊方式,攻擊者可以誘使工程師打開含有惡意攻擊載荷的網(wǎng)頁或文檔程序,使工程師站受感染。
使用U盤攻擊同樣是一種有效的方式[11],工程師站將在被插入含有惡意攻擊載荷的U盤時受到感染。
除此之外還存在一種反向感染的途徑。工程師站需要通過遠程連接服務(wù)連入上位機對SCADA系統(tǒng)進行開發(fā)與配置。若某臺上位機已受感染,則可以通過與此上位機建立的連接會話反向感染工程師站。
若工程師站已經(jīng)受到感染,則勒索蠕蟲可以通過建立的遠程連接會話作為通道將勒索蠕蟲傳播到遠程連接另一端的上位機。
勒索蠕蟲還可以利用上位機系統(tǒng)漏洞或以弱口令為代表的配置疏忽導(dǎo)致的安全漏洞在上位機之間進行蠕蟲傳播并實施勒索。
在組態(tài)開發(fā)過程中,工程師站可以通過工控網(wǎng)絡(luò)訪問到PLC,且組態(tài)軟件與PLC也建立了連接。勒索蠕蟲可以直接嘗試連接PLC并對其進行感染從而實施勒索,或通過組態(tài)軟件與PLC建立的連接對PLC進行感染并實施勒索。
在工控系統(tǒng)中,SCADA系統(tǒng)可以對PLC進行直接的訪問和控制,所以當上位機被感染之后,勒索蠕蟲也可以通過SCADA和PLC直接建立的連接對PLC進行感染并勒索。除此之外,PLC之間同樣有可能直接進行迭代式的蠕蟲傳播。
基于第3章提出的威脅模型,本文實現(xiàn)了勒索蠕蟲原型ICSGhost以證實威脅切實存在。ICSGhost首先捆綁在組態(tài)軟件上被發(fā)布到互聯(lián)網(wǎng)中,當工程師在工程師站下載并安裝了捆綁著ICSGhost的組態(tài)軟件后就會受到感染。ICSGhost針對Windows上位機以及羅克韋爾型號為 MicroLogix 1400的PLC,當工程師連接入工控系統(tǒng)內(nèi)網(wǎng)中時,可對上位機和相應(yīng)PLC進行蠕蟲式傳播并勒索。針對Windows上位機,ICSGhost利用遠程桌面協(xié)議(Remote Desktop Protocol,RDP)會話將其自身傳播到上位機中,并且可以在上位機中利用MS17-010漏洞在上位機之間進行蠕蟲傳播。當上位機受感染之后,ICSGhost將加密系統(tǒng)的關(guān)鍵文件實施勒索。針對羅克韋爾的MicroLogix 1400 PLC,ICSGhost通過劫持組態(tài)軟件與PLC的會話或利用此PLC加鎖未驗證的漏洞對該款PLC進行鎖定,實現(xiàn)勒索。
ICSGhost只是一個概念驗證原型,在封閉的實驗環(huán)境中開發(fā)和實驗。為避免在實驗過程中出現(xiàn)意外的傳播和危害,對其作了如下的額外限制:首先,ICSGhost的感染目標僅被限定在特定的內(nèi)網(wǎng)網(wǎng)段當中,迭代次數(shù)限制為2次;其次,加密后不刪除或破壞系統(tǒng)文件,不長期駐留。
ICSGhost借助RDP的部分功能實現(xiàn)在工程師站和Windows上位機之間的相互傳播。其中,從工程師站到Windows上位機的傳播(簡稱為正向傳播)是 ICSGhost感染攻擊工控系統(tǒng)的過程;從Windows上位機到工程師站的傳播(簡稱為反向傳播)是ICSGhost完成對工控系統(tǒng)的感染之后,再感染其他連接到受感染的工控系統(tǒng)的工程師站,從而通過該工程師站完成對其他未感染的工控系統(tǒng)的攻擊。
在從工程師站到 Windows上位機的傳播的過程中,ICSGhost針對不同的Windows操作系統(tǒng)版本采用不同的攻擊方式來實現(xiàn)RDP傳播。
4.1.1 正向傳播
針對Windows XP和Windows Server 2003的Windows操作系統(tǒng)版本,ICSGhost通過遠程桌面協(xié)議的功能特性進行攻擊。首先,ICSGhost通過鍵盤鉤子和讀取遠程桌面協(xié)議配置文件的方式獲得建立遠程桌面連接所需的相關(guān)信息,如用戶名、密碼和上位機IP等。其次,ICSGhost使用獲取的數(shù)據(jù)生成一個惡意的RDP配置文件。該配置文件主要實現(xiàn)三個功能:一是通過之前獲取的賬號密碼實現(xiàn)自動認證登錄過程;二是通過”alternate shell”配置選項指定遠程桌面連接建立時在遠程主機上所調(diào)用的程序為ICSGhost,ICSGhost在啟動后再執(zhí)行遠程桌面連接的初始化工作;三是通過文件系統(tǒng)重定向的功能將本地硬盤掛載到Windows上位機,ICSGhost再將自身復(fù)制到Windows上位機的自啟動文件夾中。最后,ICSGhost通過生成的惡意RDP配置文件在后臺實現(xiàn)感染過程。
針對Windows XP和Windows Server 2003以后的Windows操作系統(tǒng)版本,由于安全策略的改變和遠程桌面連接協(xié)議的升級,導(dǎo)致上述的攻擊方式失效。ICSGhost通過模擬鍵盤輸入的方式進行攻擊。首先,ICSGhost通過鍵盤鉤子和讀取遠程桌面協(xié)議配置文件的方式獲得建立遠程桌面連接所需的相關(guān)信息。其次,ICSGhost創(chuàng)建全局的低級鍵盤鉤子和低級鼠標鉤子防止意外的鍵盤鼠標輸入對后續(xù)攻擊過程的影響。之后,ICSGhost通過修改遠程桌面連接協(xié)議的配置文件來修改連接設(shè)置。最后,ICSGhost通過“keybd_event”函數(shù)從底層模擬鍵盤鼠標輸入進行遠程桌面連接的建立和惡意代碼的執(zhí)行。
4.1.2 反向傳播
在從Windows上位機到工程師站的傳播的過程中,ICSGhost采用Windows自帶的遠程桌面服務(wù)(Remote Desktop Services,RDS)實現(xiàn) RDP反向傳播。ICSGhost通過修改注冊表等方式開啟RDS服務(wù)和指定用戶在連接到 Windows上位機的時候所運行的初始化程序為 ICSGhost,然后由 ICSGhost完成正常的初始化工作,這樣就可以保證ICSGhost存活于每個與Windows上位機建立的遠程桌面連接。在檢測到新連接建立的時候,ICSGhost會檢測所連接的客戶端是否將文件系統(tǒng)重定向到服務(wù)端。如果是,ICSGhost則將客戶端的磁盤映射到本地,之后自我復(fù)制到該磁盤上,再通過自啟動方式在客戶端下次系統(tǒng)重啟的時候自我啟動。在遠程桌面連接協(xié)議中的文件系統(tǒng)重定向默認值關(guān)閉狀態(tài),所以,這種攻擊方式的成功與否取決于用戶是否開啟文件系統(tǒng)重定向功能。
ICSGhost使用了“永恒之藍”漏洞進行Windows上位機之間的蠕蟲傳播,“永恒之藍”的漏洞編號為MS17-010,它被“影子經(jīng)紀人(The Shadow Brokers)”曝光到互聯(lián)網(wǎng),并被使用在影響巨大的勒索蠕蟲“WannaCry”之中,影響從Windows XP到Windows 10、Windows Server 2016的所有 Windows系統(tǒng)。該漏洞存在于SMB(Server Message Block)通信協(xié)議當中。借助該漏洞,攻擊者可以使用惡意構(gòu)造的數(shù)據(jù)包導(dǎo)致遠程任意代碼執(zhí)行,從而控制遠程計算機。
如今,大部分PLC集成了加鎖功能,可以通過密碼對PLC本身的配置進行鎖定。鎖的類型分為讀鎖、寫鎖和讀寫鎖。讀鎖是指在對PLC的某些配置進行讀取時需要密碼驗證,寫鎖是指在對PLC的某些配置進行寫入時需要密碼驗證,讀寫鎖是指在對PLC的某些配置進行讀取和寫入時都需要密碼驗證。為了實現(xiàn)勒索的目的,ICSGhost采用對PLC加上寫鎖的方式,在保證PLC正常運行的同時,開發(fā)者無法對加了鎖的PLC進行配置寫入。
針對 ICSGhost的目標設(shè)備 MicroLogix 1400,發(fā)現(xiàn)該款PLC的控制指令沒有身份驗證機制。攻擊者只需要接入到PLC所在網(wǎng)絡(luò),能夠與其通信,就可以將控制指令直接發(fā)送到MicroLogix 1400,對其加鎖,并且該加鎖操作可以繞過已經(jīng)存在的密碼保護。
當PLC本身已經(jīng)被加鎖保護時,直接攻擊PLC的方法可能就無法生效。ICSGhost還實現(xiàn)了先通過劫持組態(tài)軟件的方式獲取PLC密碼,再對PLC進行鎖定的攻擊方式。
當工程師使用組態(tài)軟件對PLC進行配置時,若PLC被加鎖保護,工程師需要在組態(tài)軟件當中輸入密碼才能繼續(xù)對PLC進行配置。ICSGhost首先使用遠程線程注入的方法將惡意動態(tài)鏈接庫注入組態(tài)軟件,注入之后將自動運行動態(tài)鏈接庫中的程序,修改組態(tài)軟件指令,從而對組態(tài)軟件的代碼進行劫持,獲取工程師輸入的密碼。在獲取PLC的密碼之后,可以使用發(fā)送控制指令的方式加鎖PLC,也可以直接通過劫持組態(tài)軟件的執(zhí)行,通過組態(tài)軟件對PLC加鎖。
ICSGhost是一個針對工控系統(tǒng)的勒索蠕蟲,本節(jié)將描述ICSGhost針對工控系統(tǒng)的特點對傳統(tǒng)勒索方式所作的改進。
4.5.1 身份判斷及潛伏
由于傳播的目標是工控系統(tǒng),ICSGhost在傳播中對目標身份進行判斷。在感染目標時,ICSGhost通過搜索注冊表中與工控軟件相關(guān)的鍵值,來判斷此目標是否與工控系統(tǒng)相關(guān)。若相關(guān),則對其進行感染;若不相關(guān),則刪除自身。
4.5.2 文件加密與密鑰預(yù)生成
當加密Windows主機時,ICSGhost隨機生成一個文件加密密鑰,隨機使用預(yù)置的某個RSA(Rivest-Shamir-Adleman)公鑰對其進行加密并保存加密后的文件。之后利用此文件加密密鑰使用高級加密標準(Advanced Encryption Standard,AES)算法對SCADA系統(tǒng)的配置及組態(tài)文件進行加密。當加密完成后刪除文件加密密鑰,保留RSA公鑰及被加密的文件加密密鑰。若受害者需要恢復(fù)被加密的文件,則需要提供RSA公鑰及被加密的文件加密密鑰,可以通過查詢公鑰對應(yīng)的私鑰,利用此私鑰解密獲得文件加密密鑰,進而使用文件加密密鑰來解密文件。
由于ICSGhost需要在內(nèi)網(wǎng)傳播,但內(nèi)網(wǎng)中受感染的主機可能無法與外網(wǎng)通信。所以ICSGhost需要在初次感染工程師站時預(yù)生成多組的RSA公私鑰對,然后將該公私鑰對回傳并刪除私鑰。在之后的傳播中,對每一個目標,ICSGhost選取一對未使用的RSA公私鑰。若所有生成的公私鑰對都已經(jīng)被使用,則對已使用的公私鑰重新進行隨機選擇使用。
基于上面的分析,本文搭建了一個模擬工控網(wǎng)絡(luò)的封閉實驗環(huán)境以驗證ICSGhost的威脅。模擬的封閉實驗環(huán)境的拓撲圖如圖2所示。在該實驗環(huán)境中,搭建了兩臺操作系統(tǒng)為Windows 7的上位機,分別為上位機A和上位機B,其中上位機之間沒有設(shè)置網(wǎng)絡(luò)隔離。上位機A負責(zé)監(jiān)控和管理羅克韋爾型號為MicroLogix 1400的PLC。此外,還存在一個工控工程師,該工程師使用操作系統(tǒng)為Windows 7的工程師站,負責(zé)上位機A管理的PLC的開發(fā)和維護工作。

圖2 ICSGhost實驗傳播路徑Fig.2 Propagation path of ICSGhost experiment
圖2 的灰色點線部分展示了ICSGhost在實驗環(huán)境中的傳播路徑。首先,將捆綁ICSGhost的RSLogix 500(羅克韋爾PLC的組態(tài)開發(fā)軟件)的組態(tài)軟件上傳到一個FTP服務(wù)器(File Transfer Protocol Server,F(xiàn)TP),模擬上傳到互聯(lián)網(wǎng)的過程。工程師從FTP服務(wù)器下載該組態(tài)軟件進行安裝來進行MicroLogix 1400的組態(tài)開發(fā)工作。此時,ICSGhost潛伏在工程師的工程師站中。在完成組態(tài)開發(fā)之后,工程師通過OpenVPN服務(wù)進入工業(yè)控制系統(tǒng)網(wǎng)絡(luò),然后通過 RDP連接接入上位機A對PLC進行作業(yè)。在此過程中,ICSGhost通過工程師的RDP連接將自身傳播到上位機A。然后,ICSGhost發(fā)起針對上位機A及其控制的PLC的攻擊,將上位機A的文件加密并通過上位機A與PLC的連接通道對PLC進行加鎖。與此同時,ICSGhost通過掃描發(fā)現(xiàn)處于同一內(nèi)網(wǎng)的上位機B。ICSGhost利用漏洞發(fā)起針對上位機B的攻擊,將自身傳播到上位機B并完成對上位機B的文件加密的攻擊。
實驗結(jié)果表明,ICSGhost能夠?qū)⒐こ處熣咀鳛槌醮胃腥灸繕耍⒁怨こ處熣緸樘澹腥咎幱趦?nèi)網(wǎng)其他工控組件,實現(xiàn)蠕蟲式感染和勒索。此種威脅確實存在,并且可以被用來進行大規(guī)模針對工控系統(tǒng)的攻擊。
針對此威脅模型,從不同網(wǎng)絡(luò)層次以及不同組件提出縱深防御與加固方案。
從組件角度進行防御,對于工程師站,建議應(yīng)用軟件應(yīng)該從正規(guī)渠道獲取,并對軟件使用校驗碼等方法進行校驗。此外,工程師站應(yīng)該做到專機專用,將生活場景與工作場景相隔離,減少受感染的可能性。對于Windows上位機,提出以下加固建議:首先,上位機應(yīng)該及時更新安全補丁,并且以最小權(quán)限原則創(chuàng)建和使用賬戶;除此之外,可以安裝防病毒軟件以防止惡意軟件感染。對于PLC,可以對其設(shè)置保護密碼,防止非授權(quán)操作。
由于PLC高度的定制化,所以對PLC進行升級、加固較為困難。對于Windows上位機,由于工控軟件大多高度定制化,所以系統(tǒng)管理員為避免兼容性問題,不敢輕易對系統(tǒng)進行修改或升級,所以本文認為在網(wǎng)絡(luò)層面通過對流量的監(jiān)控和網(wǎng)絡(luò)的控制更加具有實踐性;并且由于工控系統(tǒng)對可靠性要求高,防御措施需要盡可能不影響工控系統(tǒng)正常運行,以監(jiān)測為主是更具有實踐性的防御策略。
1.1 節(jié)提到,工控網(wǎng)絡(luò)可以以層次結(jié)構(gòu)分為現(xiàn)場儀表網(wǎng)絡(luò)、本地控制網(wǎng)絡(luò)、監(jiān)測控制網(wǎng)絡(luò)、非軍事區(qū)網(wǎng)絡(luò)、企業(yè)工作網(wǎng)絡(luò)、互聯(lián)網(wǎng)。針對各個網(wǎng)絡(luò)層次的特點,提出以下在網(wǎng)絡(luò)層之中或網(wǎng)絡(luò)層之間的縱深防御方案。
對于大部分企業(yè)來說,將充滿威脅互聯(lián)網(wǎng)與內(nèi)部辦公網(wǎng)絡(luò)進行邏輯隔離,是安全、有效的保護內(nèi)網(wǎng)安全的最重要的措施。文獻[12-16]討論了互聯(lián)網(wǎng)與內(nèi)部辦公網(wǎng)絡(luò)隔離需要注意的安全問題。
非軍事區(qū)網(wǎng)絡(luò)作為企業(yè)工作網(wǎng)絡(luò)到監(jiān)測控制網(wǎng)絡(luò)的交界處,應(yīng)該設(shè)置防火墻對企業(yè)工作網(wǎng)絡(luò)到監(jiān)測控制網(wǎng)絡(luò)進行過濾。由于企業(yè)工作網(wǎng)絡(luò)到監(jiān)測控制網(wǎng)絡(luò)連接的需求是確定的,例如進行數(shù)據(jù)傳輸、工程師的遠程操作、供應(yīng)商的遠程維護等。設(shè)置白名單規(guī)則可以有效地阻止非工控系統(tǒng)的操作者連接到監(jiān)測控制網(wǎng)絡(luò)。
在監(jiān)測與控制網(wǎng)絡(luò)中,可能存在多臺運行不同任務(wù)的上位機。若它們之間相互獨立,不需要互相訪問,則應(yīng)該將其劃分在不同的子網(wǎng)當中,進行更細粒度的網(wǎng)絡(luò)隔離,防止蠕蟲通過網(wǎng)絡(luò)在上位機之間傳播。
入侵檢測系統(tǒng)(Intrusion Detection Systems,IDS)是一種對網(wǎng)絡(luò)傳輸進行即時監(jiān)視,在發(fā)現(xiàn)可疑傳輸時發(fā)出警報或者采取主動反應(yīng)措施的網(wǎng)絡(luò)安全設(shè)備。對于監(jiān)測控制網(wǎng)絡(luò),使用入侵檢測系統(tǒng)可以發(fā)現(xiàn)在監(jiān)測控制網(wǎng)絡(luò)內(nèi)的異常操作。由于工控系統(tǒng)是個高度確定性的系統(tǒng),當SCADA系統(tǒng)被開發(fā)完畢投入應(yīng)用后,其操作行為基本上也被確定。因此,建立一個系統(tǒng)訪問正常行為的模型,并基于此模型通過諸如基于機器學(xué)習(xí)等的異常檢測方法來檢測異常行為,可以有效地實現(xiàn)對監(jiān)測控制網(wǎng)絡(luò)中的異常行為的檢測[17]。
目前大量PLC大多數(shù)沒有訪問控制,并且PLC基于硬件高度定制化,對PLC進行升級、加固較為困難,所以對發(fā)送到PLC的指令實施過濾與分析是一種有效的防御方式。所有發(fā)送到PLC的指令需要通過PLC流量防火墻,在防火墻上對指令進行分析與過濾。此外,由于工業(yè)控制網(wǎng)絡(luò)是一個高度確定性的網(wǎng)絡(luò),當一個PLC的組態(tài)開發(fā)完成后,它所進行的操作也是高度確定的,一些異常行為可以很容易地被檢測。例如,對PLC進行加鎖的指令不會出現(xiàn)在生產(chǎn)過程中,所以PLC流量防火墻發(fā)現(xiàn)此種類型的指令就可以判斷其為異常指令[18]。
攻擊者直接對PLC發(fā)送指令對PLC而言是一種巨大的安全威脅,所以保證與PLC通信的網(wǎng)絡(luò)信道安全也是非常必要的。虛擬專用網(wǎng)絡(luò)可以在公用網(wǎng)絡(luò)上建立專用網(wǎng)絡(luò),進行加密通信。將PLC接入到VPN中與上位機進行通信,可以保證信道安全,防止中間人攻擊。在對請求分析與過濾的同時,還需要對所有的操作請求記錄日志,以便在安全事件發(fā)生后分析和溯源。
到目前為止,工業(yè)控制系統(tǒng)網(wǎng)絡(luò)還沒有受到大規(guī)模的勒索軟件攻擊。這不是因為它們比傳統(tǒng)網(wǎng)絡(luò)更安全,而是網(wǎng)絡(luò)犯罪分子還沒有找到一種可以大規(guī)模感染并且有利可圖的方式。最近對于酒店門禁卡系統(tǒng)的攻擊已經(jīng)給我們敲響了警鐘。本文總結(jié)了工業(yè)控制系統(tǒng)存在的安全風(fēng)險和攻擊方法并根據(jù)觀察到的工業(yè)控制系統(tǒng)實際開發(fā)場景和存在的安全風(fēng)險,提出一種基于新的攻擊路徑的勒索蠕蟲威脅模型。基于此威脅模型,本文實現(xiàn)了ICSGhost勒索蠕蟲原型,實驗證實了此威脅。最后,我們從不同網(wǎng)絡(luò)層次以及不同組件提出縱深防御與加固方案以防御勒索蠕蟲威脅。由于工控組件的高度定制化,對組件進行升級加固的防御方法在工程實踐中難以普及,通過不同網(wǎng)絡(luò)層次的縱深防御更加容易部署應(yīng)用且有效。由于工控網(wǎng)絡(luò)高度定制化,其內(nèi)部的行為模式在系統(tǒng)開發(fā)完成投入使用之后基本確定,所以在網(wǎng)絡(luò)層面對系統(tǒng)行為進行建模,并基于此模型進行異常檢測可以作為進一步的研究方向。