連線埠掃描

連線埠掃描

連線埠掃描是指某些別有用心的人傳送一組連線埠掃描訊息,試圖以此侵入某台計算機,並了解其提供的計算機網路服務類型(這些網路服務均與連線埠號相關)。連線埠掃描是計算機解密高手喜歡的一種方式。攻擊者可以通過它了解到從哪裡可探尋到攻擊弱點。實質上,連線埠掃描包括向每個連線埠傳送訊息,一次只傳送一個訊息。接收到的回應類型表示是否在使用該連線埠並且可由此探尋弱點。 掃描器是一種自動檢測遠程或本地主機安全性弱點的程式,通過使用掃描器你可以不留痕跡的發現遠程伺服器的各種TCP連線埠的分配及提供的服務和它們的軟體版本!這就能讓我們間接的或直觀的了解到遠程主機所存在的安全問題。

基本信息

簡介

一個連線埠就是一個潛在的通信通道,也就是一個入侵通道。對目標計算機進行連線埠掃描,能得到許多有用的信息。進行掃描的方法很多,可以是手工進行掃描,也可以用連線埠掃描軟體進行掃描。在手工進行掃描時,需要熟悉各種命令。對命令執行後的輸出進行分析。用掃描軟體進行掃描時,許多掃描器軟體都有分析數據的功能。通過連線埠掃描,可以得到許多有用的信息,從而發現系統的安全漏洞。以上定義只針對網路通信連線埠,連線埠掃描在某些場合還可以定義為廣泛的設備連線埠掃描,比如某些管理軟體可以動態掃描各種計算機外設連線埠的開放狀態,並進行管理和監控,這類系統常見的如USB管理系統、各種外設管理系統等。

連線埠掃描原理

連線埠掃描,顧名思義,就是逐個對一段連線埠或指定的連線埠進行掃描。通過掃描結果可以知道一台計算機上都提供了哪些服務,然後就可以通過所提供的這些服務的己知漏洞就可進行攻擊。其原理是當一個主機向遠端一個伺服器的某一個連線埠提出建立一個連線的請求,如果對方有此項服務,就會應答,如果對方未安裝此項服務時,即使你向相應的連線埠發出請求,對方仍無應答,利用這個原理,如果對所有熟知連線埠或自己選定的某個範圍內的熟知連線埠分別建立連線,並記錄下遠端伺服器所給予的應答,通過查看一記錄就可以知道目標伺服器上都安裝了哪些服務,這就是連線埠掃描,通過連線埠掃描,就可以蒐集到很多關於目標主機的各種很有參考價值的信息。例如,對方是否提供FPT服務、WWW服務或其它服務。

連線埠掃描器分類

能夠進行連線埠掃描的軟體稱為連線埠掃描器,不同的掃描器,掃描採用的技術、掃描算法、掃描效果各不相同。根據掃描過程和結果不同,可以把連線埠掃描器分成幾個類別 。

•根據掃描軟體運行環境可以分為Unix/Linux系列掃描器、Windows系列掃描器、其它作業系統下掃描器。其中Unix/Linux由於作業系統本身與網路聯繫緊密,使得在此系統下掃描器非常多,編制、修改容易,運行效率高,但由於其普及度不高,因此只有部分人會使用。Windows系統普及度高,使用方便,極易學習使用,但由於其編寫、移植困難而數量不太多。其它作業系統下的掃描器因為這些作業系統不普及而使在這些作業系統下運行的掃描器難以普通。

•根據掃描連線埠的數量可以分為多連線埠掃描器和專一連線埠掃描器。多連線埠掃描器一般可以掃描一段連線埠,有的甚至能把六萬多個連線埠都掃描一遍,這種掃描器的優點是顯而易見的,它可以找到多個連線埠而使得找到更多的漏洞,也可以找到許多網管刻意更換的連線埠。而專一連線埠掃描器則只對某一個特定連線埠進行掃描,一般這一連線埠都是非常常見的連線埠,比如21,23,80,139等連線埠,給出這一連線埠非常具體的內容。

•根據向用戶提供的掃描結果可以分為只掃開關狀態和掃描漏洞兩種掃描器。前者一般只能掃描出對方指定的連線埠是“開”還是“關”,沒有別的信息。這種掃描器一般作用不是太大,比如,非熟知連線埠即使你知道知道開或關,但由於不知道是提供什麼服務而沒太大的用途。而掃描漏洞掃描器一般除了告訴用戶某一連線埠狀態之外,還可以得出對方伺服器版本、用戶、漏洞。

•根據所採用的技術可以分為一般掃描器和特殊掃描器。一般掃描器在編制過程中通過常規的系統調用完成對系統掃描,這種掃描只是網路管理員使用,因為這種掃描器在掃描過程中會花費很長時間、無法通過防火牆、在被掃描的機器的日誌上留下大量被掃描的信息。而特殊掃描器則通過一些未公開的函式、系統設計漏洞或非正常調用產生一些特殊信息,這些信息使系統某些功能無法生效,但最後卻使掃描程式得到正常的結果,這種系統一般主要是黑客編制。

掃描工具

掃描器是一種自動檢測遠程或本地主機安全性弱點的程式,通過使用掃描器你可以不留痕跡的發現遠程伺服器的各種TCP連線埠的分配及提供的服務和它們的軟體版本!這就能讓我們間接的或直觀的了解到遠程主機所存在的安全問題。

其它相關

作用

掃描器並不是一個直接的攻擊網路漏洞的程式,它僅僅能幫助我們發現目標機的某些內在的弱點。一個好的掃描器能對它得到的數據進行分析,幫助我們查找目標主機的漏洞。但它不會提供進入一個系統的詳細步驟。

掃描器應該有三項功能:發現一個主機或網路的能力;一旦發現一台主機,有發現什麼服務正運行在這台主機上的能力;通過測試這些服務,發現漏洞的能力。

編寫掃描器程式必須要很多TCP/IP程式編寫和C,Perl和或SHELL語言的知識。需要一些Socket編程的背景,一種在開發客戶/服務應用程式的方法。開發一個掃描器是一個雄心勃勃的項目,通常能使程式設計師感到很滿意。

連線埠號

代理伺服器常用以下連線埠:

⑴. HTTP協定代理伺服器常用連線埠號:80/8080/3128/8081/9080

⑵. SOCKS代理協定伺服器常用連線埠號:1080

⑶. FTP(檔案傳輸)協定代理伺服器常用連線埠號:21

⑷. Telnet(遠程登錄)協定代理伺服器常用連線埠:23

HTTP伺服器,默認的連線埠號為80/tcp(木馬Executor開放此連線埠);

HTTPS(securely transferring web pages)伺服器,默認的連線埠號為443/tcp 443/udp;

Telnet(不安全的文本傳送),默認連線埠號為23/tcp(木馬Tiny Telnet Server所開放的連線埠);

FTP,默認的連線埠號為21/tcp(木馬Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所開放的連線埠);

TFTP(Trivial File Transfer Protocol),默認的連線埠號為69/udp;

SSH(安全登錄)、SCP(檔案傳輸)、連線埠重定向,默認的連線埠號為22/tcp;

SMTP Simple Mail Transfer Protocol (E-mail),默認的連線埠號為25/tcp(木馬Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都開放這個連線埠);

POP3 Post Office Protocol (E-mail) ,默認的連線埠號為110/tcp;

WebLogic,默認的連線埠號為7001;

Webshpere應用程式,默認的連線埠號為9080;

webshpere管理工具,默認的連線埠號為9090;

JBOSS,默認的連線埠號為8080;

TOMCAT,默認的連線埠號為8080;

WIN2003遠程登入,默認的連線埠號為3389;

Symantec AV/Filter for MSE,默認連線埠號為 8081;

Oracle 資料庫,默認的連線埠號為1521;

ORACLE EMCTL,默認的連線埠號為1158;

Oracle XDB(XML 資料庫),默認的連線埠號為8080;

Oracle XDB FTP服務,默認的連線埠號為2100;

MS SQL*SERVER資料庫server,默認的連線埠號為1433/tcp 1433/udp;

MS SQL*SERVER資料庫monitor,默認的連線埠號為1434/tcp 1434/udp;

QQ,默認的連線埠號為1080/udp

掃描分類

TCP connect() 掃描

這是最基本的TCP掃描。作業系統提供的connect()系統調用,用來與每一個感興趣的目標計算機的連線埠進行連線。如果連線埠處於偵聽狀態,那么connect()就能成功。否則,這個連線埠是不能用的,即沒有提供服務。這個技術的一個最大的優點是,你不需要任何許可權。系統中的任何用戶都有權利使用這個調用。另一個好處就是速度。如果對每個目標連線埠以線性的方式,使用單獨的connect()調用,那么將會花費相當長的時間,你可以通過同時打開多個套接字,從而加速掃描。使用非阻塞I/O允許你設定一個低的時間用盡周期,同時觀察多個套接字。但這種方法的缺點是很容易被發覺,並且被過濾掉。目標計算機的logs檔案會顯示一連串的連線和連線是出錯的服務訊息,並且能很快的使它關閉。

TCP SYN掃描

這種技術通常認為是“半開放”掃描,這是因為掃描程式不必要打開一個完全的TCP連線。掃描程式傳送的是一個SYN數據包,好象準備打開一個實際的連線並等待反應一樣(參考TCP的三次握手建立一個TCP連線的過程)。一個SYN|ACK的返回信息表示連線埠處於偵聽狀態。一個RST返回,表示連線埠沒有處於偵聽態。如果收到一個SYN|ACK,則掃描程式必須再傳送一個RST信號,來關閉這個連線過程。這種掃描技術的優點在於一般不會在目標計算機上留下記錄。但這種方法的一個缺點是,必須要有root許可權才能建立自己的SYN數據包。

TCP FIN 掃描

有的時候有可能SYN掃描都不夠秘密。一些防火牆和包過濾器會對一些指定的連線埠進行監視,有的程式能檢測到這些掃描。相反,FIN數據包可能會沒有任何麻煩的通過。這種掃描方法的思想是關閉的連線埠會用適當的RST來回復FIN數據包。另一方面,打開的連線埠會忽略對FIN數據包的回覆。這種方法和系統的實現有一定的關係。有的系統不管連線埠是否打開,都回復RST,這樣,這種掃描方法就不適用了。並且這種方法在區分Unix和NT時,是十分有用的。

IP段掃描

這種不能算是新方法,只是其它技術的變化。它並不是直接傳送TCP探測數據包,是將數據包分成兩個較小的IP段。這樣就將一個TCP頭分成好幾個數據包,從而過濾器就很難探測到。但必須小心。一些程式在處理這些小數據包時會有些麻煩。

TCP 反向 ident掃描

ident 協定允許(rfc1413)看到通過TCP連線的任何進程的擁有者的用戶名,即使這個連線不是由這個進程開始的。因此你能,舉個例子,連線到http連線埠,然後用identd來發現伺服器是否正在以root許可權運行。這種方法只能在和目標連線埠建立了一個完整的TCP連線後才能看到。

FTP 返回攻擊

FTP協定的一個有趣的特點是它支持代理(proxy)FTP連線。即入侵者可以從自己的計算機和目標主機的FTP server-PI(協定解釋器)連線,建立一個控制通信連線。然後,請求這個server-PI激活一個有效的server-DTP(數據傳輸進程)來給Internet上任何地方傳送檔案。對於一個User-DTP,這是個推測,儘管RFC明確地定義請求一個伺服器傳送檔案到另一個伺服器是可以的。給許多伺服器造成打擊,用盡磁碟,企圖越過防火牆”。

我們利用這個的目的是從一個代理的FTP伺服器來掃描TCP連線埠。這樣,你能在一個防火牆後面連線到一個FTP伺服器,然後掃描連線埠(這些原來有可能被阻塞)。如果FTP伺服器允許從一個目錄讀寫數據,你就能傳送任意的數據到發現的打開的連線埠。

對於連線埠掃描,這個技術是使用PORT命令來表示被動的User DTP正在目標計算機上的某個連線埠偵聽。然後入侵者試圖用LIST命令列出當前目錄,結果通過Server-DTP傳送出去。如果目標主機正在某個連線埠偵聽,傳輸就會成功(產生一個150或226的回應)。否則,會出現"425 Can't build data connection: Connection refused."。然後,使用另一個PORT命令,嘗試目標計算機上的下一個連線埠。這種方法的優點很明顯,難以跟蹤,能穿過防火牆。主要缺點是速度很慢,有的FTP伺服器最終能得到一些線索,關閉代理功能。

這種方法能成功的情景:

220 xxxx. FTP server (Version wu-2.4⑶ Wed Dec 14 ...) ready.

220 xxx.xxx. FTP server ready.

220 xx.Telcom. FTP server (Version wu-2.4⑶ Tue Jun 11 ...) ready.

220 lem FTP server (SunOS 4.1) ready.

220 xxx. FTP server (Version wu-2.4⑾ Sat Apr 27 ...) ready.

220 elios FTP server (SunOS 4.1) ready

這種方法不能成功的情景:

220 wcarchive. FTP server (Version DG-2.0.39 Sun May 4 ...) ready.

220 xxx.xx.xx. Version wu-2.4.2-academ[BETA-12]⑴ Fri Feb 7

220 ftp Microsoft FTP Service (Version 3.0).

220 xxx FTP server (Version wu-2.4.2-academ[BETA-11]⑴ Tue Sep 3 ...) ready.

220 xxx.FTP server (Version wu-2.4.2-academ[BETA-13]⑹ ...) ready.

不能掃描

這種方法與上面幾種方法的不同之處在於使用的是UDP協定。由於這個協定很簡單,所以掃描變得相對比較困難。這是由於打開的連線埠對掃描探測並不傳送一個確認,關閉的連線埠也並不需要傳送一個錯誤數據包。幸運的是,許多主機在你向一個未打開的UDP連線埠傳送一個數據包時,會返回一個ICMP_PORT_UNREACH錯誤。這樣你就能發現哪個連線埠是關閉的。UDP和ICMP錯誤都不保證能到達,因此這種掃描器必須還實現在一個包看上去是丟失的時候能重新傳輸。這種掃描方法是很慢的,因為RFC對ICMP錯誤訊息的產生速率做了規定。同樣,這種掃描方法需要具有root許可權。

掃描

當非root用戶不能直接讀到連線埠不能到達錯誤時,Linux能間接地在它們到達時通知用戶。比如,對一個關閉的連線埠的第二個write()調用將失敗。在非阻塞的UDP套接字上調用recvfrom()時,如果ICMP出錯還沒有到達時回返回EAGAIN-重試。如果ICMP到達時,返回ECONNREFUSED-連線被拒絕。這就是用來查看連線埠是否打開的技術。

這並不是真正意義上的掃描。但有時通過ping,在判斷在一個網路上主機是否開機時非常有用。

相關詞條

相關搜尋

熱門詞條

聯絡我們