簡介
你是網路管理員嗎?你是不是有過這樣的經歷:在某一天的早上你突然發現網路性能急劇下降,網路服務不能正常提供,伺服器訪問速度極慢甚至不能訪問,網路交換機連線埠指示燈瘋狂地閃爍、網路出口處的路由器已經處於滿負荷的工作狀態、路由器CPU已經到了百分之百的負荷……重啟動後沒有幾分鐘現象又重新出現了。
這是什麼問題?設備壞了嗎?不可能幾台設備同時出問題。一定是有什麼大流量的數據檔案,耗盡了網路設備的資源,它們是什麼?怎么看到它們?這時有經驗的網管人員會想到用區域網路抓包工具來分析一下。
你一定聽說過紅色代碼、Nimda、衝擊波以及震盪波這些臭名昭著的網路殺手。就是它們製造了上述種種惡行。它們來勢洶洶,阻塞網路、感染主機,讓網路管理員苦不堪言。當網路病毒出現時,如何才能及時發現染毒主機?下面我根據網路病毒都有掃描網路地址的特點,給大家介紹一個很實用的方法:用抓包工具尋找病毒源。
方法
安裝工具
目的就是用它分析網路數據包的內容。找一個免費的或者試用版的抓包工具並不難。我使用了一種叫做SpyNet3.12 的抓包工具,非常小巧, 運行的速度也很快。安裝完畢後我們就有了一台抓包主機。你可以通過SpyNet設定抓包的類型,比如是要捕獲IP包還是ARP包,還可以根據目的地址的不同,設定更詳細的過濾參數。
配置網路路由
你的路由器有預設網關嗎?如果有,指向了哪裡?在病毒爆發的時候把預設網關指向另外一台路由器是很危險的(除非你想搞癱這台路由器)。在一些企業網裡往往僅指出網內地址段的路由,而不加預設路由,那么就把預設路由指到抓包主機上吧(它不下地獄誰下地獄?當然這台主機的性能最好是高一點的,否則很容易被病毒衝擊而亡)。這樣可以讓那些病毒主機發出的絕大部分掃描都自動送上門來。或者把網路的出口映像到抓包主機上,所有對外訪問的網路包都會被分析到。
開始
抓包主機已經設定好了,網路里的數據包也已經送過來了,那么我們看看網路里傳輸的到底是些什麼。打開SpyNet 點擊Capture 你會看到好多的數據顯示出來,這些就是被捕獲的數據包。
圖中的主體視窗里顯示了抓包的情況。列出了抓到數據包的序號、時間、源目的MAC地址、源目的IP位址、協定類型、源目的連線埠號等內容。很容易看出IP位址為10.32.20.71的主機在極短的時間內向大量的不同主機發出了訪問請求,並且目的連線埠都是445。
找出染毒主機
從抓包的情況看,主機10.32.20.71值得懷疑。首先我們看一下目的IP位址,這些地址我們網路里存在嗎?很可能網路里根本就沒有這些網段。其次,正常情況下訪問主機有可能在這么短的時間裡發起這么多的訪問請求嗎?在毫秒級的時間內發出幾十甚至幾百個連線請求,正常嗎?顯然這台10.32.20.71的主機肯定有問題。再了解一下Microsoft-DS協定,該協定存在拒絕服務攻擊的漏洞,連線連線埠是445,從而進一步證實了我們的判斷。這樣我們就很容易地找到了染毒主機的IP位址。剩下的工作就是給該主機作業系統打補丁殺病毒了。
既然抓到了病毒包,我們看一下這個數據包二進制的解碼內容:
這些數據包的長度都是62個位元組。數據包前12個位元組包括了目的MAC和源MAC的地址信息,緊跟著的2位元組指出了數據包的類型,0800代表的是IP包格式,0806代表ARP包格式。接著的20個位元組是封裝的IP包頭,包括了源、目的IP位址、IP版本號等信息。剩下的28個位元組封裝的是TCP包頭,包括了源、目的連線埠,TCP連結的狀態信息等。這就構成了一個62位元組的包。可以看出除了這些包頭數據之外,這個包沒有攜帶其他任何的有效數據負荷,所以這是一個TCP要求445連線埠同步的空包,也就是病毒主機在掃描445連線埠。一旦染毒主機同步上沒有採取防護措施的主機445連線埠,便會利用系統漏洞傳播感染。
抓包
在實際語言套用中 還有露餡 被別人當場抓到的意思
英文名稱為Sniffer,中文可以翻譯為嗅探器,是一種威脅性極大的被動攻擊工具。使用這種工具,可以監視網路的狀態、數據流動情況以及網路上傳輸的信息。當信息以明文的形式在網路上傳輸時,便可以使用網路監聽的方式來進行攻擊。將網路接口設定在監聽模式,便可以將網上傳輸的源源不斷的信息截獲。黑客們常常用它來截獲用戶的口令。據說某個骨幹網路的路由器曾經被黑客攻入,並嗅探到大量的用戶口令。本文將詳細介紹Sniffer的原理和套用。
原理
Sniffer原理
1.網路技術與設備簡介
在講述Sniffer的概念之前,首先需要講述區域網路設備的一些基本概念。
數據在網路上是以很小的稱為幀(Frame)的單位傳輸的,幀由幾部分組成,不同的部分執行不同的功能。幀通過特定的稱為網路驅動程式的軟體進行成型,然後通過網卡傳送到網線上,通過網線到達它們的目的機器,在目的機器的一端執行相反的過程。接收端機器的乙太網卡捕獲到這些幀,並告訴作業系統幀已到達,然後對其進行存儲。就是在這個傳輸和接收的過程中,嗅探器會帶來安全方面的問題。
每一個在區域網路(LAN)上的工作站都有其硬體地址,這些地址惟一地表示了網路上的機器(這一點與Internet地址系統比較相似)。當用戶傳送一個數據包時,如果為廣播包,則可達到區域網路中的所有機器,如果為單播包,則只能到達處於同一碰撞域中的機器。
在一般情況下,網路上所有的機器都可以“聽”到通過的流量,但對不屬於自己的數據包則不予回響(換句話說,工作站A不會捕獲屬於工作站B的數據,而是簡單地忽略這些數據)。如果某個工作站的網路接口處於混雜模式(關於混雜模式的概念會在後面解釋),那么它就可以捕獲網路上所有的數據包和幀。
網路監聽原理
Sniffer程式是一種利用乙太網的特性把網路適配卡(NIC,一般為乙太網卡)置為雜亂(promiscuous)模式狀態的工具,一旦網卡設定為這種模式,它就能接收傳輸在網路上的每一個信息包。
普通的情況下,網卡只接收和自己的地址有關的信息包,即傳輸到本地主機的信息包。要使Sniffer能接收並處理這種方式的信息,系統需要支持BPF,Linux下需要支持SOCKET一PACKET。但一般情況下,網路硬體和TCP/IP堆疊不支持接收或者傳送與本地計算機無關的數據包,所以,為了繞過標準的TCP/IP堆疊,網卡就必須設定為我們剛開始講的混雜模式。一般情況下,要激活這種方式,核心必須支持這種偽設備Bpfilter,而且需要root許可權來運行這種程式,所以sniffer需要root身份安裝,如果只是以本地用戶的身份進入了系統,那么不可能喚探到root的密碼,因為不能運行Sniffer。
基於Sniffer這樣的模式,可以分析各種信息包並描述出網路的結構和使用的機器,由於它接收任何一個在同一網段上傳輸的數據包,所以也就存在著捕獲密碼、各種信息、秘密文檔等一些沒有加密的信息的可能性。這成為黑客們常用的擴大戰果的方法,用來奪取其他主機的控制權
Sniffer的分類
Sniffer分為軟體和硬體兩種,軟體的Sniffer有 NetXray、Packetboy、Net monitor等,其優點是物美價廉,易於學習使用,同時也易於交流;缺點是無法抓取網路上所有的傳輸,某些情況下也就無法真正了解網路的故障和運行情況。硬體的Sniffer通常稱為協定分析儀,一般都是商業性的,價格也比較貴。
實際上本文中所講的Sniffer指的是軟體。它把包抓取下來,然後打開並查看其中的內容,可以得到密碼等。Sniffer只能抓取一個物理網段內的包,就是說,你和監聽的目標中間不能有路由或其他禁止廣播包的設備,這一點很重要。所以,對一般撥接的用戶來說,是不可能利用Sniffer來竊聽到其他人的通信內容的。
網路監聽的目的
當一個黑客成功地攻陷了一台主機,並拿到了root許可權,而且還想利用這台主機去攻擊同一網段上的其他主機時,他就會在這台主機上安裝Sniffer軟體,對乙太網設備上傳送的數據包進行偵聽,從而發現感興趣的包。如果發現符合條件的包,就把它存到一個LOg檔案中去。通常設定的這些條件是包含字“username”或“password”的包,這樣的包裡面通常有黑客感興趣的密碼之類的東西。一旦黑客截獲得了某台主機的密碼,他就會立刻進入這台主機。
如果Sniffer運行在路由器上或有路由功能的主機上,就能對大量的數據進行監控,因為所有進出網路的數據包都要經過路由器。
Sniffer屬於第M層次的攻擊。就是說,只有在攻擊者已經進入了目標系統的情況下,才能使用Sniffer這種攻擊手段,以便得到更多的信息。
Sniffer除了能得到口令或用戶名外,還能得到更多的其他信息,比如一個重要的信息、在網上傳送的金融信息等等。Sniffer幾乎能得到任何在乙太網上傳送的數據包。
Sniffer是一種比較複雜的攻擊手段,一般只有黑客老手才有能力使用它,而對於一個網路新手來說,即使在一台主機上成功地編譯並運行了Sniffer,一般也不會得到什麼有用的信息,因為通常網路上的信息流量是相當大的,如果不加選擇地接收所有的包,然後從中找到所需要的信息非常困難;而且,如果長時間進行監聽,還有可能把放置Sniffer的機器的硬碟撐爆。