本發(fā)明涉及一種惡意網絡流量詞庫的建立方法及建立系統(tǒng)。
背景技術:
隨著移動終端的普及和各種應用的出現(xiàn),移動平臺上的惡意應用也日漸猖狂,幾種常見的惡意軟件檢測方法面臨著越來越多的挑戰(zhàn)。目前比較常見的惡意應用檢測方法有三種,第一種是基于靜態(tài)代碼掃描的方法,第二種是基于動態(tài)系統(tǒng)調用的方法,第三種是基于網絡流量進行惡意應用識別的方法。這三種方法各有優(yōu)缺點,其中比較成熟的方法是基于靜態(tài)代碼掃描進行惡意應用識別的方法。采用網絡流量進行惡意軟件檢測的方法是最近幾年比較受關注的一種方法,它的實用性也不斷地等到了業(yè)界專家的證實。然而現(xiàn)在大部分的惡意流量識別方法都是依據提取惡意流量的一些統(tǒng)計特征,如流持續(xù)的時間,流的個數等等進行惡意流量的識別。這種方法通過一些統(tǒng)計數據來刻畫流的宏觀特征,這種刻畫是粗粒度的,可能會造成很高的誤判。還有一些方法是深入到了流內容的層面,但是這些方法大部分都是僅僅關注網絡流量的某些字段,如host,request-uri等。由于這些方法僅僅關注幾個特定的字段,會丟失掉很多對惡意流量檢測有意義的信息。
基于以上現(xiàn)狀,為解決惡意網絡流量識別粗粒度和特征不足的問題,迫切需要一個與惡意網絡流量相關的特征庫,就像靜態(tài)代碼掃描方法使用的惡意代碼庫一樣。當未知的流量到來,只需要拿這個流量的內容與惡意流量特征庫進行對比,一旦比對成功,或者某種程度上與惡意流量庫中的內容十分相似,就可以認為這條流量為惡意流量。進而產生該惡意流量的APP就可以被認為是惡意應用。
技術實現(xiàn)要素:
本發(fā)明的目的就是針對上述問題,提供一種惡意網絡流量詞庫的建立方法及建立系統(tǒng),用自然語言處理領域的方法來處理網絡流量,根據惡意網絡流量和正常網絡流量的對比性分析結果,創(chuàng)建了一個惡意網絡流量詞庫。這個惡意網絡流量詞庫可以應用到惡意網絡流量的檢測中,進而通過檢測出的惡意流量找到源頭APP,則該APP就可以被認定為惡意應用。
為了實現(xiàn)上述目的,本發(fā)明采用如下技術方案:
一種惡意網絡流量詞庫的建立方法,包括如下步驟:
步驟(1):獲取正常的HTTP網絡流量的內容,對獲取到的正常的HTTP網絡流量的內容進行分詞,得到正常的HTTP網絡流量的正常詞集;進入步驟(3);
步驟(2):獲取惡意的HTTP網絡流量的內容,對獲取到的惡意的HTTP網絡流量的內容進行分詞,得到惡意的HTTP網絡流量的惡意詞集;進入步驟(4);
步驟(3):對正常的HTTP網絡流量的正常詞集進行單詞過濾,按照自定義的過濾規(guī)則粗粒度地過濾掉與惡意軟件的檢測無關的單詞;進入步驟(5);
步驟(4):對惡意的HTTP網絡流量的惡意詞集進行單詞過濾,按照自定義的過濾規(guī)則粗粒度地過濾掉與惡意軟件的檢測無關的單詞;進入步驟(5);
步驟(5):將步驟(3)過濾后得到的正常詞集和步驟(4)過濾后得到的惡意詞集進行匯總得到第一匯總詞集,利用每個單詞在步驟(3)過濾后得到的正常詞集和步驟(4)過濾后得到的惡意詞集中出現(xiàn)的頻率,計算卡方值;
步驟(6):利用卡方檢驗對第一匯總詞集進行細粒度地單詞過濾,利用卡方值從第一匯總詞集中挑選出惡意單詞,組成惡意網絡流量詞庫。
所述步驟(1)的步驟為:
步驟(1-1):正常流內容獲取,使用T-shark命令將正常網絡流量文件中的每一條HTTP網絡流的流內容寫入到對應的文本文檔中;
步驟(1-2):利用特殊符號對文本文檔中的內容進行分詞處理,得到HTTP網絡流量的正常詞集。
所述特殊符號,包括:逗號、冒號、分號、&、百分號、等號和空格。
所述T-shark命令是:“tshark–r網絡流量文件名–q–z\”follow,tcp,ascii,o\”>文本文檔名”。
所述正常網絡流量文件是:正常app因為連接網絡而產生的網絡流量文件。
所述步驟(2)的步驟為:
步驟(2-1):惡意流內容獲取,使用T-shark命令將惡意網絡流量文件中的每一條HTTP網絡流的流內容寫入到對應的文本文檔中;
步驟(2-2):利用特殊符號將每個保存惡意流內容的文本文件進行分詞處理,得到惡意的HTTP網絡流量的惡意詞集。
所述特殊符號,包括:逗號、冒號、分號、&、百分號、等號和空格。
所述T-shark命令是:“tshark–r網絡流量文件名–q–z\”follow,tcp,ascii,o\”>文本文檔名”。
所述惡意網絡流量文件是:惡意app因為連接網絡而產生的網絡流量文件。
所述步驟(3)的步驟為:
步驟(3-1):遍歷正常的HTTP網絡流量的正常詞集中的每個單詞,過濾掉全部是數字的單詞;
步驟(3-2):遍歷正常的HTTP網絡流量的正常詞集中的每個單詞,過濾掉在每條流中出現(xiàn)頻率超過設定閾值的單詞;
步驟(3-3):遍歷正常的HTTP網絡流量的正常詞集中的每個單詞,過濾掉停用詞。
所述步驟(3-2)中出現(xiàn)頻率超過設定閾值的單詞包括:host、request-method和request-encoding;
所述步驟(3-3)中停用詞包括:the,a,is和this。
所述步驟(4)的步驟為:
步驟(4-1):遍歷惡意的HTTP網絡流量的惡意詞集中的每個單詞,過濾掉全部是數字的單詞;
步驟(4-2):遍歷惡意的HTTP網絡流量的惡意詞集中的每個單詞,過濾掉在每條流中出現(xiàn)頻率超過設定閾值的單詞;
步驟(4-3):遍歷惡意的HTTP網絡流量的惡意詞集中的每個單詞,過濾掉停用詞。
所述步驟(4-2)中出現(xiàn)頻率超過設定閾值的單詞包括:host、request-method和request-encoding;
所述步驟(4-3)中停用詞包括:the、a、is和this。
所述步驟(5)的步驟為:
步驟(5-1):將正常的HTTP網絡流量的正常詞集和惡意的HTTP網絡流量的惡意詞集進行整合,組合成第一匯總詞集;
步驟(5-2):計算第一匯總詞集中每個單詞的在不同類別下出現(xiàn)的次數:即統(tǒng)計第一匯總詞集中每個單詞分別在惡意詞集中出現(xiàn)的次數和在正常詞集中出現(xiàn)的次數;
步驟(5-3):歸一化:對步驟(5-2)得到的統(tǒng)計次數進行歸一化處理;
步驟(5-4):卡方檢驗:利用每個單詞在不同類別的單詞集中出現(xiàn)的歸一化之后的數值,根據卡方公式計算每個單詞的得分,卡方公式如下:
其中,χ2(t,c)指的是特征t(一個單詞)和類別c(惡意)之間的卡方值,χ2(t,c)值越大,說明特征t對類別c的表征程度就越大,特征t在類別c中就越有意義。Netec是指特征t和類別c共同出現(xiàn)的次數,Eetec是指假設特征t和類別c相互獨立時,兩者共同出現(xiàn)的期望次數,et和ec的值都屬于(0,1)的集合中,即如果類別c或者特征t出現(xiàn)記作1,如果類別c或特征t沒有出現(xiàn)記作0。
所述步驟(6)的步驟為:
步驟(6-1):設定分數的閾值或者是設定得分排序排在前K位的K值;
步驟(6-2):遍歷第一匯總詞集中的每個單詞,判斷單詞遍歷是否結束;若是,就結束;若否,就進入步驟(6-3);
步驟(6-3):判斷當前單詞的得分是否大于閾值或者排在前K位;如果當前單詞的得分小于閾值或者沒有排在前K位,則忽略這個單詞;如果當前單詞的得分大于閾值或者排在前K位,進入步驟(6-4);
步驟(6-4):判斷當前單詞是否存在于惡意詞集中;如果當前單詞不存在于惡意詞集中,則忽略這個單詞;如果當前單詞存在于惡意詞集中,則將當前單詞加入到惡意流量詞庫中;當遍歷完所有的單詞之后,惡意網絡流量詞庫建立完成。
一種惡意網絡流量詞庫的建立系統(tǒng),包括:
第一分詞單元:獲取正常的HTTP網絡流量的內容,對獲取到的正常的HTTP網絡流量的內容進行分詞,得到正常的HTTP網絡流量的正常詞集;進入第一過濾單元;
第二分詞單元:獲取惡意的HTTP網絡流量的內容,對獲取到的惡意的HTTP網絡流量的內容進行分詞,得到惡意的HTTP網絡流量的惡意詞集;進入第二過濾單元;
第一過濾單元:對正常的HTTP網絡流量的正常詞集進行單詞過濾,按照自定義的過濾規(guī)則粗粒度地過濾掉與惡意軟件的檢測無關的單詞;進入匯總單元;
第二過濾單元:對惡意的HTTP網絡流量的惡意詞集進行單詞過濾,按照自定義的過濾規(guī)則粗粒度地過濾掉與惡意軟件的檢測無關的單詞;進入匯總單元;
匯總單元:將第一過濾單元過濾后得到的正常詞集和第二過濾單元過濾后得到的惡意詞集進行匯總得到第一匯總詞集,利用每個單詞在第一過濾單元過濾后得到的正常詞集和第二過濾單元過濾后得到的惡意詞集中出現(xiàn)的次數,計算卡方值;
卡方檢驗單元:利用卡方檢驗對第一匯總詞集進行細粒度地單詞過濾,利用卡方值從第一匯總詞集中挑選出惡意單詞,組成惡意網絡流量詞庫。
所述匯總單元包括:
整合模塊:將正常的HTTP網絡流量的正常詞集和惡意的HTTP網絡流量的惡意詞集進行整合,組合成第一匯總詞集;
計算模塊:計算第一匯總詞集中每個單詞的詞頻:即統(tǒng)計第一匯總詞集中每個單詞分別在惡意詞集中出現(xiàn)的次數和在正常詞集中出現(xiàn)的次數;
歸一化模塊:對得到的統(tǒng)計次數進行歸一化處理;
卡方檢驗模塊:利用每個單詞在不同類別的單詞集中出現(xiàn)次數的歸一化之后的數值,根據卡方公式計算每個單詞的得分。
本發(fā)明的有益效果:
(1)本發(fā)明對正常HTTP網絡流和惡意HTTP網絡流的流內容進行分詞處理,獲取了正常流量產生的詞集和和惡意流量產生的詞集。
(2)本發(fā)明建立的惡意網絡流量詞庫能夠應用到惡意軟件檢測中去,這個惡意網絡流量詞庫可以起到與惡意代碼庫相似的功能。
(3)這個惡意網絡流量詞庫可以不斷更新,不斷擴充。
(4)步驟(5-3)的歸一化處理能夠有效防止因為正常流詞集和惡意流詞集的規(guī)模不一致造成的偏差。
附圖說明
圖1為本發(fā)明的方法流程圖;
圖2為本發(fā)明的詳細方法流程圖。
具體實施方式
下面結合附圖與實施例對本發(fā)明作進一步說明。
一種惡意網絡流量詞庫的建立方法具體工作過程為:
(1)流內容提取,獲取正常的HTTP網絡流量的流內容和惡意的HTTP網絡流量的流內容,并以HTTP流的單位寫入到每個txt文件中,即每條流的流內容單獨寫入一個txt文檔,這個txt文檔以HTTP流的名字進行命名,便于網絡流內容與文檔進行關聯(lián)。
(2)使用特殊字符或者標點符號進行流內容的分詞。即將每個txt文檔中的流內容變成一個單詞集。注意這里的單詞可能并不是出現(xiàn)在英語詞典中的單詞,它可能僅僅是某個英語單詞的縮寫或者僅僅是幾個字母的組合,我們這里都定義為單詞。
(3)過濾模塊,對所有單詞執(zhí)行過濾操作,移除掉與惡意軟件的檢測無關或對惡意軟件幫助很小的單詞。
(4)卡方檢驗,利用每個單詞在兩種類型(正常和惡意)的詞集中出現(xiàn)的頻率,計算卡方值。
(5)利用卡方值,挑選出與惡意類別最相關的單詞組成惡意網絡流量詞庫。
為了更好的理解本發(fā)明,以下給出了本發(fā)明更為詳細的說明:
圖1為本發(fā)明實現(xiàn)一種惡意網絡流量詞庫的建立方法總架構圖,包括:
步驟100,獲得正常流量的流內容組成的詞集;
步驟101,獲得惡意流量的流內容組成的詞集;
步驟102,使用規(guī)則過濾器對正常流量的流內容組成的詞集進行過濾;
步驟103,使用規(guī)則過濾器對惡意流量的流內容組成的詞集分別進行過濾;
步驟104,使用卡方檢驗對詞集進行過濾;
步驟105,最終得到惡意網絡流量詞庫。
圖2為本發(fā)明實現(xiàn)一種惡意網絡流量詞庫建立方法的流程圖,該方法包括:
步驟200,正常流內容獲取,利用T-Shark命令“tshark–r網絡流量文件名–q–z\”follow,tcp,ascii,o\”>文本文檔名”提取正常app產生的流量中的每一條HTTP網絡流,并將每條流的流內容寫入到一個單獨的txt文件中。
步驟201,惡意流內容獲取,利用T-Shark命令“tshark–r網絡流量文件名–q–z\”follow,tcp,ascii,o\”>文本文檔名”提取惡意app產生的流量中的每一條網絡流。并將每條流的流內容寫入到一個單獨的txt文件中。
步驟202,利用特殊符號(,:;&%=空格)對每個txt文件中保存的正常流內容進行分詞處理,處理之后每條正常HTTP流將變成一個單詞集合。
步驟203,利用特殊符號(,:;&%=空格)對每個txt文件中保存的惡意流內容進行分詞處理,處理之后每條惡意HTTP流將變成一個單詞集合。
步驟204,全數字過濾器,遍歷正常網絡流生成的單詞集合中的每個單詞,過濾掉全數字的單詞。
步驟205,高頻常見詞過濾器,遍歷正常網絡流生成的單詞集合中的每個單詞,過濾掉那些高頻的但是幾乎出現(xiàn)在每條流中的單詞,如host,request-method,request-encoding等等。
步驟206,停用詞過濾器,遍歷正常網絡流生成的單詞集合中的每個單詞,過濾掉停用詞,即常見的無意義的詞匯,如:the,a,is,this等。
步驟207,全數字過濾器,與步驟204類似,不過處理的是惡意流量產生的單詞集合。
步驟208,高頻常見詞過濾器,與步驟205類似,不過處理的是惡意流量產生的單詞集合。
步驟209,停用詞過濾器,與步驟206類似,不過處理的是惡意流量產生的單詞集合。
步驟210,將正常的HTTP網絡流量的正常詞集和惡意的HTTP網絡流量的惡意詞集進行整合,組合成第一匯總詞集;
步驟211,計算每個單詞的詞頻:統(tǒng)計第一匯總詞集中每個單詞分別在惡意詞集中出現(xiàn)的次數和在正常詞集中出現(xiàn)的次數;
步驟212,歸一化,對步驟211得到的統(tǒng)計次數進行歸一化處理。防止因為正常流詞集和惡意流詞集的規(guī)模不一致造成的偏差。
步驟213,卡方檢驗,利用每個單詞在不同類別的單詞集中出現(xiàn)次數的歸一化之后的數值,根據卡方檢驗公式計算每個單詞的得分。
步驟214,設定分數的閾值或者是設定得分排序排在前K位的K值。
步驟215,遍歷第一匯總詞集合中的每個單詞,判斷單詞遍歷條件是否結束,即是否完成了對所有單詞的遍歷。
步驟216,判斷當前單詞的得分是否大于閾值或者排在前K位。
步驟217,如果當前單詞的得分小于閾值或者沒有排在前K位,則忽略這個單詞。
步驟218,如果當前單詞的得分大于閾值或者排在了前K位,接著判斷該單詞是否存在于惡意的單詞集合中。
步驟219,如果當前單詞不存在惡意的單詞集合中,即此單詞來自正常流單詞集合,則忽略這個單詞。
步驟220如果當前單詞存在惡意的單詞集合中,則將該單詞加入到惡意網絡流量詞庫中。
當遍歷完了所有的單詞之后,惡意網絡流量詞庫也建立完成了。
上述雖然結合附圖對本發(fā)明的具體實施方式進行了描述,但并非對本發(fā)明保護范圍的限制,所屬領域技術人員應該明白,在本發(fā)明的技術方案的基礎上,本領域技術人員不需要付出創(chuàng)造性勞動即可做出的各種修改或變形仍在本發(fā)明的保護范圍以內。