国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于suricata 的IEC104 插件設(shè)計與實現(xiàn)*

2021-01-26 04:00:56張周晶申玲鈺
通信技術(shù) 2021年1期
關(guān)鍵詞:應(yīng)用層插件日志

張周晶,申玲鈺

(1.中國電子科技網(wǎng)絡(luò)信息安全有限公司,四川 成都 610041;2.中國電子科技集團公司第三十研究所,成都 610041)

0 引言

隨著工業(yè)互聯(lián)網(wǎng)的發(fā)展,工業(yè)網(wǎng)絡(luò)單獨組網(wǎng)的狀態(tài)正在被改變,為了將人、數(shù)據(jù)和設(shè)備進(jìn)行有效連接,國外眾多大型公司已根據(jù)其自身產(chǎn)品及產(chǎn)業(yè)特點構(gòu)建了對應(yīng)的工業(yè)互聯(lián)網(wǎng)平臺,我國在該領(lǐng)域也正在建立更加完善的框架。

中國工業(yè)互聯(lián)網(wǎng)聯(lián)盟設(shè)計并提出了工業(yè)互聯(lián)網(wǎng)平臺架構(gòu)[1],如圖1 所示,在該平臺架構(gòu)設(shè)計中,工業(yè)安全防護(hù)貫穿了應(yīng)用層、平臺層、Iaas 層以及邊緣層。在工業(yè)互聯(lián)網(wǎng)的架構(gòu)中,互聯(lián)網(wǎng)可以訪問工業(yè)網(wǎng)絡(luò)的情況也變得更加普遍,工業(yè)互聯(lián)網(wǎng)的安全防護(hù)從底層到應(yīng)用層都有關(guān)鍵技術(shù),覆蓋工業(yè)互聯(lián)網(wǎng)全架構(gòu)。在四個層面的安全防護(hù)中,數(shù)據(jù)安全包括數(shù)據(jù)存儲安全和數(shù)據(jù)傳輸安全是重點和難點。上傳和下發(fā)指令的工業(yè)協(xié)議會直接影響產(chǎn)品的質(zhì)量、設(shè)備的運行狀態(tài),如果指令不當(dāng),將對生產(chǎn)造成實際的損失,情況嚴(yán)重將毀壞生產(chǎn)設(shè)備,因此監(jiān)測防護(hù)設(shè)備對于工業(yè)協(xié)議的指令級行為監(jiān)測需求也在穩(wěn)步提高。

在工業(yè)協(xié)議中,IEC104 協(xié)議被廣泛應(yīng)用于電力行業(yè)和軌道交通行業(yè)[2]。通過IEC104 協(xié)議,實體設(shè)備之間能夠通過數(shù)據(jù)傳輸進(jìn)行設(shè)備的行為控制,例如控制主站能夠遠(yuǎn)程讀取子站設(shè)備狀態(tài),操作設(shè)備行為,調(diào)整設(shè)備參數(shù),子站設(shè)備能夠主動定時上傳狀態(tài)及相關(guān)監(jiān)測數(shù)據(jù)。如果主站下達(dá)指令通過協(xié)議錯誤地發(fā)送給子站,會影響子站設(shè)備的正常行為,而子站上傳狀態(tài)錯誤則會影響主站對子站實際情況的監(jiān)測,因此IEC104 協(xié)議指令級的監(jiān)測、檢測和審計是工業(yè)環(huán)境中入侵檢測設(shè)備的必要功能。

圖1 工業(yè)互聯(lián)網(wǎng)平臺架構(gòu)

在當(dāng)前的入侵檢測軟件系統(tǒng)中,suricata 框架提供多平臺支持,能夠根據(jù)實際情況進(jìn)行配置,并且具有高效的采集能力,自帶協(xié)議解析器引擎和基于snort 規(guī)則的檢測引擎,能夠滿足當(dāng)前工業(yè)環(huán)境中的流量監(jiān)測、TCP 會話監(jiān)測及部分通用協(xié)議的指令監(jiān)測。因此在suricata 當(dāng)前的解析器引擎、監(jiān)測引擎和輸出引擎內(nèi)增加IEC104 協(xié)議的解析器、檢測器和日志輸出器能夠補充suricata 入侵檢測軟件框架在IEC104 協(xié)議監(jiān)測上的不足,為工業(yè)互聯(lián)網(wǎng)提供一個能夠進(jìn)行指令級的可審計的入侵監(jiān)測系統(tǒng)。

1 Suricata 軟件框架

suricata 支持三種工作模式,分別是single 模式、autofp 模式和workers 模式。single 模式為單線程工作模式,即只啟動一個線程完成采集、分析、會話管理、檢測、日志輸出的功能;autofp 模式通常采用多采集線程,在采集和解析完成后發(fā)送給會話管理線程做后續(xù)處理;worker 模式采用多線程模式,每個線程完整地進(jìn)行采集、每個線程獨立完成采集、分析、會話管理、檢測、輸出功能,驅(qū)動層就做了適當(dāng)?shù)呢?fù)載均衡,單個數(shù)據(jù)包都在一個線程里處理。

Suricata 系統(tǒng)[3]采用自定義信號—與槽機制,用中斷信號進(jìn)行中斷,從而調(diào)用對應(yīng)回調(diào)函數(shù)的方式觸發(fā)流程,因此在程序初始化時,即依據(jù)配置信息初始化了回調(diào)函數(shù)。以auto 模式為例,數(shù)據(jù)包在被接收后,數(shù)據(jù)的流向如圖3 所示。先查找包對應(yīng)的流,再根據(jù)數(shù)據(jù)包的信息更新對應(yīng)的流,在StreamTcp 中判斷包是否需要校驗,然后根據(jù)StreamTcpPacket 更新數(shù)據(jù)包對應(yīng)的流以及應(yīng)用層數(shù)據(jù);在檢測[4]的時候根據(jù)流監(jiān)測結(jié)果采用DetectFlow 或者DetectNoFlow,根據(jù)會話信息和規(guī)則內(nèi)容進(jìn)行匹配。在數(shù)據(jù)檢測結(jié)束后,進(jìn)行日志的輸出。

圖2 suricata 三種工作模式流程圖

因此,IEC104 協(xié)議的插件包括三個部分:解析插件、檢測插件和日志輸出插件。協(xié)議解析插件能夠完成對于IEC104 報文的十六進(jìn)制碼的分析,將IEC104 協(xié)議的報文解析成具有可讀性的結(jié)構(gòu)化數(shù)據(jù);檢測插件部分能夠根據(jù)解析器輸出的結(jié)構(gòu)化數(shù)據(jù)和規(guī)則進(jìn)行匹配比對,從而對指令級別的內(nèi)容進(jìn)行檢測,并記錄警告;日志輸出插件能夠?qū)⒚織lIEC104 報文的可讀性指令輸出。

2 IEC104 解析模塊設(shè)計

2.1 IEC104 解析模塊注冊

在圖2 中可見,入口為AppLayerParseSetup 中調(diào)用的注冊函數(shù)RegisterIEC104Parse。其中包括以下內(nèi)容:

(1)注冊協(xié)議端口和協(xié)議名稱;

(2)注冊預(yù)處理函數(shù),預(yù)處理函數(shù)使用位置在AppLayer 層判斷數(shù)據(jù)包的應(yīng)用層類型時調(diào)用,預(yù)處理協(xié)議即會將數(shù)據(jù)傳入對應(yīng)的應(yīng)用層協(xié)議解析器,進(jìn)行十六進(jìn)制數(shù)據(jù)包解析;

(3)注冊解析函數(shù)IEC104RequestParse 和IEC104ResponseParse,分別處理請求和響應(yīng)數(shù)據(jù)包;

(4)注冊應(yīng)用層會話管理函數(shù)IEC104State Alloc,IEC104StateFree,IEC104StateTxFree

分別管理應(yīng)用層狀態(tài)空間的分配、清理以及清理每個會話中的傳輸對象;

圖3 suricata 內(nèi)部插件調(diào)用流程

(5)注冊傳輸對象相關(guān)函數(shù),如獲取當(dāng)前傳輸對象IEC104GetTx,獲取總的傳輸對象個數(shù)IEC104GetTxCnt;

(6)注冊日志相關(guān)函數(shù),如傳輸對象日志狀態(tài)IEC104GetTxLogged,IEC104SetTxLogged;

(7)注冊IEC104GetAlstateProgressCompletionS tatus,返回當(dāng)前應(yīng)用層會話狀態(tài)。

重點關(guān)注解析函數(shù)內(nèi)部的實現(xiàn),即IEC104Parser。

2.2 IEC104 協(xié)議說明及解析函數(shù)設(shè)計

IEC104 規(guī)約發(fā)布于1992 年,更新于2002 年,當(dāng)前使用較多的是2002 年版本。基于TCP/IP 的IEC104協(xié)議格式稱為應(yīng)用規(guī)約數(shù)據(jù)單元(Application Protocol Data Unit,APDU),其中分為應(yīng)用規(guī)約控制信息(Application Protocol Control Information,APCI)和應(yīng)用服務(wù)數(shù)據(jù)單元(Application Service Data Unit,ASDU),根據(jù)傳輸需求分為不編號的控制功能格式(U 幀)、編號的監(jiān)視功能格式(S 幀)和編號的信息傳輸格式(I 幀)。

I 幀用于傳輸應(yīng)用數(shù)據(jù),根據(jù)類型標(biāo)識的不同,數(shù)據(jù)格式各有差異,一般而言為APCI+ASDU 兩部分組成,總格式見圖4,其中控制域1 和控制域2為發(fā)送序號,控制域3 和控制域4 為接收序號,類型標(biāo)識定義了信息對象的結(jié)構(gòu)類型和格式,傳送原因標(biāo)識了協(xié)議發(fā)出的原因,詳表見表1。ASDU 包含公共體地址和信息體地址,其中公共體地址長度為2 字節(jié),其低位表示標(biāo)志裝置地址;信息體地址長度為3 字節(jié),對應(yīng)點表的點號。

例如請求和響應(yīng)的十六進(jìn)制數(shù)如下所示,解釋如括號中所示。

請求:68(啟動符) 12(APDU 長度)02 c7(發(fā)送序號)ce ca(接收序號) 01(type)02(可變結(jié)構(gòu)限定詞)03

響應(yīng):00(傳送原因) 01 00 (公共體地址),49 01 00 (信息體地址)01(信息體元素)4a 01 00(信息對象地址) 00(信息體元素)…

U 幀為控制用報文,其格式見圖6,只有APCI格式部分一共只有啟動/啟動確認(rèn)、停止傳送/停止傳送確認(rèn)以及鏈路測試/鏈路測試確認(rèn)共3 類6種命令。

S 幀用于無應(yīng)用數(shù)據(jù)可傳輸時確認(rèn)對方的發(fā)送,只有APCI 部分,其控制域如圖5 所示,控制域1和控制域2 已經(jīng)被固定,即不存在發(fā)送序號,只有接收序號。

圖4 IEC104 報文結(jié)構(gòu)

圖5 IEC104 報文S 幀結(jié)構(gòu)

圖6 IEC104 報文U 幀結(jié)構(gòu)

IEC104 協(xié)議中,U 幀和S 幀只有APCI 部分,僅I 幀有ASDU 部分,因此將IEC104 的解析區(qū)分為APCIParser 和ASDUParser。APCIParser 需要解析啟動字符為0x68,APDU 長度,控制域1,控制域2,控制域3 和控制域4,每個控制域為一個字節(jié)。根據(jù)1.1 節(jié)可知,能夠通過控制域1 的低2 位來區(qū)分幀格式,若低2 位為0x00,則為I 幀,0x01 為S 幀,0x03 為U 幀。

ASDUParser 僅解析I 幀報文的ASDU 結(jié)構(gòu)體,ASDU 為變長結(jié)構(gòu)體和定長結(jié)構(gòu)體兩部分,定長結(jié)構(gòu)體能夠解析內(nèi)容為報文類型,傳送質(zhì)量、傳送信息體個數(shù)、原因、測試以及對象地址,變長部分為信息體地址及其結(jié)構(gòu)體。由于變長部分有自定義內(nèi)容,因此只檢查報文的完整性,不做內(nèi)容具體解析。從應(yīng)用層第7 字節(jié)開始,獲取定長結(jié)構(gòu)體信息,再根據(jù)解析到的信息體個數(shù)完成已知信息體格式的結(jié)構(gòu)體解析。

例如,若報文為I 類型報文,其應(yīng)用層報文為:

68(啟動字符) 0e (長度) 04 00(RX) 00 00(TX)03 01 01 00 01 00 00 00 00 00

第一字節(jié)到第七字節(jié)由APCIParser 解析,剩余部分由ASDUParser 解析,解析結(jié)果如表1 所示。

表1 parser 處理內(nèi)容及對應(yīng)關(guān)系

在注冊完成后,流操作線程會根據(jù)數(shù)據(jù)流走向調(diào)用對應(yīng)的已經(jīng)注冊的IEC104 函數(shù),從而進(jìn)行創(chuàng)建、設(shè)置和解析。這也是suricata 框架的一大優(yōu)點,即解析器的狀態(tài)分配都是可以被流操作線程控制的。重點關(guān)注的是請求和響應(yīng)的解析函數(shù)。由于IEC104 數(shù)據(jù)報文的請求和響應(yīng)都是I 幀、U幀和S 幀,其實完成的是同一個IEC104Parser。IEC104Parser 的流程圖如圖所示,其總流程為:收到應(yīng)用層數(shù)據(jù)包并檢測會話狀態(tài)、流狀態(tài);然后解析APCI 頭部的固定格式,若完成解析則給當(dāng)前State 創(chuàng)建Tx,根據(jù)APCI 頭部信息檢查包類型,若為I 幀,則調(diào)用ASDUParser 進(jìn)行解析,直到解析完成,并處理可能存在的待組包層應(yīng)用層信息。流程圖如圖6 所示。

3 IEC104 監(jiān)測模塊的設(shè)計

監(jiān)測模塊以解析模塊為基礎(chǔ),輸入為解析結(jié)果,如自定義IEC104 結(jié)構(gòu)transaction 等,IEC104 協(xié)議監(jiān)測模塊針對數(shù)據(jù)包類型PacketType 和TypeId。入口函數(shù)為SigTableSetup[5],需要將PacketType 和TypeId 的三類函數(shù),即setup,free,match 函數(shù)進(jìn)行注冊,同時注冊IEC104 的監(jiān)測模塊到主引擎。

suricata 引擎首先確定了回調(diào)函數(shù)的參數(shù),應(yīng)用層協(xié)議注冊監(jiān)測模塊時,setup、free、match 的回調(diào)函數(shù)需要按照固定參數(shù)注冊。在PacketType 中對I 幀、U 幀、S 幀進(jìn)行告警。若I 幀進(jìn)行警告日志的輸出,在初始化時,s 引擎將該規(guī)則轉(zhuǎn)換成可用數(shù)據(jù),存儲在DetectIEC104 結(jié)構(gòu)中,通過與解析結(jié)果進(jìn)行比對,即可得到結(jié)果。PacketType 的檢測流程為:通過match 函數(shù)獲取解析結(jié)構(gòu)transaction 和預(yù)置規(guī)則結(jié)構(gòu)DetectIEC104,通過比對transaction 中packetType 和檢測結(jié)構(gòu)中的packetType 即可得出結(jié)果,若相同則返回1,表示需要輸出警告信息,否則輸出0,不進(jìn)行警告信息輸出。

4 IEC104 日志模塊的設(shè)計

suricata 框架的日志模塊為獨立模塊,在worker模式下日志模塊的結(jié)構(gòu)圖如圖8 所示。注冊的table包括告警表、應(yīng)用層協(xié)議日志表等,在應(yīng)用層日志輸出時,在調(diào)用時按照數(shù)據(jù)包日志表、傳輸日志表、文件日志表、文件內(nèi)容日志表及流日志表的順序輪詢,在查到傳輸數(shù)據(jù)表時也按照圖8 第二行注冊的表信息依次輪詢,首先找到alert 表,查看alert 表是否有警告信息需要輸出,若有則調(diào)用回調(diào)函數(shù)進(jìn)行輸出,若沒有,則繼續(xù)查詢到應(yīng)用層日志事件表,若有輸出,則調(diào)用輸出函數(shù)進(jìn)行輸出,5 張數(shù)據(jù)表中都注冊有一到多個子表。

IEC104 日志模塊通過OutputRegisterLoggers()調(diào)用IEC104 的日志注冊函數(shù),注冊函數(shù)JsonIE C104Register 注冊了ToServer 和ToClient 的線程啟停管理函數(shù),配置讀取函數(shù)及日志輸出函數(shù),并在Init 時通過AppLayerParserRegisterLogger 將IEC104的日志模塊注冊到日志的module 里。在軟件初始化時,調(diào)用狀態(tài)初始化函數(shù)JsonIEC104LogInitCtx初始化讀取到的配置信息,配置信息包括文件類型、文件狀態(tài),根據(jù)配置信息完成文件創(chuàng)建、文件狀態(tài)初始化,JsonIEC104LogDeInitCtx 完成文件的清理。JsonIEC104LoggerToClient 和JsonIEC104 LoggerToServer 分別生成請求及響應(yīng)的報文日志。在生成日志前,傳入?yún)?shù)傳輸對象Tx,Tx 中存儲解析后的內(nèi)容,如APCI 頭部結(jié)構(gòu),ASDU 內(nèi)部結(jié)構(gòu),通過讀取Tx 結(jié)構(gòu)體能夠?qū)㈥P(guān)心的參數(shù)如typeId,causeTx 等信息提取至json 格式中。通過調(diào)用CreateJSONHeader,能夠?qū)⒃摂?shù)據(jù)包的流信息輸出到j(luò)son 格式中暫存,通過OutputJSONBuffer 將js數(shù)據(jù)寫入buffer 中,并將buffer 通過LogFileWrite 的方式輸出,輸出結(jié)構(gòu)是根據(jù)配置信息中的logType進(jìn)行區(qū)分,根據(jù)配置和依賴項可以支持寫入syslog文件、unix socket 或者redis 服務(wù)器上。

圖7 解析函數(shù)設(shè)計流程圖

圖8 日志模塊數(shù)據(jù)結(jié)構(gòu)設(shè)計

5 IEC104 插件實現(xiàn)結(jié)果

IEC104 插件實現(xiàn)后,會有以下日志結(jié)果發(fā)生變化。首先是suricata 的運行日志,其中會增加應(yīng)用層IEC104 的數(shù)據(jù)解析個數(shù)、transaction 個數(shù)信息。其示例如圖9 所示。

圖9 stats 增加數(shù)據(jù)結(jié)構(gòu)

其次,能夠在日志中看到iec104 的日志信息,其示例如下:

6 結(jié)語

通過在suricata 軟件框架下設(shè)計及實現(xiàn)IEC104插件,當(dāng)前的版本能夠統(tǒng)計IEC104 的報文個數(shù)、流量情況,能根據(jù)IEC104 解析器解析結(jié)果報告指令、傳輸原因和公共體地址信息。該設(shè)計增強了suricata 的功能,提供了針對性的檢測和告警信息。能夠完成工業(yè)互聯(lián)網(wǎng)的指令級檢測。

猜你喜歡
應(yīng)用層插件日志
一名老黨員的工作日志
華人時刊(2021年13期)2021-11-27 09:19:02
扶貧日志
心聲歌刊(2020年4期)2020-09-07 06:37:14
自編插件完善App Inventor與樂高機器人通信
電子制作(2019年22期)2020-01-14 03:16:34
游學(xué)日志
基于分級保護(hù)的OA系統(tǒng)應(yīng)用層訪問控制研究
新一代雙向互動電力線通信技術(shù)的應(yīng)用層協(xié)議研究
MapWindowGIS插件機制及應(yīng)用
物聯(lián)網(wǎng)技術(shù)在信息機房制冷系統(tǒng)中的應(yīng)用
基于Revit MEP的插件制作探討
一種基于粗集和SVM的Web日志挖掘模型
永济市| 临澧县| 宁城县| 从化市| 夹江县| 新平| 澳门| 桃园县| 洛浦县| 攀枝花市| 盈江县| 五华县| 收藏| 龙海市| 周宁县| 景泰县| 长岛县| 班玛县| 宣武区| 永定县| 万安县| 盐亭县| 达日县| 宜川县| 佛坪县| 博客| 盐津县| 六盘水市| 尼木县| 丽江市| 新野县| 金溪县| 滦南县| 加查县| 东宁县| 岐山县| 嘉善县| 大竹县| 金塔县| 明光市| 宣恩县|