江澤鑫
(廣州邦訊信息系統(tǒng)有限公司,廣東 廣州 510080)
隨著信息技術(shù)的發(fā)展,信息安全攻擊手段也在不斷豐富和發(fā)展,譬如2010年的伊朗核電站遭受“震網(wǎng)”病毒攻擊導(dǎo)致離心機(jī)損壞,2015年和2016年烏克蘭電網(wǎng)遭受“Black Energy”病毒感染導(dǎo)致大面積停電。近年來的信息安全事件表明黑客攻擊在攻擊者、攻擊對(duì)象、攻擊手段三方面發(fā)生轉(zhuǎn)變:
(1)攻擊者專業(yè)性和組織性更強(qiáng),由以往無組織的業(yè)余愛好者,發(fā)展為有組織、有贏利模式的黑客團(tuán)隊(duì),甚至上升為國(guó)家層面的網(wǎng)絡(luò)作戰(zhàn)部隊(duì)。
(2)攻擊對(duì)象目的性和針對(duì)性更強(qiáng),由以往攻擊互聯(lián)網(wǎng)網(wǎng)站,發(fā)展為地下黑產(chǎn)[1]和針對(duì)特定工業(yè)控制(簡(jiǎn)稱“工控”)系統(tǒng)的攻擊。
(3)攻擊手段更加綜合,由以往利用公開漏洞攻擊,發(fā)展為社會(huì)工程學(xué)、地下0DAY漏洞交易、水坑攻擊、擺渡病毒等長(zhǎng)時(shí)間持續(xù)的綜合攻擊,即高級(jí)持續(xù)威脅(APT)攻擊。
2010年伊朗“震網(wǎng)”病毒事件[2]后,工控安全成為了安全領(lǐng)域的研究熱點(diǎn)。目前研究對(duì)象主要集中在工控的設(shè)備安全(如施奈德PLC安全問題)、工控通信協(xié)議安全(如Modbus、CAN)和工控軟件安全(如西門子、亞控、三維力控等公司軟件)這三個(gè)方面。ICS-CERT發(fā)布了2010年至今的工控漏洞[3],公開數(shù)據(jù)顯示針對(duì)能源領(lǐng)域的工控攻擊越來越頻繁。
伊朗核電站控制系統(tǒng)具有物理隔離和部署集中兩大安全優(yōu)勢(shì),但在社會(huì)工程學(xué)、0DAY漏洞和擺渡病毒等面前仍然難擋黑客攻擊。電力監(jiān)控系統(tǒng)不僅是分散網(wǎng)絡(luò)控制系統(tǒng)較難物理管控,而且隨著智能電網(wǎng)業(yè)務(wù)迅速發(fā)展,監(jiān)控系統(tǒng)的資產(chǎn)、威脅、脆弱性都不斷增加,給電力監(jiān)控系統(tǒng)的安全防護(hù)帶來更大的挑戰(zhàn)。雖然2015年國(guó)家能源局專門發(fā)文升級(jí)了電力監(jiān)控系統(tǒng)的安全防護(hù)要求,但其主要是針對(duì)近年來新增的配用電和新能源領(lǐng)域的防護(hù)、商密和等保的合規(guī)性要求。電力監(jiān)控系統(tǒng)的安全防護(hù)重點(diǎn)仍然是系統(tǒng)的總體架構(gòu)及邊界的縱深防護(hù),在與電力業(yè)務(wù)層結(jié)合上的安全防護(hù)相對(duì)薄弱。本文的貢獻(xiàn)在于針對(duì)電力行業(yè)廣泛使用的IEC 60870-5-104(簡(jiǎn)稱104)規(guī)約[4]的安全性進(jìn)行研究:
(1)分析了目前電力行業(yè)規(guī)約的安全性,并指出104規(guī)約遙控過程的不安全特性。
(2)提出104規(guī)約遙控報(bào)文中間人攻擊三種方法。
(3)設(shè)計(jì)開發(fā)了104規(guī)約遙控報(bào)文攻擊程序,并進(jìn)行模擬攻擊實(shí)驗(yàn)。
(4)提出104規(guī)約防護(hù)對(duì)策和建議。
104規(guī)約報(bào)文分為三類:I幀、S幀、U幀。其中I幀是變長(zhǎng)幀,用于傳輸數(shù)據(jù);S幀固定6字節(jié),用于確認(rèn)接收I幀;U幀同樣固定6字節(jié),用于控制啟動(dòng)/停止/測(cè)試。遙控報(bào)文屬于I幀,用于傳輸遙控指令,I幀的詳細(xì)結(jié)構(gòu)如圖1所示。
圖1 104規(guī)約I幀報(bào)文格式
其中APCI部分的4個(gè)控制域內(nèi)容主要為報(bào)文的發(fā)送序列號(hào)和接收序列號(hào)。其中圖1的ASDU部分詳細(xì)定義如圖2所示。
圖2 104規(guī)約I幀ASDU定義
其中類型標(biāo)識(shí)是測(cè)量值、帶時(shí)標(biāo)值、命令等與業(yè)務(wù)相關(guān)的類型標(biāo)識(shí)。其中可變結(jié)構(gòu)限定詞主要定義信息體的數(shù)量。傳送原因是一個(gè)枚舉值,可以取周期、突發(fā)、激活、激活確認(rèn)、停止激活、文件傳輸?shù)?。其他字段的定義用于描述傳輸對(duì)象的內(nèi)容。
可見,104規(guī)約報(bào)文格式的定義主要針對(duì)業(yè)務(wù)需求進(jìn)行定義,缺乏安全層面的考慮。一個(gè)安全的協(xié)議應(yīng)當(dāng)包括以下四個(gè)部分:
(1)機(jī)密性:讓通信雙方傳輸?shù)膬?nèi)容無法直接被通信通道的第三人容易知曉,譬如加密措施。
(2)完整性:確保數(shù)據(jù)傳輸過程中不被篡改,如主站發(fā)送遙控“合”,不會(huì)在傳輸過程中被非法篡改為遙控“分”,或者應(yīng)該具有識(shí)別報(bào)文被篡改的能力,譬如消息摘要、HMAC。
(3)抗抵賴性:消息發(fā)送方對(duì)自己發(fā)送的內(nèi)容無法否認(rèn),譬如數(shù)字簽名。
(4)抗重放性:消息接收方應(yīng)能識(shí)別接收到的合法消息是否為舊的消息或已接收過的消息,而不執(zhí)行消息內(nèi)容的要求,譬如時(shí)間戳、消息序列號(hào)或窗口。
根據(jù)104規(guī)約的定義,其顯然不具備保密性、完整性、抗抵賴性。104規(guī)約4個(gè)控制域的發(fā)送序列號(hào)和接收序列號(hào)可以一定程度上實(shí)現(xiàn)抗重放,但抗重放性相對(duì)較弱。
(1)104規(guī)約的U幀可以控制104交互過程的啟停。目前測(cè)試過的104規(guī)約在實(shí)現(xiàn)U幀啟動(dòng)后,序列號(hào)基本都是0或1開始,可以很容易實(shí)現(xiàn)重放攻擊。
(2)由于序列號(hào)內(nèi)容沒有通過進(jìn)一步的完整性措施保證,極易被黑客一并篡改從而實(shí)現(xiàn)報(bào)文重放攻擊。
104規(guī)約主要業(yè)務(wù)功能包括遙測(cè)、遙信和遙控,其中遙控最為重要。遙控業(yè)務(wù)中主站和廠站交互過程如圖3所示。
圖3 104規(guī)約遙控交互過程
遙控交互過程包括I幀報(bào)文來回交互2次,其中第2個(gè)報(bào)文的返??梢孕:诉b控指令的正確與否(即遙控的“合”與“分”是否正確),同時(shí)在第3個(gè)報(bào)文中同樣再附帶遙控分合字段。104規(guī)約的遙控交互過程雖然通過操作人員介入進(jìn)行返校,似乎增強(qiáng)了安全性,但這只是“虛假”的安全感,它不會(huì)對(duì)104規(guī)約遙控過程起到任何安全性作用,理由是:
(1)遙控交互過程在同一TCP會(huì)話通道之內(nèi),能夠劫持一個(gè)報(bào)文也就能劫持所有報(bào)文,返校報(bào)文和遙控預(yù)置報(bào)文一樣可以被輕松篡改。
(2)操作人員的介入是基于104規(guī)約通道的報(bào)文返校,如果通信通道遭受攻擊,操作人員則無法感知。
因此,遙控返校是一個(gè)“虛假”的安全感,不僅不會(huì)增加遙控安全性,反而使得決策者產(chǎn)生“大意”并放松安全警戒??梢?,返校正確不代表安全,不代表廠站/終端接收的遙控報(bào)文正確;返校的作用僅僅是在返校錯(cuò)誤時(shí)方便操作人員發(fā)現(xiàn)異常。
本節(jié)分析三種有效的104規(guī)約中間人攻擊,主要包括:應(yīng)用層(TCP/IP網(wǎng)絡(luò)模型的第5層)的透明代理中間人、ARP(TCP/IP網(wǎng)絡(luò)模型的第2層)欺騙中間人和網(wǎng)橋過濾(TCP/IP網(wǎng)絡(luò)模型的第1層)中間人攻擊。本文還基于網(wǎng)橋過濾方法開發(fā)了104規(guī)約攻擊程序,并進(jìn)行了實(shí)驗(yàn)。
(1)攻擊方法一:ARP欺騙[5],在前置交換機(jī)上接入一個(gè)攻擊設(shè)備,向前置機(jī)及其下一跳(或網(wǎng)關(guān))發(fā)送非法ARP通知報(bào)文,使得前置機(jī)誤認(rèn)為攻擊設(shè)備是網(wǎng)關(guān),而網(wǎng)關(guān)誤認(rèn)為攻擊設(shè)備是前置機(jī),從而使得報(bào)文流經(jīng)攻擊設(shè)備進(jìn)行遙控篡改攻擊。該方法通過修改前置機(jī)和網(wǎng)關(guān)的ARP表實(shí)現(xiàn)欺騙目的,但ARP表存在生命周期,導(dǎo)致頻繁地發(fā)送非法ARP報(bào)文,容易被管理員發(fā)現(xiàn)并市場(chǎng)已有防御方法。因而,本文認(rèn)為ARP欺騙并不是一個(gè)完美的104規(guī)約攻擊方法。
(2)攻擊方法二:透明代理攻擊,在前置機(jī)與交換機(jī)之前串接一個(gè)攻擊設(shè)備,該設(shè)備配置為雙向透明代理,類似于防火墻的透明模式。將前置機(jī)與廠站的TCP連接中止于攻擊設(shè)備,攻擊設(shè)備再以前置機(jī)的名義向廠站發(fā)起TCP連接。攻擊設(shè)備將數(shù)據(jù)在兩個(gè)TCP會(huì)話之間“轉(zhuǎn)發(fā)”并篡改遙控報(bào)文。
相比于ARP欺騙,這種攻擊方法不容易被發(fā)現(xiàn),但在實(shí)現(xiàn)上相對(duì)有難度。由于需要與前置機(jī)和廠站分別建立TCP連接,一方面需要確保兩個(gè)TCP連接的Client端端口號(hào)保持一致才不容易被發(fā)現(xiàn),另一方面需要維護(hù)好兩個(gè)TCP連接狀態(tài),避免TCP狀態(tài)長(zhǎng)時(shí)間差異過大。
此外,由于透明代理將中斷了前置機(jī)與廠站的TCP連接并進(jìn)行數(shù)據(jù)“轉(zhuǎn)發(fā)”,其中絕大多數(shù)的數(shù)據(jù)包并不是攻擊者關(guān)心的對(duì)象,但為了確保不被發(fā)現(xiàn),需要一字不漏地實(shí)時(shí)“轉(zhuǎn)發(fā)”,對(duì)攻擊設(shè)備的處理性能提出了極大的挑戰(zhàn)。
因此,透明代理攻擊方法雖然理論上有效,但攻擊實(shí)踐中將遇到攻擊設(shè)備性能要求高、成本高、體積大不易部署且攻擊程序不易開發(fā)等問題。
ARP欺騙和透明代理兩種攻擊方法還存在攻擊配置參數(shù)的問題,即攻擊者需要非常清楚系統(tǒng)的IP劃分情況,并將IP配置到攻擊裝置上。本文提出的第三種攻擊方法相對(duì)簡(jiǎn)單,不需要針對(duì)性的參數(shù)配置。
(3)攻擊方法三:網(wǎng)橋過濾,其原理與攻擊方法二類似,區(qū)別是不在應(yīng)用層將TCP中斷并代理,而是將攻擊設(shè)備配置為一個(gè)網(wǎng)橋轉(zhuǎn)發(fā)設(shè)備,這樣等同于前置機(jī)到網(wǎng)關(guān)之間經(jīng)過一個(gè)網(wǎng)橋設(shè)備,最后在攻擊設(shè)備的兩個(gè)網(wǎng)卡轉(zhuǎn)發(fā)報(bào)文的過程中對(duì)遙控報(bào)文進(jìn)行篡改攻擊。
該方法可以實(shí)現(xiàn)透明代理攻擊不易被察覺的效果,而且還能解決透明代理攻擊方法存在的處理性能要求高、攻擊程序開發(fā)繁瑣、使用參數(shù)配置復(fù)雜等問題。因?yàn)閮蓚€(gè)網(wǎng)卡轉(zhuǎn)發(fā)數(shù)據(jù),不需要維護(hù)TCP連接狀態(tài),只是在目標(biāo)報(bào)文上進(jìn)行替換即可,這樣攻擊設(shè)備可以做到成本低,體積小,同時(shí)攻擊程序開發(fā)簡(jiǎn)單。
不過,這種攻擊方式存在一個(gè)小缺陷,即篡改大數(shù)據(jù)包報(bào)文較難。由于前置機(jī)與廠站之間報(bào)文通過TCP進(jìn)行承載,在TCP之下的IP層將對(duì)于大數(shù)據(jù)包進(jìn)行分片,然后再重組。網(wǎng)橋過濾攻擊方法不對(duì)數(shù)據(jù)包進(jìn)行重組,因而對(duì)于前置機(jī)與廠站之間的大包數(shù)據(jù)攻擊能力存在不足。但實(shí)際上,由于104規(guī)約的APDU長(zhǎng)度只有一個(gè)字節(jié),最大只支持256,即每個(gè)104報(bào)文都只是小包,故該攻擊方法并不會(huì)影響對(duì)104規(guī)約攻擊的效果。
本文設(shè)計(jì)實(shí)現(xiàn)的攻擊方法原理如圖4所示。在前置網(wǎng)串接一個(gè)小巧(具有隱蔽性)的雙網(wǎng)口裝置,或者改造并替換交換機(jī)的固件(如OpenWrt)。
圖4 網(wǎng)橋攻擊
該攻擊裝置工作在物理層,攻擊裝置不斷監(jiān)測(cè)流出的數(shù)據(jù)包是否為104的遙控報(bào)文(主要檢測(cè)數(shù)據(jù)包的應(yīng)用層是否包括104規(guī)約I幀格式的ASDU特定的類別標(biāo)識(shí)字段)。對(duì)于104報(bào)文只要滿足觸發(fā)條件(如時(shí)間、IP、點(diǎn)號(hào)、次數(shù)或異常等)則篡改,并記錄該遙控報(bào)文廠站IP、前置機(jī)TCP會(huì)話端口、104報(bào)文序列號(hào)、公共地址和遙控操作等參數(shù)。監(jiān)控該次篡改報(bào)文后的廠站返回報(bào)文是否為遙控返校報(bào)文,如果是,則將返校報(bào)文里的遙控操作字段再次修改,從而讓主站和廠站分別沒有察覺。
同理實(shí)現(xiàn)遙控執(zhí)行和執(zhí)行確認(rèn)報(bào)文的篡改,將整個(gè)遙控過程來回四個(gè)報(bào)文的篡改程序固化到任何具有兩個(gè)以上網(wǎng)口的硬件上,如支持開源OpenWrt項(xiàng)目的產(chǎn)品,這樣就具有足夠的隱蔽性。
為方便驗(yàn)證攻擊方法的有效性,本文創(chuàng)建三個(gè)虛擬機(jī):模擬主站虛擬機(jī)、模擬廠站虛擬機(jī)和攻擊虛擬機(jī),攻擊虛擬機(jī)配置兩個(gè)網(wǎng)卡并分別與主站虛擬機(jī)和廠站虛擬機(jī)互聯(lián)。主站虛擬機(jī)與廠站虛擬機(jī)使用PMA軟件模擬104規(guī)約過程,攻擊虛擬機(jī)里運(yùn)行一個(gè)本文提出的網(wǎng)橋攻擊方法實(shí)現(xiàn)的攻擊程序。模擬主站與模擬廠站的報(bào)文記錄分別如圖5和圖6所示。
圖5 模擬主站側(cè)的報(bào)文記錄
模擬主站的記錄顯示,在發(fā)送遙控“合”之后,收到廠站端的遙控“合”返校;隨后發(fā)送遙控執(zhí)行“合”,最后廠站端返回執(zhí)行“合”確認(rèn)。
相反,在模擬廠站的記錄卻顯示,在接收主站遙控“分”之后,發(fā)送遙控返?!胺帧?;隨后接收到主站遙控執(zhí)行“分”命令,最后廠站將執(zhí)行“分”確認(rèn)發(fā)送出去。
圖6 模擬廠站的報(bào)文記錄
本文提出的網(wǎng)橋攻擊方法在主站和廠站使用tracert/traceroute等工具進(jìn)行網(wǎng)絡(luò)調(diào)試都不會(huì)發(fā)現(xiàn)異常,甚至IP地址與MAC地址綁定等手段也都無法防御,具有足夠的隱蔽性,適合檢查時(shí)間/使用時(shí)間(TOC/TOU)異步攻擊。
本文提出的中間人攻擊方式可以從以下幾方面進(jìn)行防護(hù):
(1)應(yīng)用層設(shè)計(jì)優(yōu)化,放棄沒有安全機(jī)制的104規(guī)約。
(2)應(yīng)用層實(shí)現(xiàn)改造,放棄使用普通socket進(jìn)行TCP連接,使用SSL等安全socket進(jìn)行TCP連接。
(3)將縱向加密裝置的加密認(rèn)證功能往后移一步,嵌入前置機(jī),消滅防護(hù)盲區(qū)。
(4)各運(yùn)行單位在機(jī)房、系統(tǒng)、布線、跳線等物理設(shè)施、人員以及設(shè)備購(gòu)置等方面加強(qiáng)安全管理。
本文深入探討了104規(guī)約的安全性,提出針對(duì)104規(guī)約遙控業(yè)務(wù)的有效攻擊方法并進(jìn)行了模擬實(shí)驗(yàn),最后給出相應(yīng)的防護(hù)對(duì)策。一方面,本文提出的攻擊路徑方法只適用于研究,不能在生產(chǎn)環(huán)境使用;另一方面,系統(tǒng)管理員如果嚴(yán)格按照電力監(jiān)控系統(tǒng)安全防護(hù)方案進(jìn)行防護(hù)[6],則可以降低本文所提出的安全風(fēng)險(xiǎn)。