何杭松



摘要:匿名通信技術的濫用給網絡安全帶來了前所未有的挑戰,Shadowsocks作為新興的匿名通信軟件,因為出色的通信效率以及穩定性逐漸流行。為了有效解決匿名通信的濫用問題,研究并分析了Shadowsocks的通信原理,總結出部分bitflow特征,并采用Xgboost算法學習bitflow特征以識別其流量。使用同樣的特征通過隨機森林算法與支持向量機算法分別對Shadowsocks流量進行識別。測試結果表明,Xgboost算法在識別Shadowsocks流量時的準確率和召回率均有一定提高。
關鍵詞:匿名通信;流量識別;Shadowsocks;Xgboost
Research on Shadowsocks Traffic Identification Based on Xgboost Algorithm
HE Hang?song
(People′s Public Security University of China Institute of Information technology and Network Security,Beijing 102600, China)
Abstract:The abuse of anonymous communication technology has brought unprecedented challenges to network security. As an emerging anonymous communication software, Shadowsocks is gradually popular in China because of its excellent communication efficiency and its stability. In order to effectively solve the abuse problem of anonymous communication, and put forward an effective supervision method,?the communication principles of Shadowsocks, some bitflow features are summarized, and use Xgboost algorithm is used to learn its bitflow characteristics to identify its traffic. Then the same feature is used again to identify the traffic of Shadowsocks by random forest algorithm and support vector machine algorithm respectively. By comparing the test results it shows that the accuracy and recall rate of the Xgboost algorithm in identifying Shadowsocks traffic are improved.
Key Words:anonymous communication;traffic identification; shadowsocks; Xgboost
0?引言
隨著信息化的飛速發展,個人隱私和信息安全問題越來越被人們重視。Shadowsocks是目前流行的一款匿名通信軟件,憑借其穩定性及安全性被大量使用,逐漸成為網民突破訪問限制加密通信的主流軟件。雖然大部分人通過正常渠道獲取合法信息,但也有不法分子利用其匿名特性逃避網絡監管,以此獲取、傳播不良信息進行違法犯罪(如傳播淫穢信息、倒賣個人隱私信息等)。因此,只有先識別出匿名通信流量才能根據情況決定是否對其進行追蹤、內容分析、取證。流量識別技術可用于提升網絡監管質量、改善網絡使用效率[1]。文獻[2?4]綜述了目前流量識別技術發展情況,其中大部分是針對非加密流量的綜述。目前網絡流量識別技術主要有4種類型[5]:基于端口的識別方式、基于應用協議特征字識別方式、基于行為特征的識別方式、基于機器學習的識別方式。基于端口的流量識別方法采用簡單的端口映射方式對網絡流量進行識別 [6]。為防止端口偽裝技術對流量識別的干擾,產生了深度包檢測(DPI)[7]技術,Dreger等 [11]利用DPI技術對包負載里的特定特征串過濾進行異常流量監測。基于端口的流量識別方法和DPI技術均基于包負載的流量識別技術。當通信過程加密時,這兩個方法就無效了。Nguyen等[12]綜述了機器學習對于流量識別的研究進展。Haffner 等[13]通過特征統計和機器學習算法,測試并實現了部分應用流量的識別。文獻[14]引入機器學習方法,研究不同加密流量應該選用何種bitflow特征,同時使用不同算法進行對比測試。文獻[15]使用機器學習算法對 Skype 和 SSH 加密流量進行識別。文獻[16]針對網絡流量識別問題,提出一種基于支持向量機(SVM)的網絡流量識別模型。目前匿名通信流量識別研究主要是針對TOR通信系統的識別,對于Shadowsocks流量識別的文獻較少。文獻[17]根據TOR匿名通信系統TLS 連接和轉發鏈路的建立等通信機制,提出基于 TLS 指紋和基于報文長度分布的 Tor 匿名通信流量識別方法;文獻[18]以時間間隔為水印載體,提出一種改進的雙時隙質心匿名通信追蹤技術;文獻[19]針對低延時匿名系統在轉發數據時無法完全消除流量中數據包時間特征的缺陷,提出了基于包抵達時間的流水印技術;文獻[20]采用半監督學習算法——隨機森林(RF)算法實現了對Shadowsocks流量的識別。
1?Shadowsocks通信特征
1.1?Shadowsocks通信原理
Shadowsocks是為實現翻墻功能而開發的一款代理軟件,主要基于Socks5協議。用 Python、C#、C++等多種語言進行開發,其源代碼目前掛載在網絡社區,由志愿者維護。Shadowsocks 的運行原理和基于代理技術的匿名通信軟件的運行原理大致相同,即使用特定的中轉服務器實現數據傳輸。通過在遠程服務器與本地客戶端配置好連接密碼、加密方式等代理參數,就可使用Shadowsocks進行翻墻:當通過瀏覽器訪問某個地址時,數據會轉發到本地代理,由本地代理加密后轉發到服務器端,服務器端處理完請求后把數據加密返回給客戶端的本地代理,本地代理再次返回給瀏覽器。在Shadowsocks架構中Socks5協議作為“獲取用戶請求”的手段,Shadowsocks將Socks5協議拆分為客戶端和服務器端,如圖1所示。
Shadowsocks使用一套自己的協議進行加密通信。Shadowsocks協議除去了繁瑣的握手階段,Shadowsocks利用加密控件預先獲得加密密鑰和加密方法,客戶端與服務端間使用加密傳輸。從外層看只是單純發送TCP數據包,具體加密方式包括 AES、IDEA、RC4 等。
1.2?Shadowsocks握手流程
客戶端與服務端間交換數據格式如表1所示。
對每個TCP連接,首次發送的數據包會攜帶一個IV(初始向量),它會和預共享密鑰一起應用在加密中,加密算法也是預先協定的,如表2所示。
在交換第一個數據包后,雙方都有了IV、預共享密鑰、加密算法,后續數據包就不再需要IV了。
Shadowsocks中客戶端和服務器之間的通訊數據包都是加密傳輸的,因此傳統的基于端口的流量識別方法、基于DPI的流量識別方法都無法起作用了,這時可通過“流量特征”識別流量。
1.3?Shadowsocks的biflow特征
由于Xgboost算法會自動確定特征的重要度,因此本文選用盡可能多的biflow特征進行識別,在結合傳統數據流特征的前提下還加入部分信息熵特征,用到的biflow特征如表3所示。
2?Xgboost算法
2.1?Xgboost算法原理
Xgboost全稱是eXtrenme Gradient Boosting(極端梯度提升樹),是一種提升算法,它誕生之前的AdaBoost算法和GBDT算法等已經具有較好的效率, Xgboost 算法根據這兩種算法改進而來。Boosting分類器屬于集成學習模型,其核心是把大量的樹型模型組合成一個準確率較高的模型。在成功構建一棵最完備的樹之前,該模型會不斷迭代。Gradient Boostomg Machine算法在生成每一棵樹時采用梯度下降思想,以上一步生成的所有樹為基礎,向著最小化給定目標函數方向前進。在合理的參數設置下,需要生成一定數量的樹才能達到預期準確率,但如果在數據量較大且復雜時,Gradient Boostomg Machine算法就會耗費過大的資源及時間。Xgboost可通過CPU多線程并行計算提高效率,通過對算法的改進提高精度。Xgboost的損失函數采用二階泰勒展開,而傳統的GBDT 只利用了泰勒展開式的一階導數,因此Xgboost具有高準確度、不易過擬合、可擴展性等特點,能分布式處理高維稀疏特征。因此,在同等情況下,Xgboost算法的效率遠遠超過其它算法。下面是XGBoost 目標函數的理論推導:
其中,?g?i=a?(t-1)l(y?i,(t-1),h?i=a?2?((t-1)l(y?i,(t-1)),?Ω(?f?t )=γT+ 1/2 λ∑?T?j=1?2w?j。
去掉常數項,定義分裂候選集合?I?j={i|q(x?i=j) }為葉子j?的集合,化簡公式(1)得:
定義G?j=∑?i∈I?jg?i,H?i=∑?i∈I?jh?i ,對W?j求導得最優的權重系數w?*?j:
公式(4)是針對一個樹結構進行打分的函數,稱為structure score,分數越小樹結構越好。算法利用公式(4)構造不同的樹結構搜尋最優的樹結構。
2.2?Xgboost模型參數
Xgboost模型包含通用參數、輔助參數和學習目標參數。通用參數用作對函數的宏觀控制,有樹模型和線性模型。輔助參數根據選取的迭代模型控制每一步驟,學習目標參數控制目標的表現。
Xgboost模型中部分常用參數說明如下:
(1)booster:用來決定需要使用的迭代模型,有gbtree(樹模型)和gblinear(線性模型)兩種選擇。
(2)nthread:Xgboost參數用來進行多線程控制,可設置并發線程數,默認為當前系統可獲得的最大可用線程數。
(3)eta:縮步長,即學習速率。在更新葉子節點時,權重乘以eta以避免在更新過程中的過擬合。
(4)max_depth:每棵樹的最大深度,也是用來避免過擬合的,需要調優。
(5)subsample:用來控制每棵樹隨機采樣的比例。值為0.5意味著Xgboost隨機抽取一半的數據實例生成樹模型,這樣能防止過擬合。
(6)colsample_tree:在構建每棵樹時用來控制每棵樹隨機采樣的特征占比。
(7)objective:該參數定義需要被損失函數最小化。
(8)seed:隨機數種子,通過設置可復現隨機數據結果,也可用于調整參數。
3?實驗與評估
3.1?環境搭建
目前對于Shadowsocks的研究較少,因此沒有合適的數據集進行實驗,本文通過環境搭建手動獲取數據集,實驗設置30臺PC機產生流量,流量在本地通過Libpcap捕獲并解析,隨后用于提取特征值。
3.2?數據集
在可控環境下的PC只通過Shadowsocks代理產生流量,所有捕獲到的流量只包含純Shadowsocks流量,因此標記就變得簡單。通過30臺不同的PC機,部分產生純Shadowsocks流量,部分不通過Shadowsocks代理產生正常流量,這樣產生的測試集組成如表2所示。
3.3?評價標準
為評價Xgboost算法的優劣度,本文使用召回率(recall)及準確率(accuracy)兩個指標評價識別結果,同時使用隨機森林算法(Random Forest)和SVM(支持向量機)與Xgboost算法進行對比。公式如下:
其中,TP(True Positive) 為被分類器正確分類為正例的樣本數,TN(False Negative)為被分類器正確分類為負例的樣本數,FP(False Positive)為被分類器錯誤分類為正例的樣本數,FN(True Negative)為被分類器錯誤分類為負例的樣本數。
3.4?結果分析
實驗結果如表3所示。
由上述3個表中的測試結果可知,在召回率和準確率上Xgboost算法均有一定優勢。當數據集中Shadowsocks流量所占的比例較小時,3種方法的準確率均有一定程度的下降,導致分類效果較差。
4?結語
本文主要針對Shadowsocks的通信流量進行識別。介紹了Shadowsocks的通信原理與特征,根據其通信特征提出多個用于機器學習的流量特征,提出基于Xgboost算法的流量識別方法。實驗結果表明,基于Xgboost算法的流量識別方法具有較高的準確率和召回率。
未來需要提取更多的用于精確識別Shadowsocks的流量特征,加入除biflow特征以外具有區分度的特征以提升最終識別效果。
參考文獻:
[1]?ROUGHAN M, SEN S, SPATSCHECK O, et al. Class?of?service mapping for QoS:a statistical signature?based approach to IP traffic classification[C].The 4th ACM SIGCOMM Conference on Internet measurement, 2004:135?148.
[2]?NGUYEN T T T, ARMITAGE G. A survey of techniques for internet traffic classification using machine learning[J].?Communications Surveys & Tutorials, IEEE, 2008, 10(4):56?76.
[3]?NAMDEV N, AGRAWAL S, SILKARI S.?Recent advancement in machine learning based Internet traffic classification[J].?Procedia Computer Science, 2015(60):784?791.
[4]?DAINOTTI A, PESCAPE A, CLAFFY K C. Issues and future directions in traffic classification[J]. Network, IEEE, 2012,26(1):35?40.
[5]?彭立志.互聯網流量識別研究綜述[J]. 濟南大學學報:自然科學版,2016,30(2):95?104.
[6]?MADHUKAR A,WILLIAMSON C. A longitudinal study of p2p traffic classification[C].14th IEEE International Symposium on Modeling,Analysis, and Simulation of Computer and Telecommunication Systems, 2006:179?188.
[7]?HAFFNE R P,SEN S,SPATSCHECK O,et al.ACAS:automated construction of application signatures[C].2005 ACM SIGCOMM Workshop on Mining Network Data:ACM, 2005:197?202.
[8]?MA J,LEVCHENKO K,KREIBICH C,et al. Unexpected means of protocol inference[C].6th ACM SIGCOMM Conference on Internet Measurement,2006:313?326.
[9]?MOOREA W,PAPAGIANNAKI K.Toward the accurate identification of network applications[C].6th International Conference on Passive and Active Network Measurement, 2005:41?54.
[10]?SEN S,SPATSCHECK O,WANG D.Accurate,scalable in?network identification of p2p traffic using application signatures[C].13th International Conference on World Wide Web,2004:512?521.
[11]?DREGER H, FELDMANN A.?Dynamic application layer protocol analysis for network intrusion detection [C].?Proceedings of the 15th conference on USENIX Security Symposium. 2006, 18(15):257?272.
[12]?GRIMAUDO L, MELLIA M, BARALIS E. Hierarchical learning for fine grained Internet traffic classification[C]. International Wireless Communications and Mobile Computing Conference. IEEE, 2012:463?468.
[13]?HAFFNER P,?SEN S. ACAS:automated construction of application signatures [C].?Proceedings of the 2005 ACM?SIGCOMM Workshop on Mining Network Data (Mine Net 2005), 2005:197?202.
[14]?MOORE A W,ZUEV D,CROGAN M. Discriminators for use in flow based classification[R]. London:Intel Research,2005.
[15]?MOORE A W,ZUEV D.Internet traffic classification using Bayesian analysis techniques[C].2005 ACM SIGMETRICS International Conference on Measurement and Modeling of Computer Systems, 2005:50?60.
[16]?陳勇,徐釗,蔡陽波,等.基于支持向量機的網絡流量識別模型[J].軟件導刊,2017,16(7):162?164.
[17]?何高峰,楊明,羅軍舟,等.Tor匿名通信流量在線識別方法[J].軟件學報,2013(3):540?556.
[18]?HOUMANSADR, AMIR, BORISOV N. SWIRL:a scalable watermark to detect correlated network flows[C]. Network and Distributed System Security Symposium, 2011:1?15.
[19]?WANG X, CHEN S, JAJODIA S. Tracking anonymous peer?to?peer VoIP calls on the Internet[C]. ACM Conference on Computer and Communications Security,?2005:81?91.
[20]?DENG Z Y ,?LIU Z H , CHEN Z G,et al. The random forest based detection of Shadowsock's traffic[C]. 2017 9th International Conference on Intelligent Human?Machine Systems and Cybernetics (IHMSC),2017.