萬盛學電腦網

 萬盛學電腦網 >> 局域網知識 >> 關於局域網網絡嗅探與監聽的相關知識介紹

關於局域網網絡嗅探與監聽的相關知識介紹

  最近有網友想了解下局域網網絡嗅探與監聽的知識,所以學習啦小編就整理了相關資料分享給大家,具體內容如下.希望大家參考參考!!!

  局域網網絡嗅探與監聽的相關知識介紹(黑客技術)

  一. 誰偷看了我的網絡日記

  檢察員小潔從小就有寫日記的習慣,畢業後上了工作崗位也不曾改變,無論工作多忙多累,每天晚上臨近睡覺前她總會把今日發生的事情記錄進日記本裡,例如一些工作問題、心情想法、同事和上級的事情等等。小潔使用的是一個網站提供的網絡日記本服務,她很喜歡那個寧靜簡潔的文字界面,偶爾沒任務要忙或者心情不好的時候,她就會用院裡的網絡上去看自己以前寫的日記。

  這天小潔和往常一樣來到辦公室,卻發現氣氛不同往常了:同事們面對她的時候笑容很不自然,有幾個女同事還偷偷對她指指點點的,小潔看過去時她們卻又不說話了,她只好豎起耳朵偷聽,隱隱約約聽到一句“……連別人還欠著50元沒還她都寫上去,這個人真……”,小潔的臉瞬間變得煞白:這不是她某天的日記內容嗎?……

  究竟是誰把小潔的日記偷看了呢?你正在使用的局域網,又能真的很安全嗎?小潔不知道,大院的局域網裡,有一雙耳朵正在悄悄的記錄著她的電腦上發送和接收的一切信息……

  這雙耳朵的名詞被稱為“網絡嗅探”(Network Sniffing)或“網絡監聽”(Network Listening),它並不是最近才出現的技術,也並非專門用在黑道上的技術,監聽技術作為一種輔助手段,在協助網絡管理員監測網絡傳輸數據、排除網絡故障等方面具有不可替代的作用,因此一直倍受網絡管理員的青睐並逐漸發展完善,所謂“監聽”技術,就是在互相通訊的兩台計算機之間通過技術手段插入一台可以接收並記錄通訊內容的設備,最終實現對通訊雙方的數據記錄。一般都要求用作監聽途徑的設備不能造成通訊雙方的行為異常或連接中斷等,即是說,監聽方不能參與通訊中任何一方的通訊行為,僅僅是“被動”的接收記錄通訊數據而不能對其進行篡改,一旦監聽方違反這個要求,這次行為就不是“監聽”,而是“劫持”(Hijacking)了。

  看了以上對於“監聽”概念的描述,有人也許已經躍躍欲試了:我有網絡,也有電腦,還有網絡嗅探工具,那我能不能把某個收費電影站甚至國防部網站的賬號密碼記錄下來呢?當然這也不是不可能,但是前提是你有足夠能力在相關站點實體服務器的網關或路由設備上接入一個監聽設備,否則憑一台你自己家裡的計算機是無法實現的。這就是“監聽”的弱點:它要求監聽設備的物理傳輸介質與被監聽設備的物理傳輸介質存在直接聯系或者數據包能經過路由選擇到達對方,即一個邏輯上的三方連接。能實現這個條件的只有以下情況:

  1. 監聽方與通訊方位於同一物理網絡,如局域網

  2. 監聽方與通訊方存在路由或接口關系,例如通訊雙方的同一網關、連接通訊雙方的路由設備等

  因此,直接用自己家裡的計算機去嗅探國防部網站的數據是不可能的,你看到的只能是屬於你自己領域的數據包,那些害怕自己在家裡上網被遠方的入侵者監聽的朋友大可以松口氣了(你機器上有木馬的情況除外),除非入侵者控制了你的網關設備,但這需要入侵者具有高級的入侵技術,而一個有高級技術的入侵者會稀罕普通家庭用戶是的一台計算機嗎?

  不可否認,“監聽”行為是會對通訊方造成損失的,一個典型例子是在1994年的美國網絡竊聽事件,一個不知名的人在眾多的主機和骨干網絡設備上安裝了網絡監聽軟件,利用它對美國骨干互聯網和軍方網竊取了超過100000個有效的用戶名和口令,引發了重大損失,而“監聽”技術,就是在那次事件以後才從地下走向公開化的。

  下面,我們來更深入一層了解如今最常見的網絡監聽。

  二. 活躍在局域網裡的“耳朵”們

  由於前面說過的原因,嗅探技術不太能在公共網絡設備上使用(僅指入侵行為的安裝方式,因為網絡管理員要在某個路由設備上設置監聽是簡單的事情),所以當今最普遍的嗅探行為並不是發生在Internet上的,而是各個或大或小的局域網,因為它很顯然滿足監聽技術需要的條件:監聽方與通訊方位於同一物理網絡。

  1.寫在前面:局域網內計算機通訊的概念和尋址

  要發生監聽事件,就必須有至少兩台計算機處於通訊狀態,而監聽的實質也是數據的傳輸,這就要求竊聽者自身也處於通訊網絡中,而實現局域網通訊的基礎是以太網模型(Ethernet),它包括物理上的數據傳輸設備如網卡、集線器和交換機等,除此之外還需要邏輯上的軟件、網絡協議和操作系統支持,如網卡驅動程序、TCP/IP協議、NetBIOS協議、多種尋址和底層協議等,具備了這些條件,計算機才可以實現完整的通訊過程。

  那麼局域網內的計算機通訊是怎麼進行的呢?計算機系統要傳輸數據時,是嚴格按照IEEE802.3標准的局域網協議進行的,而且還要結合TCP/IP和OSI模型7層規范實施,所以數據是經過打包封裝的,從高層到低層被分別加上相關數據頭和地址,直至物理層把其轉化為電平信號傳送出去,而另一台計算機則是通過逆向操作把數據還原的,這就引發了一個問題:尋址問題。

  在局域網裡,計算機要查找彼此並不是通過IP進行的,而是通過網卡MAC地址(也被稱為以太網地址),它是一組在生產時就固化的全球唯一標識號,根據協議規范,當一台計算機要查找另一台計算機時,它必須把目標計算機的IP通過ARP協議(地址解析協議)在物理網絡中廣播出去,“廣播”是一種讓任意一台計算機都能收到數據的數據發送方式,計算機收到數據後就會判斷這條信息是不是發給自己的,如果是,就會返回應答,在這裡,它會返回自身地址,這一步被稱為“ARP尋址”。當源計算機收到有效的回應時,它就得知了目標計算機的MAC地址並把結果保存在系統的地址緩沖池裡,下次傳輸數據時就不需要再次發送廣播了,這個地址緩沖池會定時刷新重建,以免造成數據老舊和錯誤。當前活動的ARP表可以使用arp –a命令查看。

  話題回到數據被打包成為比特流的最後兩層,在這裡有一個關鍵部分被稱為“數據鏈路層”,數據在網絡層形成IP數據報,再向下到達數據鏈路層,由數據鏈路層將IP數據報分割為數據幀,增加以太網包頭,再向下一層發送。以太網包頭中包含著本機和目標設備的MAC地址,也就是說,鏈路層的數據幀發送時,是依靠以太網地址而非IP地址來確認的,網卡驅動程序不會關心IP數據報中的目標地址,它所需要的僅僅是MAC地址,而MAC地址就是通過前面提到的ARP尋址獲得的。簡單的說,數據在局域網內的最終傳輸目標地址是對方網卡的MAC地址,而不是IP地址,IP地址在局域網裡只是為了協助系統找到MAC地址而已。

  而就是因為這個尋址結構,最終導致了監聽實現的發生。

  那麼,發生在Internet上的監聽又是怎麼進行的呢?Internet並不采用MAC地址尋址,因此不可能發生類似局域網內的監聽案例,實際上,Internet上的監聽是因為數據必須通過的路由網關路由設備被做了手腳,不屬於本文討論范圍。

  2.發生在共享式局域網內的竊聽

  所謂的“共享式”局域網(Hub-Based Lan),指的是早期采用集線器HUB作為網絡連接設備的傳統以太網的結構,在這個結構裡,所有機器都是共享同一條傳輸線路的,集線器沒有端口的概念,它的數據發送方式是“廣播”, 集線器接收到相應數據時是單純的把數據往它所連接的每一台設備線路上發送的,例如一台機器發送一條“我要和小金說話”的報文,那麼所有連接這個集線器的設備都會收到這條報文,但是只有名字為“小金”的計算機才會接收處理這條報文,而其他無關的計算機則會“不動聲色”的拋棄掉該報文。因此,共享以太網結構裡的數據實際上是沒有隱私性的,只是網卡會“君子”化的忽略掉與自己無關的“閒言碎語”罷了,但是很不巧,網卡在設計時是加入了“工作模式”的選項的,正是這個特性導致了噩夢。

  每塊網卡基本上都會有以下工作模式:Unicast、Broadcast、Multicast、Promiscuous,一般情況下,操作系統會把網卡設置為Broadcast(廣播)模式,在Broadcast模式下,網卡可以接收所有類型為廣播報文的數據幀——例如ARP尋址,此外它會忽略掉目標地址並非自己MAC地址的報文,即只接收發往自身的數據報文、廣播和組播報文,這才是網卡的正常工作模式;如果一塊網卡被設置為Unicast或Multicast模式,在局域網裡可能會引發異常,因為這兩個模式限制了它的接收報文類型;而Promiscuous(混雜)模式,則是罪惡的根源。在混雜模式裡,網卡對報文中的目標MAC地址不加任何檢查而全部接收,這樣就造成無論什麼數據,只要是路過的都會被網卡接收的局面,監聽就是從這裡開始的。

  一般情況下,網卡的工作模式是操作系統設置好的,而且沒有公開模式給用戶選擇,這就限制了普通用戶的監聽實現,但是自從嗅探器(Sniffer)家族發展到一定程度後,開始擁有了設置網卡工作模式的權力,而且矛頭直指Promiscuous,任何用戶只要在相應選擇上打個勾,他的機器就變成了可以記錄局域網內任何機器傳輸的數據的耳朵,由於共享式局域網的特性,所有人都是能收到數據的,這就造成了不可防御的信息洩漏。

  可是,最終這種監聽方式還是被基本消滅了,人們用了什麼手段呢?很簡單,局域網結構升級了,變成“交換式局域網”。

  但是魔高一丈,若干年後,監聽再次卷土重來。

  3.發生在交換式局域網內的竊聽

  作為與“共享式”相對的“交換式”局域網(Switched Lan),它的網絡連接設備被換成了交換機(Switch),交換機比集線器聰明的一點是它連接的每台計算機是獨立的,交換機引入了“端口”的概念,它會產生一個地址表用於存放每台與之連接的計算機的MAC地址,從此每個網線接口便作為一個獨立的端口存在,除了聲明為廣播或組播的報文,交換機在一般情況下是不會讓其他報文出現類似共享式局域網那樣的廣播形式發送行為的,這樣即使你的網卡設置為混雜模式,它也收不到發往其他計算機的數據,因為數據的目標地址會在交換機中被識別,然後有針對性的發往表中對應地址的端口,決不跑到別人家裡去。

  這一改進迅速扼殺了傳統的局域網監聽手段,但是歷史往往證明了人是難以被征服的……

  (1).對交換機的攻擊:MAC洪水

  不知道是誰第一個發現了這種攻擊模式,大概是因為交換機的出現破壞了嗅探器的工作,所以一肚子氣洩到了交換機身上,另一種看法則是精明的技術人員設想交換機的處理器在超過所能承受信息量的時候會發生什麼情況而進行的試驗,無論是從什麼論點出發的,至少這個攻擊模式已經成為現實了:所謂MAC洪水攻擊,就是向交換機發送大量含有虛假MAC地址和IP地址的IP包,使交換機無法處理如此多的信息而引起設備工作異常,也就是所謂的“失效”模式,在這個模式裡,交換機的處理器已經不能正常分析數據報和構造查詢地址表了,然後,交換機就會成為一台普通的集線器,毫無選擇的向所有端口發送數據,這個行為被稱作“泛洪發送”,這樣一來攻擊者就能嗅探到所需數據了。

  不過使用這個方法會為網絡帶來大量垃圾數據報文,對於監聽者來說也不是什麼好事,因此MAC洪水使用的案例比較少,而且設計了端口保護的交換機可能會在超負荷時強行關閉所有端口造成網絡中斷,所以如今,人們都偏向於使用地址解析協議ARP進行的欺騙性攻擊。

  (2).地址解析協議帶來的噩夢

  回顧前面提到的局域網尋址方式,我們已經知道兩台計算機完成通訊依靠的是MAC地址而與IP地址無關,而目標計算機MAC地址的獲取是通過ARP協議廣播得到的,而獲取的地址會保存在MAC地址表裡並定期更新,在這個時間裡,計算機是不會再去廣播尋址信息獲取目標MAC地址的,這就給了入侵者以可乘之機。

  當一台計算機要發送數據給另一台計算機時,它會以IP地址為依據首先查詢自身的ARP地址表,如果裡面沒有目標計算機的MAC信息,它就觸發ARP廣播尋址數據直到目標計算機返回自身地址報文,而一旦這個地址表裡存在目標計算機的MAC信息,計算機就直接把這個地址作為數據鏈路層的以太網地址頭部封裝發送出去。為了避免出現MAC地址表保持著錯誤的數據,系統在一個指定的時期過後會清空MAC地址表,重新廣播獲取一份地址列表,而且新的ARP廣播可以無條件覆蓋原來的MAC地址表。

  假設局域網內有兩台計算機A和B在通訊,而計算機C要作為一個竊聽者的身份得到這兩台計算機的通訊數據,那麼它就必須想辦法讓自己能插入兩台計算機之間的數據線路裡,而在這種一對一的交換式網絡裡,計算機C必須成為一個中間設備才能讓數據得以經過它,要實現這個目標,計算機C就要開始偽造虛假的ARP報文。

  ARP尋址報文分兩種,一種是用於發送尋址信息的ARP查詢包,源機器使用它來廣播尋址信息,另一種則是目標機器的ARP應答包,用於回應源機器它的MAC地址,在竊聽存在的情況下,如果計算機C要竊聽計算機A的通訊,它就偽造一個IP地址為計算機B而MAC地址為計算機C的虛假ARP應答包發送給計算機A,造成計算機A的MAC地址表錯誤更新為計算機B的IP對應著計算機C的MAC地址的情況,這樣一來,系統通過IP地址獲得的MAC地址都是計算機C的,數據就會發給以監聽身份出現的計算機C了。但這樣會造成一種情況就是作為原目標方的計算機B會接收不到數據,因此充當假冒數據接收角色的計算機C必須擔當一個轉發者的角色,把從計算機A發送的數據返回給計算機B,讓兩機的通訊正常進行,這樣,計算機C就和計算機AB形成了一個通訊鏈路,而對於計算機A和B而言,計算機C始終是透明存在的,它們並不知道計算機C在偷聽數據的傳播。只要計算機C在計算機A重新發送ARP查詢包前及時偽造虛假ARP應答包就能維持著這個通訊鏈路,從而獲得持續的數據記錄,同時也不會造成被監聽者的通訊異常。

  計算機C為了監聽計算機A和B數據通訊而發起的這種行為,就是“ARP欺騙”(ARP Spoofing)或稱“ARP攻擊”(ARP Attacking),實際上,真實環境裡的ARP欺騙除了嗅探計算機A的數據,通常也會順便把計算機B的數據給嗅探了去,只要計算機C在對計算機A發送偽裝成計算機B的ARP應答包的同時也向計算機B發送偽裝成計算機A的ARP應答包即可,這樣它就可作為一個雙向代理的身份插入兩者之間的通訊鏈路。

  三. 圍堵“耳朵”:局域網監聽的防御

  知道了局域網監聽的實現,我們就不難重現開篇提及的檢察員小潔的日記內容是如何被別人看到的了:雖然辦公室的網絡是交換式局域網,但是竊聽者使用ARP欺騙工具篡改了小潔機器的MAC地址表,使小潔的機器發出的數據實際上是在竊聽者機器裡走一圈後才真正發送出去的,這時候只要小潔登錄任何使用明文傳輸密碼的網頁表單,她輸入的網址、用戶名和密碼就會被嗅探軟件記錄下來,竊聽者只要使用這個密碼登錄網站,就可以把小潔寫在日記本上的隱私一覽無余了。

  由此可見,由網絡監聽引發的信息洩漏後果是非常嚴重的,輕則隱私洩漏,重則因為銀行密碼、經過網絡傳輸的文檔內容失竊而導致無法計量的經濟損失,因此,如何有效防止局域網監聽,一直是令管理員操心的問題。

  由於共享式局域網的局限性(集線器不會選擇具體端口),在上面流通的數據基本上是“你有,我也有”的,竊聽者連ARP信息都不需要更改,自然無法躲過被監聽的命運,要解決這個問題,只能先把集線器更換為交換機,杜絕這種毫無隱私的數據傳播方式。

  好了,現在我們換到交換式局域網了,下一步,就該開始著手圍堵這些不受歡迎的耳朵們了。

  1.尋找隱匿的耳朵

  如果我們懷疑某台機器在偷聽數據,應該怎麼辦呢?

  早在幾年前,有一種被稱為ping檢測的方法就已經開始流行了,它的原理還是利用MAC地址自身,大部分網卡允許用戶在驅動程序設置裡自行指定一個MAC地址(特別說明:這種通過驅動程序指定的MAC地址僅僅能用於自身所處的局域網本身,並不能用於突破遠程網關的MAC+IP綁定限制!),因此我們就可以利用這一特性讓正在欺騙MAC地址的機器自食其果。

  ?假設IP為192.168.1.4的機器上裝有ARP欺騙工具和嗅探器,所以ping 192.168.1.4,然後arp –a | find “192.168.1.4” 得到它的MAC地址“00-00-0e-40-b4-a1”

  ?修改自己的網卡驅動設置頁,改Network Address為“00000e40b4a2”,即去掉分隔符的MAC地址最末位加1

  ?再次ping 192.168.1.4,正常的話應該不會看到任何回應,因為局域網中不會存在任何與“00-00-0e-40-b4-a2”相符的MAC地址。

  ?如果看到返回,則說明192.168.1.4很可能裝有嗅探器。

  另一種比較“惡毒”的方法是對被懷疑安裝了嗅探器的計算機發送大量不存在的MAC地址的數據報,由於監聽程序在進行分析和處理大量的數據包需要占用很多的CPU資源,這將導致對方計算機性能下降,這樣我們只要比較發送報文前後該機器性能就能加以判斷,但是如果對方機器配置比較高,這個方法就不太有效了。

  除了主動嗅探的行為,還有一些機器是被入侵者惡意種植了帶有嗅探功能的後門程序,那麼我們就必須使用本機測試法了,其原理是建立一個原始連接(Raw Socket)打開自己機器的隨機端口,然後再建立一個UDP連接到自己機器的任意端口並隨意發送一條數據,正常情況下,這個方法建立的原始連接是不可能成功接收數據的,如果原始連接能接收這個數據,則說明機器網卡正處於“混雜”模式——嗅探器經常這麼干,接下來的事情就不用我說了吧?

  但是基本上沒找到現成的工具可以使用,也可能是我的查找能力問題,但是其實這個問題很好解決:因為安裝了嗅探器的機器是能接收到任何數據的,那麼只要在這個機器上再次安裝一個嗅探軟件(不是ARP欺騙類型!)就能“共享”捕獲的數據,正常情況下我們是只能看到屬於自己IP的網絡數據的,如果不巧發現嗅探器把其它計算機的數據也順手牽羊了,並且由於ARP欺騙的存在,我們還可能嗅探到自己的計算機會定期發送一條ARP應答包出去……既然都做得那麼明顯了,那就不要客氣把它滅了……

  2.預防為主——從根本上防御網絡監聽

  雖然利用ARP欺騙報文進行的網絡監聽很難察覺,但它並不是無法防御的,與ARP尋址相對的,在一個相對穩定的局域網裡(機器數量和網卡被更換的次數不多,也沒有人一沒事干就去更改自己IP),我們可以使用靜態ARP映射,即記錄下局域網內所有計算機的網卡MAC地址和對應的IP,然後使用“arp –s IP地址 MAC地址”進行靜態綁定,這樣計算機就不會通過ARP廣播來找人了,自然不會響應ARP欺騙工具發送的動態ARP應答包(靜態地址的優先度大於動態地址),但是這個方法存在的劣勢就是對操作用戶要求挺高,要知道並不是所有人都理解MAC地址是干什麼用的,另外一點就是如果機器數量過多或者變動頻繁,會對操作用戶(通常是網絡管理員)造成巨大的心靈傷害……

  因此,一般常用的方法是使用軟件防御,例如Anti Arp Sniffer,它可以強行綁定本機與網關的MAC關系,讓偽裝成網關獲取數據的監聽機成了擺設,而如果是監聽者僅僅欺騙了某台計算機的情況呢?這就要使用ARP Watch了,ARP Watch會實時監控局域網中計算機MAC地址和ARP廣播報文的變化情況,如果有ARP欺騙程序發送虛假地址報文,必然會造成MAC地址表不符,ARP Watch就會彈出來警告用戶了。

  此外,對網絡進行VLAN劃分也是有效的方法,每個VLAN之間都是隔離的,必須通過路由進行數據傳輸,這個時候MAC地址信息會被丟棄,每台計算機之間都是采用標准TCP/IP進行數據傳輸的,即使存在嗅探器也無法使用虛假的MAC地址進行欺騙了。

  四. 結語

  網絡監聽技術作為一種工具,總是扮演著正反兩方面的角色,尤其在局域網裡更是經常以黑暗的身份出現。對於入侵者來說,通過網絡監聽可以很容易地獲得用戶的關鍵信息,因此他們青睐。而對於入侵檢測和追蹤者來說,網絡監聽技術又能夠在與入侵者的斗爭中發揮重要的作用,因此他們也離不開必要的嗅探。我們應該努力學習網安全知識,進一步挖掘網絡監聽技術的細節,扎實掌握足夠的技術基礎,才能在與入侵者的斗爭中取得勝利。

copyright © 萬盛學電腦網 all rights reserved