景陽
摘要:從網(wǎng)絡(luò)報文中獲取用戶關(guān)注的特定信息,是一項很重要且極具意義的工作。在網(wǎng)絡(luò)信息監(jiān)控、安全防御系統(tǒng)中,經(jīng)常需要從報文中,按照使用者指定的內(nèi)容提取某些信息。目前這項工作面臨的主要挑戰(zhàn)是:針對不同的用戶需求,需要提取的內(nèi)容及格式不一樣,如何在低耗時、低開發(fā)成本的情況下,快速、準(zhǔn)確的找到要提取的信息的位置,并用合適的方式提取出來。本文提出了一種基于規(guī)則編寫的報文特定信息提取方法,可以使報文分析人員與信息提取人員工作解耦合,并且可以達(dá)到避免大量重復(fù)工作的效果,來快速的相應(yīng)市場需求。
關(guān)鍵字:網(wǎng)絡(luò)安全;報文特征分析;報文特定信息提取;賬號信息提取;規(guī)則編制;規(guī)則匹配
引言
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,一方面,維護(hù)網(wǎng)絡(luò)安全變的越來越重要,另一方面,人們對網(wǎng)絡(luò)安全意識也越來越強(qiáng)。所以目前在大多數(shù)局域網(wǎng)、企業(yè)網(wǎng)中,人們越來越注意保護(hù)互聯(lián)網(wǎng)使用者的個人信息。比如,某些公司從數(shù)據(jù)安全方面考慮,會希望傳入運營商網(wǎng)絡(luò)的數(shù)據(jù)是經(jīng)過重要信息脫敏處理的。信息脫敏指的是,一些私人信息,或者公司層重要的數(shù)據(jù),在傳入外網(wǎng)的時候被刪除或者打上馬賽克等等。另外,可能還有一些特殊場景下,需要監(jiān)控一些常用軟件的賬號信息,從而關(guān)聯(lián)查找其他下聯(lián)信息等等。上述所有這些類似的用戶需求,抽象出來就是要在網(wǎng)絡(luò)流量中按照使用者需要提取到特定的信息,在提取到這些特定信息的基礎(chǔ)上,再對這些信息做其他處理。所以對于做網(wǎng)絡(luò)安全設(shè)備、網(wǎng)絡(luò)監(jiān)控設(shè)備的廠商來說,需要解決的問題就是如何快速、有效的按照用戶指定需求,從網(wǎng)絡(luò)報文中提取特定信息。
相關(guān)工作
對于上文提出的從報文中提取指定信息的問題,我們從學(xué)術(shù)界和廠商實現(xiàn)兩個角度來說明一些方法及觀點。首先,在學(xué)術(shù)界,對于流量分析、流量識別、流量特征提取等方面,目前比較火的方法是機(jī)器學(xué)習(xí)和深度學(xué)習(xí)[1-2]。近幾年學(xué)者們在這方面確實取得了獲得成果,但是從實際效果來看,應(yīng)用到生產(chǎn)實踐中的效果并不是特別理想。主要體現(xiàn)在,在實驗室條件下,即在給定的數(shù)據(jù)集中學(xué)習(xí)、驗證,給出的效果往往很好,準(zhǔn)確率可以達(dá)到95%以上,但是這些方法用在現(xiàn)網(wǎng)流量中準(zhǔn)確率卻很差。主要原因有兩點:一是,現(xiàn)網(wǎng)流量復(fù)雜,對一些機(jī)器學(xué)習(xí)方法的臨界值的沖擊非常大,導(dǎo)致算法準(zhǔn)確度下降;二是,實驗用的數(shù)據(jù)集更新太慢,這主要是數(shù)據(jù)集的搜集、制作過程太費時導(dǎo)致的,由于更新速度較慢的數(shù)據(jù)集無法對應(yīng)目前急速變化的現(xiàn)網(wǎng)變化,導(dǎo)致基于古老數(shù)據(jù)集的算法在現(xiàn)網(wǎng)流量中準(zhǔn)確度下降。所以在學(xué)術(shù)界雖然已經(jīng)有了很多先進(jìn)的方法,但是距離真正生產(chǎn)實用還是有點差距的,并且更新?lián)Q代較慢。其次,在廠商實現(xiàn)上,目前就是私有協(xié)議研發(fā)與各種網(wǎng)絡(luò)安全設(shè)備廠商之間的博弈過程。具體來說就是:一方面,協(xié)議應(yīng)用方發(fā)現(xiàn)自己的協(xié)議在使用過程中被各種監(jiān)控軟件、黑客越來越方便的獲取關(guān)鍵信息,所以對私有協(xié)議做升級、變形等;而另一方面,安全設(shè)備廠商發(fā)現(xiàn)原有方法檢查率下降,就會重新研發(fā)適配,即一直在對軟件系統(tǒng)升級,來是配更新了的私有協(xié)議[3-4]。這樣使得兩者之間的博弈始終存在,并且進(jìn)程不斷加快,導(dǎo)致網(wǎng)絡(luò)流量復(fù)雜度提升速度也越來越快。綜上所述,私有協(xié)議研發(fā)與各種網(wǎng)絡(luò)安全設(shè)備廠商之間的博弈過程,加劇了網(wǎng)絡(luò)流量向越來越復(fù)雜的方向演進(jìn),而學(xué)術(shù)研究方面,往往需要很長的周期才能做到很好的適配。所以,在具有針對性需求的網(wǎng)絡(luò)流量特征提取方法上,我們更傾向于采用生產(chǎn)實踐中的方法去快速的追逐不斷變換的市場需求,雖然有的方法比較耗時耗力的,但是卻更能快速的解決來源于實際中的問題。
在實際應(yīng)用中,目前大多數(shù)安全設(shè)備廠商,在對流量中指定信息做位置定位和信息提取的時候,采取的方法都很傳統(tǒng),基本方法如下:第一步,先讓用戶給出需要從報文中提取的內(nèi)容。第二步,拿回來做分析,先在網(wǎng)絡(luò)上大量截獲相關(guān)的報文,然按照用戶需求對指定類型的報文或者某些私有協(xié)議做分析。第三步,對照分析結(jié)果做編碼實現(xiàn)。第四步,不斷豐富信息提取庫,即始終在維護(hù)這些類型的報文的特征提取需求,不斷跟某種協(xié)議的不同版本、不同應(yīng)用的各類信息,這是目前最耗時耗力的部分。當(dāng)前的處理方式雖然普遍且適應(yīng)市場需求更快,但是有如下缺點:第一,做具體報文分析的人員,與按照分析結(jié)果做編碼實現(xiàn)的人員,一般情況下是兩批工程師,那么他們的工作就有非常強(qiáng)的耦合性,這種耦合性會對他們的工作產(chǎn)生影響。第二,市場環(huán)境下,只要客戶需求稍微一變化,則上面提到的一至四歩就需要重新做一遍,非常耗時耗力,并且有時候?qū)﹂_發(fā)者來說這種需求變更是災(zāi)難性的。第三,現(xiàn)網(wǎng)中應(yīng)用協(xié)議類型在不斷增加,需要提取的信息的種類也在不斷的增加,這樣會使網(wǎng)絡(luò)安全設(shè)備的負(fù)擔(dān)越來越重,因為像這種程度的報文解析及信息提取,都是基于每個報文的,并且要從大段的報文內(nèi)容中查找多次才結(jié)束的,所以對安全設(shè)備性能的沖擊非常大。
針對上述生產(chǎn)實踐中的實際問題,我們本著解工作耦合性、降低重復(fù)工作量、減少內(nèi)容查找次數(shù)的原則,提出了一種從報文中提取特定信息方法。具體方法見下面章節(jié)。
我們的解決方法
我們提出的針對網(wǎng)絡(luò)報文中特定信息的提取方法,包含兩個部分:第一部分,用通用的規(guī)則文件給出從報文中提取信息的方法,即用給定的規(guī)則文件的格式,將要提取的信息所在位置、偏移量、長度等等信息表達(dá)出來。這部分工作一般由協(xié)議分析人員按用戶要求來完成。第二部分,按照生成的規(guī)則文件,使用優(yōu)化的算法,將特征信息提取出來。而這部分工作一般由信息提取人員,按照通用規(guī)則文件格式來編碼實現(xiàn),此過程只需要關(guān)注提取方法的本身,而不需要關(guān)注具體報文格式。這樣就使報文分析人員和信息提取人員的工作完全解分開了。一方面,報文分析人員可以通過各種手段,比如人工分析、寫網(wǎng)絡(luò)爬蟲等等,來編寫規(guī)則文件。另一方面,信息提取人員只需要關(guān)注規(guī)則文件,使用合適的算法,將文件中的規(guī)則轉(zhuǎn)換成有效的報文提取方法。這樣使得特征信息提取工作,在規(guī)則文件層完全解耦合,并使得所有工作極具有通用性,又具有特殊性,給了開發(fā)人員極大的發(fā)揮空間。不難看出,上述工作中最重要的就是規(guī)則編制方式,因為它涉及到易用性和信息匹配、查找性能等。下面我們以實踐中用到的應(yīng)用軟件賬號信息提取為例[5],來說明我們的規(guī)則設(shè)置方式,及規(guī)則解析、信息提取方式。而其他的信息的提取需要在用戶需求和實踐中不斷豐富進(jìn)來,我們的規(guī)則設(shè)置和解析中也已經(jīng)預(yù)留了其他信息提取的接口。
規(guī)則文件設(shè)置
對于應(yīng)用軟件的賬號信息提取,規(guī)則文件方面我們使用的是xml格式的文件,下面簡稱“規(guī)則文件”,規(guī)則設(shè)置的具體信息如下。首先,我們將規(guī)則文件分為了幾個層次,用來表示報文的分類、信息提取條件、信息提取位置等信息。具體表現(xiàn)為:第一層是應(yīng)用名稱信息設(shè)置。比如我們要對騰訊QQ應(yīng)用來提取賬號信息,則用xml文件的<QQ></QQ>表示應(yīng)用名稱為騰訊QQ應(yīng)用。第二層是為應(yīng)用設(shè)置的編號。設(shè)置編號的目的是方面信息映射及查找,比如同樣是騰訊QQ應(yīng)用,我們?yōu)樗O(shè)置的編號是1,則用xml文件的<APP-ID>1</APP-ID>格式表示。第三層是傳輸層協(xié)議分類。如用<TCP></TCP>表示傳輸層協(xié)議為TCP。第四層是我們?nèi)藶閯澐值囊崛〉男畔⒌念愋?。如使?lt;ACCT></ACCT>表示要提取的信息類型為應(yīng)用的私人賬號信息。第五層是具體的信息提取方式。因為信息提取方式可以有多種,所以我們用不同的<type></type>中的內(nèi)容來表示不同的提取方式。比如,在賬號信息中用<type value="1">表示提取賬號的第一種方式,<type value="2">表示提取賬號的第二種方式等等。第六層是提取信息的條件和信息所在位置。我們用<condition>節(jié)點表示報文需要滿足的條件,后續(xù)我們將此節(jié)點稱為“條件節(jié)點”。用<data>節(jié)點表示信息所在位置,后續(xù)我們將此節(jié)點稱為“數(shù)據(jù)節(jié)點”。這兩種節(jié)點組合使用的意思就是“滿足某種條件的報文需要在什么位置獲取到指定的信息”,這是我們提供的這套方法的最關(guān)鍵的點。然后條件節(jié)點和數(shù)據(jù)節(jié)點的下級中有設(shè)置的各種匹配參數(shù),這些參數(shù)有通用的和特殊的兩種,通用的用來描述共性問題,特殊的用來描述個性問題。所以一般情況下通用參數(shù)可以用來描述大部分匹配條件,只有當(dāng)報文比價特殊時才會增加適配特殊參數(shù)。因此我們的系統(tǒng)使用了通用參數(shù)的性質(zhì)來避免重復(fù)工作量,使用特殊參數(shù)來增補(bǔ)規(guī)則的差異性。下面我們給出一個簡單的規(guī)則文件示例。
<QQ>
<ID>1</ID>
<TCP> <ACCT> <type value="1"> <condition value="1"> <port> <start>80</start> <end>80</end> </port> <http_request_method>GET</http_request_method> <string_match> <http_host>qq.com</http_host> </string_match> </condition> <data value="1"> <http_cookie> <string_data value="1"> <string>uin_cookie=</string> <end_char value="1">;</end_char> <end_char value="3338">\r\n</end_char> <isnum>yes</isnum> </string_data> </http_cookie> </data> </type> </ACCT>
</TCP>
</QQ>
規(guī)則信息管理
對上述規(guī)則文件的保存和使用,我們采用哈希表做的管理。方便后續(xù)的條件匹配和信息提取操作。首先,以第五層的節(jié)點為一個結(jié)構(gòu)體節(jié)點保存起來,其中需要包含其上各個層級的所有信息,然后用鏈表鏈接起來。然后,對含有字符串規(guī)則的條件節(jié)點做單獨管理,提前使用HS算法或AC算法做預(yù)編譯,這是為了使用字符串快速匹配算法做準(zhǔn)備。節(jié)點對應(yīng)的結(jié)構(gòu)體節(jié)點,用哈希表鏈接起來。最后,再對數(shù)據(jù)節(jié)點中含有字符串的節(jié)點做單獨管理,也是提前使用HS算法或AC算法做預(yù)編譯。這樣就生成了基于規(guī)則文件的一套信息管理方式。結(jié)構(gòu)圖見下。
報文匹配及信息提取
我們采用的信息提取方法是先比對條件在決定是否需要去提取的方式,這樣做的好處是避免盲目的信息提取操作,因為整個操作中耗時的就是信息提取操作。首先,對于條件信息比對,我們使用的是分步、分類的條件節(jié)點匹配的方法。我們在做條件信息比對的時候,將條件信息分為了兩類,一類是非字符串信息,比如,端口號、http request方法等,此類信息比對速度很快;另一類是字符串信息比對,這類信息比對起來比較耗時。因此接收到網(wǎng)絡(luò)報文之后,我會先解析所有的條件節(jié)點中的非字符串信息做對比,然后將匹配中的條件節(jié)點所在的上層節(jié)點信息打標(biāo)記。然后對于打了標(biāo)記的節(jié)點中條件節(jié)點中的字符串條件做多模匹配,然后再給所有條件都匹配中的條件節(jié)點及其上層節(jié)點打上條件匹配中的最終標(biāo)記。然后,我們再對規(guī)則條件匹配中了的報文做信息提取操作,這里一般需要先采用字符串匹配操作定位到具體位置,然后再根據(jù)數(shù)據(jù)節(jié)點中的規(guī)則,獲取某個長度的內(nèi)容或者結(jié)束符以前的內(nèi)容。此種方法的好處是:1、采用逐級匹配的方式,縮減耗時操作的數(shù)量;2、采用多模匹配一次性對所有字符串做匹配的方式,提升查找速度;3、采用先匹配條件再定位信息位置的方式,避免盲目查找、提取指定內(nèi)容。
總結(jié)
上述網(wǎng)絡(luò)報文特定信息提取方法,已經(jīng)應(yīng)用于生產(chǎn)實踐中了,從易用性和效果方面來看都很好。此方法可以達(dá)到比較好的效果主要是因為如下原因:1、由于提供的很好的解耦合性,所以在實現(xiàn)中各個功能模塊可以獨立開發(fā)、分別優(yōu)化,并且增加新的提取項或者支持新的私有協(xié)議時,通過很小的改動就可以快速實現(xiàn)客戶需求。2、報文信息提取方便,對于報文分析人員來說,由于他們對某些特定的協(xié)議很熟悉了,所以即使這些私有協(xié)議有升級,他們也可以迅速獲取到他們想要得到的信息,去豐富我們的規(guī)則文件。這相比機(jī)器學(xué)習(xí)等方法要來的更方便、更快捷,并且有的時候可以通過只修改規(guī)則文件就能迅速的支持某些特定需求。所以用起來更方便,還不需要做代碼級修改,這是使用起來最方便的地方。但是我們的方法也有很多不足:1、由于私有協(xié)議研發(fā)與各種網(wǎng)絡(luò)安全設(shè)備廠商之間的博弈,導(dǎo)致協(xié)議更新?lián)Q代越來越快,則我們要支持的信息提取規(guī)則也會越來越多,然后導(dǎo)致我們的系統(tǒng)處理能力不斷下降。2、我們的方法無法解決加密流量的信息提取問題。因此,后續(xù)我們還會繼續(xù)在易用性及快速實現(xiàn)需求的基礎(chǔ)上,針對協(xié)議規(guī)則擴(kuò)充及系統(tǒng)性能提升,對我們的系統(tǒng)做改善、優(yōu)化。一方面,在協(xié)議規(guī)則擴(kuò)充方向上,不斷的加入更智能的處理方式,比如在基于機(jī)器學(xué)習(xí)的流量識別、分類系統(tǒng)中增加對特定協(xié)議的升級版本的監(jiān)控,然后再對監(jiān)控到的需要的協(xié)議內(nèi)容做特定信息提取等等,并且逐漸的使這些工作趨于自動化;另一方面,系統(tǒng)性能提升方向上,提供可以基于協(xié)議規(guī)則庫擴(kuò)張而可以動態(tài)擴(kuò)展軟件系統(tǒng)處理能力的軟件框架等等。上述兩個方面以及加密流量中的信息提取技術(shù),都是我們下一步的研究方向。
參考文獻(xiàn)
[1] Deep Learn. From: https://www.deeplearningbook.org/
[2] Scikit-learn. From: https://scikit-learn.org/
[3] nDPI. From:https://www.ntop.org/products/traffic-analysis/ntop/
[4] Suricata. from: https://suricata.io/
[5] 江蘇省未來網(wǎng)絡(luò)創(chuàng)新研究院. 一種從網(wǎng)絡(luò)報文中提取賬號信息的方法[P]. 發(fā)明專利, CN201811508719.0. 2018-12-11