百科解釋
一個(gè)端口就是一個(gè)潛在的通信通道,也就是一個(gè)入侵通道。對(duì)目標(biāo)計(jì)算機(jī)進(jìn)行端口掃描,能得到許多有用的信息。進(jìn)行掃描的方法很多,可以是手工進(jìn)行掃描,也可以用端口掃描軟件進(jìn)行。 在手工進(jìn)行掃描時(shí),需要熟悉各種命令。對(duì)命令執(zhí)行后的輸出進(jìn)行分析。用掃描軟件進(jìn)行掃描時(shí),許多掃描器軟件都有分析數(shù)據(jù)的功能。 通過端口掃描,可以得到許多有用的信息,從而發(fā)現(xiàn)系統(tǒng)的安全漏洞。 什么是掃描器 掃描器是一種自動(dòng)檢測(cè)遠(yuǎn)程或本地主機(jī)安全性弱點(diǎn)的程序,通過使用掃描器你可一不留痕跡的發(fā)現(xiàn)遠(yuǎn)程服務(wù)器的各種TCP端口的分配及提供的服務(wù)和它們的軟件版本!這就能讓我們間接的或直觀的了解到遠(yuǎn)程主機(jī)所存在的安全問題。 工作原理 掃描器通過選用遠(yuǎn)程TCP/IP不同的端口的服務(wù),并記錄目標(biāo)給予的回答,通過這種方法,可以搜集到很多關(guān)于目標(biāo)主機(jī)的各種有用的信息(比如:是否能用匿名登陸!是否有可寫的FTP目錄,是否能用TELNET,HTTPD是用ROOT還是nobady在跑。 掃描器能干什么 掃描器并不是一個(gè)直接的攻擊網(wǎng)絡(luò)漏洞的程序,它僅僅能幫助我們發(fā)現(xiàn)目標(biāo)機(jī)的某些內(nèi)在的弱點(diǎn)。一個(gè)好的掃描器能對(duì)它得到的數(shù)據(jù)進(jìn)行分析,幫助我們查找目標(biāo)主機(jī)的漏洞。但它不會(huì)提供進(jìn)入一個(gè)系統(tǒng)的詳細(xì)步驟。 掃描器應(yīng)該有三項(xiàng)功能:發(fā)現(xiàn)一個(gè)主機(jī)或網(wǎng)絡(luò)的能力;一旦發(fā)現(xiàn)一臺(tái)主機(jī),有發(fā)現(xiàn)什么服務(wù)正運(yùn)行在這臺(tái)主機(jī)上的能力;通過測(cè)試這些服務(wù),發(fā)現(xiàn)漏洞的能力。 編寫掃描器程序必須要很多TCP/IP程序編寫和C, Perl和或SHELL語言的知識(shí)。需要一些Socket編程的背景,一種在開發(fā)客戶/服務(wù)應(yīng)用程序的方法。開發(fā)一個(gè)掃描器是一個(gè)雄心勃勃的項(xiàng)目,通常能使程序員感到很滿意。 常用的端口掃描技術(shù) TCP connect() 掃描 這是最基本的TCP掃描。操作系統(tǒng)提供的connect()系統(tǒng)調(diào)用,用來與每一個(gè)感興趣的目標(biāo)計(jì)算機(jī)的端口進(jìn)行連接。如果端口處于偵聽狀態(tài),那么connect()就能成功。否則,這個(gè)端口是不能用的,即沒有提供服務(wù)。這個(gè)技術(shù)的一個(gè)最大的優(yōu)點(diǎn)是,你不需要任何權(quán)限。系統(tǒng)中的任何用戶都有權(quán)利使用這個(gè)調(diào)用。另一個(gè)好處就是速度。如果對(duì)每個(gè)目標(biāo)端口以線性的方式,使用單獨(dú)的connect()調(diào)用,那么將會(huì)花費(fèi)相當(dāng)長(zhǎng)的時(shí)間,你可以通過同時(shí)打開多個(gè)套接字,從而加速掃描。使用非阻塞I/O允許你設(shè)置一個(gè)低的時(shí)間用盡周期,同時(shí)觀察多個(gè)套接字。但這種方法的缺點(diǎn)是很容易被發(fā)覺,并且被過濾掉。目標(biāo)計(jì)算機(jī)的logs文件會(huì)顯示一連串的連接和連接是出錯(cuò)的服務(wù)消息,并且能很快的使它關(guān)閉。 TCP SYN掃描 這種技術(shù)通常認(rèn)為是“半開放”掃描,這是因?yàn)閽呙璩绦虿槐匾蜷_一個(gè)完全的TCP連接。掃描程序發(fā)送的是一個(gè)SYN數(shù)據(jù)包,好象準(zhǔn)備打開一個(gè)實(shí)際的連接并等待反應(yīng)一樣(參考TCP的三次握手建立一個(gè)TCP連接的過程)。一個(gè)SYN|ACK的返回信息表示端口處于偵聽狀態(tài)。一個(gè)RST返回,表示端口沒有處于偵聽?wèi)B(tài)。如果收到一個(gè)SYN|ACK,則掃描程序必須再發(fā)送一個(gè)RST信號(hào),來關(guān)閉這個(gè)連接過程。這種掃描技術(shù)的優(yōu)點(diǎn)在于一般不會(huì)在目標(biāo)計(jì)算機(jī)上留下記錄。但這種方法的一個(gè)缺點(diǎn)是,必須要有root權(quán)限才能建立自己的SYN數(shù)據(jù)包。 TCP FIN 掃描 有的時(shí)候有可能SYN掃描都不夠秘密。一些防火墻和包過濾器會(huì)對(duì)一些指定的端口進(jìn)行監(jiān)視,有的程序能檢測(cè)到這些掃描。相反,F(xiàn)IN數(shù)據(jù)包可能會(huì)沒有任何麻煩的通過。這種掃描方法的思想是關(guān)閉的端口會(huì)用適當(dāng)?shù)腞ST來回復(fù)FIN數(shù)據(jù)包。另一方面,打開的端口會(huì)忽略對(duì)FIN數(shù)據(jù)包的回復(fù)。這種方法和系統(tǒng)的實(shí)現(xiàn)有一定的關(guān)系。有的系統(tǒng)不管端口是否打開,都回復(fù)RST,這樣,這種掃描方法就不適用了。并且這種方法在區(qū)分Unix和NT時(shí),是十分有用的。 IP段掃描 這種不能算是新方法,只是其它技術(shù)的變化。它并不是直接發(fā)送TCP探測(cè)數(shù)據(jù)包,是將數(shù)據(jù)包分成兩個(gè)較小的IP段。這樣就將一個(gè)TCP頭分成好幾個(gè)數(shù)據(jù)包,從而過濾器就很難探測(cè)到。但必須小心。一些程序在處理這些小數(shù)據(jù)包時(shí)會(huì)有些麻煩。 TCP 反向 ident掃描 ident 協(xié)議允許(rfc1413)看到通過TCP連接的任何進(jìn)程的擁有者的用戶名,即使這個(gè)連接不是由這個(gè)進(jìn)程開始的。因此你能,舉個(gè)例子,連接到http端口,然后用identd來發(fā)現(xiàn)服務(wù)器是否正在以root權(quán)限運(yùn)行。這種方法只能在和目標(biāo)端口建立了一個(gè)完整的TCP連接后才能看到。 FTP 返回攻擊 FTP協(xié)議的一個(gè)有趣的特點(diǎn)是它支持代理(proxy)FTP連接。即入侵者可以從自己的計(jì)算機(jī)a.com和目標(biāo)主機(jī)target.com的FTP server-PI(協(xié)議解釋器)連接,建立一個(gè)控制通信連接。然后,請(qǐng)求這個(gè)server-PI激活一個(gè)有效的server-DTP(數(shù)據(jù)傳輸進(jìn)程)來給Internet上任何地方發(fā)送文件。對(duì)于一個(gè)User-DTP,這是個(gè)推測(cè),盡管RFC明確地定義請(qǐng)求一個(gè)服務(wù)器發(fā)送文件到另一個(gè)服務(wù)器是可以的。但現(xiàn)在這個(gè)方法好象不行了。這個(gè)協(xié)議的缺點(diǎn)是“能用來發(fā)送不能跟蹤的郵件和新聞,給許多服務(wù)器造成打擊,用盡磁盤,企圖越過防火墻”。 我們利用這個(gè)的目的是從一個(gè)代理的FTP服務(wù)器來掃描TCP端口。這樣,你能在一個(gè)防火墻后面連接到一個(gè)FTP服務(wù)器,然后掃描端口(這些原來有可能被阻塞)。如果FTP服務(wù)器允許從一個(gè)目錄讀寫數(shù)據(jù),你就能發(fā)送任意的數(shù)據(jù)到發(fā)現(xiàn)的打開的端口。 對(duì)于端口掃描,這個(gè)技術(shù)是使用PORT命令來表示被動(dòng)的User DTP正在目標(biāo)計(jì)算機(jī)上的某個(gè)端口偵聽。然后入侵者試圖用LIST命令列出當(dāng)前目錄,結(jié)果通過Server-DTP發(fā)送出去。如果目標(biāo)主機(jī)正在某個(gè)端口偵聽,傳輸就會(huì)成功(產(chǎn)生一個(gè)150或226的回應(yīng))。否則,會(huì)出現(xiàn)"425 Can''t build data connection: Connection refused."。然后,使用另一個(gè)PORT命令,嘗試目標(biāo)計(jì)算機(jī)上的下一個(gè)端口。這種方法的優(yōu)點(diǎn)很明顯,難以跟蹤,能穿過防火墻。主要缺點(diǎn)是速度很慢,有的FTP服務(wù)器最終能得到一些線索,關(guān)閉代理功能。 這種方法能成功的情景: 220 xxxxxxx.com FTP server (Version wu-2.4(3) Wed Dec 14 ...) ready. 220 xxx.xxx.xxx.edu FTP server ready. 220 xx.Telcom.xxxx.EDU FTP server (Version wu-2.4(3) Tue Jun 11 ...) ready. 220 lem FTP server (SunOS 4.1) ready. 220 xxx.xxx.es FTP server (Version wu-2.4(11) Sat Apr 27 ...) ready. 220 elios FTP server (SunOS 4.1) ready 這種方法不能成功的情景: 220 wcarchive.cdrom.com FTP server (Version DG-2.0.39 Sun May 4 ...) ready. 220 xxx.xx.xxxxx.EDU Version wu-2.4.2-academ[BETA-12](1) Fri Feb 7 220 ftp Microsoft FTP Service (Version 3.0). 220 xxx FTP server (Version wu-2.4.2-academ[BETA-11](1) Tue Sep 3 ...) ready. 220 xxx.unc.edu FTP server (Version wu-2.4.2-academ[BETA-13](6) ...) ready. UDP ICMP端口不能到達(dá)掃描 這種方法與上面幾種方法的不同之處在于使用的是UDP協(xié)議。由于這個(gè)協(xié)議很簡(jiǎn)單,所以掃描變得相對(duì)比較困難。這是由于打開的端口對(duì)掃描探測(cè)并不發(fā)送一個(gè)確認(rèn),關(guān)閉的端口也并不需要發(fā)送一個(gè)錯(cuò)誤數(shù)據(jù)包。幸運(yùn)的是,許多主機(jī)在你向一個(gè)未打開的UDP端口發(fā)送一個(gè)數(shù)據(jù)包時(shí),會(huì)返回一個(gè)ICMP_PORT_UNREACH錯(cuò)誤。這樣你就能發(fā)現(xiàn)哪個(gè)端口是關(guān)閉的。UDP和ICMP錯(cuò)誤都不保證能到達(dá),因此這種掃描器必須還實(shí)現(xiàn)在一個(gè)包看上去是丟失的時(shí)候能重新傳輸。這種掃描方法是很慢的,因?yàn)镽FC對(duì)ICMP錯(cuò)誤消息的產(chǎn)生速率做了規(guī)定。同樣,這種掃描方法需要具有root權(quán)限。 UDP recvfrom()和write() 掃描 當(dāng)非root用戶不能直接讀到端口不能到達(dá)錯(cuò)誤時(shí),Linux能間接地在它們到達(dá)時(shí)通知用戶。比如,對(duì)一個(gè)關(guān)閉的端口的第二個(gè)write()調(diào)用將失敗。在非阻塞的UDP套接字上調(diào)用recvfrom()時(shí),如果ICMP出錯(cuò)還沒有到達(dá)時(shí)回返回EAGAIN-重試。如果ICMP到達(dá)時(shí),返回ECONNREFUSED-連接被拒絕。這就是用來查看端口是否打開的技術(shù)。 ICMP echo掃描 這并不是真正意義上的掃描。但有時(shí)通過ping,在判斷在一個(gè)網(wǎng)絡(luò)上主機(jī)是否開機(jī)時(shí)非常有用。 典型掃描工具:nmap 在網(wǎng)上可以很容易地找到nmap的源碼,有興趣的話可以自行分析。
移動(dòng)通信網(wǎng) | 通信人才網(wǎng) | 更新日志 | 團(tuán)隊(duì)博客 | 免責(zé)聲明 | 關(guān)于詞典 | 幫助