黑客技術之再議Sniffer
Sniffer的相關介紹請讀者閱讀:黑客技術之Sniffer實例,下面我們繼續看Sniffer:
sniffing 和 spoofing 一樣是作用在網絡基礎結構的底層。通常情況下,用戶并不直接和該層打交道,有些甚至不知道有這一層存在,。他們只是用ftp.http.telnet.email 等,所以,應該說snffer的危害是相當之大的,通常使用sniffer 是一次spoofing的開始。那么到底sniffer是怎樣的一種概念呢?
sniffer 是利用計算機的網絡接口截獲目的地為其他計算機的數據報文的一種工具。(ISS)在合理的網絡中,sniffer的存在對系統管理員是致關重要的,系統管理員通過sniffer可以診斷出大量的不可見模糊問題,這些問題涉及兩臺乃至多臺計算機之間的異常通訊有些甚至牽涉到各種的協議,借助于sniffer ,系統管理員可以方便的確定出多少的通訊量屬于哪個網絡協議、占主要通訊協議的主機是哪一臺、大多數通訊目的地是哪臺主機、報文發送占用多少時間、或著相互主機的報文傳送間隔時間等等,這些信息為管理員判斷網絡問題、管理網絡區域提供了非常寶貴的信息。但是,同時,如果有心之人(非系統管理員)使用了sniffer ,那么,他同樣也可以獲得和管理員一樣多的信息,同樣也可以對整個的網絡做出判斷。當然,SPP相信他不會用這些信息去管理網絡。
現在網絡上到處可見免費的sniffer , 各種平臺下的都有,我真不知道,這對管理員來說是好事還是壞事。(參看黑客技術之Sniffer實例的文章,你可以知道現在找個sniffer多容易)
話說回來,那么sniffer是如何在網絡上實施的呢?談這個問題之前還應該先說一下Ethernet的通訊. 通常在同一個網段的所有網絡接口都有訪問在物理媒體上傳輸的所有數據的能力,而每個網絡接口都還應該有一個硬件地址,該硬件地址不同于網絡中存在的其他網絡接口的硬件地址,同時,每個網絡至少還要一個廣播地址。(代表所有的接口地址),在正常情況下,一個合法的網絡接口應該只響應這樣的兩種數據幀:
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將無法透過邊界而窺探另一邊的數據包。但是,請注意:這是在邊界設備不轉發廣播包的情況下(這也是通常的網絡情況)。
一旦入侵者使用spoofer 誘騙某個邊界設備而將自己的廣播包流入不該進入的網段后,原理上還是在一個共享設備端使用sniffer 而實際上將是聽到了邊界的另一邊。(詳細的spoofer應用我會再整理出來)當然,這樣會牽涉到ip 欺詐和Mac欺詐的問題,然而,你別忘了,sniffer和spoofer是很少分開來的。
既然sniffer如此囂張又安靜,我要如何才知道有沒有sniffer在我的網上跑呢?這也是一個很難說明的問題,比較有說服力的理由證明你的網絡有sniffer目前有這么兩條:
1、你的網絡通訊掉包率反常的高。
通過一些網絡軟件,你可以看到你的信息包傳送情況(不是sniffer),向ping這樣的命令會告訴你掉了百分幾的包。如果網絡中有人在聽,那么你的信息包傳送將無法每次都順暢的流到你的目的地。(這是由于sniffer攔截每個包導致的)
2、你的網絡帶寬將出現反常。
通過某些帶寬控制器(通常是火墻所帶),你可以實時看到目前網絡帶寬的分布情況,如果某臺機器長時間的占用了較大的帶寬,這臺機器就有可能在聽。實際操作中,我還發現,如果某臺機器(非服務器)在不該使用廣播的網絡中使用了ICMP 類型10 、11、9等這一類的廣播,。。有可能。。。非常有可能。。。如果同時出現udp520口的rip廣播,那就百分之N接近。在非高速信道上,如56K ddn 等,如果網絡中存在sniffer ,你應該也可以察覺出網絡通訊速度的變化。
最后再說明的是,并不是使用了交換設備就可以完全阻止sniffer , 如果系統管理員錯誤的使用了網絡的拓撲結構,比如,工作站或終端通過某個集連設備集中到交換集線器,然后通過路由再進入主機群。這樣的布線表面看來好象有物理上的分割,但實際上,從邏輯的觀點,任何一臺機器的數據除了到達主機外,還同時流向別的機器。
sniffer有可能任何被一臺機器架上,來監控從本地網絡流向主機的所有數據。安全的布線在沒有spoofer的情況下應該是從各終端就使用交換設備。
【編輯推薦】