?

基于DPI的應用指紋自動提取方法研究

2021-04-15 03:48饒親苗彭艷兵
計算機應用與軟件 2021年4期
關鍵詞:字符串數據流報文

饒親苗 彭艷兵

1(武漢郵電科學研究院 湖北 武漢 430000) 2(南京烽火天地通信科技有限公司 江蘇 南京 210000)

0 引 言

在移動網絡中,如果要隔離惡意或者受感染的應用程序,就需要區分單個應用程序的流量,即需要進行移動網絡流量識別。移動網絡流量識別對移動網絡的安全性和網絡管理影響重大,其關鍵是將數據流量對應到單個移動應用程序,然而識別互聯網中成千上萬的移動應用無疑是一個頗具挑戰的任務。

此前也有過不少移動網絡流量識別的相關研究。文獻[1]使用C4.5和SVM這兩種機器學習方法來分類移動應用程序產生的流量,且得出了機器學習方法能夠較好地識別移動音視頻流量的結論。文獻[2]使用二維卷積神經網絡模型分類卷積神經網絡模型分類六款聊天類移動應用流量,平均準確率達99.15%,召回率達99.11%,F調和值達99.13%。但目前機器學習的方法始終沒有辦法分類大規模移動應用程序產生的流量,且難以適應復雜的現網流量背景。

本文提出的方法基于DPI[3](Deep Packet Inspection),其關鍵點是從不同來源提取能有效識別應用流量的特征字符串,然后將它們組合成應用指紋。文獻[4-6]利用HTTP報文頭部中User-Agent、Host等字段來識別移動網絡流量,也說明了提取HTTP報文頭部中某些字段作為特征字符串能有效識別應用流量。文獻[7]利用從移動應用apk安裝文件反編譯出的Manifest文件中的唯一標識,來分析熱門應用廣告流量可能給客戶端、用戶帶來的風險。文獻[8]也反編譯apk文件,并提取其中廣告庫的元信息(appID、package等),然后根據HTTP報文頭部中的Host字段識別廣告流,即可用廣告庫中的應用標識符來識別應用。上述工作也說明了提取Manifest文件中某些字段作為特征字符串能有效識別應用流量。

本文從上述兩個來源提取特征字符串,制定評分模型選取可以有效識別移動應用的特征字符串并組合成應用指紋,用于識別流量。實驗結果表明本文提出的基于DPI的應用指紋自動提取方法在應用覆蓋率、流覆蓋率、字節覆蓋率三個方面都表現優異。

1 本文假設

絕大部分應用在與它們的服務器或者第三方服務通信過程中都用到了它們真正的識別碼[9]。識別碼,即可以唯一標識一個移動應用的字符串或者字符串組合,可能是以下兩種形式:(1) 具有顯式含義的字符串;(2) 具有隱式含義的字符串。

以百度網盤這款應用為例,從其報文中提取出來的特征字符串可以看到:“pan.baidu”是從域名中提取出來的特征字符串,且具有顯式含義;而“wxdcd3d073e

47d1742”是百度網盤應用的AppId,它具有隱式含義,因為無法直觀地把這個字符串與百度網盤這款應用關聯起來。

在這個假設的前提下,本文提出一種基于統計的自動特征提取方法,然后將每個應用的特征組合成應用指紋,用于識別應用產生的流量。

2 算法框架

基于應用指紋的流量識別算法的框架如圖1所示,可分為四個部分。前期離線的報文處理模塊與特征處理模塊負責把報文組合成流,然后從報文中的指定字段提取字符串,接下來統計字符串在每個應用的所有報文中出現的次數,形成一個二維矩陣,其中:行為字符串,列為移動應用,中間為字符串在每個應用的所有報文中出現的次數。最后通過評分與特征精簡策略確定每個應用的特征字符串,將特征字符串組合成為應用指紋。在線的報文處理模塊的功能同上。標記器模塊負責將每個應用的應用指紋放到報文中匹配,將命中的數據流打上該應用的標簽,即為已標記流;將沒有命中的數據流標記為未知流,留作后續處理。

圖1 基于應用指紋的流量識別算法框架

2.1 特征來源及特征提取

基于本文提出的假設,理論上凡是與移動應用和服務器通信過程有關聯的字段都可以作為提取特征的來源。后文驗證了HTTP協議報文中的“Host”“User-Agent”字段及HTTPS協議“ClientHello”報文中的“ServerName”字段對于識別應用流量幫助極大。此外,與通信過程的關聯程度較強的字段還有服務器端的IP、端口號、應用端請求資源的URL字段。本文研究的是安卓平臺移動應用流量識別,移動應用在移動設備上使用前,都有在移動設備上安裝“.apk”文件的過程。已有研究表明,從“.apk”文件反編譯出來的AndroidManifest.xml文件中存在可以有效識別該應用的域(字段)——AppKey、package等,例如“name=‘XM_APPKEY’android:value=‘@7F081886’”及“package=‘com.baidu.netdisk’”。

綜上所述,本文初步選定的特征來源及字段處理方法如表1所示。圖2為HTTP協議的User-Agent字段。

表1 特征來源及字段處理方法

圖2 HTTP協議User-Agent字段

2.2 應用指紋生成

按照2.1節描述的方法處理所有字段后,將生成一個特征字符串集合。遍歷該集合中的每個特征字符串,統計其在所有移動應用數據流中出現的次數,并將統計結果以二維矩陣的形式保存,如表2所示,每行關聯到一個特征字符串,每列關聯到一款移動應用,用“*”標記的特殊列是該特征字符串與所有應用關聯的總次數。

表2 特征字符串在數據流中的匹配統計結果

接下來要解決的問題是如何判斷哪個特征字符串能準確地識別出哪款移動應用產生的流量。對此,本文提出了兩種解決方案。

1) 根據關聯次數占比選取特征。根據特征字符串在數據流中的匹配統計結果,可以得出每個特征字符串與某一移動應用關聯次數和每個特征字符串與所有移動應用關聯總次數的比值:

(1)

2) 根據評分模型選取特征。評判某一特征字符串能否準確識別某一移動應用流量,除了考慮這個特征字符串與這一移動應用關聯是否緊密之外,還要考慮這個特征字符串與其他移動應用關聯是否緊密。因此,本文提出一個特征字符串評分模型:

(2)

(3)

Scoreti→Appx=TFti×IDFti→App*

(4)

式中:Nti→Appx表示特征字符串ti與移動應用Appx關聯的次數;Nti→App*表示特征字符串ti與所有移動應用關聯的次數;TFti→Appx表示特征字符串ti與移動應用Appx關聯的緊密性;|Appti|表示與特征字符串ti有關聯的移動應用的個數;|App*|表示實驗考慮的所有已知移動應用的個數;IDFti→App*表示特征字符串ti與其他所有移動應用關聯的不緊密性;Scoreti→Appx表示特征字符串ti識別移動應用Appx時的評分,即某一特征字符串ti與某一應用Appx關聯越緊密,與其他所有應用關聯越不緊密,此得分越高。對于某一已知移動應用Appx,得分更高的特征字符串更能準確地識別出其產生的數據流量。

如果某一特征字符串ti與兩個移動應用Appx1、Appx2的關聯都比較緊密,會導致Scoreti→Appx1和Scoreti→Appx2的取值都比較高,但是這個字符串原則上不能作為識別這兩個移動應用的特征字符串,考慮到這種情況,本文采用式(5)來過濾掉這種特征字符串。

(5)

不論是采用方案一還是采用方案二,最后每個移動應用都可以得到一到多個特征字符串,將每個移動應用的一到多個特征字符串組合起來,作為識別該移動應用的應用指紋。

3 實 驗

3.1 實驗數據

本文采集了134款移動應用產生的流量,共176 596條流。按照2.1節中描述的特征處理方法處理采集的數據,得到特征字符串集合,然后遍歷該集合中的每個特征字符串,統計其在所有移動應用數據流中出現的次數,并將統計結果保存為二維矩陣。

3.2 評價指標

為了衡量兩種特征選取方案的有效性,本文選用應用覆蓋率、流覆蓋率、字節覆蓋率作為評價指標。

應用覆蓋率即是所選取的特征字符串所能識別的所有移動應用的個數與實驗所選取的移動應用的總個數的比值。假設:Appti表示特征字符串ti所能識別的移動應用;∪ti∈T*Appti表示每個特征字符串所能識別的移動應用的并集,即所選取的特征字符串所能識別的所有移動應用的集合;|∪ti∈T*Appti|表示該集合中移動應用的個數;|App*|表示實驗考慮的所有已知移動應用的個數。應用覆蓋率可表示為:

(6)

流覆蓋率即是所選取的特征字符串所能識別的所有數據流的個數與實驗所選取的所有移動應用的數據流的總個數的比值。假設:Flowti表示特征字符串所能識別數據流;∪ti∈T*Flowti表示每個特征字符串所能識別的數據流的并集,即所選取的特征字符串所能識別的所有數據流的集合;|∪ti∈T*Flowti|表示該集合中數據流的個數;|Flow*|為實驗所選取的所有移動應用的數據流的總個數。流覆蓋率可表示為:

(7)

字節覆蓋率即是所選取的特征字符串所能識別的所有數據流的字節大小與實驗所選取的所有移動應用的數據流的總字節大小的比值。假設:Byte∪ti∈T*Flowti表示該集合中數據流的字節大??;ByteFlow*為實驗所選取的所有移動應用的數據流的總字節大小。字節覆蓋率可表示為:

(8)

3.3 實驗結果分析

3.3.1服務器端IP、端口號作為特征來源的可行性分析

分析實驗中生成的特征字符串集合,共25 293個特征,特征來源的分布如表3所示。

表3 特征來源分布

由表3可以看出,服務器端IP占比非常高,達到了51.2%。從本文算法的原理來看,每增加一個特征,都會降低流量識別效率,因此將服務器端IP作為特征來源不能非常準確地識別應用產生的流量,必將得不償失。由前文得知,由于CDN網絡、云服務的廣泛運用,使得僅利用服務器端IP并不能準確地將某一條數據流定位到某一款移動應用。綜上,本文決定在實驗驗證算法有效性時暫時不把服務器端IP作為特征來源。

本文在研究大量數據流量報文時發現,加密協議的端口是比較穩定的,HTTPS協議一般情況下在服務器端都是利用“443”端口與客戶端進行通信,而其他協議的服務器端通信端口號則不太穩定。而且,端口號是由字符長度為2~5個字符的純數字組合而成,根據本文算法的原理,在數據量巨大的互聯網環境中,由于隨機性的存在,在統計特征與應用產生的報文的關聯次數時極其容易誤命中。綜上,本文決定在實驗驗證算法有效性時暫時不把服務器端IP、端口作為特征來源。

3.3.2兩種特征選取方法的優劣性分析

對于從特征來源提取的諸多特征,2.2節介紹了兩種特征選取方法:(1) 根據關聯次數占比選??;(2) 根據評分模型選取。

為了選定一種在應用覆蓋率、流覆蓋率、字節覆蓋率都表現更好的特征選取方法,本文設置了兩組實驗。第一組利用根據關聯次數占比的特征選取方法選取特征,并將特征組合成應用指紋來識別實驗提供的數據集;第二組利用評分模型的特征選取方法選取特征,并將特征組合成應用指紋來識別實驗提供的數據集。統計實驗結果,以QQ等10款移動應用為例展示實驗結果。應用覆蓋率的比較如表4所示,采用評分模型選取的特征組合成應用指紋來識別移動網絡流量時,應用覆蓋率明顯提升;流覆蓋率和字節覆蓋率的比較如表5所示,采用評分模型選取的特征組合成應用指紋來識別移動網絡流量時,流覆蓋率和字節覆蓋率均明顯提升。

表4 兩組實驗應用覆蓋率

表5 兩組實驗流覆蓋率和字節覆蓋率

3.3.3Manifest文件作為特征來源的可行性與必要性分析

AndroidManifest.xml文件描述了移動應用的必要信息,并提供給Android編譯工具、Android操作系統,以及應用商店,具體如下:

(1) 聲明與代碼的命名空間相匹配的應用包名。Android編譯工具在編譯項目的時候通過應用包名定位代碼實體的位置。在應用進行打包的同時,編譯工具使用Gradle編譯文件中的application ID與該應用包名進行替換。以此作為應用在Android操作系統以及應用商店的唯一的標識符。

(2) 應用的組件。包括應用中所有的Activity、Service、Broadcast Receiver、Content Provider。

(3) 應用所需要訪問的權限。

(4) 第三方庫的引用等。

本文只選取AndroidManifest.xml文件中移動應用開發時的應用包名“package”域以及移動應用的唯一標識符“AppId”域、“AppKey”域,并且提取這三個域的逆向工程全部可以自動化實現,因此將Manifest文件作為特征來源是可行的。

在提取的過程中發現,所有的移動應用安裝文件中都可以提取出“package”域,但是并不是所有的安裝文件都可以提取出“AppId”域和“AppKey”域,具體情況如表6所示。

表6 從應用安裝文件中提取特征情況

為了驗證Manifest文件作為特征來源的必要性,本文只選用“package”域、“AppId”域、“AppKey”域作為特征來源,利用2.2節所述評分模型提取特征,并將特征組合成應用指紋來識別實驗提供的數據集,結果顯示僅用Manifest文件作為特征來源應用覆蓋率可達61.67%。

為了驗證Manifest文件作為特征來源在流量識別的流覆蓋率和字節覆蓋率上的有效貢獻,本文設置兩組實驗。第一組僅用從HTTP報文、HTTPS報文中提取的字段作為特征來源,不用Manifest文件作為特征來源;第二組既用從HTTP報文、HTTPS報文中提取的字段作為特征來源,又用Manifest文件作為特征來源。以ES文件瀏覽器等12款移動應用展示實驗結果,如表7所示。

表7 兩組實驗的流覆蓋率與字節覆蓋率

可以看出,在原有HTTP、HTTPS報文字段的基礎上,增加Manifest文件作為特征來源,在識別移動應用流量時流覆蓋率和字節覆蓋率均有提升。在第一組實驗中,ES文件瀏覽器、墨跡天氣等應用產生的流量沒有被識別出來,但是這些應用流量在第二組實驗中被識別出來了,也說明增加Manifest文件作為特征來源能有效提高本文方法對于識別移動網絡流量的應用覆蓋率。

4 結 語

本文提出的通過全面觀察移動應用產生的流量報文,來自動學習移動應用指紋的方法,用于識別移動網絡流量時在應用覆蓋率、流覆蓋率、字節覆蓋率三個方面的表現都很優異。該方法的核心是構建特征字符串與移動應用相關聯的二維矩陣,在某一給定網絡環境下,這個二維矩陣具有行可擴展性,在新增特征來源時,不用改變矩陣列屬性,僅需統計該特征與所有移動應用的關聯信息,在二維矩陣中增加一條行記錄即可。但這也正是此方法的缺點所在,當網絡環境有所變化,即已知移動應用增加時,需要重新統計每個特征與所有移動應用的關聯信息,耗費巨大,這也是未來須努力研究與改善的方向。

猜你喜歡
字符串數據流報文
基于J1939 協議多包報文的時序研究及應用
以太網QoS技術研究及實踐
優先級驅動的泛化航電網絡實時性能分析
數據流和波形診斷技術在發動機故障診斷中的應用
基于Python的汽車CAN總線報文格式轉換系統的設計與實現
基于報文類型的限速值動態調整
數據流安全查詢技術綜述
一種基于PowerBuilder環境字符串相似度算法
SQL server 2008中的常見的字符串處理函數
倍增法之后綴數組解決重復子串的問題
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合