看到這個題目你也許有些奇怪,怎么把這幾個詞放在了一起,其實談起端口和木馬都是老生常談了,但即使是常談還有很多人的計算機被“沖擊波”沖過之后又被“震蕩波”狠狠地震了一下,看來很有必要再談?wù)劺显掝},免得再被什么波溫柔地掃過。其實說這些最終的目的就是為了保證計算機的上網(wǎng)安全。

  一、 端口
 
  一)、端口的一般含義

  說到端口,這確實是個老話題,但一切都是從它開始的,不得不說。何謂端口,打個比方,你住在一座房子里,想讓別人來拜訪你,得在房子上開個大門,你養(yǎng)了個可愛的小貓,為了它的進出,專門給它修了個小門,為了到后花園,又開了個后門……所有這些為了進到這所房子里而開的門我們叫它端口,這些為了別人進來而開的端口稱它為'服務(wù)端口'。

  你要拜訪一個叫張三的人,張三家應(yīng)該開了個允許你來的門____服務(wù)端口,否則將被拒之門外。去時,首先你在家開個'門',然后通過這個'門'徑直走進張三家的大門。為了訪問別人而在自己的房子開的'門',我們稱它為'客戶端口'。它是隨機開的而且是主動打開的,訪問完就自行關(guān)閉了。它和服務(wù)端口性質(zhì)是不一樣的,服務(wù)端口是開了個門等著別人來訪問,而客戶端口是主動打開一個門去打開別人的門,這點一定要清楚。

  下面我們從專業(yè)的角度再簡單解釋一下端口的概念。聯(lián)網(wǎng)的計算機要能相互通信必須用同一種協(xié)議,協(xié)議就是計算機通信的語言,計算機之間必須說一種語言才能彼此通信,Internet的通用語言是TCP/TP,它是一組協(xié)議,它規(guī)定在網(wǎng)絡(luò)的第四層運輸層有兩種協(xié)議TCP、UDP。端口就是這兩個協(xié)議打開的,端口分為源端口和目的端口,源端口是本機打開的,目的端口是正在和本機通信的另一臺計算機的端口,源端口分主動打開的客戶端口和被動連接的服務(wù)端口兩種。在Internet中,你訪問一個網(wǎng)站時就是在本機開個端口去連網(wǎng)站服務(wù)器的一個端口,別人訪問你時也是如此。也就是說計算機的通訊就像我們互相串門一樣,從這個門走進哪個門。

  當(dāng)你裝好系統(tǒng)后默認就開了很多'服務(wù)端口'。如何知道自己的計算機系統(tǒng)開了那些端口呢?這就是下面要說的:

  二)、查看端口的方法

  1、命令方式

  下面以Windows XP為例看看新安裝的系統(tǒng)都開了那些端口,也就是說都預(yù)留了那些門,不借助任何工具來查看端口的命令是netstat,方法如下:

  a、在'開始'的'運行'處鍵入cmd,回車

  b、在dos命令界面,鍵入netstat -na,Proto代表協(xié)議,有TCP和UDP兩種協(xié)議。Local Address代表本機地址,該地址冒號后的數(shù)字就是開放的端口號。Foreign ress代表遠程地址,如果和其它機器正在通信,顯示的就是對方的地址,State代表狀態(tài),顯示的

  LISTENING表示處于偵聽狀態(tài),就是說該端口是開放的,等待連接,但還沒有被連接。就像你房子的門已經(jīng)敞開了,但此時還沒有人進來。以第一行為例看看它的意思。

  TCP 0.0.0.0:135 0.0.0.0:0 LISTENING

  這一行的意思是本機的135端口正在等待連接。注意:只有TCP協(xié)議的服務(wù)端口才能處于LISTENING狀態(tài)。

  2、用TCPView工具

  為了更好的分析端口,最好用TCPView這個軟件,該軟件很小只有93KB,而且是個綠色軟件,不用安裝。

  第一次顯示時字體有些小,在'Options'->'Font'中將字號調(diào)大即可。TCPView顯示的數(shù)據(jù)是動態(tài)的。Local Address顯示的就是本機開放的哪個端口(:號后面的數(shù)字),TCPView可以看出哪個端口是由哪個程序發(fā)起的。445、139、1025、135、5000等端口是開放的,445、139等端口都是system發(fā)起的,135等都是SVCHOST發(fā)起的。

  三)、研究端口的目的:

  1、知道本機開了那些端口,也就是可以進入到本機的'門'有幾個,都是誰開的?

  2、目前本機的端口處于什么狀態(tài),是等待連接還是已經(jīng)連接,如果是已經(jīng)連接那就要特別注意看連接是個正常連接還是非正常連接(木馬等)?

  3、目前本機是不是正在和其它計算機交換數(shù)據(jù),是正常的程序防問到一個正常網(wǎng)站還是訪問到一個陷阱?

  當(dāng)你上網(wǎng)時就是本機和其它機器傳遞數(shù)據(jù)的過程,要傳遞數(shù)據(jù)必須要用到端口,即使是有些非常高明的木馬利用正常的端口傳送數(shù)據(jù)也不是了無痕跡的,數(shù)據(jù)在開始傳輸、正在傳輸和結(jié)束傳輸?shù)牟煌A段都有各自的狀態(tài),要想搞明白上述3個問題,就必須清楚端口的狀態(tài)變化。下面結(jié)合實例先分析服務(wù)端口的狀態(tài)變化。只有TCP協(xié)議才有狀態(tài),UDP協(xié)議是不可@@傳輸,是沒有狀態(tài)的。

  四)、服務(wù)端口的狀態(tài)變化

  先在本機(IP地址為:192.168.1.10)配置FTP服務(wù),然后在其它計算機(IP地址為:192.168.1.1)訪問FTP服務(wù),從TCPView看看端口的狀態(tài)變化。

  下面是從TCPView中截取的部分。

  1、LISTENING狀態(tài)

  FTP服務(wù)啟動后首先處于偵聽(LISTENING)狀態(tài)。

  State顯示是LISTENING時表示處于偵聽狀態(tài),就是說該端口是開放的,等待連接,但還沒有被連接。就像你房子的門已經(jīng)敞開的,但還沒有人進來。

  從TCPView可以看出本機開放FTP的情況。它的意思是:程序inetinfo.exe開放了21端口,F(xiàn)TP默認的端口為21,可見在本機開放了FTP服務(wù)。目前正處于偵聽狀態(tài)。

  inetinfo.exe:1260 TCP 0.0.0.0:21 0.0.0.0:0 LISTENING

  2、ESTABLISHED狀態(tài)

  現(xiàn)在從192.168.1.1這臺計算機訪問一下192.168.1.10的FTP服務(wù)。在本機的TCPView可以看出端口狀態(tài)變?yōu)镋STABLISHED。

  ESTABLISHED的意思是建立連接。表示兩臺機器正在通信。

  下面顯示的是本機的FTP服務(wù)正在被192.168.1.1這臺計算機訪問。

  inetinfo.exe:1260 TCP 192.168.1.10:21 192.168.1.1:3009 ESTABLISHED

  注意:處于ESTABLISHED狀態(tài)的連接一定要格外注意,因為它也許不是個正常連接。后面我們要講到這個問題。

  3、 TIME_WAIT狀態(tài)

  現(xiàn)在從192.168.1.1這臺計算機結(jié)束訪問192.168.1.10的FTP服務(wù)。在本機的TCPView可以看出端口狀態(tài)變?yōu)門IME_WAIT。

  TIME_WAIT的意思是結(jié)束了這次連接。說明21端口曾經(jīng)有過訪問,但訪問結(jié)束了。

  [System Process]:0 TCP 192.168.1.10:21 192.168.1.1:3009 TIME_WAIT

  4、小技巧

  a、可以telnet一個開放的端口,來觀察該端口的變化。比如看1025端口是開放的,在命令狀態(tài)運行:

  telnet 192.168.1.10 1025

  b、從本機也可以測試,只不過顯示的是本機連本機

  c、在Tcpview中雙擊連接可看出程序的位置,右鍵點擊該連接,選擇End Process即可結(jié)束該連接

  五)、客戶端口的狀態(tài)變化

  客戶端口實際上就是從本機訪問其它計算機服務(wù)時打開的源端口,最多的應(yīng)用是上網(wǎng),下面就以訪問baidu.com為例來看看端口開放以及狀態(tài)的變化情況。

  1、SYN_SENT狀態(tài)

  SYN_SENT狀態(tài)表示請求連接,當(dāng)你要訪問其它的計算機的服務(wù)時首先要發(fā)個同步信號給該端口,此時狀態(tài)為SYN_SENT,如果連接成功了就變?yōu)镋STABLISHED,此時SYN_SENT狀態(tài)非常短暫。但如果發(fā)現(xiàn)SYN_SENT非常多且在向不同的機器發(fā)出,那你的機器可能中了沖擊波或震蕩波之類的病毒了。這類病毒為了感染別的計算機,它就要掃描別的計算機,在掃描的過程中對每個要掃描的計算機都要發(fā)出了同步請求,這也是出現(xiàn)許多SYN_SENT的原因。

  下面顯示的是本機連接baidu.com網(wǎng)站時的開始狀態(tài),如果你的網(wǎng)絡(luò)正常的,那很快就變?yōu)镋STABLISHED的連接狀態(tài)。

  IEXPLORE.EXE:2928 TCP 192.168.1.10:1035 202.108.250.249:80 SYN_SENT

  2、ESTABLISHED狀態(tài)

  下面顯示的是本機正在訪問baidu.com網(wǎng)站。如果你訪問的網(wǎng)站有許多內(nèi)容比如訪問[url]www.yesky.com[/url],那會發(fā)現(xiàn)一個地址有許多ESTABLISHED,這是正常的,網(wǎng)站中的每個內(nèi)容比如圖片、flash等都要單獨建立一個連接??碋STABLISHED狀態(tài)時一定要注意是不是IEXPLORE.EXE程序(IE)發(fā)起的連接,如果是EXPLORE.EXE之類的程序發(fā)起的連接,那也許是你的計算機中了木馬了。

  IEXPLORE.EXE:3120 TCP 192.168.1.10:1045 202.108.250.249:80 ESTABLISHED

  3、TIME_WAIT狀態(tài)

  如果瀏覽網(wǎng)頁完畢,那就變?yōu)門IME_WAIT狀態(tài)。

  [System Process]:0 TCP 192.168.1.10:4259 202.108.250.249:80 TIME_WAIT

  七)、要點

  一般用戶一定要熟悉(再?嗦幾句):

  1、服務(wù)端口重點要看的是LISTENING狀態(tài)和ESTABLISHED狀態(tài),LISTENING是本機開了哪些端口,ESTABLISHED是誰在訪問你的機器,從哪個地址訪問的。

  2、客戶端口的SYN_SENT狀態(tài)和ESTABLISHED狀態(tài),SYN_SENT是本機向其它計算機發(fā)出的連接請求,一般這個狀態(tài)存在的時間很短,但如果本機發(fā)出了很多SYN_SENT,那可能就是中毒了??碋STABLISHED狀態(tài)是要發(fā)現(xiàn)本機正在和哪個機器傳送數(shù)據(jù),主要看是不是一個正常程序發(fā)起的。

  二、木馬

  什么是木馬,簡單的說就是在未經(jīng)你許可偷偷在你的計算機中開個后門,木馬開后門主要有兩種方式。

  1、有服務(wù)端口的木馬,這類木馬都要開個服務(wù)端口的后門,成功后該后門處于LISTENING狀態(tài),它的端口號可能固定一個數(shù),也可能變化,還有的木馬可以與正常的端口合用,例如你開著正常的80端口(WEB服務(wù)),木馬也用80端口。這種木馬最大的特點就是有端口處于LISTENING狀態(tài),需要遠程計算機連接它。這種木馬對一般用戶比較好防范,將防火墻設(shè)為拒絕從外到內(nèi)的連接即可。比較難防范的是反彈型木馬。

  2、反彈型木馬,反彈型木馬是從內(nèi)向外的連接,它可以有效的穿透防火墻,而且即使你使用的是內(nèi)網(wǎng)IP,他一樣也能訪問你的計算機。這種木馬的原理是服務(wù)端主動連接客戶端(黑客)地址。木馬的服務(wù)端軟件就像你的Internet Explorer一樣,使用動態(tài)分配端口去連接客戶端的某一端口,通常是常用端口,像端口80。而且會使用隱避性較強的文件名,像iexpiore.exe、explorer(IE的程序是IEXPLORE.EXE)。如果你不仔細看,你可能會以為是你的Internet Explorer。這樣你的防火墻也會被騙過。如果你在TcpView中看到下面這樣的連接一定要注意,很有可能是種木馬了。 iexpiore.exe 192.168.1.10(本機IP):1035(你的端口) Y.Y.Y.Y(遠程IP):80(遠程端口)

  或 Rundll32.exe 192.168.1.10(本機IP):1035(你的端口) Y.Y.Y.Y(遠程IP):80(遠程端口)

  或 explorer.exe 192.168.1.10(本機IP):1035(你的端口) Y.Y.Y.Y(遠程IP):80(遠程端口)

  三、安全

  我們分析端口的目的就是要保證上網(wǎng)安全,根據(jù)以上的思路可以從以下幾個方面來防范。

  一)、關(guān)閉不需要的端口

  對一般上網(wǎng)用戶來說只要能訪問Internet就行了,并不需要別人來訪問你,也就是說沒有必要開放服務(wù)端口,在WIN 98可以做到不開放任何服務(wù)端口上網(wǎng),但在Win XP、Win 2000、Win 2003下不行,但可以關(guān)閉不必要的端口。

  1、關(guān)閉137、138、139、445端口

  這幾個端口都是為共享而開的,是NetBios協(xié)議的應(yīng)用,一般上網(wǎng)用戶是不需要別人來共享你的內(nèi)容的,而且也是漏洞最多的端口。關(guān)閉的方法很多,最近從網(wǎng)上學(xué)了一招非常好用,一次全部關(guān)閉上述端口。

  開始-> 控制面板-> 系統(tǒng)-> 硬件-> 設(shè)備管理器-> 查看-> 顯示隱藏的設(shè)備-> 非即插即用驅(qū)動程序-> Netbios over Tcpip。

  禁用該設(shè)備重新啟動后即可。

  2、關(guān)閉123端口

  有些蠕蟲病毒可利用UDP 123端口,關(guān)閉的方法:停止windows time服務(wù)。

  3、關(guān)閉1900端口

  攻擊者只要向某個擁有多臺Win XP系統(tǒng)的網(wǎng)絡(luò)發(fā)送一個虛假的UDP包,就可能會造成這些Win XP主機對指定的主機進行攻擊(DDoS)。另外如果向該系統(tǒng)1900端口發(fā)送一個UDP包,令'Location'域的地址指向另一系統(tǒng)的chargen端口,就有可能使系統(tǒng)陷入一個死循環(huán),消耗掉系統(tǒng)的所有資源(需要安裝硬件時需手動開啟)。

  關(guān)閉1900端口的方法:停止SSDP Discovery Service 服務(wù)

  通過上面的辦法關(guān)閉了一些有漏洞的或不用的端口后是不是就沒問題了呢?不是。因為有些端口是不能關(guān)掉的。像135端口,它是RPC服務(wù)打開的端口如果把這個服務(wù)停掉,那計算機就關(guān)機了,同樣像Lsass打開的端口500和4500也不能關(guān)閉。沖擊波病毒利用的就是135端口,對于不能關(guān)閉的端口最好的辦法一是常打補丁,端口都是相應(yīng)的服務(wù)打開的,但是對于一般用戶很難判斷這些服務(wù)到底有什么用途,也很難找到停止哪些服務(wù)就能關(guān)閉相應(yīng)的端口。最好的辦法就是下面我們要講的安裝防火墻。安裝防火墻的作用通俗的說就像你不管住在一所結(jié)實的好房子里還是住在一所千瘡百孔的破房子里,只要你在房子的四周建了一堵密不透風(fēng)的墻,那對于墻里的房子就是安全的。

  二)、安裝防火墻

  對于一般用戶來講有下面三類防火墻

  1、 自帶的防火墻

  關(guān)于Win XP 與Win 2003自帶防火墻的設(shè)置請參閱天極網(wǎng)中拙作,不再贅述。

  2、ADSL貓防火墻

  通過ADSL上網(wǎng)的,如果有條件最好將ADSL貓設(shè)置為地址轉(zhuǎn)換方式(NAT),也就是大家常說的路由模式,其實路由與NAT是不一樣的,權(quán)且這么叫吧。用NAT方式最大的好處是設(shè)置完畢后,ADSL貓就是一個放火墻,它一般只開放80、21、161等為了對ADSL貓進行設(shè)置開放的端口。如果不做端口映射的話,一般從遠程是攻擊不到ADSL貓后面的計算機的。ADSL貓最大的安全隱患就是很多用戶都不改變默認密碼。這樣黑客如果進到你的貓做個端口映射就有可能進入到你的計算機,一定把默認密碼改掉。

  用自帶的放火墻和ADSL貓的NAT方式基本可以抵御從外到內(nèi)的攻擊,也就是說即使服務(wù)端口開放(包括系統(tǒng)開放的端口和中了開個服務(wù)端口的木馬),黑客和類似震蕩波一類的病毒也奈何不了你的計算機。上述防火墻只能防止從外到內(nèi)的連接,不能防止從內(nèi)到外的連接,當(dāng)你打開網(wǎng)頁和用QQ聊天時就是從內(nèi)到外的連接,反彈型木馬就是利用放火墻的這一特性來盜取你機器的數(shù)據(jù)的。反彈型木馬雖然十分隱蔽,但也不是沒有馬腳,防范這類木馬最好的辦法就是用第三方防火墻。

  3、第三方防火墻

  前面說過,反彈型木馬而且會使用隱避性較強的文件名,像iexpiore.exe、explorer等與IE的程序IEXPLORE.EXE很想的名字或用一些rundll32之類的好像是系統(tǒng)文件的名字,但木馬的本質(zhì)就是要與遠程的計算機通訊,只要通訊就會有連接。如下所示:正常連接是IEXPLORE.EXE發(fā)起的,而非正常連接是木馬程序explorer發(fā)起的。

  一般的防火墻都有應(yīng)用程序訪問網(wǎng)絡(luò)的權(quán)限設(shè)置,在防火墻的這類選項中將不允許訪問網(wǎng)絡(luò)的應(yīng)用程序選擇X,即不允許訪問網(wǎng)絡(luò)。

  在寫這篇文章之前我中了一個反彈型木馬,就是explorer程序向外連接,用了好幾個查毒軟件也沒有殺掉,當(dāng)時就先用天網(wǎng)放火墻阻止它訪問網(wǎng)絡(luò),然后手工費了很大的勁才清除掉。可惜沒有做截圖。沒有勇氣為了寫這篇文章再犧牲一把了。

  4、用Tcpview結(jié)束一個連接

  當(dāng)你用Tcpview觀察哪個連接有可能是不正常的連接,可在Tcpview中直接鼠標(biāo)右鍵點擊該連接,選擇End Process即可結(jié)束該連接。

  四、掃描

  談起掃描又是個大話題了,有端口掃描(Superscan)、漏洞掃描(X-scan)等,關(guān)于掃描的話題以后再論,本文只對一般用戶簡單說一下在線安全檢測。如果你按上面的說得作了相應(yīng)的安全措施,就可以在網(wǎng)上找個在線測試安全的網(wǎng)站測試一下你目前系統(tǒng)的安全情況,如到下面網(wǎng)站:

  1、千禧在線--在線檢測

  2、藍盾在線檢測

  3、天網(wǎng)安全在線

  4、諾頓在線安全檢測

  說明一點,測試我的機器時開了21、23、80端口,但這都是ADSL的服務(wù)端口,我的貓沒有提供修改和關(guān)閉的地方,不過沒關(guān)系,只要把密碼設(shè)的復(fù)雜點就行了。

  五、震蕩波

  如果你按上述關(guān)閉了445端口或者開啟了放火墻那就不會受到震蕩波及類似的病毒騷擾了,關(guān)于震蕩波病毒的文章太多了,我就不在這?嗦了。只要做好了安全防護,不管是震蕩大波還是沖擊小波只能在你的計算機門前掠過而奈何不了你。

  六、后記

  關(guān)于計算機的安全還有很多要設(shè)置,但對于一般用戶來說,太多的安全設(shè)置就等于沒有了安全,因為即使對于專業(yè)從事計算機安全的人員對于安全的設(shè)置也不是件容易的事,何況對于對計算機的知識還不夠的一般用戶。如果要作很多設(shè)置才能保證安全,那肯定就有很多人不做了。對一般用戶我的建議是力所能及的事一定要做,比如:

  1、上網(wǎng)時一定要安裝防病毒軟件并及時升級。

  2、至少安裝一個防火墻,ADSL用戶最好用路由方式上網(wǎng),改掉默認密碼。

  3、經(jīng)常打補丁,Windows用戶最好將系統(tǒng)設(shè)為自動升級。

  4、自己要做的就是用Tcpview 常??纯催B接,防止反彈型木馬。常??纯?,時間長了也許就看成專家了。

  5、Udp協(xié)議是不可@@傳輸,沒有狀態(tài),從Tcpview中很難看出它是不是在傳輸數(shù)據(jù),感興趣的朋友可以用iris、sniffer這類的協(xié)議分析工具看看是不是有Udp的數(shù)據(jù)。關(guān)于這個話題以后再聊。

  6、本文題目起的很大,但寫起來又覺得很多問題都是別人說了再說的,也就沒有深談。

  道高一尺,魔高一丈。網(wǎng)絡(luò)安全將是一個永恒的話題,沒有絕對的安全,但有了防范意識總比敞開了大門還不知道好吧。

標(biāo)簽:應(yīng)用知識

相關(guān)文章

隨機推薦