全面解析網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)
網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)是一個(gè)發(fā)展的比較成熟的技術(shù),但是網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)確實(shí)是一柄雙刃劍。網(wǎng)絡(luò)管理員可以通過(guò)網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)監(jiān)管網(wǎng)絡(luò)數(shù)據(jù)傳輸,排除網(wǎng)絡(luò)故障。但是網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)也往往被黑客所利用,成為數(shù)據(jù)泄露的一大重點(diǎn)威脅。
網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)在安全領(lǐng)域引起人們普遍注意是在94年開(kāi)始的,在那一年2月間,相繼發(fā)生了幾次大的安全事件,一個(gè)不知名的人在眾多的主機(jī)和骨干網(wǎng)絡(luò)設(shè)備上安裝了網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)軟件,利用它對(duì)美國(guó)骨干互聯(lián)網(wǎng)和軍方網(wǎng)竊取了超過(guò)100000個(gè)有效的用戶(hù)名和口令。上述事件可能是互聯(lián)網(wǎng)上最早期的大規(guī)模的網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)事件了,它使早期網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)從"地下"走向了公開(kāi),并迅速的在大眾中普及開(kāi)來(lái)。
關(guān)于網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)常常會(huì)有一些有意思的問(wèn)題,如:"我現(xiàn)在有連在網(wǎng)上的計(jì)算機(jī)了,我也有了竊聽(tīng)的軟件了,那么我能不能竊聽(tīng)到微軟(或者美國(guó)國(guó)防部,新浪網(wǎng)等等)的密碼?
又如:我是公司的局域網(wǎng)管理員,我知道hub很不安全,使用hub這種網(wǎng)絡(luò)結(jié)構(gòu)將公司的計(jì)算計(jì)互連起來(lái),會(huì)使網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)變得非常容易,那么我們就換掉hub,使用交換機(jī),不就能解決口令失竊這種安全問(wèn)題了么?
這是兩個(gè)很有意思的問(wèn)題,我們?cè)谶@里先不做回答,相信讀者看完全文后會(huì)有自己正確的答案。
基本概念:認(rèn)清mac地址和ip地址
首先,我們知道,一臺(tái)接在以太網(wǎng)內(nèi)的計(jì)算機(jī)為了和其他主機(jī)進(jìn)行通訊,在硬件上是需要網(wǎng)卡,在軟件上是需要網(wǎng)卡驅(qū)動(dòng)程序的。而每塊網(wǎng)卡在出廠時(shí)都有一個(gè)唯一的不與世界上任何一塊網(wǎng)卡重復(fù)的硬件地址,稱(chēng)為mac地址。同時(shí),當(dāng)網(wǎng)絡(luò)中兩臺(tái)主機(jī)在實(shí)現(xiàn)tcp/ip通訊時(shí),網(wǎng)卡還必須綁定一個(gè)唯一的ip地址。下面用一個(gè)常見(jiàn)的unix命令ifconfig來(lái)看一看作者本人的一臺(tái)正常工作的機(jī)器的網(wǎng)卡:
[yiming@server/root]# ifconfig -a
hme0: flags=863 mtu 1500
inet 192.168.1.35 netmask ffffffe0
ether 8:0:20:c8:fe:15
從這個(gè)命令的輸出中我們可以看到上面講到的這些概念,如第二行的192.168.1.35是ip 地址,第三行的8:0:20:c8:fe:15是mac地址。請(qǐng)注意第一行的BROADCAST,MULTICAST,這是什么意思?一般而言,網(wǎng)卡有幾種接收數(shù)據(jù)幀的狀態(tài),如unicast,broadcast,multicast,promiscuous等,unicast是指網(wǎng)卡在工作時(shí)接收目的地址是本機(jī)硬件地址的數(shù)據(jù)幀。Broadcast是指接收所有類(lèi)型為廣播報(bào)文的數(shù)據(jù)幀。Multicast是指接收特定的組播報(bào)文。Promiscuous則是通常說(shuō)的混雜模式,是指對(duì)報(bào)文中的目的硬件地址不加任何檢查,全部接收的工作模式。對(duì)照這幾個(gè)概念,看看上面的命令輸出,我們可以看到,正常的網(wǎng)卡應(yīng)該只是接收發(fā)往自身的數(shù)據(jù)報(bào)文,廣播和組播報(bào)文,請(qǐng)大家記住這個(gè)概念。
對(duì)網(wǎng)絡(luò)使用者來(lái)說(shuō),瀏覽網(wǎng)頁(yè),收發(fā)郵件等都是很平常,很簡(jiǎn)便的工作,其實(shí)在后臺(tái)這些工作是依靠tcp/ip協(xié)議族實(shí)現(xiàn)的,大家知道有兩個(gè)主要的網(wǎng)絡(luò)體系:OSI參考模型和TCP/IP參考模型,OSI模型即為通常說(shuō)的7層協(xié)議,它由下向上分別為物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話(huà)層、表示層、應(yīng)用層,而tcp/ip模型中去掉了會(huì)話(huà)層和表示層后,由剩下的5層構(gòu)成了互聯(lián)網(wǎng)的基礎(chǔ),在網(wǎng)絡(luò)的后臺(tái)默默的工作著。
下面我們不妨從tcp/ip模型的角度來(lái)看數(shù)據(jù)包在局域網(wǎng)內(nèi)發(fā)送的過(guò)程:當(dāng)數(shù)據(jù)由應(yīng)用層自上而下的傳遞時(shí),在網(wǎng)絡(luò)層形成ip數(shù)據(jù)報(bào),再向下到達(dá)數(shù)據(jù)鏈路層,由數(shù)據(jù)鏈路層將ip數(shù)據(jù)報(bào)分割為數(shù)據(jù)幀,增加以太網(wǎng)包頭,再向下一層發(fā)送。需要注意的是,以太網(wǎng)的包頭中包含著本機(jī)和目標(biāo)設(shè)備的mac地址,也即,鏈路層的數(shù)據(jù)幀發(fā)送時(shí),是依靠48bits的以太網(wǎng)地址而非ip地址來(lái)確認(rèn)的,以太網(wǎng)的網(wǎng)卡設(shè)備驅(qū)動(dòng)程序不會(huì)關(guān)心ip數(shù)據(jù)報(bào)中的目的ip地址,它所需要的僅僅是mac地址。
目標(biāo)ip的mac地址又是如何獲得的呢?發(fā)端主機(jī)會(huì)向以太網(wǎng)上的每個(gè)主機(jī)發(fā)送一份包含目的地的ip地址的以太網(wǎng)數(shù)據(jù)幀(稱(chēng)為arp數(shù)據(jù)包),并期望目的主機(jī)回復(fù),從而得到目的主機(jī)對(duì)應(yīng)的mac地址,并將這個(gè)mac地址存入自己的一個(gè)arp緩存內(nèi)。
當(dāng)局域網(wǎng)內(nèi)的主機(jī)都通過(guò)HUB等方式連接時(shí),一般都稱(chēng)為共享式的連接,這種共享式的連接有一個(gè)很明顯的特點(diǎn):就是HUB會(huì)將接收到的所有數(shù)據(jù)向HUB上的每個(gè)端口轉(zhuǎn)發(fā),也就是說(shuō)當(dāng)主機(jī)根據(jù)mac地址進(jìn)行數(shù)據(jù)包發(fā)送時(shí),盡管發(fā)送端主機(jī)告知了目標(biāo)主機(jī)的地址,但這并不意味著在一個(gè)網(wǎng)絡(luò)內(nèi)的其他主機(jī)聽(tīng)不到發(fā)送端和接收端之間的通訊,只是在正常狀況下其他主機(jī)會(huì)忽略這些通訊報(bào)文而已!如果這些主機(jī)不愿意忽略這些報(bào)文,網(wǎng)卡被設(shè)置為promiscuous狀態(tài)的話(huà),那么,對(duì)于這臺(tái)主機(jī)的網(wǎng)絡(luò)接口而言,任何在這個(gè)局域網(wǎng)內(nèi)傳輸?shù)男畔⒍际强梢员宦?tīng)到的。#p#
隱患:混雜模式下接收所有信息
我們不妨舉一個(gè)例子來(lái)看看:我們現(xiàn)在有A,B兩臺(tái)主機(jī),通過(guò)hub相連在一個(gè)以太網(wǎng)內(nèi),現(xiàn)在A機(jī)上的一個(gè)用戶(hù)想要訪問(wèn)B機(jī)提供的WWW服務(wù),那么當(dāng)A機(jī)上的用戶(hù)在瀏覽器中鍵入B的ip地址,得到B機(jī)提供的web服務(wù)時(shí),從7層結(jié)構(gòu)的角度上來(lái)看都發(fā)生了什么呢?
1:首先,當(dāng)A上的用戶(hù)在瀏覽器中鍵入B機(jī)的地址,發(fā)出瀏覽請(qǐng)求后,A機(jī)的應(yīng)用層得到請(qǐng)求,要求訪問(wèn)IP地址為B的主機(jī)。
2:應(yīng)用層于是將請(qǐng)求發(fā)送到7層結(jié)構(gòu)中的下一層傳輸層,由傳輸層實(shí)現(xiàn)利用tcp對(duì)ip建立連接。
3:傳輸層將數(shù)據(jù)報(bào)交到下一層網(wǎng)絡(luò)層,由網(wǎng)絡(luò)層來(lái)選路。
4:由于A,B兩機(jī)在一個(gè)共享網(wǎng)絡(luò)中,IP路由選擇很簡(jiǎn)單:IP數(shù)據(jù)報(bào)直接由源主機(jī)發(fā)送到目的主機(jī)。
5:由于A,B兩機(jī)在一個(gè)共享網(wǎng)絡(luò)中,所以A機(jī)必須將32bit的IP地址轉(zhuǎn)換為48bit的以太網(wǎng)地址,請(qǐng)注意這一工作是由arp來(lái)完成的。
6:鏈路層的arp通過(guò)工作在物理層的hub向以太網(wǎng)上的每個(gè)主機(jī)發(fā)送一份包含目的地的ip地址的以太網(wǎng)數(shù)據(jù)幀,在這份請(qǐng)求報(bào)文中申明:誰(shuí)是B機(jī)IP地址的擁有者,請(qǐng)將你的硬件地址告訴我。
7:在同一個(gè)以太網(wǎng)中的每臺(tái)機(jī)器都會(huì)"接收"(請(qǐng)注意這一點(diǎn)?。┑竭@個(gè)報(bào)文,但正常狀態(tài)下除了B機(jī)外其他主機(jī)應(yīng)該會(huì)忽略這個(gè)報(bào)文,而B(niǎo)機(jī)網(wǎng)卡驅(qū)動(dòng)程序識(shí)別出是在尋找自己的ip地址,于是回送一個(gè)arp應(yīng)答,告知自己的ip地址和mac地址。
8:A機(jī)的網(wǎng)卡驅(qū)動(dòng)程序接收到了B機(jī)的數(shù)據(jù)幀,知道了B機(jī)的mac地址,于是以后的數(shù)據(jù)利用這個(gè)已知的MAC地址作為目的地址進(jìn)行發(fā)送。同在一個(gè)局域網(wǎng)內(nèi)的主機(jī)雖然也能"看"到這個(gè)數(shù)據(jù)幀,但是都保持靜默,不會(huì)接收這個(gè)不屬于它的數(shù)據(jù)幀。
上面是一種正常的情況,如果網(wǎng)卡被設(shè)置為為混雜模式(promiscuous),那么第8步就會(huì)發(fā)生變化,這臺(tái)主機(jī)將會(huì)默不作聲的聽(tīng)到以太網(wǎng)內(nèi)傳輸?shù)乃行畔?,也就是說(shuō):竊聽(tīng)也就因此實(shí)現(xiàn)了!這會(huì)給局域網(wǎng)安全帶來(lái)極大的安全問(wèn)題,一臺(tái)系統(tǒng)一旦被入侵并進(jìn)入網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)狀態(tài),那么無(wú)論是本機(jī)還是局域網(wǎng)內(nèi)的各種傳輸數(shù)據(jù)都會(huì)面臨被竊聽(tīng)的巨大可能性。
實(shí)用的網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)工具介紹
上面我們看到,一切的關(guān)鍵就在于網(wǎng)卡被設(shè)置為混雜模式的狀態(tài),這種工作復(fù)雜嗎?不幸的是,這種工作并不復(fù)雜,目前有太多的工具可以做到這一點(diǎn)。自網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)這一技術(shù)誕生以來(lái),產(chǎn)生了大量的可工作在各種平臺(tái)上相關(guān)軟硬件工具,其中有商用的,也有free的。在google上用sniffer tools作為關(guān)鍵字,可以找到非常多。
作者在這里列舉一些作者喜歡的軟件,供有興趣的讀者參考使用。
Windows平臺(tái)下的:
Windump
Windump是最經(jīng)典的unix平臺(tái)上的tcpdump的window移植版,和tcpdump幾乎完全兼容,采用命令行方式運(yùn)行,對(duì)用慣tcpdump的人來(lái)講會(huì)非常順手。目前版本是3.5.2,可運(yùn)行在Windows 95/98/ME/Windows NT/2000/XP平臺(tái)上
Iris
Eeye公司的一款付費(fèi)軟件,有試用期,完全圖形化界面,可以很方便的定制各種截獲控制語(yǔ)句,對(duì)截獲數(shù)據(jù)包進(jìn)行分析,還原等。對(duì)管理員來(lái)講很容易上手,入門(mén)級(jí)和高級(jí)管理員都可以從這個(gè)工具上得到自己想要得東西。運(yùn)行在Windows 95/98/ME/Windows NT/2000/XP平臺(tái)上
unix平臺(tái)下的:
tcpdump
不多說(shuō),最經(jīng)典的工具,被大量的*nix系統(tǒng)采用,無(wú)需多言。
ngrep
和tcpdump類(lèi)似,但與tcpdump最大的不同之處在于,借助于這個(gè)工具,管理員可以很方便的把截獲目標(biāo)定制在用戶(hù)名,口令等感興趣的關(guān)鍵字上。
snort
目前很紅火的免費(fèi)的ids系統(tǒng),除了用作ids以外,被用來(lái)sniffer也非常不錯(cuò),可以借助工具或是依靠自身能力完全還原被截獲的數(shù)據(jù)。
Dsniff
作者設(shè)計(jì)的出發(fā)點(diǎn)是用這個(gè)東西進(jìn)行網(wǎng)絡(luò)滲透測(cè)試,包括一套小巧好用的小工具,主要目標(biāo)放在口令,用戶(hù)訪問(wèn)資源等敏感資料上,非常有特色,工具包中的arpspoof,macof等工具可以令人滿(mǎn)意的捕獲交換機(jī)環(huán)境下的主機(jī)敏感數(shù)據(jù)。
Ettercap
和dsniff在某些方面有相似之處,也可以很方便的工作在交換機(jī)環(huán)境下
提示:國(guó)內(nèi)用戶(hù)訪問(wèn)這個(gè)站點(diǎn)需要使用代理服務(wù)器。
Sniffit
被廣泛使用的網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)軟件,截獲重點(diǎn)在用戶(hù)的輸出。
網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)的防范方法
上面我們介紹了可以用來(lái)進(jìn)行網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)的軟件,那么對(duì)這種不受歡迎的行為,有沒(méi)有一些防范手段呢?
上面我們知道,sniffer是發(fā)生在以太網(wǎng)內(nèi)的,那么,很明顯,首先就要確保以太網(wǎng)的整體安全性,因?yàn)閟niffer行為要想發(fā)生,一個(gè)最重要的前提條件就是以太網(wǎng)內(nèi)部的一臺(tái)有漏洞的主機(jī)被攻破,只有利用被攻破的主機(jī),才能進(jìn)行sniffer,去收集以太網(wǎng)內(nèi)敏感的數(shù)據(jù)信息。
其次,采用加密手段也是一個(gè)很好的辦法,因?yàn)槿绻鹲niffer抓取到的數(shù)據(jù)都是以密文傳輸?shù)模菍?duì)入侵者即使抓取到了傳輸?shù)臄?shù)據(jù)信息,意義也是不大的-比如作為telnet,ftp等安全替代產(chǎn)品目前采用ssh2還是安全的。這是目前相對(duì)而言使用較多的手段之一,在實(shí)際應(yīng)用中往往是指替換掉不安全的采用明文傳輸數(shù)據(jù)的服務(wù),如在server端用ssh,openssh等替換unix系統(tǒng)自帶的telnet,ftp,rsh,在client端使用securecrt,sshtransfer替代telnet,ftp等。
除了加密外,使用交換機(jī)目前也是一個(gè)應(yīng)用比較多的方式,不同于工作在第一層的hub,交換機(jī)是工作在二層,也就是說(shuō)數(shù)據(jù)鏈路層的,以CISCO的交換機(jī)為例,交換機(jī)在工作時(shí)維護(hù)著一張ARP的數(shù)據(jù)庫(kù),在這個(gè)庫(kù)中記錄著交換機(jī)每個(gè)端口綁定的MAC地址,當(dāng)有數(shù)據(jù)報(bào)發(fā)送到交換機(jī)上時(shí),交換機(jī)會(huì)將數(shù)據(jù)報(bào)的目的MAC地址與自己維護(hù)的數(shù)據(jù)庫(kù)內(nèi)的端口對(duì)照,然后將數(shù)據(jù)報(bào)發(fā)送到"相應(yīng)的"端口上,注意,不同于HUB的報(bào)文廣播方式,交換機(jī)轉(zhuǎn)發(fā)的報(bào)文是一一對(duì)應(yīng)的。對(duì)二層設(shè)備而言,僅有兩種情況會(huì)發(fā)送廣播報(bào)文,一是數(shù)據(jù)報(bào)的目的MAC地址不在交換機(jī)維護(hù)的數(shù)據(jù)庫(kù)中,此時(shí)報(bào)文向所有端口轉(zhuǎn)發(fā),二是報(bào)文本身就是廣播報(bào)文。由此,我們可以看到,這在很大程度上解決了網(wǎng)絡(luò)監(jiān)聽(tīng)技術(shù)的困擾。但是有一點(diǎn)要注意,隨著dsniff,ettercap等軟件的出現(xiàn),交換機(jī)的安全性已經(jīng)面臨著嚴(yán)峻的考驗(yàn)!我們將在后面對(duì)這種技術(shù)進(jìn)行介紹。
此外,對(duì)安全性要求比較高的公司可以考慮kerberos,kerberos是一種為網(wǎng)絡(luò)通信提供可信第三方服務(wù)的面向開(kāi)放系統(tǒng)的認(rèn)證機(jī)制,它提供了一種強(qiáng)加密機(jī)制使client端和server即使在非安全的網(wǎng)絡(luò)連接環(huán)境中也能確認(rèn)彼此的身份,而且在雙方通過(guò)身份認(rèn)證后,后續(xù)的所有通訊也是被加密的。在實(shí)現(xiàn)中也即建立可信的第三方服務(wù)器保留與之通訊的系統(tǒng)的密鑰數(shù)據(jù)庫(kù),僅kerberos和與之通訊的系統(tǒng)本身?yè)碛兴借€(private key),然后通過(guò)private key以及認(rèn)證時(shí)創(chuàng)建的session key來(lái)實(shí)現(xiàn)可信的網(wǎng)絡(luò)通訊連接。
【編輯推薦】
- 淺析局域網(wǎng)監(jiān)聽(tīng)技術(shù)
- 淺析如何預(yù)防DDOS攻擊
- 如何防止網(wǎng)絡(luò)監(jiān)聽(tīng)與端口掃描
- ARP病毒攻擊原理及破解方案解析
- 無(wú)線路由器ARP攻擊故障排除方法共享