歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> Linux文化

深入學習Linux下的網絡監聽技術


前言:

在網絡中,當信息進行傳播的時候,可以利用工具,將網絡接口設置在監聽的模式,便可將網絡中正在傳播的信息截獲或者捕獲到,從而進行攻擊。網絡監聽在網絡中的任何一個位置模式下都可實施行。而黑客一般都是利用網絡監聽來截取用戶口令。比如當有人占領了一台主機之後,那麼他要再想進將戰果擴大到這個主機所在的整個局域網話,監聽往往是他們選擇的捷徑。很多時候我在各類安全論壇上看到一些初學的愛好者,在他們認為如果占領了某主機之後那麼想進入它的內部網應該是很簡單的。其實非也,進入了某主機再想轉入它的內部網絡裡的其它機器也都不是一件容易的事情。因為你除了要拿到他們的口令之外還有就是他們共享的絕對路徑,當然了,這個路徑的盡頭必須是有寫的權限了。在這個時候,運行已經被控制的主機上的監聽程序就會有大收效。不過卻是一件費神的事情,而且還需要當事者有足夠的耐心和應變能力。主要包括:

數據幀的截獲

對數據幀的分析歸類

dos攻擊的檢測和預防

IP冒用的檢測和攻擊

在網絡檢測上的應用

對垃圾郵件的初步過濾

研究的意義:

1)我國的網絡正在快速發展中,相應的問題也就顯現出來,網絡管理及相應應用自然將越發重要,而監聽技術正是網絡管理和應用的基礎,其意義當然重要,放眼當前相關工具linux 有snort tcpdump ,snift 等,window 有nexray, sniffer等五一不是國外軟件,隨著中國網絡的發展,監聽系統必將大有用武之地,因此監聽技術的研究已是時事的要求。

2)為什麼選擇linux 作為環境?中國入世,各種針對盜版的打擊力度和對於正版軟件的保護力度都將大大加強,windows的盜版軟件隨處可見的現象將會一去不返,面對這樣的情況,大部分的公司只有兩種選擇:要麼花大價錢向微軟購買正版軟件,要麼是用自由操作系統linux,特別是重要部門,如國家機關,政府部門,難道要把自己的辦公系統操縱在國外大公司手裡?北京的政府辦公系統已經轉用紅旗linux,而且linux的界面也在不但的改進,更加友好易操作,我們有理由相信.linux將在我國大有作為,這也是研究Linux 下網絡監聽的原因。

關於Linux下網絡監聽技術主要有兩個要點:

1)如何盡可能完整的截取網絡上的數據幀,因為以太網上每時每刻都可能有信息傳遞,而且根據以太網的規模不同網絡上的信息量也變化不大,所以截取數據幀不僅要保證數據幀的完整,而且還要考慮到如何才能減少漏截取數據幀。

2)就是對截取的數據幀的過濾分析,所謂監聽當然要“聽”得懂才行,所以把截取的數據幀翻譯成我們能用的數據,監聽才算成功。

網絡監聽的原理

Ethernet協議的工作方式是將要發送的數據包發往連接在一起的所有主機。在包頭中包括有應該接收數據包的主機的正確地址,因為只有與數據包中目標地址一致的那台主機才能接收到信息包,但是當主機工作在監聽模式下的話不管數據包中的目標物理地址是什麼,主機都將可以接收到。許多局域網內有十幾台甚至上百台主機是通過一個電纜、一個集線器連接在一起的,在協議的高層或者用戶來看,當同一網絡中的兩台主機通信的時候,源主機將寫有目的的主機地址的數據包直接發向目的主機,或者當網絡中的一台主機同外界的主機通信時,源主機將寫有目的的主機IP地址的數據包發向網關。但這種數據包並不能在協議棧的高層直接發送出去,要發送的數據包必須從TCP/IP協議的IP層交給網絡接口,也就是所說的數據鏈路層。網絡接口不會識別IP地址的。在網絡接口由IP層來的帶有IP地址的數據包又增加了一部分以太祯的祯頭的信息。在祯頭中,有兩個域分別為只有網絡接口才能識別的源主機和目的主機的物理地址這是一個48位的地址,這個48位的地址是與IP地址相對應的,換句話說就是一個IP地址也會對應一個物理地址。對於作為網關的主機,由於它連接了多個網絡,它也就同時具備有很多個IP地址,在每個網絡中它都有一個。而發向網絡外的祯中繼攜帶的就是網關的物理地址。

Ethernet中填寫了物理地址的祯從網絡接口中,也就是從網卡中發送出去傳送到物理的線路上。如果局域網是由一條粗網或細網連接成的,那麼數字信號在電纜上傳輸信號就能夠到達線路上的每一台主機。再當使用集線器的時候,發送出去的信號到達集線器,由集線器再發向連接在集線器上的每一條線路。這樣在物理線路上傳輸的數字信號也就能到達連接在集線器上的每個主機了。當數字信號到達一台主機的網絡接口時,正常狀態下網絡接口對讀入數據祯進行檢查,如果數據祯中攜帶的物理地址是自己的或者物理地址是廣播地址,那麼就會將數據祯交給IP層軟件。對於每個到達網絡接口的數據祯都要進行這個過程的。但是當主機工作在監聽模式下的話,所有的數據祯都將被交給上層協議軟件處理。

當連接在同一條電纜或集線器上的主機被邏輯地分為幾個子網的時候,那麼要是有一台主機處於監聽模式,它還將可以接收到發向與自己不在同一個子網(使用了不同的掩碼、IP地址和網關)的主機的數據包,在同一個物理信道上傳輸的所有信息都可以被接收到。

在UNIX系統上,當擁有超級權限的用戶要想使自己所控制的主機進入監聽模式,只需要向Interface(網絡接口)發送I/O控制命令,就可以使主機設置成監聽模式了。而在Windows9x的系統中則不論用戶是否有權限都將可以通過直接運行監聽工具就可以實現了。

在網絡監聽時,常常要保存大量的信息(也包含很多的垃圾信息),並將對收集的信息進行大量的整理,這樣就會使正在監聽的機器對其它用戶的請求響應變的很慢。同時監聽程序在運行的時候需要消耗大量的處理器時間,如果在這個時候就詳細的分析包中的內容,許多包就會來不及接收而被漏走。所以監聽程序很多時候就會將監聽得到的包存放在文件中等待以後分析。分析監聽到的數據包是很頭疼的事情。因為網絡中的數據包都非常之復雜。兩台主機之間連續發送和接收數據包,在監聽到的結果中必然會加一些別的主機交互的數據包。監聽程序將同一TCP會話的包整理到一起就相當不容易了,如果你還期望將用戶詳細信息整理出來就需要根據協議對包進行大量的分析。Internet上那麼多的協議,運行進起的話這個監聽程序將會十分的大哦。

現在網絡中所使用的協議都是較早前設計的,許多協議的實現都是基於一種非常友好的,通信的雙方充分信任的基礎。在通常的網絡環境之下,用戶的信息包括口令都是以明文的方式在網上傳輸的,因此進行網絡監聽從而獲得用戶信息並不是一件難點事情,只要掌握有初步的TCP/IP協議知識就可以輕松的監聽到你想要的信息的。前些時間美籍華人China-babble曾提出將望路監聽從局域網延伸到廣域網中,但這個想法很快就被否定了。如果真是這樣的話我想網絡必將天下大亂了。而事實上現在在廣域網裡也可以監聽和截獲到一些用戶信息。只是還不夠明顯而已。在整個Internet中就更顯得微不足道了。

監聽的協議分析

我們的研究從監聽程序的編寫開始,用Linux C語言設計實現。

以太網上數據幀的監聽剖析

以太網上的數據幀主要涉及Tcp/ip協議,針對以下幾個協議的分析:IP,ARP,RARP,IPX,其中重點在於ip和 arp協議,這兩個協議是多數網絡協議的基礎,因此把他們研究徹底,就對大多數的協議的原理和特性比較清楚了。 由於各種協議的數據幀個不相同,所以涉及很多的數據幀頭格式分析,接下來將一一描述。

在linux 下監聽網絡,應先設置網卡狀態,使其處於雜混模式以便監聽網絡上的所有數據幀。然後選擇用Linux socket 來截取數據幀,通過設置socket() 函數參數值,可以使socket截取未處理的網絡數據幀,關鍵是函數的參數設置,下面就是有關的程序部分:

if ( ( fd=socket (AF_INET, SOCK_PACKET,htons(0x0003)))

Copyright © Linux教程網 All Rights Reserved