寫在前面
今天我們來聊一聊基于Wireshark的S7、OPC等工業協議分析與工業網絡漏洞挖掘~
1工控信息安全的現狀分析
2工業控制系統的風險監測
當前工業控制系統安全面臨嚴峻威脅,需要對工業控制系統網絡進行安全監測,發現工業控制系統網絡內部的安全威脅和存在的漏洞,從而采取相關的防護措施或修復相關漏洞,確保工業控制系統的設備和數據的安全。
2.1工控網絡安全監測相關技術
2.2工控網絡安全分析方法
2.2.1工業協議網絡報文分析
3WireNmap的開發與實現
Wireshark與Nmap在工業協議分析與工業漏洞挖掘中是強有力的互補,而實際中兩個軟件是分立的,導致其使用效率偏低。在工業控制系統的應用中,Wireshark軟件對工業協議支持不完整或不全面,而Nmap自帶漏洞探測腳本有限,但其支持自主開發針對工業控制系統的腳本。
3.1Wireshark源碼結構
Wireshark源碼軟件組成,如圖1所示。
圖1Wireshark源碼框架
圖1中,Core為核心調度模塊,包括報文的捕獲(Capture)、報文分析(Epan)、報文讀取與存儲(Wiretap)、界面交互與呈現(GTK/Qt),具體模塊的具體功能如表1所示。
表1Wireshark各模塊功能
3.2Nmap源碼結構
4基于WireNmap的工業協議分析
WireNmap集成了自主研發的報文解析插件,如S7協議解析插件、OPC協議TAG深度解析插件等。
4.1S7協議解析插件
圖2S7協議報文結構
表2空間類型對照表
拆分值段,值段前3個字節跳過,取值段第4字節為值的長度。
S7原生Wireshark未解析報文,如圖3所示。以圖3中數據段未解析的十六進制部分拆分為例進行方法說明,如圖4所示。
圖3S7原生Wireshark未解析報文
圖4S7協議未解析段數據結構
(1)第1字節和第2字節為第一區字段的長度20(0x0014),第3字節和第4字節為第二區字段的長度14(0x000e),點表數據在第二區;
(2)從第5字節起為第一區字段,第一區字段長度為20個字節,跳過20個字節;
(3)從25字節開始,25、26字節為數據點個數,十六進制表達為0x0001,轉換為十進制為1,即后續數據點個數只有1個,則地址段和值段分別只有一個點;
(4)讀取地址段的空間類型,取0x22&0xf0,根據表2得到空間類型;
(5)地址值按照圖中標識部分為0x00000206,換算成十進制為518;
(6)讀取值段,值段的第3字節即圖4中的0x02為值的長度,換算為十進制,值的長度為2;
(7)讀取值為0x2acd。
根據該方法,圖3中的未解析字段在經過二次開發后結果如圖5所示,可以得到點的個數、地址和值。
圖5S7協議二次解析后前后對比
可見,經過開發后,S7插件可以讀取空間類型、地址以及數值等更多信息。在實際工業控制系統中,這些信息可以對應實際的溫度、壓力以及轉速等信息,因此可以更好地對工業控制系統進行指令級分析。
4.2OPC協議
OPC是基于微軟組件對象COM/DCOM/COM+等技術基礎的一種接口標準,在標準下能夠有效的進行信息集成和數據交換。在工業控制系統中,OPC協議規范中主要應用的是OPC DA規范。在OPC DA規范中,OPC由OPC服務器中包含OPC組,組內有一個或多個對象,其結構如圖6所示。
圖6OPC對象結構組成
在OPC DA規范中,IOPCItemMgt類型報文在客戶端執行添加、刪除對象時,協商客戶端和服務器對象的句柄,在協商完成后,后續通信都通過句柄對該對象執行修改。由圖7可知,Wireshark并未對句柄進行解析。
圖7OPC原生Wireshark未解析報文示例
本文通過以下方法可以獲取句柄和句柄相關的對象名稱。
圖8OPC二次開發前后對比
由圖8可知,經過開發后的WireNmap軟件可以獲取OPC協議的TAG名字、數據類型以及數值等更多信息。在實際的工業控制系統中,該信息可以與實際物理量進行轉換,從而獲取更多的數量信息。
5基于WireNmap的工業漏洞掃描技術
WireNmap同時集成了自主研發的漏洞掃描腳本插件,如NSE腳本。
5.1NSE腳本簡介
一個完整的NSE腳本包括描述性字段、行腳本的rule以及實際腳本指令的action等多個模塊,如圖9所示。它的各個模塊的主要的功能如表3所示。
圖9NSE腳本組成
表3NSE腳本各個模塊的主要的功能
圖10NSE腳本首部
5.2.2腳本portrule
這部分主要涉及一些特定的端口以及端口上的服務,在對服務器的訪問中涉及到http,因此端口的選取是幾個有關http服務的端口,具體如下:
portrule=shortport.port_or_service({80,8080},”http”)
一般來說,在Apache Tomcat服務器安裝時會有默認的運行端口,端口一般為8080,有時會存在該端口被其他應用占用的情況,這時服務器啟動后不能正常工作,可以在Apache Tomcat的文件中進行默認端口的修改。
5.2.3腳本action
這是整個腳本的核心部分,利用put請求發送一個jsp格式的文件,之后判斷服務器對http的put請求返回的響應碼,若為201,說明此時服務器已經接受請求,對文件名以及一些細節輸出即可,如圖11所示。查看該腳本在Nmap中的運行結果,如圖12所示。
圖11NSE腳本主體
圖12NSE腳本運行結果
6基于WireNmap的資產管理與聯合分析技術
圖13WireNmap資產管理界面
由圖13可以得出網絡中的IP段與資產清單,如表4所示。
表4WireNmap報文分析與IP資產對應關系
圖13中右側框列出了當前所有的IP資產清單。點擊對應的IP后,利用列舉出來的與該IP地址相關的所有通信報文,可以直接分析該IP的流量,查看是否存在異常流量,同時結合已經開發的插件(如S7、OPC等),更好地對工業協議進行深度分析。圖13中雙擊右側IP地址,啟動如圖14所示的界面。對重點關注的資產IP進行深度探測,可以得出如表5所示的資產詳細信息。
圖14WireNmap資產掃描與深度探測
表5資產詳細信息
7結語
本文提出了一種基于Wireshark與Nmap的工業控制系統安全聯合分析方法,擴展了Wireshark的分析插件與Nmap的掃描插件,同時提出了將Wireshark與Nmap合并后的聯合分析軟件WireNmap。實際應用證明,WireNmap能更深層次解析工業協議,如S7、OPC協議,同時通過開發腳本能發現更多的漏洞,如CVE-2017-12617等。面對以竊取敏感信息和破壞關鍵基礎設施運行為主要目的工業控制系統網絡攻擊,所提方法能更快速、全方位地適應工業控制系統安全威脅的需要。
審核編輯:湯梓紅
-
控制系統
+關注
關注
41文章
6543瀏覽量
110472 -
西門子
+關注
關注
93文章
3008瀏覽量
115629 -
工業網絡
+關注
關注
0文章
90瀏覽量
16347 -
工業控制
+關注
關注
37文章
1441瀏覽量
85783 -
Wireshark
+關注
關注
0文章
49瀏覽量
6497
原文標題:西門子S7、OPC等工業協議分析與工業漏洞挖掘
文章出處:【微信號:智能制造之家,微信公眾號:智能制造之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論