管 濤,王科人,徐正國
(盲信號處理重點實驗室,成都610041)
網(wǎng)絡(luò)地址轉(zhuǎn)換器(Network Address Translator,NAT)允許多個內(nèi)網(wǎng)主機(jī)使用相同公網(wǎng)地址連接互聯(lián)網(wǎng),它可以緩解IPv4地址數(shù)量緊張的問題[1]。目前,NAT已經(jīng)在互聯(lián)網(wǎng)中大量部署,范圍涵蓋了小型的家庭網(wǎng)絡(luò)以及大型的企業(yè)內(nèi)網(wǎng)。NAT提高了網(wǎng)絡(luò)使用的隱私性,隱藏了內(nèi)部網(wǎng)絡(luò)的大小和拓?fù)浣Y(jié)構(gòu)。但是,從網(wǎng)絡(luò)管理和網(wǎng)絡(luò)安全的角度來說,NAT的大量使用嚴(yán)重影響了網(wǎng)絡(luò)的正常管理,并且造成了潛在的安全隱患。在被動接收條件下實現(xiàn)NAT檢測對網(wǎng)絡(luò)管理和網(wǎng)絡(luò)安全威脅檢測具有重要作用,例如對僵尸網(wǎng)絡(luò)的規(guī)模檢測和未授權(quán)的設(shè)備接入等。因此,被動接收條件下的NAT流量檢測及其規(guī)模估計成為工業(yè)界和學(xué)術(shù)界關(guān)注的問題。
NAT流量檢測需要判斷某個IP是否使用了NAT,而NAT規(guī)模估計還要對NAT后面主機(jī)數(shù)量進(jìn)行估計。目前已有大量工作對NAT流量檢測及規(guī)模估計進(jìn)行了研究。
在NAT流量檢測方面,文獻(xiàn)[2-3]綜合了初始TTL(Time To Live)、IPID(IP Identification)、TCP SYN、TCP源端口、TCP時間戳等特征進(jìn)行NAT流量檢測。文獻(xiàn)[4-10]則采用的是流量統(tǒng)計的方法,通過訓(xùn)練學(xué)習(xí)流量特征對NAT流量進(jìn)行檢測。實驗結(jié)果表明,這些方法均達(dá)到了較高的檢測率。
在NAT規(guī)模估計方面,文獻(xiàn)[11]最早提出利用主機(jī)發(fā)送IPID序列的連續(xù)性來估計NAT主機(jī)數(shù)目。當(dāng)IPID隨機(jī)產(chǎn)生或者為固定值(如0)時,文獻(xiàn)[11]方法會失效,文獻(xiàn)[12]在此基礎(chǔ)上進(jìn)一步關(guān)聯(lián)IPID、TCP序列號和源端口序列進(jìn)行綜合判斷。文獻(xiàn)[13]給出了一種基于TCP/IP協(xié)議棧指紋的NAT檢測方法,其適用于NAT后主機(jī)具有不同操作系統(tǒng)的情形。文獻(xiàn)[14-15]利用了HTTP協(xié)議中的User-Agent和Cookie信息出現(xiàn)的種類數(shù)進(jìn)行估計。文獻(xiàn)[16]提取了ICMP和TCP中的時間戳值,采用時鐘漂移特征區(qū)分不同主機(jī)。文獻(xiàn)[17-18]指出了通過主機(jī)啟動時間和TCP時鐘頻率可以唯一標(biāo)識一臺主機(jī),因此采用TCP時間戳序列可以估計NAT規(guī)模大小。
本文主要關(guān)注的是NAT規(guī)模估計問題,即在給定一段時間內(nèi)的網(wǎng)絡(luò)數(shù)據(jù)的條件下,研究如何準(zhǔn)確估計NAT后面主機(jī)數(shù)量??偟膩碚f,現(xiàn)有NAT規(guī)模估計的兩類方法均存在一定問題:統(tǒng)計IPv4、TCP或HTTP頭部中字段種類,如TTL值、User-Agent等,其使用條件比較有限,且分辨率較差;通過提取序列特征可以更準(zhǔn)確地估計NAT規(guī)模大小,如對IPID序列、TCP序號序列和TCP時間戳序列的連續(xù)線段進(jìn)行檢測,但目前采用的方法是密度聚類或線性遞歸,當(dāng)線段發(fā)生交叉或距離較近時誤判率較高,且無法解決初始類別的選擇問題。
因此,為了更好地估計出NAT規(guī)模,我們將采用Hough變換對基于TCP時間戳序列的估計方法進(jìn)行改進(jìn)。我們的解決思路為:對于TCP時間戳和數(shù)據(jù)包接收時間,由于不同主機(jī)的開機(jī)時間和TCP時鐘頻率存在一定的差異,它們體現(xiàn)出不同的線性關(guān)系;該線性關(guān)系在坐標(biāo)圖中表現(xiàn)為直線,基于計算機(jī)視覺中的Hough變換方法遞歸放大該坐標(biāo)圖像,從而檢測出現(xiàn)的直線數(shù)目即可獲得NAT規(guī)模大小。區(qū)別于以往估計方法的地方在于,我們改變了序列連續(xù)性檢測方式,利用計算機(jī)視覺的方法解決了初始類別的選擇問題,并改進(jìn)了序列發(fā)生交叉或距離較近時的判斷精度。
本文組織結(jié)構(gòu)如下:第2節(jié)對NAT條件下TCP時間戳與數(shù)據(jù)包接收時間之間的關(guān)系進(jìn)行建模分析;第3節(jié)介紹基于Hough變換的NAT主機(jī)數(shù)目估計算法;第4節(jié)給出了算法在仿真和實際數(shù)據(jù)條件下的實驗結(jié)果;第5節(jié)對全文進(jìn)行總結(jié)。
TCP時間戳在RFC1323中引入,它作為TCP頭部的選項字段,長度為10 Byte[19]。其主要有兩個作用,一是精確測量往返傳輸時延,二是防止高速傳輸網(wǎng)絡(luò)下TCP序號的沖突。TCP時間戳選項中包含長度為32 bit的TSval子字段,它代表當(dāng)前數(shù)據(jù)包發(fā)送主機(jī)設(shè)置的TCP虛擬時鐘值。下文無特殊說明時,TCP時間戳均指的是TSval子字段。
在被動接收條件下,假設(shè)我們獲得從某個IP發(fā)出的一系列包含TCP時間戳的IP數(shù)據(jù)包,其中第i個數(shù)據(jù)包的發(fā)送時間為si,TCP時間戳值為ti,它們構(gòu)成一個TCP時間戳序列。根據(jù)RFC1323規(guī)定,發(fā)送方數(shù)據(jù)包中的TCP時間戳ti與發(fā)送時間si之間應(yīng)保持線性關(guān)系ti=ksi+t0。其中:k為TCP虛擬時鐘頻率,它與操作系統(tǒng)內(nèi)核直接相關(guān),RFC建議取值范圍為1~1000 Hz,常見的時鐘頻率有{2 Hz,10 Hz,100 Hz,250 Hz,500 Hz,1000 Hz};t0為初始計數(shù)值,它與開機(jī)時間直接相關(guān),一般從開機(jī)起始為0或某個隨機(jī)值。
對于被動捕獲方,數(shù)據(jù)包發(fā)送時間si是未知的,我們只能獲取捕獲時間。假設(shè)第i個數(shù)據(jù)包的捕獲時間為ri,數(shù)據(jù)包經(jīng)歷的路徑時延為τi,那么有ri=si+τi,捕獲時間 ri與時間戳 ti滿足 ti=kri- kτi+t0。定義相對捕獲時間為xi,TCP時間戳值為yi如式(1)所示:
那么有 yi=k·xi+b,其中 b=t0+kr1- kτi。假設(shè)在時間跨度T中,收到的含時間戳的數(shù)據(jù)包個數(shù)為N,即數(shù)據(jù)集合為{(xi,yi)|i=1,2,…,N}。路徑時延τi為隨機(jī)變量,當(dāng)接收時間跨度T較小時,τi可近似為常數(shù),此時,yi與xi能夠較好地滿足線性關(guān)系。
在TCP時間戳y與相對捕獲時間x存在的線性關(guān)系y=kx+b中,斜率k是TCP虛擬時鐘頻率,截距b由主機(jī)的開機(jī)時間和數(shù)據(jù)包傳輸時延決定。因此,采用TCP時間戳序列進(jìn)行NAT規(guī)模估計基于三個假設(shè)條件:NAT不修改TCP時間戳值;具有相同TCP時鐘頻率的主機(jī)不在同一時刻開機(jī);數(shù)據(jù)包傳輸時延不發(fā)生劇烈變化。也就是說,用TCP時鐘頻率和時間戳起始值可以標(biāo)識一臺主機(jī),這在實際條件下通常是滿足的[17-18]。理論上講,由于時鐘頻率最大值為1000 Hz,最小可分辨的開機(jī)時間差異為1 ms。
對某包含6臺主機(jī)的NAT設(shè)備采集TCP時間戳序列,其中主機(jī)1和主機(jī)2為Windows XP操作系統(tǒng),主機(jī)3~6為Ubuntu 12.04操作系統(tǒng),特別地,主機(jī)4~6為同一型號設(shè)備。畫出相對捕獲時間和TCP時間戳的散點圖如圖1所示,線性關(guān)系在坐標(biāo)圖中表現(xiàn)為直線,可以看出不同主機(jī)表現(xiàn)出不同的線性關(guān)系。
圖1 NAT中不同主機(jī)表現(xiàn)出不同的線性關(guān)系Fig.1 Different host behind NAT shows different linearity
假設(shè)NAT包含的主機(jī)數(shù)量為M,對數(shù)據(jù)包相對捕獲時間x和TCP時間戳y建立如下的線性混合模型:
式中,主機(jī)數(shù)量 M 未知,模型參數(shù){(k1,b1),(k2,b2),…,(kM,bM)}未知。這是一個典型的無監(jiān)督聚類問題,本文將其轉(zhuǎn)化為檢測坐標(biāo)圖中的直線數(shù)目,通過基于Hough變換的方法估計直線數(shù)量。
為了估計出NAT規(guī)模大小,只需要檢測TCP時間戳與相對捕獲時間坐標(biāo)圖上直線的數(shù)目。從計算機(jī)視覺角度出發(fā),圖像上直線檢測可以通過Hough變換完成。由于圖像分辨率的原因,利用Hough變換進(jìn)行檢測時,需要進(jìn)行多級迭代放大,從而更加準(zhǔn)確地檢測出直線數(shù)目。
由于線性關(guān)系的穩(wěn)定性與路徑時延抖動相關(guān),為盡量減小時延抖動對檢測的影響,數(shù)據(jù)的時間跨度需要限制在比較小的長度內(nèi)。在數(shù)據(jù)預(yù)處理時,我們將數(shù)據(jù)按照一定的時間長度T分段進(jìn)行處理。通常時間長度T根據(jù)目標(biāo)的平均流量來確定,從而保證用于識別的數(shù)據(jù)量足夠且具有一定的反應(yīng)速度。此外,相同TCP時間戳為重復(fù)信息,我們只保留第一次出現(xiàn)的數(shù)據(jù)點。
進(jìn)行Hough變換前,還需要將分段后的數(shù)據(jù)二值化映射為圖像。假設(shè)映射后圖像的大小為W×H,即寬度為W,高度為H,那么圖像分辨率為
歸一化映射后得到原數(shù)據(jù)點在圖像上的坐標(biāo)點為
將圖像上對應(yīng)坐標(biāo)置為1即可生成二值圖像。生成圖像后,再對圖像做一次邊緣檢測處理,完成數(shù)據(jù)預(yù)處理。
標(biāo)準(zhǔn)Hough變換采用如下參數(shù)形式表示一條直線[20]:
式中,變量ρ表示從原點到直線的垂直距離,變量θ表示原點到直線的垂向量與x軸的夾角。
參數(shù)空間(ρ,θ)需要離散化,Hough變換后可以獲得離散化參數(shù)空間上的分布矩陣,矩陣的每個元素代表落在相應(yīng)參數(shù)位置的圖像點數(shù),其峰值點則代表圖像上可能存在對應(yīng)參數(shù)的直線。假設(shè)輸入數(shù)據(jù)為(x,y),Hough 變換后得到
對Hough變換的矩陣H檢測參數(shù)空間中出現(xiàn)的峰值點,并得出當(dāng)前圖像中的直線數(shù)目。
參數(shù)空間(ρ,θ)的離散精度決定著檢測結(jié)果的精度,距離ρ的離散化精度記為Rho,夾角θ離散化區(qū)間記為Theta。此外,還需要設(shè)置H矩陣的峰值判決門限V。
受圖像分辨率的限制,需要對檢測得到的直線進(jìn)行遞歸放大進(jìn)而獲得更精確的結(jié)果。首先按照檢測結(jié)果對圖像進(jìn)行分割,選擇已檢測到的直線鄰域的數(shù)據(jù)作為新的輸入數(shù)據(jù)重新檢測。對于不歸屬于任何已檢測直線的數(shù)據(jù),同樣作為新的輸入數(shù)據(jù)重新檢測。
在選擇已檢測到直線的鄰域數(shù)據(jù)時,當(dāng)數(shù)據(jù)點與直線的距離小于鄰域半徑ε時,認(rèn)為數(shù)據(jù)點歸屬該直線的領(lǐng)域。已知TCP虛擬時鐘頻率大于0,當(dāng)圖像上檢測到的直線斜率顯著大于0時,我們認(rèn)為不需要再放大。為了減小奇異點的影響,對于獲取的數(shù)據(jù)量小于門限值Th的不做檢測處理。
基于Hough變換的NAT規(guī)模被動估計算法的具體步驟如圖2所示。
圖2 算法具體步驟Fig.2 Detailed procedure of the proposed algorithm
算法中涉及的關(guān)鍵檢測參數(shù)及實驗中采用的典型值如表1所示。
表1 算法關(guān)鍵參數(shù)列表Table1 Key parameters of the proposed algorithm
本節(jié)首先在真實數(shù)據(jù)環(huán)境下,對本文算法和已有算法進(jìn)行驗證。為了進(jìn)一步測試算法性能,我們搭建實驗網(wǎng)絡(luò),對比本文算法和已有算法的性能。
下面實驗將對兩種常用的針對TCP時間戳序列實現(xiàn)NAT規(guī)模估計的算法進(jìn)行對比。
(1)Bursztein 算法[17]
通過TCP時間戳在特定TCP虛擬時鐘頻率下增長的誤差值判斷兩個數(shù)據(jù)包是否屬于同一主機(jī),設(shè)定 TCP虛擬時鐘頻率集合為{2 Hz,10 Hz,100 Hz,250 Hz,500 Hz,1000 Hz},時 間 間 隔 為10 ms,誤差范圍為 0.1%。
(2)Wicherski算法[18]
以同一TCP連接(即TCP五元組相同)的數(shù)據(jù)包作為初始類,通過最小均方誤差線性回歸方法求取其對應(yīng)的TCP虛擬時鐘頻率及估計的開機(jī)時間,并將相同時鐘頻率下開機(jī)時間小于δboot的歸為同一主機(jī),設(shè)置 δboot=2 ms。
注意到,Bursztein算法中將TCP虛擬時鐘頻率作為先驗信息,Wicherski算法則假設(shè)同一連接的所有數(shù)據(jù)包屬于同一主機(jī),而本文算法并沒有添加這些限制條件。
采集真實環(huán)境下某網(wǎng)絡(luò)出口的數(shù)據(jù),取其中兩個IP地址的TCP時間戳序列進(jìn)行檢測。第1個IP地址的流量和流數(shù)分別為4.1 Mbit/s和7192,圖3(a)所示的為第1個IP地址數(shù)據(jù)的檢測結(jié)果,三種算法檢測得到主機(jī)數(shù)目均為4,與人工分析結(jié)果一致。第2個 IP地址的流量和流數(shù)分別為35.6 Mbit/s和43 734,圖3(b)所示的為第2個IP 地址數(shù)據(jù)的檢測結(jié)果,本文算法檢測得到主機(jī)數(shù)目為21,與人工分析結(jié)果一致,而Bursztein算法和Wich-erski算法檢測結(jié)果分別為14和18。
圖3 真實數(shù)據(jù)檢測結(jié)果Fig.3 Experiment results on real data
采用實驗網(wǎng)絡(luò)產(chǎn)生數(shù)據(jù)進(jìn)行對比測試,實驗采用的網(wǎng)絡(luò)連接如圖4所示。在NAT設(shè)備后面連接若干臺主機(jī),這些主機(jī)持續(xù)地隨機(jī)訪問服務(wù)器,數(shù)據(jù)采集點位于NAT設(shè)備與服務(wù)器之間。
圖4 實驗網(wǎng)絡(luò)連接圖Fig.4 Experimental network setup
我們采用檢測準(zhǔn)確率α和偏差值δ評價算法性能。對于特定主機(jī)數(shù)目M,當(dāng)檢測得到M個主機(jī)時,檢測正確,否則檢測錯誤。假設(shè)檢測次數(shù)為N,檢測正確的次數(shù)為P,第n次檢測得到的主機(jī)數(shù)為Xn,準(zhǔn)確率α和偏差值δ定義如式(7)所示:
選取主機(jī)數(shù)目M范圍為[1,20],檢測次數(shù)N=500,統(tǒng)計算法的檢測準(zhǔn)確率和偏差值如圖5所示。從圖中可以看出,本文算法檢測的準(zhǔn)確率要高于Bursztein算法和Wicherski算法,檢測的偏差值要小于Bursztein算法和Wicherski算法,這說明本文算法性能要優(yōu)于這兩種傳統(tǒng)算法。
圖5 實驗結(jié)果對比圖Fig.5 Comparison results on experimental network
選定主機(jī)數(shù)目為M=10,查看檢測結(jié)果的分布如圖6所示。從檢測的分布圖可以看出本文算法的分布較為集中,而其他兩種算法得到分布較為分散,這進(jìn)一步表明本文算法性能更好。
圖6 主機(jī)數(shù)目為10時檢測結(jié)果分布對比圖Fig.6 Distributions comparison with 10 hosts
由于Bursztein算法是根據(jù)數(shù)據(jù)點之間的時間戳差和接收時間差來判斷是否其是否屬于同一主機(jī),當(dāng)多個主機(jī)的時間戳相差較小時,Bursztein算法會將這些數(shù)據(jù)都?xì)w于同一主機(jī),從而發(fā)生誤判。Wicherski算法是基于同一連接屬于同一主機(jī)這一假設(shè),在短連接條件下數(shù)據(jù)點較少使得擬合誤差較大,進(jìn)而引起誤判。而本文算法是基于Hough變換進(jìn)行直線檢測,即使存在主機(jī)時間戳相差較小或存在大量短連接的情況,從圖像上依然可以較為準(zhǔn)確地區(qū)別出不同的直線。
檢測圖像大小W×H和鄰域半徑ε是本文算法非常關(guān)鍵的參數(shù),選擇不同的參數(shù)組合對其靈敏度進(jìn)行分析。圖7(a)為單獨改變圖像大小的實驗結(jié)果,圖7(b)為單獨改變鄰域半徑的實驗結(jié)果。從理論上講,基于Hough變換對直線進(jìn)行檢測要求映射后的圖像分辨率適中,當(dāng)圖像上的點過于稀疏時,檢測會發(fā)生一定偏差。實驗結(jié)果顯示圖像大小對算法準(zhǔn)確率影響不大。檢測鄰域半徑ε決定著放大的區(qū)域,當(dāng)ε過小時,放大區(qū)域包含數(shù)據(jù)可能不完整,而過大時,放大區(qū)域可能包含額外的數(shù)據(jù),這些都會對檢測結(jié)果產(chǎn)生影響。實驗結(jié)果表明,適中的鄰域半徑能夠達(dá)到最好的檢測效果。
圖7 不同參數(shù)條件下檢測結(jié)果對比Fig.7 Comparison results with various parameter settings
針對NAT主機(jī)數(shù)目檢測問題,本文利用TCP時間戳與數(shù)據(jù)包接收時間之間存在的線性關(guān)系,提出了一種基于Hough變換的NAT主機(jī)數(shù)目自動識別算法。與以往工作相比,該算法解決了多個主機(jī)時間戳相距較近以及短連接導(dǎo)致誤識別的問題。實驗測試結(jié)果表明了算法的有效性,且性能優(yōu)于已有算法。
本文算法并不局限于對TCP時間戳序列進(jìn)行分析,它可以很容易地擴(kuò)展至IPID序列和TCP初始序號序列的線性關(guān)系自動識別中。下一步工作將考慮利用更多的可用先驗信息,從而進(jìn)一步提高算法的性能。
[1]RFC 1631,The IP Network Address Translator(NAT)[S].
[2]焦程波,鄭輝,黃宇.被動式遠(yuǎn)程網(wǎng)絡(luò)地址翻譯器識別系統(tǒng)[J].電子科技大學(xué)學(xué)報,2012(6):899-904.JIAO cheng - bo,ZHENG Hui,HUANG Yu.Novel passive remote network address translation detecting system[J].Journal of University of Electronic Science and Technology of China,2012(6):899 -904.(in Chinese)
[3]Detection of NAT devices[EB/OL].[2014 -06 -07].http://www.muni.cz/ics/research/projects/4622/web/natdet.
[4]Li R,Zhu H L,Xin Y,et al.Remote NAT detect algorithm based on support vector machine[C]//Proceedings of International Conference on Information Engineering and Computer Science(ICIECS).Wuhan:IEEE,2009:1 -4.
[5]高驥翔.基于網(wǎng)絡(luò)流量特征的NAT識別方法[D].成都:電子科技大學(xué),2012.GAO Jixiang.NAT Detection Based on Network Traffic Feature[D].Chengdu:University of Electronic Science and Technology of China,2012.(in Chinese)
[6]Detecting NAT Devices using sFlow[EB/OL].[2014 -06 -07].http://www.sflow.org/detectNAT/.
[7]Abt S,Dietz C,Baier H,et al.Passive remote source NAT detection using behavior statistics derived from NetFlow[M]//Emerging Management Mechanisms for the Future Internet.Berlin:Springer,2013:148 -159.
[8]Krmicek V,Vykopal J,Krejci R.Netflow based system for NAT detection[C]//Proceedings of the 5th International Student Workshop on Emerging Networking Experiments and Technologies.New York:ACM,2009:23 -24.
[9]Li R,Zhu H L,Xin Y,et al.Passive NATted hosts detect algorithm based on directed acyclic graph support vector machine[C]//Proceedings of 2009 International Conference on Multimedia Information Networking and Security.Wuhan:IEEE,2009:474 -477.
[10]Gokcen Y,F(xiàn)oroushani V A,Heywood.Can we identify NAT behavior by analyzing Traffic Flows[C]//Proceedings of 2014 IEEE Security and Privacy Workshops.San Jose:IEEE,2014:132 -139.
[11]Bellovin S.A technique for counting NATted hostes[C]//Proceedings of the 2nd ACM SIGCOMM Workshop on Internet Measurement.New York:ACM,2002:267-272.
[12]Mongkolluksamee S,F(xiàn)ukuda K,Pongpaibool P.Counting NATted hosts by observing TCP/IP field behaviors[C]//Proceedings of 2012 IEEE International Conference on Communications(ICC).Ottawa:IEEE,2012:1265-1270.
[13]Beverly R.A robust classifier for passive TCP/IP fingerprinting[M]//Passive and Active Measurement.Berlin:Springer,2004:158 -167.
[14]Maier G,Schneider F,F(xiàn)eldmann A.NAT Usage in Residential Broadband Networks[M]//Passive and Active Measurement.Berlin:Springer,2011:32 -41.
[15]白雪,錢步仁,梁華慶.一種檢測NAT后主機(jī)數(shù)目的方案[J].計算機(jī)安全,2009(4):46-48.BAI Xue,QIAN Buren,LIANG Huaqing.A scheme for counting NATted hosts[J].Computer Security,2009(4):46 -48.(in Chinese)
[16]Kohno T,Broido A,Claffy K.Remote physical device fingerprinting[J].IEEE Transactions on Dependable and Secure Computing,2005,2(2):93 -108.
[17]Bursztein E.Time has something to tell us about network address translation[EB/OL].(2007-07-08)[2014- 06 - 07].http://cdn.1y.tl/publications/time - has-something-to-tell-us-about-network- address- translation.pdf.
[18]Wicherski G,Weingarten F,Meyer U.IP agnostic realtime traffic filtering and host identification using TCP timestamps[C]//Proceedings of 2013 IEEE 38th Conference on Local Computer Networks.Sydney:IEEE,2013:647-654.
[19]RFC 1323,TCP extensions for high performance[S].
[20]Duda R O,Hart P E.Use of the hough transformation to detect lines and curves in pictures[J].Communications of the ACM,1972(15):11-15.