圍堵局域網中「耳朵」:網絡嗅探與監聽(轉)

  所謂「監聽」技術,就是在互相通信的兩臺計算機之間經過技術手段插入一臺能夠接收並記錄通信內容的設備,最終實現對通信雙方的數據記錄。通常都要求用做監聽途徑的設備不能形成通信雙方的行爲異常或鏈接中斷。

  一. 誰偷看了個人網絡日記

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

  這天小潔和往常同樣來到辦公室,卻發現氣氛不一樣往常了:同事們面對她的時候笑容很不天然,有幾個女同事還偷偷對她指指點點的,小潔看過去時她們卻又不說話了,她只好豎起耳朵偷聽,隱隱約約聽到一句「……連別人還欠着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」嚳腗AC地址。

  若是看到返回,則說明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地址進行欺騙了。

  四. 結語

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

相關文章
相關標籤/搜索