在Internet上,各主機間通過TCP/TP協議發送和接收數據報,各個數據報根據其目的主機的ip地址來進行互聯網絡中的路由選擇。可見,把數據報順利的傳送到目的主機是沒有問題的。問題出在哪裏呢?我們知道大多數操作係統都支持多程序(進程)同時運行,那麼目的主機應該把接收到的數據報傳送給眾多同時運行的進程中的哪一個呢?顯然這個問題有待解決,端口機製便由此被引入進來。
本地操作係統會給那些有需求的進程分配協議端口(protocal port,即我們常說的端口),每個協議端口由一個正整數標識,如:80,139,445,等等。當目的主機接收到數據報後,將根據報文首部的目的端口號,把數據發送到相應端口,而與此端口相對應的那個進程將會領取數據並等待下一組數據的到來。說到這裏,端口的概念似乎仍然抽象,那麼繼續跟我來,別走開。
端口其實就是隊,操作係統為各個進程分配了不同的隊,數據報按照目的端口被推入相應的隊中,等待被進程取用,在極特殊的情況下,這個隊也是有可能溢出的,不過操作係統允許各進程指定和調整自己的隊的大小。
不光接受數據報的進程需要開啟它自己的端口,發送數據報的進程也需要開啟端口,這樣,數據報中將會標識有源端口,以便接受方能順利的回傳數據報到這個端口。
端口的分類:
在Internet上,按照協議類型分類,端口被分為TCP端口和UDP端口兩類,雖然他們都用正整數標識,但這並不會引起歧義,比如TCP的80端口和UDP的80端口,因為數據報在標明端口的同時,還將標明端口的類型。
從端口的分配來看,端口被分為固定端口和動態端口兩大類(一些教程還將極少被用到的高端口劃分為第三類:私有端口):
固定端口(0-1023):
使用集中式管理機製,即服從一個管理機構對端口的指派,這個機構負責發布這些指派。由於這些端口緊綁於一些服務,所以我們會經常掃描這些端口來判斷對方是否開啟了這些服務,如TCP的21(ftp),80(http),139(netbios),UDP的7(echo),69(tftp)等等一些大家熟知的端口;
動態端口(1024-49151):
這些端口並不被固定的捆綁於某一服務,操作係統將這些端口動態的分配給各個進程,同一進程兩次分配有可能分配到不同的端口。不過一些應用程序並不願意使用操作係統分配的動態端口,他們有其自己的‘商標性’端口,如oicq客戶端的4000端口,木馬冰河的7626端口等都是固定而出名的。
端口在入侵中的作用:
有人曾經把服務器比作62616964757a686964616fe4b893e5b19e31333361326262房子,而把端口比作通向不同房間(服務)的門,如果不考慮細節的話,這是一個不錯的比喻。入侵者要占領這間房子,勢必要破門而入(物理入侵另說),那麼對於入侵者來說,了解房子開了幾扇門,都是什麼樣的門,門後麵有什麼東西就顯得至關重要。
入侵者通常會用掃描器對目標主機的端口進行掃描,以確定哪些端口是開放的,從開放的端口,入侵者可以知道目標主機大致提供了哪些服務,進而猜測可能存在的漏洞,因此對端口的掃描可以幫助我們更好的了解目標主機,而對於管理員,掃描本機的開放端口也是做好安全防範的第一步。
常見端口的介紹
由於本人知識有限,在這裏隻介紹一些淺顯的內容。
1)21 ftp
此端口開放表示服務器提供了FTP服務,入侵者通常會掃描此端口並判斷是否允許匿名登陸,如果能找到可寫目錄,還可以上傳一些黑客程序做近一步入侵。要想關閉此端口,需要關閉FTP服務。
2)23 Telnet
此端口開放表示服務器提供了遠程登陸服務,如果你有管理員的用戶名和密碼,可以通過這個服務來完全控製主機(不過要先搞定NTLM身份認證),獲得一個命令行下的shell。許多入侵者喜歡開啟這個服務作為後門。要想關閉此端口,需要關閉Telnet服務。
3)25 smtp
此端口開放表示服務器提供了SMTP服務,一些不支持身份驗證的服務器允許入侵者發送郵件到任何地點,SMTP服務器(尤其是sendmail)也是進入係統的最常用方法之一。要想關閉此端口,需要關閉SMTP服務。
4)69 TFTP(UDP)
此端口開放表示服務器提供了TFTP服務,它允許從服務器下載文件,也可以寫入文件,如果管理員錯誤配置,入侵者甚至可以下載密碼文件。許多入侵者通過在自己機器運行此服務來傳文件到目標機器,從而實現文件的傳輸。要想關閉此端口,需要關閉TFTP服務。
5)79 finger
用於獲得用戶信息,查詢操作係統,探測已知的緩衝區溢出錯誤, 回應從自己機器到其它機器finger掃描。
6)80 http
此端口開放表示服務器提供了HTTP服務,可以讓訪問者瀏覽其網頁等,大部分針對IIS服務器的溢出攻擊都是通過這個端口的,可以說是入侵者最常攻擊的一個端口了。要想關閉此端口,需要關閉HTTP服務。
7)110 POP3
用於客戶端訪問服務器端的郵件服務。POP3服務有許多公認的弱點。關於用戶名和密碼交換緩衝區溢出的弱點至少有20個,這意味著入侵者可以在真正登陸前進入係統,成功登陸後還有其它緩衝區溢出錯誤。
8)TCP的139和445
許多人都很關心這兩個端口,那我就來詳細的介紹一下吧:
首先我們來了解一些基礎知識:
1 SMB:(Server Message Block) Windows協議族,用於文件打印共享的服務;
2 NBT:(NETBios Over TCP/IP)使用137(UDP)138(UDP)139(TCP)端口實現基於TCP/IP協議的NETBIOS網絡互聯。
3 在WindowsNT中SMB基於NBT實現,即使用139(TCP)端口;而在Windows2000中,SMB除了基於NBT實現,還可以直接通過445端口實現。
有了這些基礎知識,我們就可以進一步來討論訪問網絡共享對端口的選擇了:
對於win2000客戶端(發起端)來說:
1 如果在允許NBT的情況下連接服務器時,客戶端會同時嚐試訪問139和445端口,如果445端口有響應,那麼就發送RST包給139端口斷開連接,用455端口進行會話,當445端口無響應時,才使用139端口,如果兩個端口都沒有響應,則會話失敗;
2 如果在禁止NBT的情況下連接服務器時,那麼客戶端隻會嚐試訪問445端口,如果445端口無響應,那麼會話失敗。
對於win2000服務器端來說:
1 如果允許NBT, 那麼UDP端口137, 138, TCP 端口 139, 445將開放(LISTENING);
2 如果禁止NBT,那麼隻有445端口開放。
我們建立的ipc$會話對端口的選擇同樣遵守以上原則。顯而易見,如果遠程服務器沒有監聽139或445端口,ipc$會話是無法建立的。那麼如何關閉2000上這兩個端口呢?
139端口可以通過禁止NBT來屏蔽
本地連接-TCP/IT屬性-高級-WINS-選‘禁用TCP/IT上的NETBIOS’一項
445端口可以通過修改注冊表來屏蔽
添加一個鍵值
Hive: HKEY_LOCAL_MACHINE
Key: System\Controlset\Services\NetBT\Parameters
Name: SMBDeviceEnabled
Type: REG_DWORD
value: 0
修改完後重啟機器
9)3389 Terminal Services
此端口開放表示服務器提供了終端服務,如果你獲得了管理員的用戶名和密碼,那麼你可以通過這個服務在圖形界麵下完全控製主機,這的確是一件令人向往的事情,但如果你得不到密碼也找不到輸入法漏洞,你會感到束手無策。要想關閉此端口,需要關閉終端服務。
端口的相關工具
1 netstat -an
的確,這並不是一個工具,但他是查看自己所開放端口的最方便方法,在cmd中輸入這個命令就可以了。如下:
C:\>netstat -an
Active Connections
Proto Local Address Foreign Address State
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1026 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1028 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3372 0.0.0.0:0 LISTENING
UDP 0.0.0.0:135 *:*
UDP 0.0.0.0:445 *:*
UDP 0.0.0.0:1027 *:*
UDP 127.0.0.1:1029 *:*
UDP 127.0.0.1:1030 *:*
這是我沒上網的時候機器所開的端口,兩個135和445是固定端口,其餘幾個都是動態端口。
2 fport.exe和mport.exe
這也是兩個命令行下查看本地機器開放端口的小程序,其實與netstat -an這個命令大同小異,隻不過它能夠顯示打開端口的進程,信息更多一些而已,如果你懷疑自己的奇怪端口可能是木馬,那就用他們查查吧。
3 activeport.exe(也稱aports.exe)
還是用來查看本地機器開放端口的東東,除了具有上麵兩個程序的全部功能外,他還有兩個更吸引人之處:圖形界麵以及可以關閉端口。這對菜鳥來說是個絕對好用的東西,推薦使用喔。
4 superscan3.0
它的大名你不會沒聽說過吧,純端口掃描類軟件中的NO.1,速度快而且可以指定掃描的端口,不多說了,絕對必備工具。
保護好自己的端口:
剛接觸網絡的朋友一般都對自己的端口很敏感,總怕自己的電腦開放了過多端口,更怕其中就有後門程序的端口,但由於對端口不是很熟悉,所以也沒有解決辦法,上起網來提心吊膽。其實保護自己的端口並不是那麼難,隻要做好下麵幾點就行了:
1 查看:經常用命令或軟件查看本地所開放的端口,看是否有可疑端口;
2 判斷:如果開放端口中有你不熟悉的,應該馬上查找端口大全或木馬常見端口等資料(網上多的很),看看裏麵對你那個可疑端口的作用描述,或者通過軟件查看開啟此端口的進程來進行判斷;
3 關閉:如果真是木馬端口或者資料中沒有這個端口的描述,那麼應該關閉此端口,你可以用防火牆來屏蔽此端口,也可以用本地連接-TCP/IP-高級-選項-TCP/IP篩選,啟用篩選機製來篩選端口;
用戶登錄
還沒有賬號?立即注冊
用戶注冊
投稿取消
文章分類: |
|
還能輸入300字
上傳中....