梁登高,周安民,鄭榮鋒,劉 亮,丁建偉
(1.四川大學網絡空間安全學院,成都 610065;2.四川大學電子信息學院,成都 610065;3.中國電子科技集團公司第三十研究所保密通信重點實驗室,成都 610041)
(*通信作者電子郵箱qswhs@foxmail.com)
微信2018 年月活躍用戶量高達10.8 億,且年齡覆蓋率高,其中55歲以上的用戶占6 300萬[1]。微信中收發紅包功能是互聯網時代下中國傳統紅包的新表現形式,在2014 年一經推出,便深受民眾喜愛,使用人數急劇增長。2019 年春節前五天,在線收發紅包人次達到8.23 億[2]。微信中轉賬功能為日常生活帶來了極大的便利,是用戶常用的功能。由于微信具有龐大的用戶量,且涉及資金業務,微信紅包與轉賬功能往往成為不法分子的攻擊目標,如針對性的釣魚鏈接、虛假的紅包圖案?!捌词謿饧t包”的出現,無疑增添了微信中群成員的活躍度,然而不法者卻利用該功能聚集人員在線賭博,借助私人轉賬與紅包功能進行賭博結算。除此之外,微信中紅包與轉賬功能也有被作為非法交易的在線資金轉賬的可能性。
基于以上所述,對微信中紅包與轉賬行為的準確識別具有極大的現實意義:1)準確識別出正常的紅包與轉賬行為,可避免點擊虛假紅包鏈接;2)實時檢測一段時間范圍內紅包與轉賬行為發生的次數,可用于發現賭博行為;3)線上檢測紅包與轉賬行為可作為相關部門的一種取證手段。當前,針對微信中用戶行為識別的研究極少,文獻[3]中對微信中通信協議進行了詳細研究,該研究將微信中用戶行為分為七種類別,其中將紅包、轉賬、支付歸為支付功能一類,并沒有對紅包與轉賬功能進行細化識別。文獻[4]中基于機器學習對微信中文本與圖片信息進行分類,但該方法僅針對文本與圖片信息。文獻[5]中將微信中傳輸文本、圖片、紅包和轉賬功能細化為16 種用戶行為,其中紅包與轉賬功能共被細化為14 種操作,故識別一次發送或接收紅包行為需要結合多種操作的識別結果,這使得最終的識別準確率較低。文獻[6]中針對移動手機App 的加密流量,提出了一種對服務類別進行分類的方法與系統,選取了微信與WhatsApp[7]作為測試對象,該方法在數據預處理上結合了層次聚類、隱馬爾可夫模型(Hidden Markov Model,HMM)和閾值啟發式等方法,時間開銷相對大,且最終的準確率相對較低。
文獻[8]中“斯諾登事件”表明現已有在線攔截和竊聽用戶的行為,這涉及了對用戶行為識別的大量研究。賈軍等[9]提出一種基于深度包檢測(Deep Packet Inspection,DPI)自關聯的分類方法來對應用類別進行識別,準確率低。文獻[10]提出了UIPicker,一種識別用戶敏感信息輸入的智能框架,即通過自動檢測用戶輸入,從而識別是否為敏感信息。文獻[11]通過提取數據包IP、TCP 報頭信息,從而建模識別用戶的具體應用行為,該方法不采集應用負載信息,故針對特征集中于負載的應用識別率不高。與文獻[11]相似,文獻[12]也只采集IP、TCP 報頭信息,開發了AppScanner 框架,通過提取54種網絡流雙向特征,從而對應用進行建模與識別,但該框架不對應用內具體行為進行識別。文獻[13]中通過分析基于超文本傳輸安全(HyperText Transfer Protocol over Secure Socket Layer,HTTPS)協議加密的手機應用流量,從而識別用戶行為,研究中以Gmail、Facebook 和Twitter 三種應用作為實驗對象。文獻[14]中提出一種基于層次聚類的有監督機器學習方法,用于識別移動用戶的在線行為分類,研究中以Kakao Talk[15]為實驗對象。文獻[16]中選取谷歌應用商店中110 種APP 作為實驗對象,提出了一種程序指紋生成的方法。文獻[17]的研究提出了一種智能手機應用識別的系統,但僅選取了13 種應用作為實驗對象。以上的方法,多數實驗選取的樣例較少,一些方法得到的準確率也相對較低。
與現有研究不同,本文提出的是一種新的用戶行為識別方法。將用戶的一個單任務,如微信中“發送紅包”,映射為一個大的流量塊,而組成“發送紅包”的一系列單操作,如“點擊紅包按鈕”“輸入金額”“輸入密碼”分別映射為小的流量塊。如此劃分使得小流量塊可表征每個特定單操作的特征,而這些小流量塊的順序則表征著整個大流量塊的特征,即從多個維度刻畫用戶單任務的特征,最終得到綜合特征。本文研究工作的貢獻在于提出了一種新的用戶行為識別方法,并能準確識別出微信中紅包與轉賬行為以及這些行為發生的次數。
微信中多數通信行為采用了專有協議MMTLS,其開發者稱該協議是在傳輸層安全協議版本1.3(Transport Layer Security(TLS)Protocol Version 1.3,TLS1.3)的基礎上做的更改[18]。紅包與轉賬行為只采用了基于MMTLS 的超文本傳輸協議(HyperText Transfer Protocol,HTTP),即在傳輸過程中通過MMTLS 對應用層數據進行封裝,然后通過普通的HTTP 協議將其傳輸到目標地址。結合文獻[3]中的研究工作,將微信中基于MMTLS 的HTTP 協議進行通信的服務類別匯總如表1(“√”代表相應服務使用了相應協議,否則代表無)。

表1 基于MMTLS的HTTP協議進行通信的服務匯總Tab.1 Service summary of communication for MMTLS-based HTTP
通過Wireshark[19]抓包與分析發現,基于MMTLS 的HTTP有兩個顯著的特征:其一是在發送過程中,開頭都會冠以“POST/mmtls/”字樣[3];其二是服務端的端口都是80。這兩點將有助于收集數據時,準確打標簽。
移動應用中的單個功能多由數次用戶操作來完成,如“發送文件”需先找尋文件路徑,接著點擊發送。顯然,微信中收發紅包與轉賬也如此。本文實驗的研究目的是識別用戶在某一時間內發送或接收了紅包與轉賬的次數,故發送與接收被示為相互獨立的行為。研究中要識別四種行為,即“發送紅包”“接收紅包”“發起轉賬”“接收轉賬”。這四種行為分別由多個單操作組成,見表2。要特別說明,表2 對四種行為的細化僅為表述目標行為的細節特征,從而為后續提出的大、小流量分塊機制提供物理依據。

表2 微信中收發紅包與轉賬功能操作細化說明Tab.2 Operations of sending and receiving red packets and fund transfer in WeChat
為了保證數據集標簽的準確性,不同測試機以及不同行為的數據將被單獨收集。以“發送紅包”為例,僅將測試機連入無線網卡,通過Wireshark 抓取該無線網卡的數據。四種目標行為皆是由基于MMTLS 協議的HTTP 來傳輸數據,利用Wireshark中的過濾功能可將測試機中相應操作的數據準確抓取。微信中其他功能(見表1)也采用了基于MMTLS協議的HTTP 來傳輸數據,但在進行紅包以及轉賬操作時,不可能會同步產生該類功能的數據,這保證了數據標簽的準確性。為避免手機操作系統與賬號對實驗結果造成影響,在實驗設備上采用了IOS(Iphone5s、Iphone5)和Android(小米5s、小米5x、谷歌手機LG E960 Nexus 4)手機,同時采用了多個賬號來進行實驗。微信中其他功能產生的數據(特別是使用基于MMTLS 協議的HTTP 進行通信)以及在收集數據過程中其他APP 產生的數據都將被歸為一個類,在實驗中標為“普通數據”。另外,目標行為使用TCP,收集過程將過濾掉非TCP 的數據。
2.2.1 大突發與小突發
在移動終端,當用戶與遠端進行交互操作,如單擊一個功能按鈕,都會產生一系列的數據包。這些數據包的各項屬性由相應通信協議嚴格控制,不僅有多種相同屬性,如源IP、目的IP、協議、目的端口等,且嚴格按協議定義的次序發送,即時間間隔與協議、網絡狀態相關??蓪⑦@些數據包歸為一個流量突發塊,由時間閾值來劃分。本實驗中將單操作產生的流量塊稱作小突發塊,用來劃分的閾值稱為小突發閾值。
單個功能任務通常由多個操作組成,因這些連續操作由人來實施,故單個操作之間存在明顯的時間間隔。在正常情況下,這一時間間隔是在一定范圍內的(除非網絡故障、設備故障等)。這一時間間隔由用戶的操作速度、網絡狀態與應用的反應時間決定。人類的操作速度與計算機的操作速度不在一個級別,且加上應用反應時間與網絡傳輸時間,故單個操作之間的時間間隔必定大于小突發閾值,這一特性是對單個功能的流量劃分大、小突發塊的物理基礎。而同一功能任務的單操作之間按嚴格的次序發生,相鄰單操作之間的時間間隔有上限(正常情況下),設置特定的閾值可將不同單任務之間的數據包分隔開。本實驗中將該時間閾值稱為大突發閾值,即時間間隔在大突發閾值之內的相鄰數據包屬于同一個大突發塊,顯然一個大突發塊將會包含多個小突發塊。
不同的服務類別發送的服務端地址不同,在突發流量的劃分中加入IP 地址的限定,可最大限度把同一時間不同服務的數據界定開。本實驗中,大、小突發流量塊的劃分都是基于兩個IP 地址之間的通信數據。在文獻[5]和文獻[16]的研究工作中皆提到了對“突發流量塊”的定義,即接收時間間隔在突發閾值之內的所有網絡數據包(對源或目的地地址不做要求)屬于同一個突發塊。在本文的研究中對突發塊的定義不同,定義如下:
定義1在兩個通信IP 地址之間,時間間隔在小突發閾值TS之內的相鄰數據包,屬于同一個小突發塊。
定義2在兩個通信IP 地址之間,時間間隔在大突發閾值TL之內的相鄰小突發塊,屬于同一個大突發塊。具體的劃分如圖1所示。
2.2.2 突發閾值
將流量數據劃分為大、小突發塊,對應了手機應用中單個任務由多個用戶操作組成的特性,即小突發映射單個小操作,而大突發映射單個任務。兩個層次的劃分由對應的兩個突發閾值來決定。文獻[20]中的研究表明,智能手機中95%的數據包在前一個數據包的4.5 s 內被接收或傳輸。文獻[16]中的研究將1 s 作為突發閾值,文獻[5]中采用的是1.25 s。這些研究中的突發閾值對應的是本研究中的小突發閾值,它們沒有大突發的概念。
大突發閾值的確定極其重要,它劃分單任務間的界限,是最終識別用戶“發送紅包”“接收紅包”“發起轉賬”與“接收轉賬”次數的最大依據。大突發閾值與用戶的操作習慣有一定關系,但除了特殊情況,如用戶中斷任務、網絡卡頓、設備損壞等,不同用戶之間的操作速度出入不大。在收集數據時,通過多人使用習慣性的速度來操作手機。
大突發閾值將單任務產生的流量框定之后,利用單操作流量的突發性再次將大流量塊細分,可對單任務的特征做進一步剖析。小突發閾值用于準確劃分單操作產生的數據包,它只與對應的通信協議以及網絡傳輸有關。本研究中詳細的大小閾值驗證實驗見3.2節。

圖1 突發流量數據分塊示意圖Fig.1 Blocking diagram of burst traffic
2.3.1 相關定義
在詳細講解特征提取之前,先對本實驗中用到的概念作定義和說明。
定義3一定時間內具有相同五元組{源IP,源端口,目的IP,目的端口,協議}的數據包屬于一個單向流,即上行流或下行流。其中發起連接的一方發出的數據包為上行流。同一個通信會話的上行流與下行流的組合稱為流(flow),定義如下。
上行流:

下行流:

流(TCP):

特別說明:
1)在實驗中,對流進行組合時,限于同一個小突發塊,即不跨越小突發塊組流。
2)完整流。在小突發塊里,一個TCP流,若其不包含建立連接的三次握手以及釋放連接的四次握手,則將其標記為不完整流。
2.3.2 多層次特征
接下來將分別從流、小突發塊、大突發塊三個層次詳細講解本實驗提取特征的過程,最終用于訓練的是大突發塊的綜合特征。
流特征 本實驗將對小突發塊中的單個流提取12 個統計特征,分別是數據包總量、帶負載的數據包總數、上行流的帶負載數據包總數量、下行流的帶負載數據包總數、流持續時間、流數據包之間的平均時間間隔、上行流數據包之間平均時間間隔、下行流數據包之間平均時間間隔、上行流的源端口、上行流數據包的平均負載長度、下行流數據包的平均負載長度、是否為完整流。
小突發層 小突發塊映射一個用戶單次操作,不同的操作產生的流量有很大差異,如流數量、數據包平均長度等。對小突發塊中的每個流提取以上提到的12 個特征之后,通過綜合計算得到小突發層的特征。其中除了“上行流的源端口”與“是否為完整流”兩個特征的處理方法不同之外,其余10 個特征皆是取平均值?!吧闲辛鞯脑炊丝凇睂⒈挥脕碛嬎阆噜彛ò磿r間順序)流的上行源端口間的差值的絕對值,并取多流間該值的平均值。“是否為完整流”被用來統計小突發中不完整的流的總數。除了以上特征,小突發塊將會新加一個特征,該特征是流的總數,故對單個小突發塊將提取13個特征。
大突發層 本實驗將一個任務映射為一個大突發塊,不同的任務由不同的用戶單操作組成。故大突發塊內的小突發塊數量是一個極其重要的特征。通過分析發現,微信中紅包與轉賬功能的小突發數量差異性不大,但它們小突發中的流的數量有一些細微差別,故為了實現對紅包與轉賬功能的準確區分,每個大突發塊中的前三個小突發塊的流的數量將作為三個重要特征。大突發塊中所有小突發的流的數量總和能很好地刻畫大突發的總體特征。除了以上新增的5 個特征,余下的特征將從大突發塊中各個小突發塊的特征中獲取。其中小突發中“流的總數”與“不完整流的總數”將通過求和的方式產生大突發塊的流總數與不完整的流總數,而其余11 個特征將通過求平均值的方法產生大突發塊的11 個特征,故總的綜合特征為18個特征,見表3。

表3 實驗特征Tab.3 Experimental features
通過XGBoost(eXtreme Gradient Boosting)算法訓練得出這些特征的重要性如圖2,結果顯示,除了“不完整流總數”重要性極低之外,其余特征對分類準確率貢獻度都很高。

圖2 特征重要性(具體特征含義見表3)Fig.2 Feature importance(specific feature meanings are shown in Tab.3)
特征提取完成之后,得到了帶標簽的數據集。將數據劃分為測試集與訓練集,對數據進行建模。
按照2.1 節描述的方法收集實驗數據,不同設備和賬號的樣本量保持平衡,并準確對其進行打標簽,收集的數據匯總如表4。

表4 實驗數據Tab.4 Experimental data
突發閾值與網絡環境以及應用程序內部開發邏輯相關(詳見2.2.1 節),故需要對具體網絡環境的大量樣本進行驗證實驗,才能得出具體環境的最優值。本實驗收集的實驗數據如表4所示。
在閾值驗證實驗中,初步將小突發閾值定為1 s(結合已有研究與經驗),大突發閾值的取值范圍定為5~14 s(實際操作時估測的范圍),同時記錄不同取值下單任務流量的劃分準確率(根據數據標簽,假設某一“發送紅包”樣本包含10 個數據包,根據對應閾值對該樣本的劃分情況計算被正確劃分的數據包所占比例)與分類器(使用XGBoost)準確率。結合兩個準確率的結果,得出表現最佳的大突發閾值為11.8 s,如圖3所示。
大突發閾值確定之后,將大突發閾值設為11.8 s,小突發閾值取值范圍定為1.0~1.6 s,同時分別訓練分類器,最終實驗結果見圖4。從圖4中的結果可知,小突發閾值為1.26 s時,得到的分類器準確率最高。需要特別說明的是,閾值驗證實驗與3.3 節中的對照實驗獨立進行,得到的最高準確率存在些許偏差。

圖3 大突發閾值取不同值時準確率的變化Fig.3 Accuracy varying with different large burst thresholds

圖4 小突發閾值取不同值時準確率的變化Fig.4 Accuracy varying with different small burst thresholds
為了驗證所提方法的有效性,將從兩方面入手。首先是選用5 種經典的機器學習算法來驗證所提方法的算法普適性,算法分別是隨機森林(Random Forest,RF)、支持向量機(Support Vector Machine,SVM)、K最近鄰(K-Nearest Neighbor,KNN)、C4.5 決策樹和XGBoost,所有算法采用默認參數(每種算法都可對參數進一步調優,從而得到更好的識別率。實驗中皆采用默認參數,旨在驗證所提方法可應用于多個已有算法,而不僅僅只針對具體的算法。實驗中采用的默認參數為weka[21]的推薦參數,已進行過初步優化,感興趣的讀者可對具體方法進行深度的優化),訓練集均采用十折交叉驗證,每個實驗重復10 次,結果取平均值。第二個方面是為了驗證所提方法的識別率,將與現有研究工作進行對照實驗。選擇了文獻[5]與文獻[3]中的研究方法,文獻[5]中通過劃分突發流量塊來識別表2中的每個單操作,進而識別紅包與轉賬的行為與次數,其研究目標與本實驗相同。文獻[3]對微信中通信協議進行研究,基于流的層面來提取特征和識別行為,當前多數研究工作都是基于流的層面來識別行為。最終的實驗結果如表5。

表5 三種方法準確率對比 單位:%Tab.5 Accuracy comparison of three methods Unit:%
從表5可看出,所提出的方法在五種算法下,除了SVM 為84.3%,其余準確率皆高于95%,其中RF與XGBoost的準確率高達97.5%和97.6%,這表明所提出方法具有強普適性。三種方法的實驗對比結果顯示,所提出的方法在五種算法下準確率皆為最高,且在SVM 的表現遠高于另兩種方法。需要特別提出的是:表中文獻[3]方法的準確率是對每個流樣本的識別準確率,即該方法只能識別一條流是否為目標行為的數據,而一次目標行為包含很多流,這意味著,該方法無法識別出目標行為的次數;表中文獻[5]方法的準確率是單個操作的平均準確率,而目標行為包含多個單操作(見表2)。
表6 是三種方法對相同的目標行為進行提取特征所需的平均時間與所產生的平均樣本量。從表中可看出,基于單個流提取特征(文獻[3]方法)的時間與平均產生的樣本量都高于其余兩種基于流量塊的方法,這是可預見的結果。單任務由多種用戶單操作組成,故而會產生多個流。這也進一步表明,僅基于流來識別由多次單操作組成的用戶行為,將會需要更大的時間和空間上的開銷。所提出的方法在時間和產生的平均樣本上皆低于文獻[5]中的方法,這也是可預見的結果。所提方法將每次單任務所產生的流量看作一個整體,得出的識別率是針對單任務。文獻[5]中將單任務切割為多個不相關的單操作(僅有順序之分),分別計算特征與識別,這也意味著多個單操作的識別誤差將對最終的單任務識別誤差產生乘法擴散。
綜合以上結果,所提方法在時間、空間以及識別率上皆具有突出的表現,在多種算法下保持高準確率。其中在XGBoost下表現最好,對其將進行進一步的實驗評估。

表6 三種方法單次任務提取特征的效率對比Tab.6 Efficiency comparison of three methods for single task feature extraction
3.4.1 評估指標
本實驗中用到的評估指標分別是準確率(Accuracy)、召回率(Recall)和受試者工作特征曲線(Receiver Operating Characteristic,ROC)曲線。在給出這些指標的詳細定義前,先對一些相關變量進行定義。
1)TP(True Positive):正樣本被正確分類的數量,即真陽性。
2)FP(False Positive):負樣本被錯誤分類的數量,即假陽性。
3)TN(True Negatives):負樣本被正確分類的數量,即真陰性。
4)FN(False Negatives):正樣本被錯誤分類的數量,即假陰性。
準確率是指被正確分類的樣本占總樣本的比例,體現的是分類器的預測性能,其越大代表分類效果越佳,計算如下:

其中i代表多分類中的具體類別。
召回率是指被正確分類的正樣本數占正樣本總數的比例,體現的是分類器對正樣本的預測性能,即查全率。計算如下:

ROC 曲線是一條橫坐標為假正率(False Positive Rate,FPR),縱坐標為真正率(True Positive Rate,TPR)的曲線。假正率與真正率的相關定義見式(6)、(7)。ROC 曲線可直觀地觀察分類器的準確性,其形狀越向左上方擴展則表征分類性能越好,曲線與橫坐標的圍成面積(Area Under the Curve,AUC)可用來表征分類準確性。
假正率計算公式:

真正率計算公式:

3.4.2 評估結果
用于評估的算法為XGBoost,測評得出的混淆矩陣如圖5。混淆矩陣的結果表明,“發送紅包”與“發起轉賬”的測試漏報率為零,而“接收轉賬”與“普通數據”漏報率也只是2%,只有“接收紅包”的漏報率為7%,表明所提出的方法的分類效果極佳。

圖5 混淆矩陣Fig.5 Confusion matrix
由混淆矩陣的結果分別計算準確率與召回率,并繪制ROC 曲線進一步地評估所提的方法的性能。從表7 可看出,平均準確率為97.58%,平均召回率為97.72%,“發送紅包”與“發起轉賬”的召回率高達100%。
圖6為預測結果的ROC曲線,其中“發送紅包”與“發起轉賬”的AUC值達到了1,而“普通數據”與“接收轉賬”也為0.98及以上,相對較低的“接收紅包”也高達0.96,總平均值為0.98。

表7 評估結果 單位:%Tab.7 Results of evaluation unit:%

圖6 預測結果ROC曲線Fig.6 ROC curve of prediction result
3.4.3 場景測評
本文研究工作要實現的目標不僅是從加密的流量中識別“發送紅包”“接收紅包”“發起轉賬”與“接收轉賬”四種行為,并且要在用戶連續操作產生的流量中,識別出這四種行為發生的次數。故要將真實環境中新收集的流量(不加任何處理與過濾手段,不打標簽)來對訓練好的模型進行真實場景測評,測評數據與結果見表8。表中c1~c4分別代表“發送紅包”“接收紅包”“發起轉賬”與“接收轉賬”。

表8 真實場景測試數據以及測評結果Tab.8 Testing data and evaluation results in real senses
從兩個方面分析表8中的結果。首先,Normal 的結果顯示“普通數據”的漏報率為2.88%(Normal中總樣本數為417,不包含四種目標行為,有1+1+5+5=12 個樣本漏報,即被預判為其他四種行為,漏報率約為12/417=2.88%),這表明所提方法可將97.12%的非四種目標行為的數據排除開來。另一方面從時間上來看,Data1 與Data2 是短時間內連續操作多次目標行為,結果顯示識別率為100%。Data3與Data4是長時間內分別對收發紅包與轉賬功能進行測試,結果顯示誤報率極低。Data5中包含了所有行為的數據,從檢測結果上來看,除了“發起轉賬”的誤報率稍微高一點之外(Data5中含有25 次“發起轉賬”行為,卻預測到32次,誤報數為|32-25|=7,其余三種分別為1,2,1),其他目標行為的檢測率都符合預期。
準確識別微信中收發紅包與轉賬行為有助于輔助相關部門對相關違法活動(如紅包賭博、非正常資金來往等)取證,以及排除虛假紅包與轉賬鏈接。針對現有研究在識別微信支付行為上效率以及準確率低的情況,本文提出了一種識別微信中收發紅包與轉賬行為的方法,將一次用戶單任務(如發送紅包)行為映射為一定時間范圍內(大突發閾值)的數據塊,提取特征時將數據塊再細化為多個小數據塊,這些小數據塊映射的是組成單任務行為的多個用戶操作(如“點擊紅包按鈕”“輸入金額”“輸入密碼或指紋”),從而提煉出單任務行為的多維度特征。在實驗環境下,經多種經典機器學習與對照實驗的驗證,結果顯示所提出的方法在時間效率、空間占用率、識別準確率、算法普適性等方面皆具有優越的性能,最高的準確率可達97.58%。在真實場景的測試下,所提方法性能優越,基本實現了在連續的四種目標行為數據中識別出對應行為的次數的研究目標。
顯然,劃分大、小突發流量塊的機制針對的是由多種單操作組成的應用行為的識別,而現今移動應用行為幾乎皆屬此類,故接下來可將此方法的應用場景擴大化。