在網(wǎng)絡(luò)中,當(dāng)信息進(jìn)行傳播的時(shí)候,可以利用工具,將網(wǎng)絡(luò)接口設(shè)置在監(jiān)聽(tīng)的模式,便可將網(wǎng)絡(luò)中正在傳播的信息截獲或者捕獲到,從而進(jìn)行攻擊。網(wǎng)絡(luò)監(jiān)聽(tīng)在網(wǎng)絡(luò)中的任何一個(gè)位置模式下都可實(shí)施進(jìn)行。而黑客一般都是利用網(wǎng)絡(luò)監(jiān)聽(tīng)來(lái)截取用戶口令。比如當(dāng)有人占領(lǐng)了一臺(tái)主機(jī)之后,那么他要再想將戰(zhàn)果擴(kuò)大到這個(gè)主機(jī)所在的整個(gè)局域網(wǎng)話,監(jiān)聽(tīng)往往是他們選擇的捷徑。很多時(shí)候我在各類安全論壇上看到一些初學(xué)的愛(ài)好者,在他們認(rèn)為如果占領(lǐng)了某主機(jī)之后那么想進(jìn)入它的內(nèi)部網(wǎng)應(yīng)該是很簡(jiǎn)單的。其實(shí)非也,進(jìn)入了某主機(jī)再想轉(zhuǎn)入它的內(nèi)部網(wǎng)絡(luò)里的其它機(jī)器也都不是一件容易的事情。因?yàn)槟愠艘玫剿麄兊目诹钪膺€有就是他們共享的絕對(duì)路徑,當(dāng)然了,這個(gè)路徑的盡頭必須是有寫的權(quán)限了。在這個(gè)時(shí)候,運(yùn)行已經(jīng)被控制的主機(jī)上的監(jiān)聽(tīng)程序就會(huì)有大收效。不過(guò)卻是一件費(fèi)神的事情,而且還需要當(dāng)事者有足夠的耐心和應(yīng)變能力。
6 K2 v c [- w$ W6 y: A- h1 L) P" p8 H+ G4 W: j& j _( O
█網(wǎng)絡(luò)監(jiān)聽(tīng)的原理( _# Z% q- [+ \; Y2 z6 R* T$ }
& d' s; x' ?& j! d
Ethernet(以太網(wǎng),它是由施樂(lè)公司發(fā)明的一種比較流行的局域網(wǎng)技術(shù),它包含一條所有計(jì)算機(jī)都連接到其上的一條電纜,每臺(tái)計(jì)算機(jī)需要一種叫接口板的硬件才能連接到以太網(wǎng))協(xié)議的工作方式是將要發(fā)送的數(shù)據(jù)包發(fā)往連接在一起的所有主機(jī)。在包頭中包括有應(yīng)該接收數(shù)據(jù)包的主機(jī)的正確地址,因?yàn)橹挥信c數(shù)據(jù)包中目標(biāo)地址一致的那臺(tái)主機(jī)才能接收到信息包,但是當(dāng)主機(jī)工作在監(jiān)聽(tīng)模式下的話不管數(shù)據(jù)包中的目標(biāo)物理地址是什么,主機(jī)都將可以接收到。許多局域網(wǎng)內(nèi)有十幾臺(tái)甚至上百臺(tái)主機(jī)是通過(guò)一個(gè)電纜、一個(gè)集線器連接在一起的,在協(xié)議的高層或者用戶來(lái)看,當(dāng)同一網(wǎng)絡(luò)中的兩臺(tái)主機(jī)通信的時(shí)候,源主機(jī)將寫有目的的主機(jī)地址的數(shù)據(jù)包直接發(fā)向目的主機(jī),或者當(dāng)網(wǎng)絡(luò)中的一臺(tái)主機(jī)同外界的主機(jī)通信時(shí),源主機(jī)將寫有目的的主機(jī)IP地址的數(shù)據(jù)包發(fā)向網(wǎng)關(guān)。但這種數(shù)據(jù)包并不能在協(xié)議棧的高層直接發(fā)送出去,要發(fā)送的數(shù)據(jù)包必須從TCP/IP協(xié)議的IP層交給網(wǎng)絡(luò)接口,也就是所說(shuō)的數(shù)據(jù)鏈路層。網(wǎng)絡(luò)接口不會(huì)識(shí)別IP地址的。在網(wǎng)絡(luò)接口由IP層來(lái)的帶有IP地址的數(shù)據(jù)包又增加了一部分以太禎的禎頭的信息。在禎頭中,有兩個(gè)域分別為只有網(wǎng)絡(luò)接口才能識(shí)別的源主機(jī)和目的主機(jī)的物理地址這是一個(gè)48位的地址,這個(gè)48位的地址是與IP地址相對(duì)應(yīng)的,換句話說(shuō)就是一個(gè)IP地址也會(huì)對(duì)應(yīng)一個(gè)物理地址。對(duì)于作為網(wǎng)關(guān)的主機(jī),由于它連接了多個(gè)網(wǎng)絡(luò),它也就同時(shí)具備有很多個(gè)IP地址,在每個(gè)網(wǎng)絡(luò)中它都有一個(gè)。而發(fā)向網(wǎng)絡(luò)外的禎中繼攜帶的就是網(wǎng)關(guān)的物理地址。
- J) i5 A, r2 B B- J/ L( {/ C; X/ ]% ~
Ethernet中填寫了物理地址的禎從網(wǎng)絡(luò)接口中,也就是從網(wǎng)卡中發(fā)送出去傳送到物理的線路上。如果局域網(wǎng)是由一條粗網(wǎng)或細(xì)網(wǎng)連接成的,那么數(shù)字信號(hào)在電纜上傳輸信號(hào)就能夠到達(dá)線路上的每一臺(tái)主機(jī)。再當(dāng)使用集線器的時(shí)候,發(fā)送出去的信號(hào)到達(dá)集線器,由集線器再發(fā)向連接在集線器上的每一條線路。這樣在物理線路上傳輸?shù)臄?shù)字信號(hào)也就能到達(dá)連接在集線器上的每個(gè)主機(jī)了。當(dāng)數(shù)字信號(hào)到達(dá)一臺(tái)主機(jī)的網(wǎng)絡(luò)接口時(shí),正常狀態(tài)下網(wǎng)絡(luò)接口對(duì)讀入數(shù)據(jù)禎進(jìn)行檢查,如果數(shù)據(jù)禎中攜帶的物理地址是自己的或者物理地址是廣播地址,那么就會(huì)將數(shù)據(jù)禎交給IP層軟件。對(duì)于每個(gè)到達(dá)網(wǎng)絡(luò)接口的數(shù)據(jù)禎都要進(jìn)行這個(gè)過(guò)程的。但是當(dāng)主機(jī)工作在監(jiān)聽(tīng)模式下的話,所有的數(shù)據(jù)禎都將被交給上層協(xié)議軟件處理。
+ ]+ o+ G; }: o( K
( V9 x9 v1 l0 m7 k6 x8 i/ @當(dāng)連接在同一條電纜或集線器上的主機(jī)被邏輯地分為幾個(gè)子網(wǎng)的時(shí)候,那么要是有一臺(tái)主機(jī)處于監(jiān)聽(tīng)模式,它還將可以接收到發(fā)向與自己不在同一個(gè)子網(wǎng)(使用了不同的掩碼、IP地址和網(wǎng)關(guān))的主機(jī)的數(shù)據(jù)包,在同一個(gè)物理信道上傳輸?shù)乃行畔⒍伎梢员唤邮盏健?font class="jammer">% ?% g9 O+ Y! F5 M1 a
% c' A, z6 E& c y$ B
在UNIX系統(tǒng)上,當(dāng)擁有超級(jí)權(quán)限的用戶要想使自己所控制的主機(jī)進(jìn)入監(jiān)聽(tīng)模式,只需要向Interface(網(wǎng)絡(luò)接口)發(fā)送I/O控制命令,就可以使主機(jī)設(shè)置成監(jiān)聽(tīng)模式了。而在Windows9x的系統(tǒng)中則不論用戶是否有權(quán)限都將可以通過(guò)直接運(yùn)行監(jiān)聽(tīng)工具就可以實(shí)現(xiàn)了。
H, x) V" c7 R# _7 E' Z+ C; d; A7 \) b
在網(wǎng)絡(luò)監(jiān)聽(tīng)時(shí),常常要保存大量的信息(也包含很多的垃圾信息),并將對(duì)收集的信息進(jìn)行大量的整理,這樣就會(huì)使正在監(jiān)聽(tīng)的機(jī)器對(duì)其它用戶的請(qǐng)求響應(yīng)變的很慢。同時(shí)監(jiān)聽(tīng)程序在運(yùn)行的時(shí)候需要消耗大量的處理器時(shí)間,如果在這個(gè)時(shí)候就詳細(xì)的分析包中的內(nèi)容,許多包就會(huì)來(lái)不及接收而被漏走。所以監(jiān)聽(tīng)程序很多時(shí)候就會(huì)將監(jiān)聽(tīng)得到的包存放在文件中等待以后分析。分析監(jiān)聽(tīng)到的數(shù)據(jù)包是很頭疼的事情。因?yàn)榫W(wǎng)絡(luò)中的數(shù)據(jù)包都非常之復(fù)雜。兩臺(tái)主機(jī)之間連續(xù)發(fā)送和接收數(shù)據(jù)包,在監(jiān)聽(tīng)到的結(jié)果中必然會(huì)加一些別的主機(jī)交互的數(shù)據(jù)包。監(jiān)聽(tīng)程序?qū)⑼籘CP會(huì)話的包整理到一起就相當(dāng)不容易了,如果你還期望將用戶詳細(xì)信息整理出來(lái)就需要根據(jù)協(xié)議對(duì)包進(jìn)行大量的分析。Internet上那么多的協(xié)議,運(yùn)行進(jìn)起的話這個(gè)監(jiān)聽(tīng)程序?qū)?huì)十分的大哦。; U, f; o/ h- G+ x T
. I1 W- t* v1 A0 @
現(xiàn)在網(wǎng)絡(luò)中所使用的協(xié)議都是較早前設(shè)計(jì)的,許多協(xié)議的實(shí)現(xiàn)都是基于一種非常友好的,通信的雙方充分信任的基礎(chǔ)。在通常的網(wǎng)絡(luò)環(huán)境之下,用戶的信息包括口令都是以明文的方式在網(wǎng)上傳輸?shù)模虼诉M(jìn)行網(wǎng)絡(luò)監(jiān)聽(tīng)從而獲得用戶信息并不是一件難點(diǎn)事情,只要掌握有初步的TCP/IP協(xié)議知識(shí)就可以輕松的監(jiān)聽(tīng)到你想要的信息的。前些時(shí)間美籍華人China-babble曾提出將望路監(jiān)聽(tīng)從局域網(wǎng)延伸到廣域網(wǎng)中,但這個(gè)想法很快就被否定了。如果真是這樣的話我想網(wǎng)絡(luò)必將天下大亂了。而事實(shí)上現(xiàn)在在廣域網(wǎng)里也可以監(jiān)聽(tīng)和截獲到一些用戶信息。只是還不夠明顯而已。在整個(gè)Internet中就更顯得微不足道了。
$ I& N/ X! u& i ]. E* J$ F! x: {% k! n* R- @6 \3 g
下面是一些系統(tǒng)中的著名的監(jiān)聽(tīng)程序,你可以自己嘗試一下的。- E9 r7 A) {- V+ Y
# t( }, q6 h) a2 v- }
Windows9x/NT NetXRay http://semxa.kstar.com/hacking/netxray.zip
2 Y+ _! Q! X6 R& M0 l8 c5 Z7 x5 P6 D/ B( O7 B" [" C
DEC Unix/Linux Tcpdump http://semxa.kstar.com/hacking/management.zip
: C# I( D( D3 l- H9 N& X% @1 U, V, @) r* V0 U* Q ]% I
Solaris Nfswatch http://semxa.kstar.com/hacking/nfswatch.zip3 \) b" L# [# l) q% L
0 X9 C- Y4 B) r2 ?( u3 z1 e
SunOS Etherfind http://semxa.kstar.com/hacking/etherfind012.zip7 L: t9 u4 w' h9 T, L: U" t9 e Y( k
* G( v0 E- v' @. f# E8 t1 v
/ n4 v9 l. V. ]3 j e- V5 w& S' E6 |: f/ O& f
█檢測(cè)網(wǎng)絡(luò)監(jiān)聽(tīng)的方法- M, B) H0 N1 I! z+ k
: f/ X5 E$ ~8 R8 k$ O5 i+ |
網(wǎng)絡(luò)監(jiān)聽(tīng)在上述中已經(jīng)說(shuō)明了。它是為了系統(tǒng)管理員管理網(wǎng)絡(luò),監(jiān)視網(wǎng)絡(luò)狀態(tài)和數(shù)據(jù)流動(dòng)而設(shè)計(jì)的。但是由于它有著截獲網(wǎng)絡(luò)數(shù)據(jù)的功能所以也是黑客所慣用的伎倆之一。' p# U5 N$ e3 B, F
! x# X g$ ? T! L9 c8 f: x4 S7 S
一般檢測(cè)網(wǎng)絡(luò)監(jiān)聽(tīng)的方法通過(guò)以下來(lái)進(jìn)行:7 h' v$ \! ]2 {! G5 _; s
R3 K1 r# J8 K! M8 I?網(wǎng)絡(luò)監(jiān)聽(tīng)說(shuō)真的,是很難被發(fā)現(xiàn)的。當(dāng)運(yùn)行監(jiān)聽(tīng)程序的主機(jī)在進(jìn)聽(tīng)的過(guò)程中只是被動(dòng)的接收在以太網(wǎng)中傳輸?shù)男畔ⅲ粫?huì)跟其它的主機(jī)交換信息的,也不能修改在網(wǎng)絡(luò)中傳輸?shù)男畔?。這就說(shuō)明了網(wǎng)絡(luò)監(jiān)聽(tīng)的檢測(cè)是比較麻煩的事情。
3 A; T3 K+ w/ G* f! J4 H/ ^
0 t4 X3 m+ [7 F3 z4 `- N一般情況下可以通過(guò)ps-ef或者ps-aux來(lái)檢測(cè)。但大多實(shí)施監(jiān)聽(tīng)程序的人都會(huì)通過(guò)修改ps的命令來(lái)防止被ps-ef的。修改ps只需要幾個(gè)shell把監(jiān)聽(tīng)程序的名稱過(guò)濾掉就OK了。一能做到啟動(dòng)監(jiān)聽(tīng)程序的人也絕對(duì)不是個(gè)菜的連這個(gè)都不懂的人了,除非是他懶。
P! U8 x7 a1 l* D; E* R% l3 m" }! M1 }" z+ Z4 g
上邊提到過(guò)。當(dāng)運(yùn)行監(jiān)聽(tīng)程序的時(shí)候主機(jī)響應(yīng)一般會(huì)受到影響變的會(huì)慢,所以也就有人提出來(lái)通過(guò)響應(yīng)的速率來(lái)判斷是否受到監(jiān)聽(tīng)。如果真是這樣判斷的話我想世界真的會(huì)大亂了,說(shuō)不準(zhǔn)一個(gè)時(shí)間段內(nèi)會(huì)發(fā)現(xiàn)無(wú)數(shù)個(gè)監(jiān)聽(tīng)程序在運(yùn)行呢。呵呵。. l X& J, p+ C, M1 I+ J. l4 \
" p+ M6 ~ {' M
如果說(shuō)當(dāng)你懷疑網(wǎng)內(nèi)某太機(jī)器正在實(shí)施監(jiān)聽(tīng)程序的話(怎么個(gè)懷疑?那要看你自己了),可以用正確的IP地址和錯(cuò)誤的物理地址去ping它,這樣正在運(yùn)行的監(jiān)聽(tīng)程序就會(huì)做出響應(yīng)的。這是因?yàn)檎5臋C(jī)器一般不接收錯(cuò)誤的物理地址的ping信息的。但正在進(jìn)聽(tīng)的機(jī)器就可以接收,要是它的IP stack不再次反向檢查的話就會(huì)響應(yīng)的。不過(guò)這種方法對(duì)很多系統(tǒng)是沒(méi)效果的,因?yàn)樗蕾囉谙到y(tǒng)的IP stack。
+ d. X$ A: _5 T3 ]0 M/ J9 t; B
( ~8 d( Q6 g8 j: ^! W% o. k" G另一種就是向網(wǎng)上發(fā)大量不存在的物理地址的包,而監(jiān)聽(tīng)程序往往就會(huì)將這些包進(jìn)行處理,這樣就會(huì)導(dǎo)致機(jī)器性能下降,你可以用icmp echo delay來(lái)判斷和比較它。還可以通過(guò)搜索網(wǎng)內(nèi)所有主機(jī)上運(yùn)行的程序,但這樣做其的難度可想而知,因?yàn)檫@樣不但是大的工作量,而且還不能完全同時(shí)檢查所有主機(jī)上的進(jìn)程??墒侨绻芾韱T這樣做也會(huì)有很大的必要性,那就是可以確定是否有一個(gè)進(jìn)程是從管理員機(jī)器上啟動(dòng)的。
, B) r4 z- l* Y2 y, ~! K4 [, @
' G8 r% Z6 L% @2 g在Unix中可以通過(guò)ps –aun或ps –augx命令產(chǎn)生一個(gè)包括所有進(jìn)程的清單:進(jìn)程的屬主和這些進(jìn)程占用的處理器時(shí)間和內(nèi)存等。這些以標(biāo)準(zhǔn)表的形式輸出在STDOUT上。如果某一個(gè)進(jìn)程正在運(yùn)行,那么它將會(huì)列在這張清單之中。但很多黑客在運(yùn)行監(jiān)聽(tīng)程序的時(shí)候會(huì)毫不客氣的把ps或其它運(yùn)行中的程序修改成Trojan Horse程序,因?yàn)樗耆梢宰龅竭@一點(diǎn)的。如果真是這樣那么上述辦法就不會(huì)有結(jié)果的。但這樣做在一定程度上還是有所作為的。在Unix和Windows NT上很容易就能得到當(dāng)前進(jìn)程的清單了。但DOS、Windows9x好象很難做到哦,具體是不是我沒(méi)測(cè)試過(guò)不得而知。- ~ a# E9 }9 N) [( i1 @. y
- {) Q# K8 f" a+ n# Y) w8 V
還有一種方式,這種方式要靠足夠的運(yùn)氣。因?yàn)橥诳退玫谋O(jiān)聽(tīng)程序大都是免費(fèi)在網(wǎng)上得到的,他并非專業(yè)監(jiān)聽(tīng)。所以做為管理員用來(lái)搜索監(jiān)聽(tīng)程序也可以檢測(cè)。使用Unix可以寫這么一個(gè)搜索的小工具了,不然的話要累死人的。呵呵。
) y+ R' ~9 f9 l8 [" a- q! W$ H( v! {
有個(gè)叫Ifstatus的運(yùn)行在Unix下的工具,它可以識(shí)別出網(wǎng)絡(luò)接口是否正處于調(diào)試狀態(tài)下或者是在進(jìn)聽(tīng)裝下。要是網(wǎng)絡(luò)接口運(yùn)行這樣的模式之下,那么很有可能正在受到監(jiān)聽(tīng)程序的攻擊。Ifstatus一般情況下不會(huì)產(chǎn)生任何輸出的,當(dāng)它檢測(cè)到網(wǎng)絡(luò)的接口處于監(jiān)聽(tīng)模式下的時(shí)候才回輸出。管理員可以將系統(tǒng)的cron參數(shù)設(shè)置成定期運(yùn)行Ifstatus,如果有好的cron進(jìn)程的話可以將它產(chǎn)生的輸出用mail發(fā)送給正在執(zhí)行cron任務(wù)的人,要實(shí)現(xiàn)可以在crontab目錄下加****/usr/local/etc/ifstatus一行參數(shù)。這樣不行的話還可以用一個(gè)腳本程序在crontab下00****/usr/local/etc/run-ifstatus。
6 b6 Z. |# M& J; p# b
, O+ p" h9 ?7 O) e# s8 p% x抵御監(jiān)聽(tīng)其實(shí)要看哪個(gè)方面了。一般情況下監(jiān)聽(tīng)只是對(duì)用戶口令信息比較敏感一點(diǎn)(沒(méi)有無(wú)聊的黑客去監(jiān)聽(tīng)兩臺(tái)機(jī)器間的聊天信息的那是個(gè)浪費(fèi)時(shí)間的事情)。所以對(duì)用戶信息和口令信息進(jìn)行加密是完全有必要的。防止以明文傳輸而被監(jiān)聽(tīng)到?,F(xiàn)代網(wǎng)絡(luò)中,SSH(一種在應(yīng)用環(huán)境中提供保密通信的協(xié)議)通信協(xié)議一直都被沿用,SSH所使用的端口是22,它排除了在不安全信道上通信的信息,被監(jiān)聽(tīng)的可能性使用到了RAS算法,在授權(quán)過(guò)程結(jié)束后,所有的傳輸都用IDEA技術(shù)加密。但SSH并不就是完全安全的。至少現(xiàn)在我們可以這么大膽評(píng)論了。
) l0 ]: D U2 }0 p
9 V! f$ J( M) ` ?█著名的Sniffer監(jiān)聽(tīng)工具' p( z. O0 m1 h& s
3 |0 D3 u: a& _% v% e, b# W, eSniffer之所以著名,權(quán)因它在很多方面都做的很好,它可以監(jiān)聽(tīng)到(甚至是聽(tīng)、看到)網(wǎng)上傳輸?shù)乃行畔?。Sniffer可以是硬件也可以是軟件。主要用來(lái)接收在網(wǎng)絡(luò)上傳輸?shù)男畔?。網(wǎng)絡(luò)是可以運(yùn)行在各種協(xié)議之下的,包括以太網(wǎng)Ethernet、TCP/IP、ZPX等等,也可以是集中協(xié)議的聯(lián)合體系。
& H2 J( L; h- K% |- A; C& L9 S, x9 S, {( O3 @$ n
Sniffer是個(gè)非常之危險(xiǎn)的東西,它可以截獲口令,可以截獲到本來(lái)是秘密的或者專用信道內(nèi)的信息,截獲到信用卡號(hào),經(jīng)濟(jì)數(shù)據(jù),E-mail等等。更加可以用來(lái)攻擊與己相臨的網(wǎng)絡(luò)。
! r" K- r' h) f* O8 A* w! \# b& J8 m: p# U
Sniffer可以使用在任何一種平臺(tái)之中。而現(xiàn)在使用Sniffer也不可能別發(fā)現(xiàn),這個(gè)足夠是對(duì)網(wǎng)絡(luò)安全的最嚴(yán)重的挑戰(zhàn)。0 w' i3 r. F9 Z, @
5 H: y& }7 X- q/ _ {2 M; }5 i' w! W I在Sniffer中,還有“熱心人”編寫了它的Plugin,稱為TOD殺手,可以將TCP的連接完全切斷??傊甋niffer應(yīng)該引起人們的重視,否則安全永遠(yuǎn)做不到最好。
5 G v! ]9 J( m$ i/ s6 _! N5 ^/ o% g }2 X! w$ i: m
如果你只是想用來(lái)研究的話可以在這里http://semxa.kstar.com/hacking/sniffer260.zip找到一個(gè)經(jīng)過(guò)我漢化的Sniffer程序工具。( J& q9 r: B& _" [2 w
% U/ Z- p _6 i$ k7 w
|