來源: http://bbs.openfind.com.tw/cgi-bin/adb_modify?stage=add&nickname=%2E%2E%2E%2E&email=byebye%2Ebbs%40cis%2Enctu%2Eedu%2Etw&name=%2E%2E%2E%2E
時間: 2000年 9月30日 周六 13時26分06秒 CST
標題: [doc] Sniffing FAQ 中譯版
論壇: tw.bbs.comp.security Sniffing (網路竊聽器, sniffer) FAQ 這份文件是用來回答有關電腦網路上有關竊聽(也就是所謂"sniffing")
的諸多問題。 0. 有關本 FAQ 的資訊 0.3.3 版, 2000 九月 14. 版權宣告:Robert Graham (sniffing-faq@robertgraham.com) 1998-2000,
本份文件(全部或部分)只能在非商業用途的目的下重製,所有重製品必須包
含本份版權宣告,且不得更動或修改有關作者的資料。 本文件原始檔放在以下連結處: http://www.robertgraham.com/pubs/sniffing-faq.html (HTML) 0.7 感謝 感謝下列曾幫忙收集資訊及給予意見的人(注意:為避免被垃圾信騷擾,
以下使用一個簡單易見的方法將以下諸位的 email 位址作適當變造) Trevor Schroeder from http://www.zweknu.org/
Lachlan M. D. Cranswick
當然還有譯者我 byebye.bbs@bbs.cis.nctu.edu.tw :-) 0.9 Robert Graham 何許人也?
[譯者註:以下不翻譯,因為是作者自我介紹而已,屬於八卦部分 :p] Among other things, between 1994-1998 I worked at Network General
Corporation on the Sniffer(r) Network Analyzer. I either
wrote/rewrote/ported over 300 protocol decodes for the Sniffer.
Now I'm working on an intrusion detection system that similarly
does protocol analysis. Also, I helped develop the "Certified
Network Expert" exam, which was put together by a consortium of
protocol analyzer/network analyzer vendors. In the early 1990s,
I help develope the RMON standard(s) and the first RMON systems. 1. 基本觀念 1.1 什麼是 "封包竊聽器(packet sniffer)"? 封包竊聽器就是一個植入電腦的竊聽裝置,用來竊聽網路流經的封包。
就像 FBI 用來竊聽人們對談的電話竊聽器一樣,竊聽程式讓某人得以聽
到電腦之間互相溝通的情況。 但是電腦的通話似乎包含許多看似雜亂的二進位資料,因此網路竊聽程式
也包含了一個叫做"協定分析"的功能,使其得以對電腦資訊進行解碼並瞭
解他們。 竊聽程式另外還比電話竊聽器多了一個好處是:由於電腦網路常常將資訊
互相"分享",這代表著你無須入侵某台機器來接上你的竊聽器,只要從任
何鄰近的網路偷聽就可以達到目標。這就是所謂"監聽模式"(promiscuous
mode)的竊聽程式,然而網路資訊分享的技術很快的被另外一個 "切換"(
switched)技術所取代,這迫使前述的方便性不復存在,你必須真的跟目
標作連接才行。 1.1.1 "封包竊聽器" 是屬於註冊商標的專有名詞嗎? "sniffer" 這個單字被 Network Associates 公司註冊給 "Sniffer(r)
Network Analyzer" 此項產品使用。然而所謂的 "snif" 這個字被許多產
品所使用(某些產品在本文件中會提到),而 "sniffer" 這個字更被普遍
使用在有關 "協定分析" 或 "網路分析" 相關產品上(至少我在 Altavista
上得到的資訊是如此)。作者對註冊商標相關的法律並不熟悉(譯者也是:P)
,所以我不清楚這是不是會讓這個名詞(sniffer)喪失其獨特性,像是其
他註冊過的專有名詞:如阿司匹靈(aspirin), 電扶梯(escalator), 和玻
璃紙(cellophane)。 1.2 竊聽程式的用途呢? 竊聽程式自出現後就有兩個主要形態,商業化的封包竊聽器是用以協助維
護網路,而在神秘的駭客組織間流傳的地下版(underground)封包竊聽器
則用來當作入侵電腦的工具。 此類的竊聽程式通常包含: ‧自動過濾網路上的明碼(clear-text)使用者名稱/密碼資料,使用
hackers/crackers 嘗試入侵。
‧將從網路上擷取到的資料轉換成人類可讀的格式。
‧對網路問題進行錯誤分析(fault analysis),比如說為何兩台電腦
間無法通訊。
‧針對網路瓶頸作效能分析。
‧用來偵測駭客(hackers/crackers)的網路入侵偵測程式(請參考
http://www.robertgraham.com/pubs/network-intrusion-detection.html)
‧記錄網路流量,建立讓入侵者無法入侵並刪除的紀錄檔。 1.3 有沒有單獨一個地方可以讓我在網際網路上看到所有的流量? 沒有。整個網際網路的連結就類似漁網般的錯綜複雜。資料在網網互連間
快速流過,因此沒有任一個單獨的點可以看到網路上所有的資料流動情形
。由於當初網際網路是因應核彈攻擊的目的而產生--所以必須在單點失敗
(single point of failure)後能倖存,因此避免任何單點竊聽的可能性。 考慮以下狀況:你在辦公室中有兩台直接互連的電腦,也都連上網際網路
。這兩台電腦使用直接繞路(direct route)的通訊方式來作溝通,因此其
間流動的封包資料不曾外洩到網際網路上任何的公開點。所有網際網路上
的通訊都是採用這種"最低成本路徑"(least-cost-path)的原理。 1.4 竊聽程式的運作方式是如何? 1.4.1 如何竊聽到網路流經的封包? 乙太網路(Ethernet)建立在一個分享(shared)的原則下:所有本地網路下
的機器都在同一條線上。 這就說明了為何在同一條線上,所有機器都可以"看到"所有在網路上流通
資料的道理。 因此,乙太網路的硬體內有一個過濾器,這會忽略所有不屬於本地網路下
的封包資料。這是靠著檢查資料段內的 MAC 位址,若與本地端電腦不相
符則忽略它。 竊聽程式則把這個過濾器的功能關閉,讓硬體(也就是乙太網路卡)處於"
監聽模式"(promiscuous mode),所以小白可以看到小花跟小黃電腦間所
有的封包訊息,一如他們都在同一條線上。 1.4.2 封包監聽器的組成元件有哪些? 硬體 大多數竊聽程式都可以在標準的網路卡上正常工作,不過有一些需要特
殊的硬體配合,假如你有特殊硬體,可用來分析硬體錯誤如 CRC error
,電壓問題,線路問題,網路流量的毛細或飄移現象(drillbes, jitter)
,通訊協議錯誤等。 擷取程式 這是最重要的部分,用來從網路線上擷取流經的封包,並過濾出你要的
資料,然後儲存起來。 緩衝區 一旦從網路上抓下資料段後,就將他們存在緩衝區中,抓取的模式有以
下幾種:抓到緩衝區滿即停止,或是以循環模式(round robin)以新資料
來取代舊資料。某些產品(比如說 Network ICE 的 BlackIce Sentry
IDS)可以在 100-mbps 的網路速度下,在硬碟中控制一個循環式擷取緩
衝區以記錄資料。這樣的好處是你就像在一個以記憶體為主的緩衝區中
,擁有數百 G 而不只是單單 1G 容量的大小。 即時分析 這是網路竊聽器的一項先進功能,用來在收線後分析資料段中某些低階
位元,如此一來當擷取資料時就可以尋找網路效能跟錯誤的問題所在。
許多廠商開始以此作出發點,對自己的產品盡量提供相容性來作配合。
網路入侵偵測系統也做同樣的事情,但他們是過濾流經網路的封包,辨
識駭客的活動,而不是專注在網路的錯誤跟效能問題上。 解碼 接下來在第五節會談到如何顯示網路封包的內容,以及敘述性文字,讓
網路分析師得知現況是如何。 封包編輯器/傳送器 某些產品中包含一項功能,使用者可以自己編輯網路封包並將修改後的
封包資料傳送到網路上。 1.5 什麼是 MAC 位址? 由於許多機器可能共用單一乙太線路,每一台都得要有一個獨立的識別
碼。這跟使用撥接數據機的狀況不同,因為後者是假設你送到數據機的
資料是要送出去給電話線另外那頭電腦的。但當你在乙太網路線上送出
資料時,就必須明確指出資料要送達之目的地是在哪一台電腦。當然現
今的狀況,有很多情形是只有兩台電腦在互相通訊,但必須記住乙太網
路當初設計的出發點是數以千計的電腦共用同一條線的情形。 實作方式可以透過每張乙太網路卡上一組唯一的十六進位數字(共 12 碼)
來完成,在 1.5.4 節會解釋如何找到你機器上的乙太 MAC 位址。 [譯者注:所謂乙太網路硬體設備(Ethernet hardware)不僅指網路卡
(adapter, NIC),其他如 router 等網路設備因為功能需要也會佔掉
一個網路位址,所以也會有 MAC address, 文中為了方便解釋所以只
針對最常見的網路卡來作 Ethernet hardware 這個字的解釋,為免誤
會特此說明] 想瞭解為何 MAC 位址這麼重要,你必須要仔細閱讀地 5.4 節中所提及
的資訊。乙太網路曾被設計用來傳送 TCP/IP 以外的其他封包資料,而
TCP/IP 當初是設計在其他線路上運作(如撥接線路,這不使用乙太網路
架構),許多使用者會在家裡電腦上安裝 "NetBEUI" 協定做為檔案跟列
印分享的依據,因為它與 TCP/IP 無關,因此駭客無法透過網際網路入
侵到他們家裡電腦的硬碟。 乙太網路設備控制封包原始資料的傳送/接收(raw transmission/
reception),你不能只將原始資料丟到乙太線路上去就算了事,首先必
須作某些加工讓乙太網路認得這些資料。這就好像你不能直接將一封信
丟到信箱裡面,必須先用信封包裝起來,然後貼上郵票是同樣意思。 以下是一個簡圖用來說明乙太網路運作模式: _________
/.........\
/..Internet.\
----- ------ ......... ---
|Alice|-----|ROUTER|.........|Bob|
----- ^ ------ ......... ---
| \.........../
| \---------/
-------
|wiretap|
------- Alice 的 IP: 10.0.0.23
Bob 的 IP: 192.168.100.54 為了跟 Bob 通話,Alice 需要封包,傳遞路徑是從 10.0.0.23 到
192.168.100.54。 當封包在網際網路上漫遊,沿路會通過許多 router,因此 Alice 首先
必須將封包交給第一個 router,沿途收到封包的 router 都會檢查目
的地位址(192.168.100.54)並決定下個正確的路徑。 上述說明圖中,我們將整個網際網路劃成一朵雲狀圖,Alice 要知道的
只是他如何連接到第一個 router 的位置,而 Bob 所知道的也是他那
端如何連到他第一個 router,Alice 對整個網際網路的架構並不知情
,也無須知道封包將會怎麼繞路送達目的地。 Alice 必須讓 router 知道才能將封包傳送出去。她可以利用乙太網路
來辦這件事情,一個乙太網路的封包段(frame)看起來就像下面這樣: -- -- -- -- -- --
| 目 的 地 MAC |
-- -- -- -- -- --
| 來 源 MAC |
-- -- -- -- -- --
|08 00|
-- -- -----------
| |
. IP .
. 封包 .
. .
| |
-- -- -- -- -----
| CRC 檢查碼|
-- -- -- -- 這代表著 Alice 機器上的 TCP/IP 堆疊可能要建立一個 100 bytes 長
的封包(假設 20 bytes 是 IP 資訊,20 bytes 是 TCP 資訊,60 bytes
是資料)。TCP/IP 堆疊會將這組封包送給乙太模組去作處理,在開頭處
加上 14 bytes 的目的地 MAC 位址、來源位址,以及內定乙太型態
0x0800 的數值作為結束,告訴 TCP/IP 堆疊以下開始處理封包段本身的
資料。最後加上 4 bytes 的 CRC 錯誤檢查碼(主要用來檢查封包段在線
路上傳輸的過程中是否被破壞過)。 然後網路卡就將位元資料透過網路線傳送出去。 所有在這條線上的網路卡都會看到這個封包段,包括 router、封包竊聽
器跟任何其他的機器。然而某些網路卡有一個晶片會作對封包段的目的
地 MAC 位址跟來源 MAC 位址兩者互相比較,假若不相同就捨棄這個封
包段。由於這工作在硬體階層就完成,所以網路卡所在的電腦將不會注
意到這件事情。 當路由器的乙太網路卡看到封包段後,會把最開始的 14 bytes 和最後
的 4 bytes 讀出來,截頭去尾然後重新寫回封包段,由於看到 0x0800
這個乙太型態數值所以決定把他送到 TCP/IP 堆疊去處理(預設處理動
作是將封包送到下一個前往目的地途中的路由器手中)。 上述過程中,應該只有路由器看到封包段,而其他所有的機器都應當忽
略它,然而竊聽的電腦卻破壞這項原則,也將這個封包段從網路上拷貝
下來。 詳情請參考 Charles Spurgeon's Ethernet website:
http://wwwhost.ots.utexas.edu/ethernet/ethernet-home.html 1.5.2 "MAC" 這個字是什麼意思? MAC 是 Media Access Control 三個字的縮寫。 這其中隱藏的邏輯是乙太網路有好幾個子層(sublayer): PHY(physical)
,MAC,LLC(logical)等。乙太位址一般則認為是包含在 MAC 位址層中
。實體層跟線路有關,MAC 則與送往線路上的資料格式有關,而邏輯層是負
責像是線路上如何重新傳送資料這樣的工作。 1.5.3 MAC 位址的格式是怎麼樣呢? 乙太網路的 MAC 位址是一串 48 位元的數字。這串數字分為兩半:前
24 位元標示網路卡的製作廠商編號,後 24 位元則由廠商指定一個序
號。因此要確保沒有兩張乙太網路卡會有同樣的 MAC 位址(除非廠商自
己故意犯規)。重複的位址一定會造成問題,保持其唯一性就很重要了
,所以後 24 位元的數字我們稱之為 "OUI"(唯一編制識別碼,
"Organizationally Unique Identifier")。 然而事實上 OUI 的長度只有 22 位元,因為有兩個位元被挪作他用。
一個位元說明這個位址是否為 "廣播/群播"(broadcast/multicast)位
址,另外一個位元說明了這個網路卡是否被重新指定一個本地端的管理
位址(這是因為網路管理員可以因為某些區域網路的管理政策方便,重
新指定網路卡的 MAC 位址)。 舉例來說,一般而言你會看到線路上出現 03 00 00 00 00 01 這串 MAC
位址的資料,第一個位元組(03)代表了 00000011 這個二進位表示資料
,可看到上述的兩個特殊位元都被設定了(而其他位元則全部為零),這
就是一個特殊的群播封包,將傳送給所有執行 "NetBEUI" 通訊協定的
電腦(這個協定通常會安裝在 Windows 作業平台的電腦上,用來在區域
網路中分享檔案,無須透過 TCP/IP 做為媒介)。 IEEE 協會負責維護這份廠商/OUI 編號清單,可在以下網站找到: http://standards.ieee.org/regauth/oui/ 1.5.4 我自己的乙太網路位址是什麼? Win9x 執行 "winipcfg.exe" 這個程式,它就會告訴你。 WinNT 在命令列模式執行這個指令 "ipconfig /all"。會顯示網路卡的 MAC 位
址,範例如下: Windows NT IP Configuration Host Name . . . . . . . . . : sample.robertgraham.com
DNS Servers . . . . . . . . : 192.0.2.254
Node Type . . . . . . . . . : Hybrid
NetBIOS Scope ID. . . . . . :
IP Routing Enabled. . . . . : No
WINS Proxy Enabled. . . . . : No
NetBIOS Resolution Uses DNS : No Ethernet adapter SC12001: Description . . . . . . . . : DEC DC21140 PCI Fast Ethernet Adapter
Physical Address. . . . . . : 00-40-05-A5-4F-9D
DHCP Enabled. . . . . . . . : No
IP Address. . . . . . . . . : 192.0.2.160
Subnet Mask . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . : 192.0.2.1
Primary WINS Server . . . . : 192.0.2.253 Linux 執行 "ifconfig" 後範例如下: eth0 Link encap:Ethernet HWaddr 08:00:17:0A:36:3E
inet addr:192.0.2.161 Bcast:192.0.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1137249 errors:0 dropped:0 overruns:0
TX packets:994976 errors:0 dropped:0 overruns:0
Interrupt:5 Base address:0x300 Solaris 使用 "arp" 或 "netstat -p" 指令,通常就會列出在 ARP 資料項上的
本地介面(local interface)。 1.5.5 正在跟我通訊的那台電腦,他的乙太網路位址是什麼呢? WinNT 和 UNIX 的主機上使用 "arp -a" 指令。 1.5.6 我可以更改 MAC 位址嗎? 可以,但有幾個重要的地方需要注意: 首先,你可以任意造假位址,但記住 MAC 位址只是網路封包資料段中的
一部份。再者,當你將封包資料段送到線路上時,你也可以在這些資料
段中改寫自己的內容,當然,你必須先能執行某些有這個功能的程式。 第二,許多網路卡都允許你重新設定即時(runtime) MAC 位址,舉例來
說,某些卡讓你可以在 Windows 的控制台中重新設定位址。 第三,你可以重新燒錄網路卡上的位址(也就是更改 EEPROM 內容)。這
需要一個知道網路卡晶片規格的程式/硬體來作這件事,因此將會永久性
的把網路卡位址更新。 1.6 我可以偷聽某兩個人的通信而無須連上他們的網路線嗎? 換句話說,你尋求這樣的可能性: 小花住台中,小黑住在高雄而他們正在用電腦互相對談,你在遙
遠另外一端的台北,你想竊聽他們的通訊內容? 答案當然是『不可能』,連一絲可能性都沒有。你必須實際連上你要竊
聽的那段實體線路上,才能辦到這樣的事情。這道理跟竊聽電話或是其
他東西都一樣。 線路的遠端存取 然而,假如你是一個技術高超的駭客,還是有好幾種方法可以拿到線路
的遠端存取權。
典型的例子有: ‧入侵 Alice 或 Bob 的電腦,然後裝上能遠端操控的竊聽程式。
‧去入侵牽涉在線路中間的 ISP,然後裝竊聽程式。
‧在 ISP 裡面找一台可用竊聽功能的電腦,支援 RMON 或 DSS(分
散式竊聽系統,Distributed Sniffer System) [譯者注:RMON 原本的用途是收集網路封包,作為觀察網路流量跟封包
動態等網管用途,當然也會被利用當成竊聽工具。] ‧去想辦法跟 ISP 裡面的某個人混熟一點,偷偷進去機房裝封包竊
聽器.... 等等。
‧.... 趨近法 某些狀況下,假若使用 cable-modems, DSL, Ethernet VLANs 等,你
可以將另外兩個人的封包訊息重新導向到自己的電腦這邊來。這是由於
你不在通訊的直接路徑上,有時候你可以將路徑移動,想辦法讓他也通
過你這裡,這個觀念就像你可以緩慢的將河裡的水作分流,原理相去不
遠。詳情請參考後述 "在 Cable modem 下重導" 一節。 使用 rootkits 和遠端的管理者木馬程式 另外一個可能性是入侵某人的電腦,安裝一個竊聽程式(至於如何確實
的入侵某人的電腦,當然我不會告訴你,這超出本份文件的討論範圍)。
UNIX 系統上竊聽程式大多包含在 rootkits 程式內,Windows 下則是
稱為所謂的管理者木馬程式, RATs(Remote Admin Trojans, 像是
BackOrifice)。 理論上,這些程式被用來當作擷取網路封包之用,但通常駭客們都只會
簡單設定成竊聽密碼,再將得到的密碼用電子郵件傳回來。 第 2.5 節包含如何偵測這些竊聽程式的方法,尤其是被安裝在 UNIX
機器上的竊聽程式。 --
* Origin: ★ 交通大學資訊科學系 BBS ★
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好
Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind