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