摘要:該文介紹了一種利用計算機網絡接口進行偵聽的網絡新技術——sniffer。首先介紹了sniffer實施偵聽的工作原理,其次介紹了目前常見的免費sniffer工具及其實現步驟,最后對sniffer用于網絡入侵的危害及其局限性進行了闡述。
關鍵詞:sniffer;網絡偵聽;網絡安全
中圖分類號:TP393.08文獻標識碼:A文章編號:1009-3044(2008)33-1321-01
Research on Network Interception Technology about Sniffer
WANG Mei-hua
(Zhejiang Provincial Tongxiang Puyuan Central Hospital, Tongxiang 314502, China)
Abstract: The paper introduced one kind carries on the interception using the computer network connection network new technology about sniffer. First, introduced the sniffer implementation interception principle of work, then introduced the present common free sniffer tool and the realization step, finally used in the network invasion to sniffer the harm and the limitation has carried on the elaboration.
Key Words: sniffer; network interception; network security
1 sniffer及其工作原理
sniffer是利用計算機的網絡接口截獲目的地為其他計算機的數據報文的一種工具。sniffer(偵聽儀)的通用意義是網絡協議分析儀。在合理的網絡中,sniffer的存在對系統管理員是致關重要的,系統管理員通過sniffer可以診斷出大量的不可見模糊問題,這些問題涉及兩臺乃至多臺計算機之間的異常通訊,有些甚至牽涉到各種的協議,借助于sniffer,系統管理員可以方便的確定出多少的通訊量屬于哪個網絡協議、占主要通訊協議的主機是哪一臺、大多數通訊目的地是哪臺主機、報文發送占用多少時間、或者相互主機的報文傳送間隔時間等等,這些信息為管理員判斷網絡問題、管理網絡區域提供了非常寶貴的信息。但同時,如果有心之人(非系統管理員)使用了sniffer,那么,他同樣也可以獲得和管理員一樣多的信息,同樣也可以對整個的網絡做出判斷。
sniffer是如何在網絡上實施的呢?在共享媒體(共享媒體指示這樣一種網絡:在組成其網絡段的物理媒體上廣播所有幀)的網絡中(例如Ethemet),在同一個網段的所有網絡接口都有訪問在物理媒體上傳輸的所有數據的能力,而每個網絡接口都還應該有一個硬件地址,該硬件地址不同于網絡中存在的其他網絡接口的硬件地址,同時,每個網絡至少還要一個廣播地址(代表所有的接口地址)。在正常情況下,一個合法的網絡接口應該只響應這樣的兩種數據幀:
第一,幀的目標區域具有和本地網絡接口相匹配的硬件地址;
第二,幀的目標區域具有“廣播地址”。
在接受到上面兩種情況的數據包時,網卡通過CPU產生一個硬件中斷,該中斷能引起操作系統注意,然后將幀中所包含的數據傳送給系統進一步處理。
而sniffer就是一種能將本地網卡狀態設成混雜模式(promiscuous)狀態的軟件,當網卡處于這種“混雜”方式時,該網卡對遭遇到的每一個幀都產生一個硬件中斷以便提醒操作系統處理流經該物理媒體上的每一個報文包。可見,sniffer工作在網絡環境中的底層,它會攔截所有的正在網絡上傳送的數據,并且通過相應的軟件處理,可以實時分析這些數據的內容,進而分析所處的網絡狀態和整體布局。值得注意的是:sniffer是極其安靜的,當它用來攻擊時,是一種消極的安全攻擊。
2 常見sniffer與sniffer的實現
sniffer網絡分析儀有專用硬件和軟件的產品,尖端的網絡分析儀產品可以找出一般網絡接口檢測不出的錯誤;中等商業市場的分析儀產品往往是帶有特定軟件的普通便攜計算機;而基于各個平臺的很多普通的網絡偵聽軟件則在Internet上可以自由下載。比較知名的被廣泛用于調試網絡故障的免費sniffer工具有:
Tcpdump(運行在FreeBSD,Linux,DEC Unix,Irix,SunOS等)
Nfswatch(運行在HP-UX,Irix,SunOS等)
Etherfind,Snooper(SunOS)
Ipman,Etherload,Gobbler(運行在DOS,Windows等)
Ethereal(運行在Linux,Windows等)
Netman系列(Pachetman,Interman,Etherman,Loadman),Lanwatch,Lanpatrol
在Linux下偵聽器基本實現過程是通過Socket實現的。Linux中支持一種特殊的套接字,即SOCK-PACKET型套接字。在這種套接字下,應用程序可以讀到網卡傳遞給系統內核的所有報文。一般情況下,網卡只將那些目的地址為自身的報文傳送給系統內核。因此,需要將網卡的工作方式設定為混雜模式。這樣,系統內核就可以讀到網卡偵聽到的所有報文,從而偵聽器應用程序也就可以讀到這些報文了。偵聽器的實現步驟如下:
1) 打開套接字。使用socket函數打開SOCK-PACKET型套接字;
2) 設置混雜模式。使用ioctl函數將網卡設置為混雜模式;
3) 讀取報文。使用讀取函數將報文讀入緩沖區中;
4) 處理報文。該部分由過濾子模塊和處理子模塊組成,過濾子模塊用用戶事先定好的規則對讀到的報文進行過濾,只將用戶關心的報文交由處理子模塊作進一步處理。
3 sniffer用于網絡入侵的危害及其局限性
網絡偵聽是很高級別的危險,可以導致幾類嚴重的信息泄漏。通常sniffer所要關心的內容可以分成這樣幾類:
1) 口令
這是絕大多數非法使用sniffer的理由,sniffer可以記錄到明文傳送的userid和passwd。就算你在網絡傳送過程中使用了加密的數據,sniffer記錄的數據一樣有可能使入侵者在家里悠閑地想辦法算出你的算法。
2) 金融帳號
許多用戶很放心在網上使用自己的信用卡或現金帳號,然而,sniffer可以很輕松截獲在網上使用明文傳送的用戶姓名、口令、信用卡號碼、截至日期、帳號和PIN。
3) 偷窺機密或敏感的信息數據
通過攔截數據包,入侵者可以很方便記錄別人之間敏感的信息傳送,或者干脆攔截整個的會話過程。
4) 窺探低級的協議信息
這是很可怕的事,通過對底層的信息協議記錄,比如記錄兩臺主機之間的網絡接口地址、遠程網絡接口IP地址、IP路由信息和TCP連接的字節順序號碼等。這些信息由非法入侵的人掌握后將對網絡安全構成極大的危害,通常有人用sniffer收集這些信息只有一個原因:他正在進行一次欺詐,(通常的IP地址欺詐就要求你準確插入TCP連接的字節順序號)。如果某人(例如高級入侵者)很關心這個問題,那么sniffer對他來說只是前奏,今后的問題要多得多。
sniffer工作的前提是同一沖突域的共享媒體,但考慮此類廣播型網的協議工作方式,即向同一子網的所有網絡接口輪詢,會不可避免的造成廣播風暴和碰撞,占用帶寬,因此經常將同一子網的機器適當分成幾個網段(沖突域),在網段間用Switch相連.這也是為什么用HUB相連的同一以太網段可編程實現監聽(raw socket方式,windows下Vpacket的VXD),但如果用Switch連接不同的沖突域則從理論上無法監聽。
那么,通過交換設備(網橋、交換機、路由等)所形成的網絡邊界外是否完全沒有sniffer存在的空間呢?并非全然如此,能形成網絡邊界的交換設備并不是把來自一邊的所有的幀都丟到另一邊的。他們通常允許某些報文通過邊界而阻止某些報文(特別是網絡廣播)通過邊界。因此從理論上講,通過交換設備對網絡進行分段后,sniffer將無法透過邊界而窺探另一邊的數據包。但是,請注意,這是在邊界設備不轉發廣播包的情況下,這也是通常的網絡情況。某些交換機會有特殊的狀態會轉發數據包,比如很多10M/100M的交換機有將所有10M端口數據包復制到100M端口的功能。同時對于級連的交換機,如果在上出口處進行監聽,仍然可以截獲所有上行數據。因此必須對于網絡拓撲和交換機進行小心的設置和管理。
參考文獻:
[1] David A. Solomon, Mark E. Russinovich. Inside Microsoft Windows 2000. Microsoft Press. 2000.
[2] 樊宸豐,林東.網絡信息安全與數據加密[M].北京:清華大學出版社,2002.
[3] 許治坤,王偉,郭添森,楊翼龍.網絡滲透技術[M].北京:電子工業出版社,2005.