網絡監聽技術解析

網絡監聽技術是一個發展的比較成熟的技術,但是網絡監聽技術確實是一柄雙刃劍。網絡管理員可以通過網絡監聽技術監管網絡數據傳輸,排除網絡故障。但是網絡監聽技術也往往被***所利用,成爲數據泄露的一大重點威脅。

網絡監聽技術在安全領域引起人們普遍注意是在94年開始的,在那一年2月間,相繼發生了幾次大的安全事件,一個不知名的人在衆多的主機和骨幹網絡設備上安裝了網絡監聽技術軟件,利用它對美國骨幹互聯網和軍方網竊取了超過100000個有效的用戶名和口令。上述事件可能是互聯網上最早期的大規模的網絡監聽技術事件了,它使早期網絡監聽技術從"地下"走向了公開,並迅速的在大衆中普及開來。

關於網絡監聽技術常常會有一些有意思的問題,如:"我現在有連在網上的計算機了,我也有了竊聽的軟件了,那麼我能不能竊聽到微軟(或者美國國防部,新浪網等等)的密碼?

又如:我是公司的局域網管理員,我知道hub很不安全,使用hub這種網絡結構將公司的計算計互連起來,會使網絡監聽技術變得非常容易,那麼我們就換掉hub,使用交換機,不就能解決口令失竊這種安全問題了麼?

這是兩個很有意思的問題,我們在這裏先不做回答,相信讀者看完全文後會有自己正確的答案。

基本概念:認清mac地址和ip地址

首先,我們知道,一臺接在以太網內的計算機爲了和其他主機進行通訊,在硬件上是需要網卡,在軟件上是需要網卡驅動程序的。而每塊網卡在出廠時都有一個唯一的不與世界上任何一塊網卡重複的硬件地址,稱爲mac地址。同時,當網絡中兩臺主機在實現tcp/ip通訊時,網卡還必須綁定一個唯一的ip地址。下面用一個常見的unix命令ifconfig來看一看作者本人的一臺正常工作的機器的網卡:

[yiming@server/root]# ifconfig -a

hme0: flags=863 mtu 1500

inet 192.168.1.35 netmask ffffffe0

ether 8:0:20:c8:fe:15

從這個命令的輸出中我們可以看到上面講到的這些概念,如第二行的192.168.1.35是ip 地址,第三行的8:0:20:c8:fe:15是mac地址。請注意第一行的BROADCAST,MULTICAST,這是什麼意思?一般而言,網卡有幾種接收數據幀的狀態,如unicast,broadcast,multicast,promiscuous等,unicast是指網卡在工作時接收目的地址是本機硬件地址的數據幀。Broadcast是指接收所有類型爲廣播報文的數據幀。Multicast是指接收特定的組播報文。Promiscuous則是通常說的混雜模式,是指對報文中的目的硬件地址不加任何檢查,全部接收的工作模式。對照這幾個概念,看看上面的命令輸出,我們可以看到,正常的網卡應該只是接收發往自身的數據報文,廣播和組播報文,請大家記住這個概念。

對網絡使用者來說,瀏覽網頁,收發郵件等都是很平常,很簡便的工作,其實在後臺這些工作是依靠tcp/ip協議族實現的,大家知道有兩個主要的網絡體系:OSI參考模型和TCP/IP參考模型,OSI模型即爲通常說的7層協議,它由下向上分別爲物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層,而tcp/ip模型中去掉了會話層和表示層後,由剩下的5層構成了互聯網的基礎,在網絡的後臺默默的工作着。

下面我們不妨從tcp/ip模型的角度來看數據包在局域網內發送的過程:當數據由應用層自上而下的傳遞時,在網絡層形成ip數據報,再向下到達數據鏈路層,由數據鏈路層將ip數據報分割爲數據幀,增加以太網包頭,再向下一層發送。需要注意的是,以太網的包頭中包含着本機和目標設備的mac地址,也即,鏈路層的數據幀發送時,是依靠48bits的以太網地址而非ip地址來確認的,以太網的網卡設備驅動程序不會關心ip數據報中的目的ip地址,它所需要的僅僅是mac地址。

目標ip的mac地址又是如何獲得的呢?發端主機會向以太網上的每個主機發送一份包含目的地的ip地址的以太網數據幀(稱爲arp數據包),並期望目的主機回覆,從而得到目的主機對應的mac地址,並將這個mac地址存入自己的一個arp緩存內。

當局域網內的主機都通過HUB等方式連接時,一般都稱爲共享式的連接,這種共享式的連接有一個很明顯的特點:就是HUB會將接收到的所有數據向HUB上的每個端口轉發,也就是說當主機根據mac地址進行數據包發送時,儘管發送端主機告知了目標主機的地址,但這並不意味着在一個網絡內的其他主機聽不到發送端和接收端之間的通訊,只是在正常狀況下其他主機會忽略這些通訊報文而已!如果這些主機不願意忽略這些報文,網卡被設置爲promiscuous狀態的話,那麼,對於這臺主機的網絡接口而言,任何在這個局域網內傳輸的信息都是可以被聽到的。

隱患:混雜模式下接收所有信息

我們不妨舉一個例子來看看:我們現在有A,B兩臺主機,通過hub相連在一個以太網內,現在A機上的一個用戶想要訪問B機提供的WWW服務,那麼當A機上的用戶在瀏覽器中鍵入B的ip地址,得到B機提供的web服務時,從7層結構的角度上來看都發生了什麼呢?

1:首先,當A上的用戶在瀏覽器中鍵入B機的地址,發出瀏覽請求後,A機的應用層得到請求,要求訪問IP地址爲B的主機。

2:應用層於是將請求發送到7層結構中的下一層傳輸層,由傳輸層實現利用tcp對ip建立連接。

3:傳輸層將數據報交到下一層網絡層,由網絡層來選路。

4:由於A,B兩機在一個共享網絡中,IP路由選擇很簡單:IP數據報直接由源主機發送到目的主機。

5:由於A,B兩機在一個共享網絡中,所以A機必須將32bit的IP地址轉換爲48bit的以太網地址,請注意這一工作是由arp來完成的。

6:鏈路層的arp通過工作在物理層的hub向以太網上的每個主機發送一份包含目的地的ip地址的以太網數據幀,在這份請求報文中申明:誰是B機IP地址的擁有者,請將你的硬件地址告訴我。

7:在同一個以太網中的每臺機器都會"接收"(請注意這一點!)到這個報文,但正常狀態下除了B機外其他主機應該會忽略這個報文,而B機網卡驅動程序識別出是在尋找自己的ip地址,於是回送一個arp應答,告知自己的ip地址和mac地址。

8:A機的網卡驅動程序接收到了B機的數據幀,知道了B機的mac地址,於是以後的數據利用這個已知的MAC地址作爲目的地址進行發送。同在一個局域網內的主機雖然也能"看"到這個數據幀,但是都保持靜默,不會接收這個不屬於它的數據幀。

上面是一種正常的情況,如果網卡被設置爲爲混雜模式(promiscuous),那麼第8步就會發生變化,這臺主機將會默不作聲的聽到以太網內傳輸的所有信息,也就是說:竊聽也就因此實現了!這會給局域網安全帶來極大的安全問題,一臺系統一旦被***並進入網絡監聽技術狀態,那麼無論是本機還是局域網內的各種傳輸數據都會面臨被竊聽的巨大可能性。

實用的網絡監聽技術工具介紹

上面我們看到,一切的關鍵就在於網卡被設置爲混雜模式的狀態,這種工作複雜嗎?不幸的是,這種工作並不複雜,目前有太多的工具可以做到這一點。自網絡監聽技術這一技術誕生以來,產生了大量的可工作在各種平臺上相關軟硬件工具,其中有商用的,也有free的。在google上用sniffer tools作爲關鍵字,可以找到非常多。

作者在這裏列舉一些作者喜歡的軟件,供有興趣的讀者參考使用。

Windows平臺下的:

Windump

Windump是最經典的unix平臺上的tcpdump的window移植版,和tcpdump幾乎完全兼容,採用命令行方式運行,對用慣tcpdump的人來講會非常順手。目前版本是3.5.2,可運行在Windows 95/98/ME/Windows NT/2000/XP平臺上

Iris

Eeye公司的一款付費軟件,有試用期,完全圖形化界面,可以很方便的定製各種截獲控制語句,對截獲數據包進行分析,還原等。對管理員來講很容易上手,入門級和高級管理員都可以從這個工具上得到自己想要得東西。運行在Windows 95/98/ME/Windows NT/2000/XP平臺上

unix平臺下的:

tcpdump

不多說,最經典的工具,被大量的*nix系統採用,無需多言。

ngrep

和tcpdump類似,但與tcpdump最大的不同之處在於,藉助於這個工具,管理員可以很方便的把截獲目標定製在用戶名,口令等感興趣的關鍵字上。

snort

目前很紅火的免費的ids系統,除了用作ids以外,被用來sniffer也非常不錯,可以藉助工具或是依靠自身能力完全還原被截獲的數據。

Dsniff

作者設計的出發點是用這個東西進行網絡***測試,包括一套小巧好用的小工具,主要目標放在口令,用戶訪問資源等敏感資料上,非常有特色,工具包中的arpspoof,macof等工具可以令人滿意的捕獲交換機環境下的主機敏感數據。

Ettercap

和dsniff在某些方面有相似之處,也可以很方便的工作在交換機環境下

提示:國內用戶訪問這個站點需要使用代理服務器。

Sniffit

被廣泛使用的網絡監聽技術軟件,截獲重點在用戶的輸出。

網絡監聽技術的防範方法

上面我們介紹了可以用來進行網絡監聽技術的軟件,那麼對這種不受歡迎的行爲,有沒有一些防範手段呢?

上面我們知道,sniffer是發生在以太網內的,那麼,很明顯,首先就要確保以太網的整體安全性,因爲sniffer行爲要想發生,一個最重要的前提條件就是以太網內部的一臺有漏洞的主機被攻破,只有利用被攻破的主機,才能進行sniffer,去收集以太網內敏感的數據信息。

其次,採用加密手段也是一個很好的辦法,因爲如果sniffer抓取到的數據都是以密文傳輸的,那對***者即使抓取到了傳輸的數據信息,意義也是不大的-比如作爲telnet,ftp等安全替代產品目前採用ssh2還是安全的。這是目前相對而言使用較多的手段之一,在實際應用中往往是指替換掉不安全的採用明文傳輸數據的服務,如在server端用ssh,openssh等替換unix系統自帶的telnet,ftp,rsh,在client端使用securecrt,sshtransfer替代telnet,ftp等。

除了加密外,使用交換機目前也是一個應用比較多的方式,不同於工作在第一層的hub,交換機是工作在二層,也就是說數據鏈路層的,以CISCO的交換機爲例,交換機在工作時維護着一張ARP的數據庫,在這個庫中記錄着交換機每個端口綁定的MAC地址,當有數據報發送到交換機上時,交換機會將數據報的目的MAC地址與自己維護的數據庫內的端口對照,然後將數據報發送到"相應的"端口上,注意,不同於HUB的報文廣播方式,交換機轉發的報文是一一對應的。對二層設備而言,僅有兩種情況會發送廣播報文,一是數據報的目的MAC地址不在交換機維護的數據庫中,此時報文向所有端口轉發,二是報文本身就是廣播報文。由此,我們可以看到,這在很大程度上解決了網絡監聽技術的困擾。但是有一點要注意,隨着dsniff,ettercap等軟件的出現,交換機的安全性已經面臨着嚴峻的考驗!我們將在後面對這種技術進行介紹。

此外,對安全性要求比較高的公司可以考慮kerberos,kerberos是一種爲網絡通信提供可信第三方服務的面向開放系統的認證機制,它提供了一種強加密機制使client端和server即使在非安全的網絡連接環境中也能確認彼此的身份,而且在雙方通過身份認證後,後續的所有通訊也是被加密的。在實現中也即建立可信的第三方服務器保留與之通訊的系統的密鑰數據庫,僅kerberos和與之通訊的系統本身擁有私鑰(private key),然後通過private key以及認證時創建的session key來實現可信的網絡通訊連接。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章