隨著Internet及電子商務的日益普及,Internet的安全也越來越受到重視。而在Internet安全隱患中扮演重要角色的是Sniffer和Scanner,本文將介紹Sniffer以及如何阻止sniffer。
大多數的黑客僅僅為了探測內部網上的主機並取得控制權,只有那些"雄心勃勃"的黑客,為了控制整個網絡才會安裝特洛伊木馬和後門程序,並清除記錄。他們經常使用的手法是安裝sniffer。
在內部網上,黑客要想迅速獲得大量的賬號(包括用戶名和密碼),最為有效的手段是使用 "sniffer" 程序。這種方法要求運行Sniffer 程序的主機和被監聽的主機必須在同一個以太網段上,故而在外部主機上運行sniffer 是沒有效果的。再者,必須以root的身份使用sniffer 程序,才能夠監聽到以太網段上的數據流。
黑客會使用各種方法,獲得系統的控制權並留下再次侵入的後門,以保證sniffer能夠執行。在Solaris 2.x平台上,sniffer 程序通常被安裝在/usr/bin或/dev目錄下。黑客還會巧妙的修改時間,使得sniffer程序看上去是和其它系統程序同時安裝的。
大多數 "ethernet sniffer"程序在後台運行,將結果輸出到某個記錄文件中。黑客常常會修改ps程序,使得系統管理員很難發現運行的sniffer程序。
"ethernet sniffer"程序將系統的網絡接口設定為混合模式。這樣,它就可以監聽到所有流經同一以太網網段的數據包,不管它的接受者或發送者是不是運行sniffer的主機。 程序將用戶名、密碼和其它黑客感興趣的數據存入log文件。黑客會等待一段時間 ----- 比如一周後,再回到這裡下載記錄文件。
一、什麼是sniffer
與電話電路不同,計算機網絡是共享通訊通道的。共享意味著計算機能夠接收到發送給其它計算機的信息。捕獲在網絡中傳輸的數據信息就稱為sniffing(竊聽)。
以太網是現在應用最廣泛的計算機連網方式。以太網協議是在同一回路向所有主機發送數據包信息。數據包頭包含有目標主機的正確地址。一般情況下只有具有該地址的主機會接受這個數 據包。如果一台主機能夠接收所有數據包,而不理會數據包頭內容,這種方式通常稱為"混雜" 模式。
由於在一個普通的網絡環境中,帳號和口令信息以明文方式在以太網中傳輸,一旦入侵者獲 得其中一台主機的root權限,並將其置於混雜模式以竊聽網絡數據,從而有可能入侵網絡中的所有計算機。
二、sniffer工作原理
通常在同一個網段的所有網絡接口都有訪問在物理媒體上傳輸的所有數據的能力,而每個網絡接口都還應該有一個硬件地址,該硬件地址不同於網絡中存在的其他網絡接口的硬件地址,同時,每個網絡至少還要一個廣播地址。(代表所有的接口地址),在正常情況下,一個合法的網絡接口應該只響應這樣的兩種數據幀:
1、幀的目標區域具有和本地網絡接口相匹配的硬件地址。
2、幀的目標區域具有"廣播地址"。
在接受到上面兩種情況的數據包時,nc通過cpu產生一個硬件中斷,該中斷能引起操作系統注意,然後將幀中所包含的數據傳送給系統進一步處理。
而sniffer就是一種能將本地nc狀態設成(promiscuous)狀態的軟件,當nc處於這種"混雜"方式時,該nc具備"廣播地址",它對所有遭遇到的每一個幀都產生一個硬件中斷以便提醒操作系統處理流經該物理媒體上的每一個報文包。(絕大多數的nc具備置成promiscuous方式的能力)
可見,sniffer工作在網絡環境中的底層,它會攔截所有的正在網絡上傳送的數據,並且通過相應的軟件處理,可以實時分析這些數據的內容,進而分析所處的網絡狀態和整體布局。值得注意的是:sniffer是極其安靜的,它是一種消極的安全攻擊。
通常sniffer所要關心的內容可以分成這樣幾類:
1、口令:
我想這是絕大多數非法使用sniffer的理由,sniffer可以記錄到明文傳送的userid和passwd.就算你在網絡傳送過程中使用了加密的數據,sniffer記錄的數據一樣有可能使入侵者在家裡邊吃肉串邊想辦法算出你的算法。
2、金融帳號:
許多用戶很放心在網上使用自己的信用卡或現金帳號,然而sniffer可以很輕松截獲在網上傳送的用戶姓名、口令、信用卡號碼、截止日期、帳號和pin。
3、偷窺機密或敏感的信息數據:
通過攔截數據包,入侵者可以很方便記錄別人之間敏感的信息傳送,或者干脆攔截整個的email會話過程。
4、窺探低級的協議信息:
這是很可怕的事,我認為,通過對底層的信息協議記錄,比如記錄兩台主機之間的網絡接口地址、遠程網絡接口ip地址、ip路由信息和tcp連接的字節順序號碼等。這些信息由非法入侵的人掌握後將對網絡安全構成極大的危害,通常有人用sniffer收集這些信息只有一個原因:他正在進行一次欺詐,(通常的ip地址欺詐就要求你准確插入tcp連接的字節順序號,這將在以後整理的文章中指出)如果某人很關心這個問題,那麼sniffer對他來說只是前奏,今後的問題要大條得多。(對於高級的hacker而言,我想這是使用sniffer的唯一理由吧)。
三、哪裡可以得到sniffer
Sniffer是黑客們最常用的入侵手段之一。你可以在經過允許的網絡中運行sniffer,了解它是如何有效地危及本地機器安全。
Sniffer可以是硬件,也可以是軟件。現在品種最多,應用最廣的是軟件Sniffer, 絕大多數黑客們用的也是軟件Sniffer。
以下是一些也被廣泛用於調試網絡故障的sniffer工具:
商用sniffer:
1 Network General.
Network General開發了多種產品。最重要的是EXPert Sniffer,它不僅僅可以sniff,還能夠通過高性能的專門系統發送/接收數據包,幫助診斷故障。還有一個增強產品"Distrbuted SnifferSystem"可以將UNIX工作站作為sniffer控制台,而將snifferagents(代理)分布到遠程主機上。
2 Microsofts Net Monitor
對於某些商業站點,可能同時需要運行多種協議--NetBEUI、IPX/SPX、TCP/IP、802.3和SNA等。這時很難找到一種sniffer幫助解決網絡問題,因為許多sniffer往往將某些正確的協議數據包當成了錯誤數據包。Microsoft的Net Monitor(以前叫Bloodhound)可以解決這個難題。它能夠正確區分諸如Netware控制數據包、NTNetBios名字服務廣播等獨特的數據包。(etherfind只會將這些數據包標識為類型0000的廣播數據包。)這個工具運行在MS Windows平台上。它甚至能夠按MAC地址(或主機名)進行網絡統計和會話信息監視。只需簡單地單擊某個會話即可獲得tcpdump標准的輸出。過濾器設置也是最為簡單的,只要在一個對話框中單擊需要監視的主機即可。
免費軟件sniffer
1 Sniffit由Lawrence Berkeley 實驗室開發,運行於Solaris、SGI和Linux等平台。可以選擇源、目標地址或地址集合,還可以選擇監聽的端口、協議和網絡接口等。這個SNIFFER默認狀態下只接受最先的400個字節的信息包,這對於一次登陸會話進程剛剛好。
2 SNORT:這個SNIFFER有很多選項供你使用並可移植性強,可以記錄一些連接信息,用來跟蹤一些網絡活動。
3 TCPDUMP:這個SNIFFER很有名,linux,FREEBSD還搭帶在系統上,是一個被很多UNIX高手認為是一個專業的網 絡管理工具,記得以前TsutomuShimomura(應該叫下村侵吧)就是使用他自己修改過的TCPDUMP版本來記錄了KEVINM99vNICK攻擊他系統的記錄,後來就配合FBI抓住了KEVINM99vNICK,後來他寫了一文:使用這些LOG記錄描述了那次的攻擊,How Mitnick hacked Tsutomu Shimomura with an IP sequence attack
(http://www.attrition.org/security/newbie/security/sniffer/shimomur.txt)
4 ADMSNiff:這是非常有名的ADM黑客集團寫的一個SNIFFER程序。
5 linsniffer:這是一個專門設計雜一LINUX平台上的SNIFFER。
6 Esniffer:這個也是一個比較有名的SNIFFER程序。
7 Solsniffer:這是個Solarissniffer,主要是修改了SunSniff專門用來可以方便的在Solair平台上編譯。
8 Ethereal是一基於GTK+的一個圖形化Sniffer。
9 Gobbler(for MS-DOS&Win95)、Netman、NitWit、Ethload...等等。
四、sniffer的安裝使用
我主要以sniffit為例分別介紹在nt和linux下的應用。
[1] 在linux下的sniffit安裝:
軟件的安裝
1、用tarzvfxsniffit.*.*.*.tgz將下載下來的sniffit.*.*.*.tgz解壓縮
到你想要的目的文件夾,如果版本是0.3.7的話,你會看到該目錄下出現一個sniffit.0.3.7的目錄。
2、cd sniffit.0.3.7
3、./configure && make,只要在這個過程中終端上沒有意外的error信息出現,你就算編譯成功了--可以得到一個二進制的sniffit文件。
4、makeclean把不用的垃圾掃掉……
使用方法
1、參數,有如下的命令選項:
-v顯示版本信息
-t讓程序去監聽指定流向某IP的數據包
-s讓程序去監聽從某IP流出的IP數據包,可以使用@通配符
-t199.145.@
-i顯示出窗口界面,能察看當前在你所屬網絡上進行連接的機器
-I擴展的交互模式,忽略所有其它選項,比-i強大得多……
-c利用腳本來運行程序
-F強制使程序使用網絡硬盤
-n顯示出假的數據包。象使用ARP、RARP或者其他不是IP的數據包也會顯示出來
-N只運行plugin時的選項,
2、cd sniffit.0.3.7
3、./configure && make,只要在這個過程中終端上沒有意外的error信息出現,你就算編譯成功了--可以得到一個二進制的sniffit文件。
4、makeclean把不用的垃圾掃掉……
使用方法
1、參數,有如下的命令選項:
-v顯示版本信息
-t讓程序去監聽指定流向某IP的數據包
-s讓程序去監聽從某IP流出的IP數據包,可以使用@通配符
-t199.145.@
-i顯示出窗口界面,能察看當前在你所屬網絡上進行連接的機器
-I擴展的交互模式,忽略所有其它選項,比-i強大得多……
-c利用腳本來運行程序
-F強制使程序使用網絡硬盤
-n顯示出假的數據包。象使用ARP、RARP或者其他不是IP的數據包也會顯示出來
-N只運行plugin時的選項,