作者: jog...@bbs.lit.edu.tw
標題: [doc] Sniffing FAQ 中譯版(轉寄)
時間: Wed Nov 22 19:40:19 2000
發信人: byeby...@cis.nctu.edu.tw (....), 信區: security
標 題: [doc] Sniffing FAQ 中譯版
發信站: 交大資科_BBS (Sat Sep 30 13:26:06 2000)
轉信站: litbbs!Netnews.lit!news.ntu!news.mcu!news.cs.nthu!news.cis.nctu!cis_nct
Origin: ms23.hinet.net
Sniffing (網路竊聽器, sniffer) FAQ
這份文件是用來回答有關電腦網路上有關竊聽(也就是所謂"sniffing")
的諸多問題。
0. 有關本 FAQ 的資訊
0.3.3 版, 2000 九月 14.
版權宣告:Robert Graham (sniffi...@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 <l.cranswick at dl dot ac dot uk>
當然還有譯者我 byeby...@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 ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>
--
[1;35m╔═╗╔╗╔╗══╗══╮ [m [1;36m【 [32mOrigin [36m】 [m [1;31m龍資天下 BBS [m
[1;31m║ ║║╚╝║╗╔╝ ║ [m [1;35m〈 [1;31mHost [1;35m〉 [1;33mimp.im.lhit.edu.tw [1;35m《 [1;34mIP [1;35m》 [1;37m140.131.7.3 [m
[1;32m║ ╚╗╔╗║╝╚╗║║║ [m [1;34m《 [1;37mID [1;34m》 [1;36mjinjon [1;34m《 [1;35m故鄉 [1;34m》 [1;32m211.20.4.214 [m