關於數據包嗅探的那些事

一.數據包嗅探基礎(http://cs.baylor.edu/~donahoo/tools/sniffer/packetsniffers.htm)
1.什麼是數據包嗅探?
  一個數據包嗅探程序是一個能夠通過指定的網絡接口,指定的計算機,指定的網絡上記錄所有在網絡之間傳播的數據包的程序.它能夠用來檢查校正網絡問題,也可以用來提取敏感信息如未加密登錄會話的憑證(Credentials)等.

2.嗅探程序(sniffer)
  一個嗅探程序是一個能夠監控和分析網絡信息流,檢測網絡瓶頸和問題的程序.使用這些相關的信息,一個網管人員能夠(讓網絡)保持有效率的信息流通.
  一個嗅探程序同時也能夠用於非法抓取在網絡上傳送的數據.一個網絡路由讀取每個經過它的數據包,判斷(數據包)是否打算髮送給路由的內網(router's own network)還是需要發往Internet.這樣一個帶嗅探功能的路由器也許能夠像發送方和接收方一樣讀取數據包裏的數據.
  單詞"sniffer"有時候是指用以分析數據的程序而不是分析網絡信息流.例如,一個數據庫能夠被此類程序進行分析(a database could be analyzed for certain kinds of duplication).

3.什麼是嗅探器和它的工作原理
  不像電話電路,計算機網絡是共享通信信道的.這完全是由於爲每一對通信的計算機在轉換器(或集線器)建立本地迴路(local loops)代價太高.共享意味着計算機能夠接收發送給其他機器的信息.抓取通過網絡的信息就稱爲嗅探.
  連接計算機最流行的方式是通過以太網(Ethernet).以太網協議以發送數據包信息給相同線路上全部主機的方式工作.數據包頭部包含有正確目標機器地址.設想只有匹配地址的機器才接受數據包.如果一個機器不管數據包頭部設置的地址如何接收所有的數據包,則這個機器處於混雜模式(promiscuous mode).
 
4.嗅探器
  在一個普通的網絡環境中,由於帳戶和密碼信息以明文形式在以太網上傳輸,因此一個入侵者當他獲得root權限之後能很容易使計算機進入混雜模式並通過嗅探危及相同網絡上的其他計算機.
  一個程序或者一個設備能夠監控流通於一個網絡上的數據.嗅探器能夠發揮其合法的網絡管理功能也可以用以偷取網絡信息.未被授權的嗅探對於網絡安全將會極其危險因爲他們事實上不可能被檢測到(譯註:太過絕對化)同時能夠在(網絡上)任何地方被注入(嗅探點).
  在TCP/IP這個嗅探數據包的網絡當中,他們經常被叫做數據包嗅探器.
 
5.其他
  數據包嗅探的流行源於他能夠看到任何東西(數據包).被嗅探的典型內容包括:
  SMTP,POP,IMAP通信信息--能夠讓入侵者讀取當前的E-mail.
  POP,IMAP,HTTP基礎,Telnet身份驗證--從線路傳輸的明文中讀取密碼.
  SMB,NFS,FTP通信信息--從線路上讀取文件.
  SQL數據庫--讀取金融業務交易和信用卡號碼.
 
二.嗅探(網絡竊聽,嗅探器)FAQ(http://cs.baylor.edu/~donahoo/tools/sniffer/sniffingFAQ.htm)
1.基礎

  1.1什麼是"數據包嗅探器"?
  數據包嗅探是一個插入到網絡當中的竊聽設備並竊聽網絡通信.就像電話竊聽允許FBI聽取其他人之間的談話,一個"嗅探"程序能夠讓某人聽取計算機之間的對話.
  然而,計算機會話是由顯然隨機的二進制數據組成.因此,網絡竊聽程序同時也包含了一個協議分析的功能部件,能夠允許他們"解碼"計算機通信信息使其具有意義.
  嗅探相對於電話竊聽有一個有利條件就是:許多網絡使用"共享介質".這意味着你不需要闖入佈線室去安裝你的竊聽設備,你能進行它(嗅探)在幾乎任何一個網絡連接來偷聽你的鄰居.這叫做"混雜模式"嗅探器.然而,這種"共享"技術正在快速向"交換"技術發展,在交換技術當中不再可能進行混雜模式嗅探,這意味着你講不得不真的接入到(網)線上.
    1.1.1"packet sniffer"被註冊了麼(傻x問題不翻譯了)
   
  1.2嗅探器是用來做什麼的?
  嗅探程序長久以來以兩種形式存在.商業數據包嗅探程序是用來幫助維護網絡.地下數據包嗅探程序(Underground packet sniffers)用來入侵計算機.
  此類竊聽程序的典型功能包括:
  1)從網絡傳送的明文當中自動篩選密碼和用戶名.黑客/駭客用以入侵系統.
  2)將(傳輸)數據轉換爲人可讀格式使能夠讀取通信信息.
  3)故障分析用以發現網絡中存在的問題,如爲何計算機A無法與計算機B通信.
  4)性能分析用以發現網絡瓶頸.
  5)網絡侵入竊密檢測用以發現黑客/駭客(參考http://www.robertgraham.com/pubs/network-intrusion-detection.html)
  6)網絡通信日誌,創建黑客們不能更改和消除的日誌
 
  1.3Internet當中是否存在某個節點能夠讓我插入並查看所有通信信息?
  沒有.Internet的鏈接更像漁夫的網,通信信息流經某個網格,並且沒有某個點能夠看到全部信息.Internet是以經受住核彈攻擊而建立的--並且在某些節點故障的時候能夠保持有效.這同樣也防止了在任意點的嗅探.
  這樣想這個問題:你有兩臺機器在你自己的辦公室裏面相互通信,並且都處在Internet當中.他們使用直線路線通信,並且這些通信信息不會經過外部公共Internet的一部分.任何通信在任何地方都遵循類似的"最小代價路徑"原則.
  (譯註:就是指明嗅探是在一個內部網絡內進行,並非隨意的節點都可以被嗅探到)
 
  1.4嗅探/竊聽如何工作?
    1.4.1如何在網絡通信中進行偷聽?
      以太網是建立在"共享"原則上:全部機器在一個局域網絡中共享相同的網線.
      這意味着所有機器能夠"看到"所有通信在相同的線路上.
      因此,以太網硬件包含有一個"過濾器"忽略所有不屬於它的通訊信息.它是通過忽略所有MAC地址不匹配的幀做到這點的.
      一個竊聽程序關閉這個過濾器,使以太網硬件進入"混雜模式".因此,Mark能夠看見Alice和Bob之間的通訊信息,只要他們處於同個以太網線路上.
    1.4.2一個數據包嗅探器的組件是什麼?
    1)硬件
      大多數產品工作於標註網絡適配器,雖然有些要求特定的硬件.如果你使用特殊的硬件,你能夠分析硬件故障像CRC錯誤,電位差問題,電纜程序,抓包驅動.
    2)抓包驅動
      這是最重要的部分.它負責從線路上捕捉網絡通信信息,過濾出你需要的通訊信息,然後儲存到緩衝區當中.
    3)緩衝區
      一旦數據幀從網絡當中被捕捉到,他們被儲存在緩衝區中.有許多抓包模式:抓取直到緩衝區滿,或者使用"循環"緩衝區最新的數據會替換最舊的數據.一些產品能夠附加使用硬盤作爲緩衝區而不是僅僅是基於內存的緩衝區.
    4)實時分析
      由Network General Sniffer開啓先河,這個功能部件在抓取到數據幀時進行少量的分析.這能夠在抓包的時候找出網絡性能問題和故障.許多開發者開始增加類似的一些功能到他們的產品當中,Network intrusion detection systems這麼做了,但他們主要是用於黑客行爲而不是故障/性能分析.
    5)解碼器
      如1.5討論那樣,這部分將網絡通信信息用說明文本顯示進而一個分析員能夠找出發生了什麼事.
    6)數據包編輯/發送
      一些產品包含允許修改你自己的網絡數據包和發送他們到網絡上的功能部件.
   
  1.5與MAC地址相關的一些東西
    1.5.1什麼是以太網MAC地址?
      儘管許多機器可能共享一個單獨的以太網網線,他們各自必須有專用的標識號.這並不發生在撥號modem中.因爲它假設任何數據你發送給modem是發往電話線的另一端.但是當你通過以太網網線發送數據,你不得不弄清你想要發送數據給哪部機器.當然,在現在很多情況下只有兩部機器相互通信,但是你必須記住以太網是以大量計算機共享相同網線爲前提設計的.
      這是通過將唯一的一個由12個16進制數組成的數字寫入每一片以太網硬件來完成的.1.5.4將解釋如何發現你自己電腦的以太網MAC地址.
      爲了更好的理解這個爲何如此重要,你可能需要複習一下下面1.5.4節.以太網被設計用以運載不僅僅是TCP/IP的通信信息,而TCP/IP是設計運行在其他線路上(如沒有使用以太網撥號線路).例如,許多home用戶安裝"NetBEUI"用來共享文件和打印機因爲它與TCP/IP無關,因此Internet的黑客無法獲取他們的硬盤(文件).
      以太網上原始數據傳送和接收由以太網設備管理.你不能只是在網線上發送爲加工的數據,你必須先做一些以太網明白的東西.同樣的道理,你不能直接把信扔到郵箱裏,你必須先封裝好並寫上地址和貼上郵票.
      下面是一個簡單的解釋這是如何工作的:


      Alice的IP地址是10.0.0.23
      Bob的IP地址是:192.168.100.54
      爲了和Bob通信,Alice需要生成IP包從10.0.0.23-->192.168.100.54
      當數據包在Internet當中傳輸的時候,它將會從一個路由傳送到另一個路由.因此,Alice必須先傳遞這個數據包給第一個路由.每一個在傳遞路線上的路由會檢查目標IP地址(192.168.100.54)然後決定走哪條正確的路徑.
      在圖表中我們將Internet化成"雲"的形狀.Alice所知道的全部就是局部連接到第一個路由,和Bob最終的IP地址.Alice不知道關於Internet的結構和數據包將會走的路由情況.
      Alice必須與路由通信才能發送數據包,她使用以太網來完成這個.一個以太網數據幀如下:

       這也就意味着在Alice的機器上的TCP/IP棧可能產生一個數據包100字節長(20字節IP信息,20字節TCP信息,60字節數據).TCP/IP棧發送它給以太網模塊,以太網模塊在數據包前面加入14字節的目標MAC地址,源MAC地址,設置數據包ethertype域爲0x0800表明另一端的TCP/IP棧應該處理此幀.同時它還加入4字節的CRC校驗值在數據包末尾(用來判斷是否接受到了正確的數據)
       然後適配器發送比特流進入網線.
       全部在相同網線上的硬件適配器能夠看到這個幀,包括路由器的適配器,數據包嗅探器,和其他機器.無論怎樣,正確的適配器有一個硬件芯片能夠比較幀的"目標MAC"和自己的MAC地址.如果他們不匹配的話,它將會丟棄這個幀.這個是在硬件級別完成的,所以適配器所在的機器完全不會察覺到這個過程.
       當路由器的以太網適配器看到這個幀,它從網線上將它接收下並移除開頭的14字節和末尾的4字節.它查看0x0800ethertype域後決定將它發送給TCP/IP棧進行處理(這個處理一般是將其直接發送給在通往目標信道上的下一個路由)
       在上面的情況中,只有路由器應該看到以太網幀,其他的機器全部應該忽略它.然而竊聽者破壞這個規則並且也從網絡上拷貝下這個幀.
       參考Charles Spurgeon的以太網相關站點:http://wwwhost.ots.utexas.edu/ethernet/ethernet-home.html       
    1.5.2"MAC"代表什麼意思?
      MAC代表介質存儲控制.
      以太網邏輯包含有3個子層,PHY(物理層),MAC,LLC(邏輯鏈路控制).以太網地址被認爲是MAC子層的一部分.物理層向線路負責,MAC向線路上傳送的格式化數據負責,LLC向例如線路上數據包轉發負責.
    1.5.3MAC地址的格式怎麼樣?
      以太網MAC地址是一個48位的數值.這個數值被分爲兩半,前24位用以識別網卡(Ethernet board)的生產廠商,另24位是一個序列號由生產廠商提供.這保證了沒有兩塊以太網卡擁有相同的MAC地址(除非生產廠商搞糟).重複的MAC地址會導致問題,因此保證唯一性是非常重要的.這個24位數字被稱爲OUI(Organizationally Unique Identifier有組織性的唯一標識符)
      然而,OUI真正只有22位長,當中的2位用於其它用途.一個位表明這個地址是一個"廣播/組播"地址,另一個位表明適配器是否被重新分配爲"本地管理地址"(網絡管理人員重新分配MAC地址用以適應某些本地策略)
      例如,你會經常在線路中看到MAC地址03:00:00:00:00:01.第一個字節包含二進制表示的00000011當中的特殊位都被設置了(其餘的爲0).這是一個特殊的廣播數據包發送給所有運行"NetBEUI"協議的機器(這個協議普遍的安裝在Windows機器上用以實現不使用TCP/IP作爲傳送的本地文件共享)
      IEEE維護廠家/OUI代碼清單:http://standards.ieee.org/regauth/oui/
    1.5.4我自己的以太網地址(MAC地址)是什麼?
      Win9x:運行winipcfg.exe
      WinNT:運行ipconfig /all,命令
      Linux:運行ifconfig命令
      Solaris:使用arp或者netstat -p命令
    1.5.5我正在通信的機器的以太網地址是什麼?
      WinNT和UNIX使用命令arp -a查看
    1.5.6我能夠更換我的MAC地址嗎?
      可以.在某些時候這個也許會比較重要.
      首先,你可以欺騙(別的機器關於)你的地址.記住MAC地址只是幀數據的一部分.因此,當你發送一個以太幀到線路上時,你可以在這些幀中重寫你自己的內容.當然,你需要運行一個程序來完成這一步.
      再者,大多數適配器允許你重新配置運行時MAC地址.例如,一些網卡允許你在Windows控制面板裏重新配置這個地址.
      最後,你可以重新燒錄(如EEPROM)網卡地址.你需要一個程序/硬件能夠知道網卡使用的具體芯片.這將永久的改變網卡使其使用這個新的地址.
     
  1.6我是否能夠在沒有使用他們的通信線路的前提下嗅探到兩個人的通訊?
    換句話說,你是在問這種情況:
    1)Alice和Bob一個在紐約一個在德州並且他們在通信
    2)你在加利福尼亞,不在他們附近
    3)你想要竊聽他們的通信
    答案當然是"不行",沒有一點可能性.你必須能夠使用他們進行通信的線路才能夠進行竊聽.跟電話竊聽一樣,跟任何地方竊聽一樣.
    關於遠程訪問通信線路:
    假如你真的是一個非常勁的駭客/黑客,能夠遠程訪問那些通信線路.典型例子是:
    1)入侵Alice或Bob的電腦並安裝你能夠遠程控制的嗅探軟件
    2)入侵相關的ISP並安裝嗅探軟件
    3)找到ISP支持嗅探的盒子(Find a box at the ISPs that supports sniffing),像RMON探測和DSS(分佈式嗅探系統)
    4)賄賂ISP的工作人員,入侵物理設備安裝嗅探器等等.
    在通信的線路附近:
    在某些情況下,像cable-modem,DSL,Ethernet VLANs等等,你可以重定向兩個人之間的通訊信息到你自己的機器上.這是由於你沒有直接處於通訊的路徑上,你可以偶爾改變這個路徑使數據經過你的計算機.這似乎很像這個概念你可以稍微的改變流水的流向,但是不能改的很遠.
    Rootkits和遠程管理木馬:
    另外一個可能性是入侵一個人的機器並安裝嗅探程序(如何入侵超過這個文檔的範圍).在UNIX,嗅探程序是大多數"rootkits"的一部分.在Windows,嗅探是一些遠程管理木馬的一部分.
    理論上,這些程序能夠用來嗅探通常的通訊信息,但是他們經常被簡單的配置成爲黑客嗅探密碼和電子郵件.

發佈了37 篇原創文章 · 獲贊 4 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章