黃旭 梁效寧
摘要:隨著工業(yè)化和信息化的融合,傳統(tǒng)信息網(wǎng)絡(luò)的攻擊在工控網(wǎng)絡(luò)也愈發(fā)頻繁,尤其工業(yè)控制網(wǎng)絡(luò)的使用專(zhuān)用的工控協(xié)議如Modbus,S7,profine等,這些協(xié)議在設(shè)計(jì)的時(shí)候一般只考慮功能,缺乏安全驗(yàn)證,所以通信數(shù)據(jù)容易被攔截,甚至篡改,影響工控網(wǎng)絡(luò)安全。在遭遇攻擊以后,使用傳統(tǒng)的電子取證方法面臨協(xié)議無(wú)法解析,且攻擊日志保留難等問(wèn)題。在研究西門(mén)子S7協(xié)議重放攻擊基礎(chǔ)上,結(jié)合實(shí)際工作環(huán)境,提出了一種工控網(wǎng)絡(luò)協(xié)議電子取證方法,根據(jù)實(shí)際工作環(huán)境的設(shè)備數(shù)據(jù)信息,建立安全模型,通過(guò)安全模型建立正常通信安全基線,所有的通信協(xié)議通過(guò)攔截設(shè)備進(jìn)行過(guò)濾,通信數(shù)據(jù)和安全基線對(duì)比,和安全基線不一致的則認(rèn)定為篡改,攔截設(shè)備則發(fā)出告警信息,同時(shí)通信數(shù)據(jù)被攔截,所有的過(guò)濾和攔截?cái)?shù)據(jù)和分析過(guò)程都會(huì)被作為日志記錄。經(jīng)實(shí)驗(yàn)證明,該方法可以有效檢測(cè)通信數(shù)據(jù)是否被篡改,所有的過(guò)濾和攔截?cái)?shù)據(jù)都被有效分析并記錄,對(duì)于電子取證起到了良好的幫助作用。
關(guān)鍵詞:電子取證;協(xié)議解析;工控網(wǎng)絡(luò);工控協(xié)議;S7;重放攻擊
1.背景
工業(yè)控制系統(tǒng)廣泛用于冶金、電力、石油石化、核能等工業(yè)生產(chǎn)領(lǐng)域,以及航空、鐵路、公路、地鐵等公共服務(wù)領(lǐng)域,是國(guó)家關(guān)鍵生產(chǎn)設(shè)施和基礎(chǔ)設(shè)施運(yùn)行的“中樞”。從工業(yè)控制系統(tǒng)自身來(lái)看,隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展,尤其是信息化與工業(yè)化深度融合,工業(yè)控制系統(tǒng)越來(lái)越多地采用通用協(xié)議、通用硬件和通用軟件,通過(guò)互聯(lián)網(wǎng)等公共網(wǎng)絡(luò)連接的業(yè)務(wù)系統(tǒng)也越來(lái)越普遍,這使得針對(duì)工業(yè)控制系統(tǒng)的攻擊行為大幅度增長(zhǎng),也使得工業(yè)控制系統(tǒng)的脆弱性正在逐漸顯現(xiàn),面臨的信息安全問(wèn)題日益突出。2010 年的“震網(wǎng)”病毒、 2012 年的超級(jí)病毒“火焰”、 2014 年的 Havex 病毒等等專(zhuān)門(mén)針對(duì)工業(yè)控制系統(tǒng)的病毒爆發(fā)給用戶帶來(lái)了巨大損失,同時(shí)直接或間接地威脅到國(guó)家安全。2015 年發(fā)生的烏克蘭電力遭受攻擊事件看到,在不需要利用復(fù)雜攻擊手段、不需要完整還原業(yè)務(wù)系統(tǒng)運(yùn)行過(guò)程的情況下,就可以達(dá)到對(duì)工控系統(tǒng)的運(yùn)行影響。從實(shí)際的攻擊過(guò)程看,攻擊的成本在降低,而攻擊所帶來(lái)的影響在進(jìn)一步加重。
2.電子取證
電子取證一直以在公檢法等政府部門(mén)、知識(shí)產(chǎn)權(quán)機(jī)構(gòu)、數(shù)據(jù)服務(wù)機(jī)構(gòu)、情報(bào)分析機(jī)構(gòu)和企業(yè)網(wǎng)絡(luò)安全部門(mén)等發(fā)揮著巨大作用。隨著工業(yè)化和信息化的融合,傳統(tǒng)信息網(wǎng)絡(luò)的攻擊在工控網(wǎng)絡(luò)也愈發(fā)頻繁,工控網(wǎng)絡(luò)也需要進(jìn)行電子取證,通過(guò)網(wǎng)絡(luò)狀態(tài)和數(shù)據(jù)包分析,日志文件分析,文件內(nèi)容調(diào)查,使用痕跡調(diào)查等分析,發(fā)現(xiàn)入侵的行為和動(dòng)作,以便采取相應(yīng)的應(yīng)對(duì)措施。
但是,工控網(wǎng)絡(luò)和傳統(tǒng)信息網(wǎng)絡(luò)有著巨大的區(qū)別,表現(xiàn)之一就是公開(kāi)網(wǎng)絡(luò)采用專(zhuān)有通信協(xié)議,這些協(xié)議很多并不公開(kāi)協(xié)議內(nèi)容,常規(guī)的取證方法無(wú)法分析協(xié)議包數(shù)據(jù)。同時(shí),由于工業(yè)控制網(wǎng)絡(luò)的使用專(zhuān)用的工控協(xié)議如Modbus,S7,profine等,這些協(xié)議在設(shè)計(jì)的時(shí)候一般只考慮功能,缺乏安全驗(yàn)證,所以通信數(shù)據(jù)容易被攔截,甚至篡改,影響工控網(wǎng)絡(luò)安全,這些協(xié)議的執(zhí)行一般是通過(guò)上位機(jī)向下位機(jī)下發(fā)執(zhí)行指令,日志記錄在上位機(jī)日志中,下位機(jī)日志記錄簡(jiǎn)單,無(wú)法提供取證完整的技術(shù)支撐。
針對(duì)這種困難,在研究西門(mén)子S7協(xié)議重放攻擊基礎(chǔ)上,結(jié)合實(shí)際工作環(huán)境,提出了一種工控網(wǎng)絡(luò)被攻擊時(shí)的電子取證方法,根據(jù)實(shí)際工作環(huán)境的設(shè)備數(shù)據(jù)信息,建立數(shù)據(jù)安全模型,通過(guò)數(shù)據(jù)安全模型建立正常通信安全基線,所有的通信協(xié)議從上位機(jī)發(fā)送下位機(jī)時(shí)必須通過(guò)攔截設(shè)備進(jìn)行過(guò)濾,通信數(shù)據(jù)和安全基線對(duì)比,和安全基線不一致的則認(rèn)定為異常篡改,攔截設(shè)備發(fā)出告警信息,同時(shí)通信數(shù)據(jù)被攔截,所有的過(guò)濾和攔截?cái)?shù)據(jù)和分析過(guò)程都會(huì)被作為日志被記錄。經(jīng)實(shí)驗(yàn)證明,該方法可以有效檢測(cè)通信數(shù)據(jù)是否被篡改,所有的過(guò)濾和攔截?cái)?shù)據(jù)都被有效分析并記錄,記錄的日志是經(jīng)過(guò)解析的可以閱讀的內(nèi)容,電子取證可以直接使用,這對(duì)于工控網(wǎng)絡(luò)攻擊時(shí)的快速安全的電子取證起到了良好的幫助作用。
3.工控協(xié)議分析
3.1.基本功能分析
S7 協(xié)議是西門(mén)子專(zhuān)有協(xié)議,廣泛用于各種通訊服務(wù),S7 協(xié)議獨(dú)立于西門(mén)子各種通訊總線,可以在 MPI,PROFIBUS,Ethernet ,PROFINET上運(yùn)行。S7協(xié)議是西門(mén)子的私有協(xié)議,不對(duì)外公開(kāi),我們通過(guò)PLC通信過(guò)程的偵聽(tīng)來(lái)分析S7協(xié)議的實(shí)現(xiàn)。
通過(guò)分析,我們得到了S7協(xié)議的通信過(guò)程,數(shù)據(jù)讀取分為三個(gè)步驟:
PLC和應(yīng)用程序通過(guò)TCP三次握手,建立連接關(guān)系;
通過(guò)PCL 和客戶應(yīng)用程序通過(guò)RFC1006 建立連接請(qǐng)求和應(yīng)答關(guān)系;
PLC使用S7協(xié)議和應(yīng)用程序S7協(xié)議之間建立請(qǐng)求應(yīng)答關(guān)系;
重復(fù)第三步,直至數(shù)據(jù)讀取過(guò)程結(jié)束。
協(xié)議字段解釋如下:
請(qǐng)求應(yīng)答:0x1為發(fā)送命令,0x3為應(yīng)答幀。
保留:保留,填充為0。
事務(wù)處理標(biāo)識(shí):請(qǐng)求、應(yīng)答事務(wù)標(biāo)識(shí)。
命令長(zhǎng)度:幀長(zhǎng)度。
保留:保留,填充為0。
命令符:0x4 位讀取命令,0x5位寫(xiě)命令。
讀取數(shù)據(jù)段數(shù):讀取數(shù)據(jù)段的個(gè)數(shù)。
讀取數(shù)據(jù)段命令域:讀取多個(gè)不連續(xù)的數(shù)據(jù)時(shí),該部分可以重復(fù)出現(xiàn)。
命令域字段標(biāo)識(shí)頭:讀取數(shù)據(jù)段命令域的標(biāo)識(shí)頭。
命令域字段長(zhǎng)度:命令域字段的長(zhǎng)度。
未知:通常為0x10,暫不清楚具體含義。
數(shù)據(jù)類(lèi)型:0x1bit,0x2 byte,0x4位float。
讀取字節(jié):讀取字節(jié)的長(zhǎng)度。
數(shù)據(jù)塊編號(hào):讀取數(shù)據(jù)塊編號(hào),I、Q、M等區(qū)為0。
寄存器類(lèi)型:讀取寄存器類(lèi)型。
偏移地址:開(kāi)始讀取量的偏移地址,按bit計(jì)算。
數(shù)據(jù)段:根據(jù)讀取不聯(lián)系的地址命令,一個(gè)應(yīng)答幀可以包含過(guò)個(gè)讀取的數(shù)據(jù)段。其中,標(biāo)示頭為 XFF,有效性標(biāo)示該數(shù)據(jù)段數(shù)據(jù)的有效性,數(shù)據(jù)長(zhǎng)度為返回的數(shù)據(jù)長(zhǎng)度,子數(shù)據(jù)段數(shù)據(jù)為返回的數(shù)據(jù)。
3.2.安全性分析
S7是典型的工控網(wǎng)絡(luò)協(xié)議,研究其安全性對(duì)于加強(qiáng)工業(yè)控制網(wǎng)絡(luò)安全有重要意義。經(jīng)過(guò)分析可知,S7存在如下安全問(wèn)題。
???? 缺少認(rèn)證
認(rèn)證的目的是保證收到的信息來(lái)自于合法的用戶,未認(rèn)證的用戶向設(shè)備發(fā)送命令不會(huì)被執(zhí)行。在S7的通信過(guò)程中,沒(méi)有任何認(rèn)證方面的相關(guān)定義,任何人只要找到一個(gè)合法地址即可使用功能碼建立S7通信會(huì)話,從而擾亂控制過(guò)程。
???? 缺少授權(quán)
授權(quán)是保證不同的特權(quán)操作由擁有不同權(quán)限的認(rèn)證用戶來(lái)完成,這樣可以降低誤操作與內(nèi)部攻擊的概率。任意用戶可以執(zhí)行任意功能,如PLC啟停,程序上載,后門(mén)植入等。
???? 缺少加密
加密可以保證通信過(guò)程中雙方的信息不被第三方非法獲取。在S7通信過(guò)程中,地址和命令全部采用明文傳輸,所以可以很容易被攻擊者捕獲和解析,然后篡改報(bào)文,發(fā)送出去,從而影響控制過(guò)程。截取的非加密數(shù)據(jù)如圖1所示:
4.安全防護(hù)研究
4.1.風(fēng)險(xiǎn)攻擊分析
???? 病毒和蠕蟲(chóng)
西門(mén)子的PLC通信端口都是102端口,所以病毒和蠕蟲(chóng)可以通過(guò)不定時(shí)掃描102端口,通過(guò)發(fā)送獲取cpu信息的數(shù)據(jù)包對(duì)PLC的類(lèi)型進(jìn)行判斷,然后加載適合的payload程序??梢园l(fā)送已經(jīng)編寫(xiě)好的程序程序控制PLC,比如停止PLC工作,清空plc程序,在DB中寫(xiě)入垃圾指令等;還可以通過(guò)FB塊TCON、TDISCON、TSEND、TRCV模塊進(jìn)行PLC之間的傳播感染。
???? 重放攻擊
通過(guò)抓包截取PLC和應(yīng)用程序之間的通信數(shù)據(jù),即從開(kāi)始連接到結(jié)束連接這一段的數(shù)據(jù)包,然后記錄,修改再進(jìn)行重新發(fā)送,因?yàn)镾7協(xié)議缺少認(rèn)證授權(quán)及加密特性,重放被攻擊者經(jīng)常使用。
4.2.安全防護(hù)流程
為了避免S7協(xié)議的篡改風(fēng)險(xiǎn),保護(hù)通信環(huán)境安全,針對(duì)工控環(huán)境通信流量相對(duì)單一,上位機(jī)和PLC通信模型相對(duì)固定,經(jīng)過(guò)分析實(shí)際環(huán)境使用的機(jī)械手的部件抓手、貨物、吊臂和板車(chē)的關(guān)系,本文提出一種工控網(wǎng)絡(luò)協(xié)議攔截保護(hù)方法,基本思路就是通過(guò)分析上位機(jī)和PLC的通信流量,建立通信關(guān)系模型,形成安全基線。上位機(jī)和下位機(jī)的通信數(shù)據(jù)都需要經(jīng)過(guò)通信模型驗(yàn)證過(guò)濾,通信數(shù)據(jù)和安全基線對(duì)比,和安全基線不一致的則認(rèn)定為篡改,攔截設(shè)備則發(fā)出告警信息,同時(shí)通信數(shù)據(jù)被攔截。
在實(shí)際PLC使用過(guò)程中,正常狀態(tài)下,通過(guò)設(shè)置貨物的X,Y坐標(biāo),吊臂的X坐標(biāo),抓手X,Y坐標(biāo),板車(chē)X坐標(biāo)的值,可以通過(guò)機(jī)械手把貨物放在板車(chē)上。
4.3.安全防護(hù)實(shí)驗(yàn)驗(yàn)證
根據(jù)模型的算法,我們?cè)O(shè)計(jì)了三組實(shí)驗(yàn)來(lái)驗(yàn)證。
(1)正常未篡改實(shí)驗(yàn)
實(shí)驗(yàn)所用相關(guān)數(shù)據(jù)表1所示:
實(shí)驗(yàn)過(guò)程中對(duì)數(shù)據(jù)抓包,抓包數(shù)據(jù)如圖2所示:
從效果圖可以看出,滿足安全基線的數(shù)據(jù),,板車(chē)、貨物、吊臂、抓手關(guān)系顯示正常,且貨物被正確放在板車(chē)上如圖3所示:
(2)未攔截的篡改實(shí)驗(yàn)
實(shí)驗(yàn)所用相關(guān)數(shù)據(jù)表2所示:
實(shí)驗(yàn)過(guò)程中對(duì)數(shù)據(jù)抓包,抓包數(shù)據(jù)如圖3所示:
效果圖如圖4所示,從圖中可以看出,貨物半掉在空中,這很顯然不符合常規(guī),篡改成功,也就是說(shuō)重放攻擊成功。
(3)攔截的篡改實(shí)驗(yàn)
實(shí)驗(yàn)所用相關(guān)數(shù)據(jù)表3所示:
5.總結(jié)
基于西門(mén)子S7協(xié)議的特點(diǎn),本文對(duì)針對(duì)S7重放攻擊威脅進(jìn)行了研究,并結(jié)合實(shí)際工控網(wǎng)絡(luò)環(huán)境,提出了攔截算法并做實(shí)驗(yàn)進(jìn)行驗(yàn)證,在攔截的過(guò)程中實(shí)現(xiàn)電子取證的功能,實(shí)驗(yàn)結(jié)果表明,該算法能有效地?cái)r截針對(duì)S7的篡改攻擊,同時(shí)保證了電子取證的有效性,不僅可以有效的保護(hù)工控網(wǎng)絡(luò)環(huán)境的安全還可以對(duì)電子取證做出有效幫助。
參考文獻(xiàn)
[1]馬多賀.基于POF的網(wǎng)絡(luò)竊聽(tīng)攻擊移動(dòng)目標(biāo)防御方法[J],通信學(xué)報(bào),2018,39(2):1-15
[2]姚羽.工業(yè)控制網(wǎng)絡(luò)安全技術(shù)與實(shí)踐[M].機(jī)械工業(yè)出版社,2017:100-110
[3]房強(qiáng).一種單獨(dú)運(yùn)行在PLC中的蠕蟲(chóng)病毒研究[J],信息安全與通信保密,2016(9):46-47.