陳志鵬, 張 鵬, 黃彩云, 劉慶云, 邢麗超
1中國科學(xué)院大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院, 北京 中國100049
2中國科學(xué)院信息工程研究所 信息內(nèi)容安全技術(shù)國家工程實驗室, 北京 中國100093
隨著信息及網(wǎng)絡(luò)技術(shù)的發(fā)展, 網(wǎng)絡(luò)空間已成為繼陸海空天之外的第五空間, 是世界各國戰(zhàn)略必爭高地。網(wǎng)絡(luò)空間運行體系的組成要素可被分為 4 種類型: 載體、資源、主體和操作。其中, 網(wǎng)絡(luò)空間載體是網(wǎng)絡(luò)空間的軟硬件設(shè)施, 是提供信息通信的系統(tǒng)層面的集合; 網(wǎng)絡(luò)空間資源是在網(wǎng)絡(luò)空間中流轉(zhuǎn)的數(shù)據(jù)內(nèi)容, 包括人類用戶及機器用戶能夠理解、識別和處理的信號狀態(tài); 網(wǎng)絡(luò)空間主體是互聯(lián)網(wǎng)用戶,包括傳統(tǒng)互聯(lián)網(wǎng)中的人類用戶以及未來物聯(lián)網(wǎng)中的機器和設(shè)備用戶; 網(wǎng)絡(luò)空間的操作是對網(wǎng)絡(luò)資源的創(chuàng)造、存儲、改變、使用、傳輸、展示等活動[1]。
代理服務(wù)作為網(wǎng)絡(luò)空間載體的一種形式, 在數(shù)據(jù)緩存、訪問加速、負載均衡等方面發(fā)揮了不可替代的作用。根據(jù)GWI (global web index) Social統(tǒng)計代理使用報告[2]和 Roberts等人[3]研究指出, 代理服務(wù)由于其特有的功能被世界上許多國家的人們所采用。另一方面, 根據(jù) Sandvine1Sandvine (2013). Global Internet Phenomena Report: 2H 2013.https://www.sandvine.com/trends/global-internet-phenomena/公司最近公布的流量類型的統(tǒng)計數(shù)據(jù)顯示, 無論是從應(yīng)用類型還是從網(wǎng)絡(luò)用戶的維度, 網(wǎng)絡(luò)流量使用的比重分布有很強的偏向性。在不同地域上這種流量的應(yīng)用類型分布特性還有所區(qū)別, 通過有效的代理服務(wù), 可以減少重復(fù)數(shù)據(jù)傳輸導(dǎo)致的帶寬消耗, 減少資金浪費; 還可以改善目標用戶的服務(wù)體驗; 對于熱點內(nèi)容, 提供就近代理緩存服務(wù), 因而經(jīng)歷更少的網(wǎng)絡(luò)延時, 帶來更快的響應(yīng)速度。
但是, 代理服務(wù)技術(shù)也是一把雙刃劍, 代理服務(wù)在給人們生產(chǎn)和生活帶來便利的同時, 一些惡意分子也充分利用代理服務(wù)進行網(wǎng)絡(luò)犯罪和服務(wù)。例如, 在訂票高峰期, 很多第三方搶票軟件通過代理服務(wù)購票, 但是, 搶票軟件不一定都可靠, 一些搶票軟件非但沒有常規(guī)的搶票功能, 反而會攜帶病毒或者存在其它的安全隱患(捆綁銷售等等)。還有一些代理服務(wù)會改變用戶數(shù)據(jù)包的目標傳輸?shù)刂? 并將用戶的瀏覽器請求重定向, 然后對流氓網(wǎng)絡(luò)的路由地址進行解析。其結(jié)果就是, 原始的網(wǎng)絡(luò)流量會被重定向至加載了廣告和惡意軟件的惡意站點。而這些代理服務(wù)與廣告網(wǎng)站(或一些惡意軟件站點)之間存在著利益關(guān)系, 他們一同合作并創(chuàng)造出了大量的廣告流量收益, 然后雙方就可以對這些收入進行分攤。Giorgos[4]等人研究了 HTTP代理服務(wù)中存在的大量惡意行為,如注入或修改廣告、搜集用戶敏感信息等。另外, 一些欺詐交易也是通過惡意代理服務(wù)的方式進行的, 給人們的生產(chǎn)生活帶來重大損失。
代理服務(wù)導(dǎo)致上述問題的原因主要有兩方面:一是代理服務(wù)承載協(xié)議種類的多樣性, 代理服務(wù)多種多樣, 如網(wǎng)頁代理、HTTP代理、Socks代理、VPN代理等等; 二是代理服務(wù)形態(tài)的豐富性, 代理服務(wù)的形態(tài)多表征, 數(shù)量及分布動態(tài)變化, 具有隱匿、動態(tài)、時變的特點, 使得服務(wù)的真實情況難以刻畫, 發(fā)現(xiàn)難。因此, 通過對網(wǎng)絡(luò)空間代理服務(wù)進行測繪, 可以全面掌握代理服務(wù)的特性及其分布, 最大可能地形式化、精確化還原代理服務(wù)的使用狀況, 對企業(yè)和國家的風(fēng)險控制、溯源取證有著重要意義。然而, 隨著互聯(lián)網(wǎng)的迅速發(fā)展, 傳統(tǒng)代理服務(wù)發(fā)現(xiàn)機制面臨著一些新的挑戰(zhàn): 代理規(guī)模不斷擴大, 流量逐步呈現(xiàn)出復(fù)雜化、多樣化的趨勢; 多元化的網(wǎng)絡(luò)傳播途徑對識別發(fā)現(xiàn)系統(tǒng)的實時性提出了更高的要求; 加密服務(wù)及相關(guān)隱匿手段(如代理服務(wù)的流量隱匿成非代理流量)的使用, 限制了傳統(tǒng)依賴內(nèi)容檢測技術(shù)的應(yīng)用范圍。Staniford 和 Heberlein[4]首次提出了代理服務(wù)發(fā)現(xiàn)的概念以及基于網(wǎng)絡(luò)包內(nèi)容的黑名單或正則表達式發(fā)現(xiàn)方法。但是, 基于黑名單的方法僅限于檢測已知的代理服務(wù), 缺少很好的擴展性, 并且大多數(shù)構(gòu)造黑名單或正則表達式的方法是人工的方式;基于正則表達式的方法雖然可擴展性好, 但是精確度相對不高, 而且生成正則表達式的過程也是低效率的。此外, 網(wǎng)頁代理不用安裝客戶端或進行其他復(fù)雜的設(shè)置, 并且大多是免費的。這意味著用戶可以免費享受代理服務(wù)提供的所有優(yōu)惠, 而不必承擔(dān)任何費用。正如圖1所示, 用戶只要輸入他們想要訪問的URL, 就可以無限制地瀏覽任何網(wǎng)絡(luò)資源。因此, 如何快速有效地將它們與大量正常網(wǎng)頁區(qū)分開來成為網(wǎng)絡(luò)空間安全面臨的一個重要挑戰(zhàn)。
圖1 網(wǎng)頁代理使用示例Figure 1 User Case of the Web Proxy
為此, 本文提出了一種多維特征分析的網(wǎng)頁代理服務(wù)發(fā)現(xiàn)方法——ProxyMiner。在主動發(fā)現(xiàn)方面,首先通過編寫爬蟲主動獲取代理及非代理的網(wǎng)頁數(shù)據(jù)集, 然后抽取網(wǎng)頁的URL特征、內(nèi)容特征、DOM特征(Document Object Model)作為網(wǎng)頁代理特征, 最后通過構(gòu)建機器學(xué)習(xí)模型進行訓(xùn)練, 進而識別網(wǎng)頁代理。在被動發(fā)現(xiàn)方面, 通過識別和分析相似訪問模式的用戶群體來檢測網(wǎng)頁代理服務(wù)。利用代理用戶群體抽象出網(wǎng)絡(luò)用戶的訪問模式, 可以使流量分析的成本顯著降低。
本文的主要貢獻是提出了主被動發(fā)現(xiàn)相結(jié)合的特征分析方法對網(wǎng)頁代理服務(wù)進行發(fā)現(xiàn)。具體有兩點, 一是主動發(fā)現(xiàn)方面, 首次將網(wǎng)頁代理特有的局部特征引入模型中, 結(jié)合黑名單等方法來發(fā)現(xiàn)網(wǎng)頁代理。二是被動發(fā)現(xiàn)方面, 基于對隱藏在網(wǎng)頁代理服務(wù)后面的用戶進行聚類分析, 探索網(wǎng)絡(luò)代理用戶的行為相似性, 并發(fā)現(xiàn)代理用戶群體固有的特征, 通過檢查代理用戶群體訪問的URL進行網(wǎng)頁代理服務(wù)發(fā)現(xiàn)。
本文的后續(xù)安排如下: 本文第二章主要介紹了網(wǎng)頁代理服務(wù)發(fā)現(xiàn)的相關(guān)工作; 第三章形式化定義了本文的研究問題, 詳細闡述了 ProxyMiner方法的架構(gòu)和工作流程; 第四章進行了詳細的實驗結(jié)果分析; 第五章對本文的工作進行了總結(jié)。
代理服務(wù)形式多種多樣, 承載的協(xié)議也是種類繁多的, 我們首先按照網(wǎng)絡(luò)層次將不同的代理服務(wù)協(xié)議和相應(yīng)的網(wǎng)絡(luò)層次進行了歸納整理, 如圖 2所示, 如 HTTP協(xié)議、VPN協(xié)議等等。代理服務(wù)的實現(xiàn)方式也是多種多樣的, 表1按時間順序列舉了圖2所示的常用方法的多個代理服務(wù)工具。
Staniford 和 Heberlein[5]二人首次提出了代理服務(wù)發(fā)現(xiàn)的概念, 并且提出了基于網(wǎng)絡(luò)包內(nèi)容的發(fā)現(xiàn)方法, 毫無疑問, 這種方法對加密流量的代理服務(wù)就無能為力了。
目前, 在學(xué)術(shù)領(lǐng)域, 代理服務(wù)發(fā)現(xiàn)的方法主要包括四類: 基于黑名單技術(shù)的識別方法, 基于啟發(fā)式規(guī)則(如正則表達式規(guī)則)的識別方法, 基于機器學(xué)習(xí)的識別方法, 以及基于交互式主機行為的識別方法。
圖2 代理相關(guān)協(xié)議和方法Figure 2 Protocols and Methods on Proxy
基于黑名單的方法僅限于檢測已知的代理服務(wù),缺少很好的擴展性。另外, 雖然基于黑名單方法在運行時效率非常高, 但是在構(gòu)造黑名單的過程中, 十分麻煩, 因為如今大多數(shù)構(gòu)造黑名單的方法還是人工的方式。為了增強可擴展性, 同時為了應(yīng)對代理域名周期性變化的問題, 基于正則表達式的方法被提出了, 如產(chǎn)生 Snort規(guī)則[6]等等。基于正則表達式的方法雖然可擴展性好, 但是精確度相對不高, 而且生成正則表達式的過程也是低效率的。因此, 基于簽名的啟發(fā)式方法被提出了, 該方法主要是基于內(nèi)容的, 如基于指紋[5]和基于水印[7]等等?;谥讣y的方法主要是基于流量的內(nèi)容, 如包的特征屬性, 內(nèi)容等提煉出簽名、正則表達式等方式進行檢測; 基于水印的方法主要是在流入主機的流量中注入水印特征,若在流出主機的流量中檢測出含有水印的包特征,則判定該主機為提供代理服務(wù)的主機。這兩種基于內(nèi)容的方法在加密流量中就很難應(yīng)用了。
基于機器學(xué)習(xí)的方法不對包內(nèi)容進行檢測, 只是對代理服務(wù)的特征進行分析, 一方面摒棄了侵犯用戶隱私的擔(dān)憂, 另一方面也繞過了對加密內(nèi)容檢測內(nèi)容困難的難題。Vahid[8]等人基于存儲于服務(wù)器中的不同流量日志, 用機器學(xué)習(xí)的方法來識別代理服務(wù)。Rueimin[9]等人提出了一種基于 RTT(Round-Trip Time)時間的方法來檢測是否為代理主機。理論依據(jù)是若代理主機提供中繼服務(wù), 其必然響應(yīng)用戶的請求, 并重新建立 TCP鏈接, 這樣基于代理主機的RTT總時間必然大于未經(jīng)過代理主機的RTT。 此外, 還有基于其它特征, 如包大小、包時間戳、建立鏈接起止時間、包間延遲等等來發(fā)現(xiàn)代理服務(wù)[10-13]。這些基于時間戳的方法受網(wǎng)絡(luò)環(huán)境影響很大, 精度較低, 缺少很好的魯棒性。另外, Deng[14]等人通過流量分析Shadowsocks流量特征, 采用隨機森林方法來發(fā)現(xiàn)Shadowsocks代理服務(wù)。基于機器學(xué)習(xí)的方法,關(guān)鍵是確定相應(yīng)代理服務(wù)的特征, 尤其是相對穩(wěn)定的或者能夠動態(tài)更新的, 否則會造成召回率較低。
當訪問網(wǎng)頁代理時, 可能會出現(xiàn)安裝惡意軟件或者執(zhí)行惡意腳本的情況。這時, 可以結(jié)合虛擬化技術(shù)和蜜罐技術(shù)對代理網(wǎng)頁進行識別。此類方法的工作原理是: 使用蜜罐技術(shù), 將虛擬主機作為誘餌, 訪問待檢測網(wǎng)頁, 通過監(jiān)測訪問后的主機動態(tài)行為(例如: 創(chuàng)建新進程、改變注冊表、下載文件、成功訪問受限站點等), 判斷該網(wǎng)頁是否是網(wǎng)頁代理。根據(jù)使用系統(tǒng)的不同, 蜜罐技術(shù)可以細分為基于模擬的低交互式蜜罐[15]和基于真實系統(tǒng)的高交互式蜜罐[16]。諸葛建偉[17]等人對此有詳細介紹, 這里不再贅述。
在工業(yè)領(lǐng)域, 也有許多商業(yè)上的產(chǎn)品提供代理服務(wù)發(fā)現(xiàn)的功能, 他們采用的技術(shù)方法主要有:DPI(Deep Packet Inspector, 深度包檢測)、HTTP頭部字段檢測、IP黑名單檢測、URL黑名單檢測(通過同已構(gòu)建的代理庫進行匹配, 判斷待測URL是否在代理庫中)、基于啟發(fā)式規(guī)則檢測和地理位置檢測等方法。其中, IP2Proxy[18]檢測流量中HTTP協(xié)議頭部字段是否包含REMOTE_ADDR、VIA 、XFF字段, 若含有, 則認為是代理服務(wù)。但是, XFF字段在HTTP協(xié)議中是可選字段, 并且該字段也是可以仿造的,準確率不高。CIPAFilter[19]通過URL黑名單進行發(fā)現(xiàn),MaxMind[20]通過 IP黑名單進行發(fā)現(xiàn), 這兩種方法對于代理地址不斷變化更新的情況就無能為力了, 擴展性比較差。此外, 還有通過端口掃描進行代理服務(wù)發(fā)現(xiàn), 端口掃描是通過對于指定的 IP地址, 掃描代理常用的端口, 查看該端口的開放狀況, 判斷其是否為代理服務(wù)。為了增強判別的精度, 有人還對待測IP所對應(yīng)的DNS服務(wù)器的IP地址進行反向解析, 驗證該 IP是否注冊域名, 從而計算其是否為代理服務(wù)的可疑性。當然, 最樸素的方法就是模擬代理訪問網(wǎng)站識別法, 通過設(shè)置指定的IP為代理, 以該IP來訪問受限的網(wǎng)站, 根據(jù)其是否訪問成功, 來判斷其是否為代理服務(wù)。
表1 常見代理服務(wù)工具Table 1 Common Proxy Tools
表2 代理服務(wù)發(fā)現(xiàn)機制常用方法Table 2 Proxy Service Detection Methods
綜合以上學(xué)術(shù)界和工業(yè)界對代理服務(wù)的發(fā)現(xiàn)方法研究, 表2總結(jié)了5種代理服務(wù)發(fā)現(xiàn)方法, 并從數(shù)據(jù)粒度、分類粒度、復(fù)雜度、實時性、精度、可擴展性等多方面進行了對比分析。
網(wǎng)頁代理服務(wù)通常作為用戶(個人主機)通過網(wǎng)絡(luò)服務(wù)提供商獲取網(wǎng)絡(luò)資源的信息中轉(zhuǎn)站。但是網(wǎng)頁代理服務(wù)協(xié)議多種多樣, 對此, 我們對網(wǎng)頁代理服務(wù)進行了統(tǒng)一的形式化定義: 六元組(C,P,S,B,A,QoS), 其中C:用戶、P: 代理、S: 網(wǎng)絡(luò)資源、B: 行為、A: 特征屬性、QoS: 評價度。
第二類, 對于只是中繼包, 不更改包頭的網(wǎng)頁代理服務(wù)的轉(zhuǎn)換函數(shù)可以如公式(2)所示:
對于網(wǎng)頁代理服務(wù)質(zhì)量評估 QoS,可以通過一個向量來表示:其中, 向量的每一維度都表示網(wǎng)頁代理服務(wù)性能中的某一指標, 如代理的跳數(shù)、帶寬、延遲等等。對于經(jīng)過多跳的網(wǎng)頁代理服務(wù), 可以通過聯(lián)合操作(∪)進行計算, 以含有兩個指標為例, 如公式(3)所示。
不同的指標, 其聯(lián)合操作的規(guī)則是不一樣的。例如, 帶寬的聯(lián)合操作為而延遲的聯(lián)合操作為
綜上, 對于任何網(wǎng)頁代理服務(wù)是可用的, 也就是對于任何一個經(jīng)過網(wǎng)頁代理服務(wù)的流是可達的, 除了需要滿足一定的QoS外, 還需要滿足沒有訪問環(huán)路和規(guī)則其中并且初始流沒有訪問環(huán)路意味著任何流不能經(jīng)過相同的網(wǎng)頁代理服務(wù)兩次或多次, 即對于流f經(jīng)過網(wǎng)頁代理服務(wù)不存在而
主動方面利用了 3.1節(jié)提到的六元組(C,P,S,B,A,QoS)中的C、P、S、A四種屬性, 主要是充分利用A屬性的特征, 通過特征發(fā)現(xiàn), 并沒有解析網(wǎng)頁里的所有內(nèi)容(解析全部網(wǎng)頁內(nèi)容會帶來很大開銷), 而僅是專注于抽取網(wǎng)頁代理特有的特征: 在DOM結(jié)構(gòu)里有著特定值的Form表單。主要分為兩部分:
1) 特征抽取: 對于每一個數(shù)據(jù)集網(wǎng)頁(或 URL),構(gòu)建一個多維特征向量作為機器學(xué)習(xí)判別的一個輸入;
2) 機器學(xué)習(xí): 基于特征向量集, 通過學(xué)習(xí)訓(xùn)練得到一個預(yù)測判別模型。
被動方面通過利用了 3.1節(jié)提到的六元組(C,P,S,B,A,QoS)中的C、P、S三種屬性, 通過用戶線索發(fā)現(xiàn)網(wǎng)頁代理服務(wù)使用訪問關(guān)系, 并計算用戶相似度聚類相似用戶群體, 重點檢測每組用戶群的公共TopN的URL, 這就限制了URL的檢查范圍, 避免了對訪問流中所有未知 URL的詳細檢查。同時,利用已有用戶的代理訪問關(guān)系建立用戶訪問反饋機制, 從而對潛在的網(wǎng)頁代理服務(wù)進行服務(wù)發(fā)現(xiàn)。
簡而言之, 我們在客戶端和目的地之間建立了雙向圖, 如圖3所示, 通過觀察客戶端和代理之間的雙向圖來聚合網(wǎng)絡(luò)代理用戶的相似性并找出最新的潛在網(wǎng)絡(luò)代理。
定義一個函數(shù)更形式化的描述被動發(fā)現(xiàn)方法,將輸入網(wǎng)絡(luò)流量日志作為輸入, 并在特定窗口時間內(nèi)輸出包含三元屬性的二部圖。一個函數(shù)Fin被定義為:其中 logs表示數(shù)據(jù)集的記錄, 集合srcIP表示客戶端IP集合, 集合dst是目標 URL,e是邊集具體來說,srcIP和dst是兩個不相交的頂點集, 邊的權(quán)重是在一定時間段內(nèi)生成的相同邊的數(shù)量。
為了研究網(wǎng)絡(luò)流量中用戶訪問行為相似性, 我們利用二分圖的單模投影圖來提取行為模式中節(jié)點之間的關(guān)系。圖3(a)表示了通過兩個代理服務(wù)(P1,P2)的六個用戶 IP地址(C1-C6)和四個目的 URL(d1-d4)之間的數(shù)據(jù)通信的簡單圖的例子。圖3(b)表示相應(yīng)的二分圖, 而圖 3(c)是用戶主機(C1-C6)的頂點集上的二分圖的單模投影。兩個節(jié)點通過單模投影中的邊連接, 當且僅當兩個節(jié)點連接到二分圖中有至少一個相同節(jié)點。我們利用單模投影圖來探索用戶的社交行為相似度。然而, 我們的興趣并不是創(chuàng)建一個代理用戶集群, 而是找出新的潛在的代理服務(wù), 即使它們可能是動態(tài)變化的。
圖3 用二分圖和單模映射對代理用戶訪問模式建模Figure 3 Modeling the Proxy Pattern based on Bipartite and One-mode projection
ProxyMiner整個系統(tǒng)模塊圖如圖4所示, 其主要分為主動發(fā)現(xiàn)模塊和被動發(fā)現(xiàn)模塊兩部分。
圖4 系統(tǒng)模塊圖Figure 4 The Framework of ProxyMiner
主動發(fā)現(xiàn)模塊主要是通過爬蟲定期向相應(yīng)的公開網(wǎng)頁代理服務(wù)網(wǎng)站、論壇等方面去爬取相應(yīng)的網(wǎng)頁代理服務(wù), 同時, 對有效的網(wǎng)頁代理進行特征抽取。分別抽取網(wǎng)頁的URL特征, 內(nèi)容特征, DOM特征。最后通過構(gòu)建機器學(xué)習(xí)模型進行訓(xùn)練, 進而進行網(wǎng)頁代理識別。被動發(fā)現(xiàn)模塊主要是通過協(xié)議解析, 日志分析來構(gòu)建二分圖來對網(wǎng)絡(luò)用戶與其實際訪問目的地之間進行抽象建模, 即客戶端與目的地之間的雙向節(jié)點。隨后構(gòu)建了二分圖的單模投影,從而可以進一步構(gòu)建網(wǎng)絡(luò)用戶的相似性矩陣, 其相似性由兩個主機之間的共同的目的地數(shù)量來表征。基于相似矩陣, 應(yīng)用簡單而有效的譜聚類算法來對用戶群體聚類。這種行為模式聚類不僅減少了分析流量的規(guī)模, 而且還揭示了潛在的代理用戶行為訪問模式。最后, 我們不斷獲取代理用戶群體訪問的頂級域名, 并將它們輸送到驗證模塊(可以手動驗證, 也可以批量自動驗證), 手動驗證就是通過瀏覽器設(shè)置網(wǎng)頁代理服務(wù)后, 手動訪問網(wǎng)絡(luò)資源, 查看是否能夠成功訪問。對于自動驗證, 本文基于WebDriver[21], 實現(xiàn)了模擬同時通過網(wǎng)頁代理服務(wù)訪問的驗證小工具。對于驗證完成后的網(wǎng)頁代理服務(wù), 可以進一步分析, 若發(fā)現(xiàn)新的且有效的網(wǎng)頁代理服務(wù)特征, 可以進一步服務(wù)于主動方法的網(wǎng)頁代理服務(wù)發(fā)現(xiàn)模塊。
A.主動發(fā)現(xiàn)
圖 5展示了主動發(fā)現(xiàn)模塊的架構(gòu)。從整體角度分析, 主動發(fā)現(xiàn)模塊包含三個主要步驟。
圖5 主動發(fā)現(xiàn)模塊的流程圖Figure 5 The Process of Active Module
在第一步中, 通過基于 Beautiful Soup[22](Beautiful Soup是一個工具箱, 提供web數(shù)據(jù)解析等功能)技術(shù), 編寫爬蟲主動獲取代理及非代理的網(wǎng)頁數(shù)據(jù)集。
在第二步中, 進行代理特征抽取。分別抽取網(wǎng)頁的URL特征, DOM特征。
1)URL 特征
a) 檢測URL是否含有數(shù)字, 或者域名是IP。
b) 檢測 URL是否含有敏感詞匯: 如 proxy, hide,block等等。
c) 檢測URL是否含有特殊符號: 如"-", "@"等等。
d) 檢測 URL是否含有嵌入域名, 如 http://rhe.rxxrh.com/http://www.google.com。
e) 檢測頂級域名是否使用非常用域名, 如‘.xyz’‘.top’等。
f) 檢測URL有效生存期是否過短。
g) 檢測每個IP承載的域名數(shù)量。如果一個IP承載多個域名, 那么特征向量對應(yīng)的這一維度的值置為1; 否則置為0。
2)DOM特征
a) 表單(Form)
結(jié)構(gòu)特征: Form表單里含有一個輸入框, 輸入框下方含有多個復(fù)選框(可選)。
屬性特征: 復(fù)選框值含有敏感詞匯; action屬性:action屬性值含有敏感字符串, 如"Encrypt URL"、"Encrypt Page"、"Allow Cookies"、"Remove Scripts"和 "Remove Objects"等等。
b) Javascript內(nèi)容特征。 據(jù)分析, 我們發(fā)現(xiàn)網(wǎng)頁代理服務(wù)是提供中繼服務(wù)的, 網(wǎng)頁代理是通過 on-submit函數(shù)來實現(xiàn)這一功能的, 相應(yīng)的, 通過檢測on-submit屬性值是否包含字符串"return update Location(this) "。若含有, 則特征向量對應(yīng)的這一維值置為1; 否則置為0。
具體構(gòu)建特征向量的方式有三種。URL特征中的前5個特征是基于搜集大量網(wǎng)頁代理URL數(shù)據(jù)集的基礎(chǔ)上構(gòu)建 URL正則表達式, 通過字符串檢測來獲得的, 第 6個特征是通過請求域名的whois信息計算相應(yīng)的生存期來獲得的。第7個特征是通過nslookup命令獲取的。而DOM中的Form表單、復(fù)選框以及Javascript特征的檢測都是通過Beautiful Soup 的python解析器——lxml解析器[23]進行解析分析。lxml解析器基于C語言庫libxml2和 libxslt, 對于 XML文檔解析有很快的速度和很強的容錯能力。
第三步, 對于每一個網(wǎng)頁, 通過第二步構(gòu)建一個含有多維特征的向量, 作為訓(xùn)練集。
第四步, 為了驗證特征抽取對代理識別的有效性, 本文分別在 URL特征、DOM 特征和全集特征(FULL, 包括URL和DOM的所有特征)三種不同規(guī)模特征集上分別通過 Logistic Regression, Bayes,SVM-linear, SVM-RBF四種機器學(xué)習(xí)方法構(gòu)建訓(xùn)練模型。
Logistic Regression: 這是一個簡單的二分類模型: 基于距離分類超平面的距離進行分類。決策規(guī)則是基于符號函數(shù), 具體公式如公式(4)所示, 其能將距離度量轉(zhuǎn)化成判斷代理與否的概率。
其中, 參數(shù)w和b可以通過訓(xùn)練數(shù)據(jù)不斷訓(xùn)練得到。
Bayes: Bayes 可以通過計算條件概率來獲得,如公式(5)所示。:
模型的判斷是基于最大化特征的聯(lián)合似然函數(shù)的值。
Support Vector Machine (SVM): SVM 分類器以最大化正確分類的邊際為基準, 這對于微小的擾動是穩(wěn)健的。 SVM中的決策規(guī)則基于計算特征之間相似性的核函數(shù)。在我們的研究中, 我們使用線性和RBF內(nèi)核。
第五步, 測試集也是通過爬蟲獲取, 具體方式同第一步。
第六步, 抽取測試集的特征向量, 具體方式同第二步。
第七步, 通過訓(xùn)練出的模型分別進行代理識別并進行對比分析。
第八步, 對于獲得的識別結(jié)果, 若存在誤差, 可以將錯誤樣例加入訓(xùn)練集中重新進行模型訓(xùn)練。
本文基于Python Scikit-learn庫[24]集成了四種分類方法, 如 Logistic Regression、Bayes、SVM-linear、SVM-RBF。最后, 基于這四種機器學(xué)習(xí)方法訓(xùn)練模型的檢測效果, 進行對比并對結(jié)果進行輸出。對于每次最終輸出的結(jié)果, 可以回饋到數(shù)據(jù)集, 便于更新下一輪的訓(xùn)練。
B. 被動發(fā)現(xiàn)
圖 7展示了被動發(fā)現(xiàn)模塊的框架。該模塊的詳細過程會在如下論述。
1) 訪問模式測量
本節(jié)從測量的角度對我們的假設(shè)進行了有效驗證和分析。
我們的假設(shè)是, 使用代理的用戶的行為是相似的, 他們有一些固有的訪問模式。也就是說, 用戶傾向于尋求更高效的代理服務(wù)器, 他們通過代理服務(wù)更愿意訪問那些僅能通過代理才能夠使用的服務(wù)。當某個代理服務(wù)不起作用時, 代理用戶會尋求其他的代理服務(wù)。
圖6 較流行的代理服務(wù)使用的累積分布圖Figure 6 Cumulative Distribution of Popular Proxy Service
為了驗證我們的假設(shè), 我們對代理用戶的訪問模式進行了全面的測量研究。首先, 我們從一家大型機構(gòu)獲取真實網(wǎng)絡(luò)流量, 該機構(gòu)在2017年1月3日至7月28日的骨干路由器上部署了代理蜜罐(PList1)。然后, 我們分析并發(fā)現(xiàn), 排名前300的域名大約提供了 80%的代理服務(wù), 正如其累積分布圖 6中顯示的那樣, 意味著我們可以僅關(guān)注那些經(jīng)常使用的代理服務(wù), 從而能夠節(jié)省許多資源。
表3 訪問模式的穩(wěn)定性Table 3 The Stability of Access Patterns
另外, 我們還測量了代理用戶潛在的較穩(wěn)定訪問模式。具體而言, 我們在收集數(shù)據(jù)集(2017年1月)時記錄了每個代理用戶經(jīng)常訪問的網(wǎng)站類別, 然后每兩個月重新檢查其模式狀態(tài)。結(jié)果總結(jié)在表3中。我們可以看到代理用戶的訪問模式是相對穩(wěn)定的。平均七個月僅有微小的變化。另外更重要的是, 我們從PList1中隨機選擇100個代理用戶, 并測試使用了多少個代理。我們發(fā)現(xiàn) 78%的用戶經(jīng)常使用一種代理, 而其他用戶至少使用兩種代理。我們進一步調(diào)查發(fā)現(xiàn), 用戶更換為其他新的代理服務(wù)主要是因為舊的代理服務(wù)器不工作, 或者他們得到了更好的服務(wù)。因此, 受此發(fā)現(xiàn)的啟發(fā), 我們可以通過關(guān)注用戶的目的地主機來檢測未知的代理。
2) 基于譜劃分相似度矩陣的譜圖聚類算法
圖7 被動發(fā)現(xiàn)模塊的流程圖Figure 7 The Process of Passive Module
圖8 二分圖的單模映射圖Figure 8 The One-mode Projection of Bipartite Graph
一個關(guān)于主機通信的單模投影圖的有趣觀察是加權(quán)鄰接矩陣中的聚類模式。圖 8中的散點圖顯示了兩個不同群體的單模投影圖, 即網(wǎng)頁代理用戶和非代理用戶的目的地。這一觀察促使我們進一步探索聚類技術(shù)和圖劃分算法, 以揭示網(wǎng)頁代理服務(wù)用戶特有的訪問模式, 從而發(fā)現(xiàn)網(wǎng)頁代理服務(wù)。我們的研究采用了一個簡單的譜聚類算法[26], 其中k= 2(網(wǎng)頁代理服務(wù)用戶群體和非網(wǎng)頁代理服務(wù)用戶群體)。
算法3.1概述了該方法的主要步驟。算法的輸入是一個三元組, 包含客戶端 IP, 目標 URL和在給定時間窗口(我們設(shè)置t= 5分鐘, 可以在配置文件里設(shè)置)期間的權(quán)重(訪問時間)。第一步是構(gòu)造加權(quán)的二部圖, 然后生成二部圖的單模投影并獲得相似度矩陣S。因此, 我們應(yīng)該找到一個圖劃分, 使得不同組之間的邊具有非常低的權(quán)重(這意味著不同群體中的節(jié)點是不相似的), 并且群組中的邊具有高權(quán)重。所以, 最簡單直接的方法就是采用mincut策略。不幸的是, 由于mincut解的不平衡條件, 我們引入拉普拉斯矩陣其中A是對角矩陣,, 我 們 利 用Rayleigh-Ritz定理計算特征向量并找出L的第二小特征值。最簡單的方法就是使用特征值的符號作為指標函數(shù)[26]。該算法的輸出是客戶端IP, 并且每個IP地址都分配給一個具有相似的訪問模式關(guān)系的群體。
C. 代理驗證
在獲得網(wǎng)頁代理群體之后, 我們會保留這些客戶端IP的實時列表并提取其中所有經(jīng)常訪問的域名。
當我們使用網(wǎng)頁代理進行瀏覽網(wǎng)站資源時, 網(wǎng)頁代理的域名不會改變。從某種意義上說, 檢查一個URL是否為網(wǎng)頁代理的最有效和最簡單的方法是檢查我們是否可以通過代理URL成功訪問受防火墻限制的某些網(wǎng)站。因此, 我們基于WebDriver開發(fā)了一個模擬訪問工具。該工具可以遠程模擬用戶訪問瀏覽器的行為來檢查URL是否可以成功訪問。如果成功, 該域名或IP可被視為一個網(wǎng)頁代理服務(wù)。
本實驗的實驗環(huán)境為一臺4核2.5GHz主頻CPU,4GB內(nèi)存的服務(wù)器(具體型號是 Intel(R) Xeon(R)CPU E5-2682 v4)。
主動方面是利用Python Scikit-learn實現(xiàn)了網(wǎng)頁代理服務(wù)分類方法, 其中包括 Logistic Regression、Bayes、SVM-linear、SVM-RBF。
被動方面是利用Python里的復(fù)雜網(wǎng)絡(luò)分析庫networkx對代理用戶的訪問模式進行建模分析。
由于網(wǎng)頁代理生存期是短暫的, 許多URL的生存期不超過一周, 許多管理員不斷動態(tài)更新網(wǎng)頁代理服務(wù)的域名。為了能在一個大規(guī)模的數(shù)據(jù)集里對發(fā)現(xiàn)方法進行評價和測試, 并且保證實驗數(shù)據(jù)可以重復(fù)利用, 本文首先將相關(guān)的網(wǎng)頁數(shù)據(jù)集(當網(wǎng)頁代理服務(wù)可用時)通過爬蟲爬取下來并同時進行保存,然后后續(xù)的所有離線分析過程, 可以通過 python里的 urllib.request模塊加載相應(yīng)的網(wǎng)頁數(shù)據(jù)進行離線分析。
主動發(fā)現(xiàn)的訓(xùn)練數(shù)據(jù)集主要有兩類數(shù)據(jù)集: 網(wǎng)頁代理數(shù)據(jù)集和非網(wǎng)頁代理數(shù)據(jù)集。
代理網(wǎng)頁: 包括主要爬取來自公開代理列表,如網(wǎng)站 anonymster[24], 網(wǎng)站 proxy4free[28], 網(wǎng)站PHPProxy, 網(wǎng)站CGIProxy和 網(wǎng)站Glype[29]以及一些組織或機構(gòu)公開的網(wǎng)頁代理數(shù)據(jù)集(如 BlackLists[30]里的網(wǎng)頁代理URL)。
非代理網(wǎng)頁: 非代理網(wǎng)頁數(shù)據(jù)集主要是爬取來自Alexa網(wǎng)站[31]的前26,066條記錄。
被動方面的數(shù)據(jù)集主要包含來自代理蜜罐的數(shù)千個網(wǎng)頁以及從一個骨干路由器獲取的一些日志。
A. 主動發(fā)現(xiàn)
本文采用了常見的評價指標——準確率和召回率作為評價主動發(fā)現(xiàn)方法的評價指標。同時, 也使用集成了TP(True positive rate) 和FP(False positive rate)兩種指標的F1指標進行評測。最終, 本章還借鑒了ROC(receiver operating characteristic curve) 曲線及其覆蓋的面積AUC(Area Under Curve)指標, 對比了模型間的性能差異。
特征對比
本章的第一個實驗是為了驗證不同的特征對代理識別的有效性, 分別在URL特征、DOM特征和全集特征(FULL, 包括URL和DOM特征)三種不同規(guī)模特征集上進行訓(xùn)練分析。
圖9 不同特征集下的ROC曲線Figure 9 ROC of different Feature Sets
表4 不同特征集對分類性能的影響Table 4 The Performance on different Feature Sets
圖 9展示了這三種不同特征向量的ROC曲線,可以發(fā)現(xiàn): 基于全集特征的方法具有較高的準確率。與圖9相對應(yīng), 表4列出了在不同特征集下的時間消耗及相應(yīng)的準確率, 召回率和F1-score。可以發(fā)現(xiàn),與構(gòu)建基于URL特征的時間相比, 抽取并構(gòu)建基于DOM 特征的需要消耗更多的時間。相反地, 基于DOM特征的方法在召回率和F1-score方面均優(yōu)于僅基于URL特征的。而基于全集特征的(結(jié)合URL特征和DOM特征)方法具有最好的性能。
分類方法對比
學(xué)習(xí)方法主要包括了四種分類器, 因此本文評估了四種分類器在三種不同特征集下的分類效果。
表 5給出了具有四種機器學(xué)習(xí)方法的三個特征集的結(jié)果??梢钥闯? 產(chǎn)生最佳值的分類器是基于URL的特征的 LR和 Bayes(幾乎相同), LR 基于DOM的功能和用“FULL”全集的LR。 其中, 訓(xùn)練時間不包括特征提取時間(我們可以在表4中看到結(jié)果)。因此, 通過廣泛的實驗結(jié)果, Logistic回歸(LR)在四種算法中表現(xiàn)最好。特別是, LR的準確率比貝葉斯提高了16%以上。更重要的是, 結(jié)合四種模型的所有特征, 大大提高了檢測召回率。 值得注意的是,我們的實驗顯示的準確度約為 95%, 平均召回率為96.5%。
表5 不同模型檢測結(jié)果Table 5 The Results on different Models
B. 被動發(fā)現(xiàn)
在本節(jié)中, 我們評估被動方法發(fā)現(xiàn)代理服務(wù)的有效性。具體而言, 我們要回答以下問題: 第一, 對于網(wǎng)頁代理服務(wù)較短的使用期限特點, 所提出的方法是否會能夠找到一些之前未發(fā)現(xiàn)的網(wǎng)頁代理(具有較好的可擴展性)。第二, 對代理用戶群體進行聚類分析是否是一種更有效的網(wǎng)頁代理服務(wù)檢測。在接下來的具體實驗中, 基于豐富的數(shù)據(jù)集, 我們評估了上文提出的被動發(fā)現(xiàn)代理服務(wù)的方法。
表6列出了四個不同時期的統(tǒng)計結(jié)果。 用戶數(shù)量是指代理用戶群中的源IP數(shù)。 代理數(shù)目是指我們實驗中真實代理的數(shù)量。發(fā)現(xiàn)數(shù)目是指被動發(fā)現(xiàn)的疑似網(wǎng)頁代理服務(wù)的數(shù)量。驗證代理數(shù)目代表經(jīng)過驗證后的真實代理的數(shù)目。召回率是指被動檢測出的網(wǎng)頁代理服務(wù)的比例。
通過分析表6的結(jié)果, 我們進一步發(fā)現(xiàn): 最重要的時間開銷是在用戶之間構(gòu)建二分圖的時候。但是召回率與用戶數(shù)量無關(guān)。我們使用兩個關(guān)鍵指標進行了實驗: 密度和擴展度[32], 如圖 10所示。密度是驗證時的代理檢測率。更高的密度值意味著更高效地使用資源。密度越高, 驗證工作量越小。擴展度表明了我們的方法為每個用戶IP找到的新代理的平均數(shù)量。例如, 當網(wǎng)頁代理群體中有100個用戶IP時,最終識別出了 130個網(wǎng)頁代理服務(wù), 可以得出擴展度為 1.3。因此, 更高的擴展度表明, 對于每個客戶端IP, 會找到更多的網(wǎng)頁代理。許多因素可能導(dǎo)致不同的擴展度, 例如新的逃避方式, 代理用戶群體訪問的URL等等。當擴展度變得越來越低時, 或許是到了更新聚類機制的時候。
表6 統(tǒng)計結(jié)果Table 6 The Statistics Result
圖10 密度vs.擴展度Figure 10 Density vs. Expand
圖11 時間和準確率方面的對比Figure 11 The Time and Accuraty vs. ProxyDetector
另外, 值得一提的是, 由于代理用戶訪問模式的穩(wěn)定性, 我們不需要每天都構(gòu)建二分圖, 所以我們不需要過度關(guān)注構(gòu)建二分圖的開銷。
最后, 我們在檢測的準確率和時間消耗方面對比了被動發(fā)現(xiàn)與ProxyDetector[13]的差異, 如圖11所示, 在準確率相當?shù)那闆r下, 被動發(fā)現(xiàn)的預(yù)測時間大大減少, 更重要的是, 被動發(fā)現(xiàn)可以發(fā)現(xiàn)新的未知網(wǎng)頁代理服務(wù)。
代理服務(wù)是信息安全領(lǐng)域的熱點問題。隨著網(wǎng)絡(luò)攻擊技術(shù)和防御技術(shù)的不斷發(fā)展, 該問題一直受到研究人員的廣泛關(guān)注。針對這一問題, 首先梳理了代理服務(wù)的應(yīng)用背景, 介紹了其基本概念, 并且從多角度分析了代理服務(wù)的不同類型劃分, 然后, 對網(wǎng)頁代理服務(wù)進行統(tǒng)一的形式化描述(忽略其具體使用的代理協(xié)議)。接著, 本文提出了一種基于主被動發(fā)現(xiàn)相結(jié)合的多維特征分析的網(wǎng)頁代理服務(wù)發(fā)現(xiàn)方法——ProxyMiner。
主動發(fā)現(xiàn)方面, 本文提出了一種輕量級網(wǎng)頁代理發(fā)現(xiàn)機制。實驗結(jié)果表明, 相比于傳統(tǒng)檢測方法,主動方法可以顯著提高網(wǎng)頁代理檢測準確度, 大幅降低平均檢測時間。在未來的工作中, 將重點圍繞以下幾個方面開展研究。首先, 引入URL白名單機制以避免一些不必要的資源消耗; 其次, 逐步考慮其他代理類型的檢測方法, 尤其是挖掘其它類型代理服務(wù)的有效特征; 最后, 研究如何提高分類算法在動態(tài)環(huán)境下的魯棒性。
被動發(fā)現(xiàn)方面, 提出了一種通過對代理用戶進行聚類來發(fā)現(xiàn)網(wǎng)頁代理服務(wù)的新方法。需要關(guān)注的一個挑戰(zhàn)是網(wǎng)頁代理服務(wù)在動態(tài)的環(huán)境中不斷變化。為了應(yīng)對這個挑戰(zhàn), 我們發(fā)現(xiàn)用戶所使用的網(wǎng)頁代理服務(wù)在不工作時會尋求其他可用的網(wǎng)頁代理服務(wù)器。因此, 我們的方法的亮點是提取代理用戶訪問模式中的固有特征, 而不是直接尋找網(wǎng)頁代理服務(wù)的短期使用(動態(tài)更新)的特征, 即使用潛在的和穩(wěn)定的訪問模式來發(fā)現(xiàn)頻繁變化的網(wǎng)頁代理服務(wù)。通過我們的實驗, 我們證明該方法可以有效發(fā)現(xiàn)網(wǎng)頁代理服務(wù), 并且優(yōu)于以前提出的基于特征的方法, 特別適合用于發(fā)現(xiàn)未知網(wǎng)頁代理。未來的工作包括如何挖掘更多網(wǎng)頁代理服務(wù)特點, 并將其應(yīng)用于網(wǎng)頁代理服務(wù)發(fā)現(xiàn)。更重要的是, 應(yīng)該考慮一些錯誤的負樣本情況(例如, 一個用戶可能首先在一個本地內(nèi)容分發(fā)網(wǎng)絡(luò)上登錄, 然后再連接到網(wǎng)頁代理服務(wù)器或者采用多個代理等方式)。
致謝本文得到國家重點研發(fā)計劃的資助和支持。同時, 很多同行對本文的工作也給予了支持和建議,在此一并表示感謝。