單薇薇 李施
摘要:對于p2p網(wǎng)絡(luò)來說,p2p應(yīng)用的安全性是至關(guān)重要的。該文針對氣象網(wǎng)絡(luò)論述了一種專門針對p2p帶病毒文件的識別方法。首先介紹了p2p文件的傳輸方式,然后對病毒庫的分類及文中設(shè)計的表格作了詳細(xì)的介紹。該文結(jié)合p2p文件的存儲特點和傳輸特點以及病毒在感染文件時的特點,設(shè)計了一種全新的實時帶病毒文件的識別的方法。
關(guān)鍵詞:p2p;病毒;識別;氣象網(wǎng)絡(luò)
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)23-5516-03
近幾年來,p2p(peer-to-peer)作為一種新型的應(yīng)用開始迅猛發(fā)展,并且成為了網(wǎng)絡(luò)應(yīng)用和研究中的熱點問題。目前針對p2p流的識別都集中在對于流的協(xié)議或p2p的流量的識別,而對于帶病毒的p2p流的識別研究卻鮮有涉足。由于已有的p2p文件共享系統(tǒng)完全依賴用戶自覺控制本身的下載行為,沒有任何技術(shù)措施對惡意用戶或有害內(nèi)容進(jìn)行監(jiān)測,這就導(dǎo)致通過網(wǎng)絡(luò)獲得的并不安全的應(yīng)用程序和文件會給用戶的安全防護(hù)打開一道后門。所以設(shè)計一種可以檢測出p2p傳輸文件是否攜帶病毒的方法則顯得尤為重要。該文針對p2p流獨有的傳輸方式并結(jié)合傳輸層標(biāo)志位的p2p流識別方法,設(shè)計了一個實時檢測p2p傳輸中帶病毒的文件的方法。
1 識別方法詳細(xì)闡述
1.1 相關(guān)概念
1.1.1 對病毒庫的分類
通過觀察研究病毒的特點將病毒分成了兩大類,其中一類是會改變文件長度的病毒。該類病毒在感染文件時,在PE文件的文件頭添加一個新節(jié)表,在這個新節(jié)表中會有新病毒節(jié)在文件中的節(jié)名、本節(jié)在文件中的開始位置、本節(jié)在文件中對齊后的大小等信息,同時還會修改程序的入口點并保留舊的入口點,以便在病毒程序執(zhí)行后返回到原文件繼續(xù)執(zhí)行。而另一類是不會改變文件長度,插入到文件中的病毒代碼。這種病毒可能會尋找文件中的空洞(Cavity,即具有足夠長度的全部為零的程序數(shù)據(jù)區(qū)或堆棧區(qū)),并把病毒代碼放入空洞中,然后改變文件的開始處代碼或入口地址或者是將病毒代碼分散到PE文件對齊時產(chǎn)生的空洞之中,這樣就不會增加文件的長度了[6]。針對這種病毒分類,建立相應(yīng)的第一類和第二類病毒庫。
1.1.2 對表格的介紹實時文件病毒檢測方法研究
目前,每個p2p文件塊傳輸結(jié)束后,系統(tǒng)可能對接收到的文件進(jìn)行安全檢測。由于在文件的安全檢測過程中也會有大量完整的文件塊到達(dá),這樣就會影響文件安全檢測的實時性和檢測效率。另外,如果檢測到帶毒文件而不刪除,則會給用戶帶來一定的損失,而如果刪除了文件就要重新下載,這樣又會給本來就脆弱的網(wǎng)絡(luò)帶來更大的負(fù)荷。針對這兩個問題,該文采用了文件到達(dá)即開始掃描的策略,即把在傳輸層緩存的文件切片傳送到應(yīng)用層(即按照文件的存儲單位來傳輸文件),在應(yīng)用層按照文件的對齊方式在每頁可能的開始位置掃描。這相當(dāng)于將一個大的文件先切片再細(xì)分,這樣可以有效的提高文件的安全檢測效率同時也可以滿足文件安檢的實時性。由于是按照文件的存儲單位進(jìn)行傳送,所以不會因為文件的傳送而對文件的對齊粒度造成影響,從而影響到文件的安全檢測。另外,由于是一邊傳送文件一邊對文件進(jìn)行安全檢測,在發(fā)現(xiàn)病毒時可以實時終止文件的傳輸,這樣可以有效的緩解由于帶病毒的文件導(dǎo)致的文件再次傳輸所帶來的網(wǎng)絡(luò)負(fù)荷。在傳輸層和應(yīng)用層建立識別過程中會用到的表格。
該表中的源端口、文件標(biāo)識和緩沖區(qū)標(biāo)號的功能與傳輸層備份表的作用是一致的。只是在傳輸層緩存到達(dá)的文件而在應(yīng)用層是存儲暫時安全的文件。
文件對齊方式:即文件對齊粒度。例如,如果該值是512(200H),那么每節(jié)的起始地址必須是512的倍數(shù)。若第一節(jié)從文件偏移量300H開始且大小是10字節(jié),則下一節(jié)必定位于偏移量500H,即使偏移量300H和500H之間還有很多空間沒被使用[8]。
文件大?。何覀円罁?jù)此給傳輸層分配相應(yīng)的緩存大小。文件大小是通過文件頭中的文件最后一頁字節(jié)數(shù)和文件頁數(shù)來確定的。一個文件頁以512B為存儲單位,計算文件大小的公式為:(總頁數(shù)-1)*512+最后一頁字節(jié)數(shù)[6]。
已接收文件的大?。河涗浵鄳?yīng)文件已經(jīng)存入應(yīng)用層緩存中的數(shù)量。
1.2 算法的闡述
我們將到達(dá)應(yīng)用層的p2p文件分為三類,第一類是首次到達(dá)應(yīng)用層的文件頭;第二類是后繼于文件頭的后續(xù)文件;第三類是超時到達(dá)的文件。當(dāng)一個文件到達(dá)應(yīng)用層時,首先判斷在應(yīng)用層記錄表中是否有記錄,有則證明該文件屬于第二類文件;沒有則檢測文件的前四個字節(jié)是否是0x4D5A,即ASCII字符的MZ,是則證明是第一類文件;不是則證明是第三類文件。我們將第三類文件直接丟棄。第二類文件是從傳輸層按照文件的存儲單位切片向應(yīng)用層發(fā)送的,文件到達(dá)應(yīng)用層后,會在文件的所有可能開始位置(相當(dāng)于將文件再次分片,只是本次分片的單位是文件的對齊粒度)同時掃描并與第二類病毒庫比較來判斷文件是否感染。
對于第一類文件,要先對PE文件頭進(jìn)行掃描。因為PE文件頭的大小是1024B,其中MZ頭、PE映象文件頭(包括PE文件的標(biāo)志)及PE可選文件頭共376B。節(jié)表區(qū)域的大小是根據(jù)節(jié)頭的數(shù)量來確定的,每個節(jié)頭的大小是40B。一般情況下,一個PE文件有5~6個節(jié),因此在整個文件頭有408~448B的自由空間可供病毒使用[6]。所以我們認(rèn)為整個節(jié)表區(qū)的前五個節(jié)表是安全的,并從第六個節(jié)表開始掃描同時與第一類病毒庫的特征碼比較來判斷文件是否感染。
1.3 算法的實現(xiàn)步驟
第一步:通過端口過濾和傳輸層標(biāo)志位方法檢測到達(dá)的文件是否是p2p流。是轉(zhuǎn)第二步;否將流直接轉(zhuǎn)發(fā)到應(yīng)用層,到第三步。
第二步:傳輸層在控制位置1,并將流轉(zhuǎn)發(fā)到應(yīng)用層。
第三步:應(yīng)用層檢查控制位是否為1,是第四步;否則將文件流轉(zhuǎn)發(fā)給用戶,結(jié)束。
第四步:在應(yīng)用層文件表中檢查是否有該文件的記錄。是轉(zhuǎn)第八步;否掃描文件的前四個字節(jié)檢查是否是0x4D5A,即MZ,是第五步;否則將文件丟棄,結(jié)束。
第五步:從第六個節(jié)表開始掃描并與第一類病毒庫比較,判斷是否有匹配的節(jié)。是則應(yīng)用層通知發(fā)送方停止傳送文件并重新下載,結(jié)束;否到第六步。
第六步: 在應(yīng)用層中記錄該文件的對應(yīng)項,并通知傳輸層建立相應(yīng)的緩沖區(qū)和文件項,同時通知發(fā)送方可以繼續(xù)傳輸文件。
第七步:將接收到的文件存入相應(yīng)緩存中,并將文件按照存儲單位大小切片傳給應(yīng)用層。
第八步:應(yīng)用層根據(jù)文件標(biāo)識找到相應(yīng)的文件對齊方式,確定所有的文件可能開始位置,掃描并與第二類病毒庫相比較,判斷是否與其匹配。是轉(zhuǎn)第十一步;否轉(zhuǎn)第九步。
第九步:將文件放入應(yīng)用層相應(yīng)的緩存并修改已接收文件中的值,與文件大小相比較判斷文件是否接收完畢。是轉(zhuǎn)第十步;否轉(zhuǎn)第七步。
第十步:將文件存入指定位置,同時刪除應(yīng)用層和傳輸層表格中的對應(yīng)項,結(jié)束。
第十一步:應(yīng)用層將對應(yīng)的文件丟棄,通知發(fā)送方停止發(fā)送同時讓傳輸層刪除相應(yīng)的表格信息。
第十二步:傳輸層接到信息后開始計時,在相應(yīng)的是否丟棄項置1。
第十三步:傳輸層檢查計時器是否到2t。否轉(zhuǎn)第十四步;是將被計時的文件及文件項刪除,回收緩沖區(qū)并將計時器清零,結(jié)束。
第十四步:將接收到的文件按照傳輸層備份表的內(nèi)容進(jìn)行相應(yīng)的處理。轉(zhuǎn)第十三步。
2 實驗與檢測
實驗在VC++6.0的開發(fā)環(huán)境下完成的。由于記錄時間使用的是timeGetTime()函數(shù),所以時間差的單位是ms。我們針對網(wǎng)絡(luò)傳輸時可能出現(xiàn)的數(shù)據(jù)流的大小,即慢,較快和很快,對相應(yīng)大小的文件進(jìn)行三次掃描,并分別記錄時間差,并用其平均值作為最后的結(jié)果。
我們用分頁掃描文件的時間與一次掃描文件的時間的平均值相除,三次的比值分別為8.6%、8.6%和8.2%。這說名使用本文的方法來掃描文件時所用的時間僅僅是原來時間的8%左右,大大降低了因為掃描文件而帶來的延時,基本上可以做到實時掃描。
3 總結(jié)
由于病毒的出現(xiàn)速度遠(yuǎn)超過于病毒庫的更新速度,所以本方法對于新出現(xiàn)的病毒無法及時查出,需要用戶實時更新病毒庫才能最大限度的保證接收到的文件的安全性。由于本文中的方法是專門針對p2p文件流的方法,所以沒有考慮到網(wǎng)頁的惡意腳本病毒及蠕蟲和木馬等情況,在以后的工作中會加以改進(jìn)。
參考文獻(xiàn):
[1] 潘國浩.因特網(wǎng)中P2P技術(shù)的研究與應(yīng)用[J].網(wǎng)絡(luò)通訊與安全,2007(6).
[2] 張春紅.P2P技術(shù)全面解析[M].北京:人民郵電出版社,2010.
[3] 張文,候立東.基于傳輸層標(biāo)志位的p2p流量識別技術(shù)[N].科技咨詢導(dǎo)報,2007-06-06.