網路監聽攻擊技術

et上那么多的協定,運行進起的話這個監聽程式將會十分的大喔。 g它,這樣正在運行的監聽程式就會做出回響的。 要是網路接口運行這樣的模式之下,那么很有可能正在受到監聽程式的攻擊。

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

█網路監聽的原理

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中就更顯得微不足道了。

下面是一些系統中的著名的監聽程式,你可以自己嘗試一下的。

Windows9x/NT NetXray http://semxa.kstar.com/hacking/netxray.zip

DEC Unix/Linux Tcpdump http://semxa.kstar.com/hacking/management.zip

Solaris Nfswatch http://semxa.kstar.com/hacking/nfswatch.zip

SunOS Etherfind http://semxa.kstar.com/hacking/etherfind012.zip

█檢測網路監聽的方法

網路監聽在上述中已經說明了。它是為了系統管理員管理網路,監視網路狀態和數據流動而設計的。但是由於它有著截獲網路數據的功能所以也是黑客所慣用的伎倆之一。

一般檢測網路監聽的方法通過以下來進行:

?網路監聽說真的,是很難被發現的。當運行監聽程式的主機在進聽的過程中只是被動的接收在乙太網中傳輸的信息,它不會跟其它的主機交換信息的,也不能修改在網路中傳輸的信息包。這就說明了網路監聽的檢測是比較麻煩的事情。

一般情況下可以通過ps-ef或者ps-aux來檢測。但大多實施監聽程式的人都會通過修改ps的命令來防止被ps-ef的。修改ps只需要幾個shell把監聽程式的名稱過濾掉就OK了。一能做到啟動監聽程式的人也絕對不是個菜的連這個都不懂的人了,除非是他懶。

上邊提到過。當運行監聽程式的時候主機回響一般會受到影響變的會慢,所以也就有人提出來通過回響的速率來判斷是否受到監聽。如果真是這樣判斷的話我想世界真的會大亂了,說不準一個時間段內會發現無數個監聽程式在運行呢。呵呵。

如果說當你懷疑網內某太機器正在實施監聽程式的話(怎么個懷疑?那要看你自己了),可以用正確的IP位址和錯誤的物理地址去ping它,這樣正在運行的監聽程式就會做出回響的。這是因為正常的機器一般不接收錯誤的物理地址的ping信息的。但正在進聽的機器就可以接收,要是它的IP stack不再次反向檢查的話就會回響的。不過這種方法對很多系統是沒效果的,因為它依賴於系統的IP stack。

另一種就是向網上發大量不存在的物理地址的包,而監聽程式往往就會將這些包進行處理,這樣就會導致機器性能下降,你可以用icmp echo delay來判斷和比較它。還可以通過搜尋網內所有主機上運行的程式,但這樣做其的難度可想而知,因為這樣不但是大的工作量,而且還不能完全同時檢查所有主機上的進程。可是如果管理員這樣做也會有很大的必要性,那就是可以確定是否有一個進程是從管理員機器上啟動的。

在Unix中可以通過ps –Aun或ps –augx命令產生一個包括所有進程的清單:進程的屬主和這些進程占用的處理器時間和記憶體等。這些以標準表的形式輸出在STDOUT上。如果某一個進程正在運行,那么它將會列在這張清單之中。但很多黑客在運行監聽程式的時候會毫不客氣的把ps或其它運行中的程式修改成Trojan horse程式,因為他完全可以做到這一點的。如果真是這樣那么上述辦法就不會有結果的。但這樣做在一定程度上還是有所作為的。在Unix和Windows NT上很容易就能得到當前進程的清單了。但DOS、Windows9x好象很難做到喔,具體是不是我沒測試過不得而知。

還有一種方式,這種方式要靠足夠的運氣。因為往往黑客所用的監聽程式大都是免費在網上得到的,他並非專業監聽。所以做為管理員用來搜尋監聽程式也可以檢測。使用Unix可以寫這么一個搜尋的小工具了,不然的話要累死人的。呵呵。

有個叫Ifstatus的運行在Unix下的工具,它可以識別出網路接口是否正處於調試狀態下或者是在進聽裝下。要是網路接口運行這樣的模式之下,那么很有可能正在受到監聽程式的攻擊。Ifstatus一般情況下不會產生任何輸出的,當它檢測到網路的接口處於監聽模式下的時候才回輸出。管理員可以將系統的cron參數設定成定期運行Ifstatus,如果有好的cron進程的話可以將它產生的輸出用mail傳送給正在執行cron任務的人,要實現可以在crontab目錄下加****/usr/local/etc/ifstatus一行參數。這樣不行的話還可以用一個腳本程式在crontab下00****/usr/local/etc/run-ifstatus。

抵禦監聽其實要看哪個方面了。一般情況下監聽只是對用戶口令信息比較敏感一點(沒有無聊的黑客去監聽兩台機器間的聊天信息的那是個浪費時間的事情)。所以對用戶信息和口令信息進行加密是完全有必要的。防止以明文傳輸而被監聽到。現代網路中,SSH(一種在套用環境中提供保密通信的協定)通信協定一直都被沿用,SSH所使用的連線埠是22,它排除了在不安全信道上通信的信息,被監聽的可能性使用到了RAS算法,在授權過程結束後,所有的傳輸都用IDEA技術加密。但SSH並不就是完全安全的。至少現在我們可以這么大膽評論了。

█著名的Sniffer監聽工具

Sniffer之所以著名,權因它在很多方面都做的很好,它可以監聽到(甚至是聽、看到)網上傳輸的所有信息。Sniffer可以是硬體也可以是軟體。主要用來接收在網路上傳輸的信息。網路是可以運行在各種協定之下的,包括乙太網Ethernet、TCP/IP、ZPX等等,也可以是集中協定的聯合體系。

Sniffer是個非常之危險的東西,它可以截獲口令,可以截獲到本來是秘密的或者專用信道內的信息,截獲到信用卡號,經濟數據,E-mail等等。更加可以用來攻擊與己相臨的網路。

Sniffer可以使用在任何一種平台之中。而現在使用Sniffer也不可能別發現,這個足夠是對網路安全的最嚴重的挑戰。

在Sniffer中,還有“熱心人”編寫了它的plugin,稱為TOD殺手,可以將TCP的連線完全切斷。總之Sniffer應該引起人們的重視,否則安全永遠做不到最好。

如果你只是想用來研究的話可以在這裡http://semxa.kstar.com/hacking/sniffer260.zip找到一個經過我漢化的Sniffer程式工具。

熱門詞條

聯絡我們