文/張智偉
在龐大的互聯(lián)世界里,承載著各種信息的數(shù)據(jù)包通過網(wǎng)絡(luò)時(shí)刻不停地交換傳遞,往來于不同的目的地,數(shù)據(jù)包被不同的人賦予了不同的用處,有的傳送數(shù)據(jù),有的暗藏危險(xiǎn),不明身份的數(shù)據(jù)包到處游蕩給網(wǎng)絡(luò)安全帶來了隱患。為了能夠清晰地了解網(wǎng)絡(luò)中數(shù)據(jù)包攜帶的信息,我們需要運(yùn)用數(shù)據(jù)包分析技術(shù)對(duì)它們進(jìn)行解讀,以分析網(wǎng)絡(luò)中的細(xì)微變化,提前做好安全防范,及時(shí)定位、清理網(wǎng)絡(luò)中的風(fēng)險(xiǎn)。
為了能夠掌握網(wǎng)絡(luò)數(shù)據(jù)包的真實(shí)狀況,網(wǎng)絡(luò)管理工作通常會(huì)借助數(shù)據(jù)包分析工具抓取信息后生成的大量數(shù)據(jù)統(tǒng)計(jì)信息,對(duì)網(wǎng)絡(luò)上的通信設(shè)備及傳輸進(jìn)行有效的還原,及時(shí)清理影響安全運(yùn)行的故障或隱患。
目前,市面上有很多流行的數(shù)據(jù)包分析工具,如OminiPeek、Sniffer Pro、Wireshark、Tcpdump/windump、國(guó)產(chǎn)科來等,功能上略有差異,這些軟件有商業(yè)的、有免費(fèi)的,可按個(gè)人喜好選擇使用。
數(shù)據(jù)包分析工具的本質(zhì)是數(shù)據(jù)包嗅探,是觀察正在運(yùn)行的協(xié)議實(shí)體間交換報(bào)文的基本工具,通常用來進(jìn)行協(xié)議分析和網(wǎng)絡(luò)監(jiān)控,以便進(jìn)行故障診斷、性能分析和安全分析等,黑客則用它進(jìn)行安全敏感信息的監(jiān)聽和截取。
數(shù)據(jù)包分析工具主要由分組捕獲器(packet capture)和分組分析器(packet analyzer)兩部分組成。
分組捕獲器需要把網(wǎng)卡設(shè)置為“混雜模式(promiscuous mode)”,當(dāng)數(shù)據(jù)包從嗅探器所連接的網(wǎng)卡上進(jìn)入系統(tǒng)時(shí),嗅探程序可以收到整個(gè)以太網(wǎng)內(nèi)的網(wǎng)絡(luò)數(shù)據(jù)信息,包括所有的廣播、組播和單播數(shù)據(jù)包,甚至錯(cuò)誤數(shù)據(jù)包,從而實(shí)現(xiàn)數(shù)據(jù)包捕獲。
分組分析器的作用是分析協(xié)議報(bào)文并把報(bào)文中所有的字段內(nèi)容直觀地顯示出來。其主要構(gòu)成通常包括包過濾器、數(shù)據(jù)包緩沖區(qū)和解碼部分,包過濾器用于設(shè)定協(xié)議分析器想要捕獲的數(shù)據(jù)包類型,通常都可以按照協(xié)議類型、通信的IP地址、網(wǎng)絡(luò)接口層地址和應(yīng)用程序來設(shè)定過濾條件;解碼部分主要是將緩沖區(qū)中已經(jīng)捕獲的數(shù)據(jù)包解析為用戶可讀的協(xié)議數(shù)據(jù)單元格式,以便用戶分析。
絕大多數(shù)數(shù)據(jù)包分析工具都提供了一定的數(shù)據(jù)包統(tǒng)計(jì)功能,可以對(duì)各種類型的數(shù)據(jù)包進(jìn)行整理統(tǒng)計(jì),包括各種類型的錯(cuò)誤數(shù)據(jù)包。
數(shù)據(jù)包分析工具在網(wǎng)絡(luò)管理中通常用于診斷網(wǎng)絡(luò)活動(dòng)出現(xiàn)的故障,還可以用于搜集網(wǎng)絡(luò)性能的趨勢(shì),從而為預(yù)防出現(xiàn)影響網(wǎng)絡(luò)正常工作或性能的極端情況提供參考,多數(shù)數(shù)據(jù)分析包工具都有能力跟蹤網(wǎng)絡(luò)流量的短期和長(zhǎng)期趨勢(shì),包括網(wǎng)絡(luò)利用率、每秒鐘數(shù)據(jù)包速率、數(shù)據(jù)包長(zhǎng)度分布及使用的協(xié)議等,網(wǎng)絡(luò)管理員能夠利用這些信息跟蹤網(wǎng)絡(luò)發(fā)生的細(xì)微變化,為網(wǎng)絡(luò)管理提供極大的幫助。
常見的數(shù)據(jù)包分析工具部署方式有3種:
(1)直接在被監(jiān)控的主機(jī)上安裝,用來捕獲通過網(wǎng)卡進(jìn)出的所有數(shù)據(jù)包。
(2)端口鏡像。將交換機(jī)上的多個(gè)端口鏡像到一個(gè)端口用于監(jiān)控。
采用端口鏡像方式時(shí),需要注意鏡像端口的流量負(fù)載,把太多的端口鏡像到一個(gè)端口,在網(wǎng)絡(luò)流量達(dá)到一定級(jí)別后,可能會(huì)遠(yuǎn)遠(yuǎn)超出鏡像端口的物理承受能力而出現(xiàn)數(shù)據(jù)包丟失情況,而且交換機(jī)在長(zhǎng)時(shí)間維持最大負(fù)荷時(shí),可能會(huì)將鏡像端口判斷為遭到某類型的拒絕服務(wù)或廣播風(fēng)暴攻擊,丟棄多余的數(shù)據(jù)包,甚至?xí)和?nèi)部交換電路。在高吞吐量級(jí)別的環(huán)境下,端口鏡像可能會(huì)產(chǎn)生不穩(wěn)定的結(jié)果。
(3)使用網(wǎng)絡(luò)分路器(TAP)。網(wǎng)絡(luò)分路器是一個(gè)可以實(shí)時(shí)獲取網(wǎng)絡(luò)流量的硬件設(shè)備,使用時(shí)串接在網(wǎng)絡(luò)鏈路中,在不影響網(wǎng)絡(luò)正常流量的情況下,將被監(jiān)測(cè)鏈路中的網(wǎng)絡(luò)數(shù)據(jù)復(fù)制到它的另外一個(gè)或多個(gè)端口上供不同的分析工具進(jìn)行分析。
只有正確捕獲數(shù)據(jù)包,才能如實(shí)還原網(wǎng)絡(luò)的狀況,在部署數(shù)據(jù)包分析交換工具時(shí)還是要先了解抓包網(wǎng)絡(luò)的具體情況,仔細(xì)考慮工具的部署位置。有些特殊情況應(yīng)當(dāng)注意:在交換式網(wǎng)絡(luò)中,抓取整個(gè)VLAN數(shù)據(jù)包,須直連核心交換機(jī),避免因特殊VLAN劃分導(dǎo)致部分主機(jī)數(shù)據(jù)包漏抓;防火墻流量監(jiān)控有所不同。監(jiān)控防火墻內(nèi)口,可以觀察到內(nèi)網(wǎng)用戶發(fā)起的所有訪問Internet的流量,其源IP地址均為內(nèi)部IP地址,監(jiān)控防火墻外口,則觀察到的是所有經(jīng)過防火墻放行的訪問Internet的流量,其源IP地址均為外部(公網(wǎng))地址。
通過數(shù)據(jù)包分析工具可以查看網(wǎng)絡(luò)中的通信過程及應(yīng)用占用帶寬情況,識(shí)別網(wǎng)絡(luò)運(yùn)行的高峰時(shí)間,分析可能的攻擊或惡意行為,尋找不安全以及濫用網(wǎng)絡(luò)資源的應(yīng)用,是了解網(wǎng)絡(luò)狀況的最佳工具。日常網(wǎng)絡(luò)管理應(yīng)用大多基于以下幾個(gè)方面:
數(shù)據(jù)包分析工具內(nèi)置了多種數(shù)據(jù)統(tǒng)計(jì)信息功能,如IO、協(xié)議分層、會(huì)話等數(shù)據(jù)匯總圖表,通過這些信息展示出當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)包所呈現(xiàn)的帶寬性能、用戶帶寬占用、數(shù)據(jù)包長(zhǎng)度、端點(diǎn)會(huì)話情況等綜合情況,為網(wǎng)絡(luò)管理員分析、評(píng)估是否要對(duì)網(wǎng)絡(luò)進(jìn)行相應(yīng)的調(diào)整提供了詳實(shí)的數(shù)據(jù)依據(jù)。
在傳輸期間發(fā)生錯(cuò)誤、丟包、重傳現(xiàn)象,是網(wǎng)絡(luò)管理員在工作中需要關(guān)注的常見問題。其中,遇到最多的是TCP重傳,這種情況下,可記下報(bào)錯(cuò)IP地址,然后直接在瀏覽器訪問,能訪問的可根據(jù)網(wǎng)頁信息判斷與網(wǎng)絡(luò)內(nèi)的終端是否有應(yīng)用關(guān)聯(lián);無法訪問的可以到域名查詢網(wǎng)站(如whois.com)了解該IP的注冊(cè)信息,再做進(jìn)一步處理。
實(shí)際工作中,也經(jīng)常遇到與應(yīng)用層軟件有關(guān)的情況,例如,一種是終端用戶使用了一些部分功能可在國(guó)內(nèi)使用的境外軟件,運(yùn)行中后臺(tái)自動(dòng)訪問不能在國(guó)內(nèi)訪問的境外官網(wǎng),導(dǎo)致無法連接出現(xiàn)錯(cuò)誤數(shù)據(jù)包。最典型的是谷歌,其Chrome瀏覽器市場(chǎng)占有率較大,內(nèi)置的某些模塊經(jīng)常會(huì)后臺(tái)訪問官網(wǎng),運(yùn)行netstat可以看到,前述方法查證的谷歌所屬IP的TCP連接狀態(tài)顯示為SYN_SENT,沒有收到應(yīng)答。一般情況下,TCP三次SYN同步請(qǐng)求而沒有任何回復(fù),可能是服務(wù)器端的問題,也有可能是防火墻攔截了特定端口上的請(qǐng)求,大量訪問谷歌地址產(chǎn)生的錯(cuò)誤TCP數(shù)據(jù)包就應(yīng)該屬于這種情況。
又如,越來越多的殺毒、文字處理等各種應(yīng)用軟件廠家懷著不同的目的,以為用戶提供各種服務(wù)為由,常駐電腦啟動(dòng)項(xiàng)或服務(wù)項(xiàng),經(jīng)常自動(dòng)在后臺(tái)連接其官網(wǎng)檢查更新或同步數(shù)據(jù)。通過直接訪問或whois查詢的方式,確認(rèn)其公網(wǎng)IP地址后,抓取客戶端和服務(wù)器會(huì)話的數(shù)據(jù)包查看,雙方第一次握手的TCP SYN同步請(qǐng)求都很快連接,但服務(wù)器回應(yīng)客戶端較慢,導(dǎo)致傳輸時(shí)發(fā)生TCP重傳,推測(cè)為由于辦公類軟件互聯(lián)網(wǎng)用戶數(shù)量龐大,服務(wù)器連接壓力較大。為了進(jìn)一步確認(rèn)發(fā)生TCP重傳的IP地址所關(guān)聯(lián)的應(yīng)用層程序,運(yùn)行netstat -ano查詢?cè)揑P地址使用的PID,使用進(jìn)程查看工具強(qiáng)行關(guān)閉PID后,再次抓包,該地址不再出現(xiàn)在TCP重傳統(tǒng)計(jì)里,由此可驗(yàn)證,應(yīng)用層軟件與IP地址的關(guān)系判斷正確與否。
網(wǎng)絡(luò)的性能受多種因素影響,不可能始終保持最佳狀態(tài),有賴于TCP的錯(cuò)誤恢復(fù)特性,量級(jí)較小的延時(shí)、較少的TCP重復(fù)確認(rèn)和重傳等數(shù)據(jù)包錯(cuò)誤,不需要做什么特別處理。
曾經(jīng)有用戶反映在單位內(nèi)網(wǎng)可以訪問互聯(lián)網(wǎng),在抓包中發(fā)現(xiàn)網(wǎng)絡(luò)中有單位內(nèi)網(wǎng)地址主機(jī)的數(shù)據(jù)包,雖然內(nèi)網(wǎng)規(guī)模較小,沒有做VLAN劃分等區(qū)分措施,但是各個(gè)內(nèi)網(wǎng)主機(jī)分布在辦公樓的各樓層,只能在機(jī)房匯聚交換機(jī)上一層一層拔除各樓層上連到交換機(jī)端口的網(wǎng)線,逐步縮小范圍,確認(rèn)混插位置。事后得知,該部門某人因無法上網(wǎng),查看線路時(shí)看到部門的8口小交換機(jī)旁有網(wǎng)線,以為是從交換機(jī)上脫落,隨手將網(wǎng)線插入了內(nèi)網(wǎng)用的交換機(jī),而這根網(wǎng)線實(shí)際上是從外網(wǎng)交換機(jī)上來的。
作為網(wǎng)絡(luò)管理員,要時(shí)刻留意網(wǎng)絡(luò)中可能出現(xiàn)的安全威脅,不定期觀察網(wǎng)絡(luò)數(shù)據(jù)包情況以及數(shù)據(jù)包分析工具內(nèi)置的協(xié)議、會(huì)話、端點(diǎn)等統(tǒng)計(jì)信息,可清楚地觀察到數(shù)據(jù)包在網(wǎng)絡(luò)中的異動(dòng),我們可根據(jù)需要具體分析。使用統(tǒng)計(jì)信息時(shí)應(yīng)當(dāng)注意的是以下兩點(diǎn):
2.3.1 關(guān)注網(wǎng)絡(luò)流量大的IP地址
有些異常的網(wǎng)絡(luò)流量可以通過每個(gè)IP地址的收發(fā)包數(shù)量是否正常來判斷,即收發(fā)之間是否存在較大差異,如發(fā)包數(shù)量遠(yuǎn)大于收包數(shù)量。光發(fā)包不收包是種類似于廣播的應(yīng)用,如果只收不發(fā)或者只發(fā)不收,那很可能就意味著這個(gè)IP地址的當(dāng)前流量有異常(例如受到SYN攻擊),需要可以進(jìn)一步通對(duì)捕獲的數(shù)據(jù)包的內(nèi)容進(jìn)行分析。
2.3.2 分析大流量IP地址的數(shù)據(jù)包
查看大流量IP地址的協(xié)議使用和收發(fā)包情況,注意發(fā)包時(shí)間間隔,非常短的毫秒級(jí)間隔,異常流量包括ARP、IP或TCP掃描等,而TCP掃描行為未必只有病毒才能引發(fā),軟件bug也可以觸發(fā),應(yīng)當(dāng)注意區(qū)分。
由于感染病毒的主機(jī)會(huì)在網(wǎng)絡(luò)中不斷的發(fā)送數(shù)據(jù)包,使網(wǎng)絡(luò)的效率非常低,大大影響網(wǎng)絡(luò)的性能,利用數(shù)據(jù)包分析工具能非常直觀、快速地發(fā)現(xiàn)這些主機(jī),幫助網(wǎng)絡(luò)管理人員迅速鎖定問題IP地址。
查看IP對(duì)話統(tǒng)計(jì)信息,按照發(fā)出數(shù)據(jù)包由少到多排序,當(dāng)看到一個(gè)IP地址向各個(gè)其他IP地址發(fā)送報(bào)文,就要注意繼續(xù)確認(rèn)是否有主機(jī)感染了病毒。
在TCP/UDP會(huì)話統(tǒng)計(jì)中可以查看發(fā)包,一般一個(gè)主機(jī)合理的TCP連接數(shù)是10到30個(gè)左右,上百個(gè)可能是不正常的,但也有可能是該主機(jī)正在進(jìn)行P2P下載,需要核實(shí)。
數(shù)據(jù)包分析工具能使我們更加深入地理解網(wǎng)絡(luò)概念,清晰地了解網(wǎng)絡(luò)層、傳輸層和應(yīng)用層協(xié)議,快速地診斷網(wǎng)絡(luò)故障,迅速解決網(wǎng)絡(luò)的實(shí)際問題,在網(wǎng)絡(luò)管理和安全監(jiān)控中起到了很大作用。除此之外,數(shù)據(jù)包分析工具還可以應(yīng)用于網(wǎng)絡(luò)應(yīng)用的開發(fā)與調(diào)試,幫助開發(fā)人員分析網(wǎng)絡(luò)產(chǎn)品的數(shù)據(jù)包通信情況,以便于更好地優(yōu)化產(chǎn)品。隨著萬物互聯(lián)時(shí)代的到來,網(wǎng)絡(luò)數(shù)據(jù)包分析工具的應(yīng)用范圍必將會(huì)越來越廣闊。