當前位置:編程學習大全網 - 編程語言 - 請哪位高手給我講講關於計算機端口的問題,那些數字都說明什麽?

請哪位高手給我講講關於計算機端口的問題,那些數字都說明什麽?

有過壹些黑客攻擊方面知識的讀者都會知道,其實那些所謂的黑客並不是像人們想象那樣從天而降,而是實實在在從您的計算機"大門"中自由出入。計算機的"大門"就是我們平常所說的"端口",它包括計算機的物理端口,如計算機的串口、並口、輸入/輸出設備以及適配器接口等(這些端口都是可見的),但更多的是不可見的軟件端口,在本文中所介紹的都是指"軟件端口",但為了說明方便,仍統稱為"端口"。本文僅就端口的基礎知識進行介紹,

壹、端口簡介

隨著計算機網絡技術的發展,原來物理上的接口(如鍵盤、鼠標、網卡、顯示卡等輸入/輸出接口)已不能滿足網絡通信的要求,TCP/IP協議作為網絡通信的標準協議就解決了這個通信難題。TCP/IP協議集成到操作系統的內核中,這就相當於在操作系統中引入了壹種新的輸入/輸出接口技術,因為在TCP/IP協議中引入了壹種稱之為"Socket(套接字)"應用程序接口。有了這樣壹種接口技術,壹臺計算機就可以通過軟件的方式與任何壹臺具有Socket接口的計算機進行通信。端口在計算機編程上也就是"Socket接口"。

有了這些端口後,這些端口又是如何工作呢?例如壹臺服務器為什麽可以同時是Web服務器,也可以是FTP服務器,還可以是郵件服務器等等呢?其中壹個很重要的原因是各種服務采用不同的端口分別提供不同的服務,比如:通常TCP/IP協議規定Web采用80號端口,FTP采用21號端口等,而郵件服務器是采用25號端口。這樣,通過不同端口,計算機就可以與外界進行互不幹擾的通信。

據專家們分析,服務器端口數最大可以有65535個,但是實際上常用的端口才幾十個,由此可以看出未定義的端口相當多。這是那麽多黑客程序都可以采用某種方法,定義出壹個特殊的端口來達到入侵的目的的原因所在。為了定義出這個端口,就要依靠某種程序在計算機啟動之前自動加載到內存,強行控制計算機打開那個特殊的端口。這個程序就是"後門"程序,這些後門程序就是常說的木馬程序。簡單的說,這些木馬程序在入侵前是先通過某種手段在壹臺個人計算機中植入壹個程序,打開某個(些)特定的端口,俗稱"後門"(BackDoor),使這臺計算機變成壹臺開放性極高(用戶擁有極高權限)的FTP服務器,然後從後門就可以達到侵入的目的。

二、端口的分類

端口的分類根據其參考對象不同有不同劃分方法,如果從端口的性質來分,通常可以分為以下三類:

(1)公認端口(Well Known Ports):這類端口也常稱之為"常用端口"。這類端口的端口號從0到1024,它們緊密綁定於壹些特定的服務。通常這些端口的通信明確表明了某種服務的協議,這種端口是不可再重新定義它的作用對象。例如:80端口實際上總是HTTP通信所使用的,而23號端口則是Telnet服務專用的。這些端口通常不會像木馬這樣的黑客程序利用。為了使大家對這些常用端口多壹些認識,在本章後面將詳細把這些端口所對面應的服務進行列表,供各位理解和參考。

(2) 註冊端口(Registered Ports):端口號從1025到49151。它們松散地綁定於壹些服務。也是說有許多服務綁定於這些端口,這些端口同樣用於許多其他目的。這些端口多數沒有明確的定義服務對象,不同程序可根據實際需要自己定義,如後面要介紹的遠程控制軟件和木馬程序中都會有這些端口的定義的。記住這些常見的程序端口在木馬程序的防護和查殺上是非常有必要的。常見木馬所使用的端口在後面將有詳細的列表。

(3) 動態和/或私有端口(Dynamic and/or Private Ports):端口號從49152到65535。理論上,不應把常用服務分配在這些端口上。實際上,有些較為特殊的程序,特別是壹些木馬程序就非常喜歡用這些端口,因為這些端口常常不被引起註意,容易隱蔽。

如果根據所提供的服務方式的不同,端口又可分為"TCP協議端口"和"UDP協議端口"兩種。因為計算機之間相互通信壹般采用這兩種通信協議。前面所介紹的"連接方式"是壹種直接與接收方進行的連接,發送信息以後,可以確認信息是否到達,這種方式大多采用TCP協議;另壹種是不是直接與接收方進行連接,只管把信息放在網上發出去,而不管信息是否到達,也就是前面所介紹的"無連接方式"。這種方式大多采用UDP協議,IP協議也是壹種無連接方式。對應使用以上這兩種通信協議的服務所提供的端口,也就分為"TCP協議端口"和"UDP協議端口"。

使用TCP協議的常見端口主要有以下幾種:

(1) FTP:定義了文件傳輸協議,使用21端口。常說某某計算機開了FTP服務便是啟動了文件傳輸服務。下載文件,上傳主頁,都要用到FTP服務。

(2) Telnet:它是壹種用於遠程登陸的端口,用戶可以以自己的身份遠程連接到計算機上,通過這種端口可以提供壹種基於DOS模式下的通信服務。如以前的BBS是純字符界面的,支持BBS的服務器將23端口打開,對外提供服務。

(3) SMTP:定義了簡單郵件傳送協議,現在很多郵件服務器都用的是這個協議,用於發送郵件。如常見的免費郵件服務中用的就是這個郵件服務端口,所以在電子郵件設置中常看到有這麽SMTP端口設置這個欄,服務器開放的是25號端口。

(4) POP3:它是和SMTP對應,POP3用於接收郵件。通常情況下,POP3協議所用的是110端口。也是說,只要妳有相應的使用POP3協議的程序(例如Foxmail或Outlook),就可以不以Web方式登陸進郵箱界面,直接用郵件程序就可以收到郵件(如是163郵箱就沒有必要先進入網易網站,再進入自己的郵箱來收信)。

使用UDP協議端口常見的有:

(1) HTTP:這是大家用得最多的協議,它就是常說的"超文本傳輸協議"。上網瀏覽網頁時,就得在提供網頁資源的計算機上打開80號端口以提供服務。常說"WWW服務"、"Web服務器"用的就是這個端口。

(2) DNS:用於域名解析服務,這種服務在Windows NT系統中用得最多的。因特網上的每壹臺計算機都有壹個網絡地址與之對應,這個地址是常說的IP地址,它以純數字+"."的形式表示。然而這卻不便記憶,於是出現了域名,訪問計算機的時候只需要知道域名,域名和IP地址之間的變換由DNS服務器來完成。DNS用的是53號端口。

(3) SNMP:簡單網絡管理協議,使用161號端口,是用來管理網絡設備的。由於網絡設備很多,無連接的服務就體現出其優勢。

(4) OICQ:OICQ程序既接受服務,又提供服務,這樣兩個聊天的人才是平等的。OICQ用的是無連接的協議,也是說它用的是UDP協議。OICQ服務器是使用8000號端口,偵聽是否有信息到來,客戶端使用4000號端口,向外發送信息。如果上述兩個端口正在使用(有很多人同時和幾個好友聊天),就順序往上加。

在計算機的6萬多個端口,通常把端口號為1024以內的稱之為常用端口,這些常用端口所對應的服務通常情況下是固定的。表1所列的都是服務器默認的端口,不允許改變,壹般通信過程都主要用到這些端口。

表1

服務類型 默認端口 服務類型 默認端口

Echo 7 Daytime 13

FTP 21 Telnet 23

SMTP 25 Time 37

Whois 43 DNS 53

Gopher 70 Finger 79

WWW 80 POP3 110

NNTP 119 IRC 194

另外代理服務器常用以下端口:

(1). HTTP協議代理服務器常用端口號:80/8080/3128/8081/9080

(2). SOCKS代理協議服務器常用端口號:1080

(3). FTP協議代理服務器常用端口號:21

(4). Telnet協議代理服務器常用端口:23

三、端口在黑客中的應用

像木馬之類的黑客程序,就是通過對端口的入侵來實現其目的的。在端口的利用上,黑客程序通常有兩種方式,那就是"端口偵聽"和"端口掃描"。

"端口偵聽"與"端口掃描"是黑客攻擊和防護中經常要用到的兩種端口技術,在黑客攻擊中利用它們可以準確地尋找攻擊的目標,獲取有用信息,在個人及網絡防護方面通過這種端口技術的應用可以及時發現黑客的攻擊及壹些安全漏洞。下面首先簡單介紹壹下這兩種端口技術的異同。

"端口偵聽"是利用某種程序對目標計算機的端口進行監視,查看目標計算機上有哪能些端口是空閑、可以利用的。通過偵聽還可以捕獲別人有用的信息,這主要是用在黑客軟件中,但對於個人來說也是非常有用的,可以用偵聽程序來保護自己的計算機,在自己計算機的選定端口進行監視,這樣可以發現並攔截壹些黑客的攻擊。也可以偵聽別人計算機的指定端口,看是否空閑,以便入侵。

"端口掃描"(port scanning)是通過連接到目標系統的TCP協議或UDP協議端口,來確定什麽服務正在運行,然後獲取相應的用戶信息。現在有許多人把"端口偵聽"與"端口掃描"混為壹談,根本分不清什麽樣的情況下要用偵聽技術,什麽樣的情況下要用掃描技術。不過,現在的這類軟件也似乎對這兩種技術有點模糊了,有的幹脆把兩個功能都集成在壹塊。

"端口偵聽"與"端口掃描"有相似之處,也有區別的地方,相似的地方是都可以對目標計算機進行監視,區別的地方是"端口偵聽"屬於壹種被動的過程,等待別人的連接的出現,通過對方的連接才能偵聽到需要的信息。在個人應用中,如果在設置了當偵聽到有異常連接立即向用戶報告這個功能時,就可以有效地偵聽黑客的連接企圖,及時把駐留在本機上的木馬程序清除掉。這個偵聽程序壹般是安裝在目標計算機上。用在黑客中的"端口偵聽"通常是黑客程序駐留在服務器端等待服務器端在進行正常活動時捕獲黑客需要的信息,然後通過UDP協議無連接方式發出去。而"端口掃描"則是壹種主動過程,它是主動對目標計算機的選定端口進行掃描,實時地發現所選定端口的所有活動(特別是對壹些網上活動)。掃描程序壹般是安裝在客戶端,但是它與服務器端的連接也主要是通過無連接方式的UDP協議連接進行。

在網絡中,當信息進行傳播的時候,可以利用工具,將網絡接口設置在偵聽的模式,便可將網絡中正在傳播的信息截獲或者捕獲到,從而進行攻擊。端口偵聽在網絡中的任何壹個位置模式下都可實施進行,而黑客壹般都是利用端口偵聽來截取用戶口令。

四、端口偵聽原理

以太網(Ethernet)協議的工作方式是將要發送的數據包發往連接在壹起的所有計算機。在包頭中包括有應該接收數據包的計算機的正確地址,因為只有與數據包中目標地址壹致的那臺計算機才能接收到信息包。但是當計算機工作在偵聽模式下,不管數據包中的目標物理地址是什麽,計算機都將可以接收到。當同壹網絡中的兩臺計算機通信的時候,源計算機將寫有目的計算機地址的數據包直接發向目的計算機,或者當網絡中的壹臺計算機同外界的計算機通信時,源計算機將寫有目的計算機IP地址的數據包發向網關。但這種數據包並不能在協議棧的高層直接發送出去,要發送的數據包必須從TCP/IP協議的IP協議層交給網絡接口--數據鏈路層。網絡接口不會識別IP地址的,在網絡接口中,由IP協議層來的帶有IP地址的數據包又增加了壹部分以太網的幀頭信息。在幀頭中,有兩個域分別為只有網絡接口才能識別的源計算機和目的計算機的物理地址,這是壹個48位的地址,這個48位的地址是與IP地址相對應的。換句話說,壹個IP地址也會對應壹個物理地址。對於作為網關的計算機,由於它連接了多個網絡,它也就同時具備有很多個IP地址,在每個網絡中它都有壹個。而發向網絡外的幀中繼攜帶的是網關的物理地址。

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

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

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

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

現在網絡中所使用的協議都是較早前設計的,許多協議的實現都是基於壹種非常友好的,通信的雙方充分信任的基礎。在通常的網絡環境之下,用戶的信息包括口令都是以明文的方式在網上傳輸的,因此進行端口偵聽從而獲得用戶信息並不是壹件難點事情,只要掌握有初步的TCP/IP協議知識就可以輕松的偵聽到想要的信息的。

五、端口掃描原理

"端口掃描"通常指用同壹信息對目標計算機的所有所需掃描的端口進行發送,然後根據返回端口狀態來分析目標計算機的端口是否打開、是否可用。"端口掃描"行為的壹個重要特征是:在短時期內有很多來自相同的信源地址傳向不同的目的地端口的包。

對於用端口掃描進行攻擊的人來說,攻擊者總是可以做到在獲得掃描結果的同時,使自己很難被發現或者說很難被逆向跟蹤。為了隱藏攻擊,攻擊者可以慢慢地進行掃描。除非目標系統通常閑著(這樣對壹個沒有listen端口的數據包都會引起管理員的註意),有很大時間間隔的端口掃描是很難被識別的。隱藏源地址的方法是發送大量的欺騙性的端口掃描包(1000個),其中只有壹個是從真正的源地址來的。這樣,即使全部包(1000)都被察覺,被記錄下來,也沒有人知道哪個是真正的信源地址。能發現的僅僅是"曾經被掃描過"。也正因為這樣那些黑客們才樂此不彼地繼續大量使用這種端口掃描技術來達到他們獲取目標計算機信息、並進行惡意攻擊。

通常進行端口掃描的工具目前主要采用的是端口掃描軟件,也通稱之為"端口掃描器",端口掃描可以為提供三個用途:

(1)識別目標系統上正在運行的TCP協議和UDP協議服務。

(2)識別目標系統的操作系統類型(Windows 9x, Windows NT,或UNIX,等)。

(3)識別某個應用程序或某個特定服務的版本號。

端口掃描器是壹種自動檢測遠程或本地計算機安全性弱點的程序,通過使用掃描器妳可不留痕跡的發現遠程服務器的各種TCP協議端口的分配及提供的服務,還可以得知它們所使用的軟件版本!這就能讓間接的了解到遠程計算機所存在的安全問題。

端口掃描器通過選用遠程TCP/IP協議不同的端口的服務,記錄目標計算機端口給予的回答的方法,可以搜集到很多關於目標計算機的各種有用信息(比如:是否有端口在偵聽?是否允許匿名登陸?是否有可寫的FTP目錄,是否能用TELNET等。

端口掃描器並不是壹個直接攻擊網絡漏洞的程序,它僅僅能幫助發現目標機的某些內在的弱點。壹個好的掃描器還能對它得到的數據進行分析,幫助查找目標計算機的漏洞。但它不會提供壹個系統的詳細步驟。

端口掃描器在掃描過程中主要具有以下三個方面的能力:

(1) 發現壹個計算機或網絡的能力;

(2) 壹旦發現壹臺計算機,就有發現目標計算機正在運行什麽服務的能力;

(3) 通過測試目標計算機上的這些服務,發現存在的漏洞的能力。

編寫掃描器程序必須要很多TCP/IP協議程序編寫和C,Perl和或SHELL語言的知識。需要壹些Socket編程的背景,壹種在開發客戶/服務應用程序的方法。

  • 上一篇:日語和英語哪個專業好?
  • 下一篇:鄞州職業高級中學有哪些專業
  • copyright 2024編程學習大全網