計算機埠概念理解(轉載)

ljm0211發表於2012-07-02

(一) 
有過一些駭客攻擊方面知識的讀者都會知道,其實那些所謂的駭客並不是像人們想象那樣從天而降,而是實實在在從您的計算機"大門" 中自由出入。計算機的"大門"就是我們平常所說的"埠",它包括計算機的物理埠,如計算機的串列埠、並口、輸入/輸出裝置以及介面卡介面等(這些埠都 是可見的),但更多的是不可見的軟體埠,在本文中所介紹的都是指"軟體埠",但為了說明方便,仍統稱為"埠"。本文僅就埠的基礎知識進行介紹,
一、埠簡介
隨著計算機網路技術的發展,原來物理上的介面(如鍵盤、滑鼠、網路卡、顯示卡等輸入/輸出介面)已不能滿足網路通訊 的要求,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所列的都是伺服器預設的埠,不允許改變,一般通訊過程都主要用到這些埠。

服務型別            預設埠                     服務型別           預設埠

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程式設計的背景,一種在開發客戶/服務應用程式的方法。

五、常用埠
在計算機的6萬多個埠,通常把埠號為1024以內的稱之為常用埠,這些常用埠所對應的服務通常情況下是固定的, 所以瞭解這些常用埠在一定程式上是非常必要的,下表2列出了計算機的常用埠所對應的服務(注:在這列表中各項"="前面的數字為埠號,"="後面的 為相應埠服務。)。
1=tcpmux(TCP協議 Port Service Multiplexer) 2=compressnet=Management Utility 3=compressnet=Compression Process 5=rje(Remote Job Entry) 7=echo=Echo 9=discard 11=systat,Active Users 13=daytime 17=qotd(Quote of the Day) 18=msp(Message Send Protocol) 19=Character Generator 20=FTP-data(File Transfer [Default Data]) 21=FTP(File Transfer [Control]) 22=ssh 23=telnet 24=private mail system 25=smtp(Simple Mail Transfer) 27=nsw-fe(NSW User System FE) 29=msg-icp 31=msg-auth 33=Display Support Protocol 35=private printer server 37=time 38=rap(Route Access Protocol) 39=rlp(Resource Location Protocol) 41=graphics 42=nameserver(WINS Host Name Server) 43=nicname(Who Is) 44=mpm-flags(MPM FLAGS Protocol) 45=mpm(Message Processing Module [recv]) 46=mpm-snd(MPM [default send]) 47=ni-ftp 48=Digital Audit Daemon 49=tacacs(Login Host Protocol (TACACS)) 50=re-mail-ck(Remote Mail Checking Protocol) 51=la-maint(IMP Logical Address Maintenance) 52=xns-time(XNS Time Protocol) 53=Domain Name Server 54=xns-ch(XNS Clearinghouse) 55=isi-gl(ISI Graphics Language) 56=xns-auth(XNS Authentication) 57= private terminal access 58=xns-mail(XNS Mail) 59=private file service 61=ni-mail(NI MAIL) 62=acas(ACA Services) 63=whois+whois+ 64=covia(Communications Integrator (CI)) 65=tacacs-ds(TACACS-Database Service) 66=sql*net(Oracle SQL*NET) 67=bootps(Bootstrap Protocol Server) 68=bootpc(Bootstrap Protocol Client) 69=tftp(Trivial File Transfer) 70=gopher 71=netrjs-1,Remote Job Service 72=netrjs-2,Remote Job Service 73=netrjs-3,Remote Job Service 74=netrjs-4,Remote Job Service 75=private dial out service 76=deos(Distributed External Object Store) 77=private RJE service 78=vettcp 79=finger 80=http(World Wide Web HTTP) 81=hosts2-ns(HOSTS2 Name Server) 82=xfer(XFER Utility) 83=mit-ml-dev(MIT ML Device) 84=ctf(Common Trace Facility) 85=mit-ml-dev(MIT ML Device) 86=mfcobol(Micro Focus Cobol) 87= private terminal link 88=kerberos 89=su-mit-tg(SU/MIT Telnet Gateway) 90=dnsix(DNSIX Securit Attribute Token Map) 91=mit-dov(MIT Dover Spooler) 92=npp(Network Printing Protocol) 93=dcp(Device Control Protocol) 94=objcall(Tivoli Object Dispatcher) 95=supdup 96=dixie(DIXIE Protocol Specification) 97=swift-rvf(Swift Remote Virtural File Protocol) 98=tacnews 99=metagram,Metagram Relay 100=newacct,[unauthorized use] 101=hostname,NIC Host Name Server 102=iso-tsap(ISO-TSAP Class 0) 103=gppitnp(Genesis Point-to-Point Trans Net) 104=acr-nema(ACR-NEMA Digital Imag. & Comm. 300) 105=Mailbox Name Nameserver 106=3com-tsmux(3COM-TSMUX) 107=rtelnet(Remote Telnet Service) 108=snagas(SNA Gateway Access Server) 109=pop2(Post Office Protocol - Version 2) 110=pop3(Post Office Protocol - Version 3) 111=sunrpc(SUN Remote Procedure Call) 112=mcidas(McIDAS Data Transmission Protocol) 113=auth(Authentication Service) 114=audionews(Audio News Multicast) 115=sftp(Simple File Transfer Protocol) 116=ansanotify(ANSA REX Notify) 117=uucp-path(UUCP Path Service) 118=sqlserv 119=nntp(Network News Transfer Protocol) 120=cfdptkt 121=erpc(Encore Expedited Remote Pro.Call) 122=smakynet 123=ntp(Network Time Protocol) 124=ansatrader(ANSA REX Trader) 125=locus-map(Locus PC-Interface Net Map Ser) 126=unitary(Unisys Unitary Login) 127=locus-con(Locus PC-Interface Conn Server) 128=gss-xlicen(GSS X License Verification) 129=pwdgen(Password Generator Protocol) 130=cisco-fna(cisco FNATIVE) 131=cisco-tna(cisco TNATIVE) 132=cisco-sys(cisco SYSMAINT) 133=statsrv(Statistics Service) 134=ingres-net(INGRES-NET Service) 135=epmap(DCE endpoint resolution) 136=profile(PROFILE Naming System) 137=netbios-ns(NETBIOS Name Service) 138=netbios-dgm(NETBIOS Datagram Service) 139=netbios-ssn(NETBIOS Session Service) 140=emfis-data(EMFIS Data Service) 141=emfis-cntl(EMFIS Control Service) 142=bl-idm(Britton-Lee IDM) 143=imap(Internet Message Access Protocol) 144=news 145=uaac(UAAC Protocol) 146=iso-tp0 147=iso-ip 148=jargon 149=aed-512(AED 512 Emulation Service) 150=sql-net 151=hems 152=bftp(Background File Transfer Program) 153=sgmp 154=netsc-prod,NETSC 155=netsc-dev,NETSC 156=sqlsrv(SQL Service) 157=knet-cmp(KNET/VM Command/Message Protocol) 158=pcmail-srv 159=nss-routing 160=sgmp-traps 161=snmp 162=snmptrap 163=cmip-man 164=cmip-agent 165=xns-courier(Xerox) 166=s-net(Sirius Systems) 167=namp 168=rsvd 169=send 170=print-srv(Network PostScript) 171=multiplex(Network Innovations Multiplex)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11411056/viewspace-734407/,如需轉載,請註明出處,否則將追究法律責任。

相關文章