黃旭 梁效寧



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