|
網(wǎng)絡(luò)技術(shù)是從1990年代中期發(fā)展起來(lái)的新技術(shù),它把互聯(lián)網(wǎng)上分散的資源融為有機(jī)整體,實(shí)現(xiàn)資源的全面共享和有機(jī)協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計(jì)算機(jī)、存儲(chǔ)資源、數(shù)據(jù)資源、信息資源、知識(shí)資源、專家資源、大型數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、傳感器等。 當(dāng)前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認(rèn)為是互聯(lián)網(wǎng)發(fā)展的第三階段。 一:TCP/IP相關(guān)問(wèn)題連接端及標(biāo)記 IP地址和端口被稱作套接字,它代表一個(gè)TCP連接的一個(gè)連接端。為了獲得TCP服務(wù),必須在發(fā)送機(jī)的一個(gè)端口上和接收機(jī)的一個(gè)端口上建立連接。TCP連接用兩個(gè)連接端來(lái)區(qū)別,也就是(連接端1,連接端2)。連接端互相發(fā)送數(shù)據(jù)包。 一個(gè)TCP數(shù)據(jù)包包括一個(gè)TCP頭,后面是選項(xiàng)和數(shù)據(jù)。一個(gè)TCP頭包含6個(gè)標(biāo)志位。它們的意義分別為: SYN: 標(biāo)志位用來(lái)建立連接,讓連接雙方同步序列號(hào)。如果SYN=1而ACK=0,則表示該數(shù)據(jù)包為連接請(qǐng)求,如果SYN=1而ACK=1則表示接受連接。 FIN: 表示發(fā)送端已經(jīng)沒(méi)有數(shù)據(jù)要求傳輸了,希望釋放連接。 RST: 用來(lái)復(fù)位一個(gè)連接。RST標(biāo)志置位的數(shù)據(jù)包稱為復(fù)位包。一般情況下,如果TCP收到的一個(gè)分段明顯不是屬于該主機(jī)上的任何一個(gè)連接,則向遠(yuǎn)端發(fā)送一個(gè)復(fù)位包。 URG: 為緊急數(shù)據(jù)標(biāo)志。如果它為1,表示本數(shù)據(jù)包中包含緊急數(shù)據(jù)。此時(shí)緊急數(shù)據(jù)指針有效。 ACK: 為確認(rèn)標(biāo)志位。如果為1,表示包中的確認(rèn)號(hào)時(shí)有效的。否則,包中的確認(rèn)號(hào)無(wú)效。 PSH: 如果置位,接收端應(yīng)盡快把數(shù)據(jù)傳送給應(yīng)用層。 TCP連接的建立 TCP是一個(gè)面向連接的可靠傳輸協(xié)議。面向連接表示兩個(gè)應(yīng)用端在利用TCP傳送數(shù)據(jù)前必須先建立TCP連接。 TCP的可靠性通過(guò)校驗(yàn)和,定時(shí)器,數(shù)據(jù)序號(hào)和應(yīng)答來(lái)提供。通過(guò)給每個(gè)發(fā)送的字節(jié)分配一個(gè)序號(hào),接收端接收到數(shù)據(jù)后發(fā)送應(yīng)答,TCP協(xié)議保證了數(shù)據(jù)的可靠傳輸。數(shù)據(jù)序號(hào)用來(lái)保證數(shù)據(jù)的順序,剔除重復(fù)的數(shù)據(jù)。在一個(gè)TCP會(huì)話中,有兩個(gè)數(shù)據(jù)流(每個(gè)連接端從另外一端接收數(shù)據(jù),同時(shí)向?qū)Ψ桨l(fā)送數(shù)據(jù)),因此在建立連接時(shí),必須要為每一個(gè)數(shù)據(jù)流分配ISN(初始序號(hào))。為了了解實(shí)現(xiàn)過(guò)程,我們假設(shè)客戶端C希望跟服務(wù)器端S建立連接,然后分析連接建立的過(guò)程(通常稱作三階段握手): 1: C --SYN XXà S 2: C ?-SYN YY/ACK XX+1------- S 3: C ----ACK YY+1--à S 1:C發(fā)送一個(gè)TCP包(SYN 請(qǐng)求)給S,其中標(biāo)記SYN(同步序號(hào))要打開(kāi)。SYN請(qǐng)求指明了客戶端希望連接的服務(wù)器端端口號(hào)和客戶端的ISN(XX是一個(gè)例子)。 2:服務(wù)器端發(fā)回應(yīng)答,包含自己的SYN信息ISN(YY)和對(duì)C的SYN應(yīng)答,應(yīng)答時(shí)返回下一個(gè)希望得到的字節(jié)序號(hào)(YY+1)。 3:C 對(duì)從S 來(lái)的SYN進(jìn)行應(yīng)答,數(shù)據(jù)發(fā)送開(kāi)始。 一些實(shí)現(xiàn)細(xì)節(jié) 大部分TCP/IP實(shí)現(xiàn)遵循以下原則: 1:當(dāng)一個(gè)SYN或者FIN數(shù)據(jù)包到達(dá)一個(gè)關(guān)閉的端口,TCP丟棄數(shù)據(jù)包同時(shí)發(fā)送一個(gè)RST數(shù)據(jù)包。 2:當(dāng)一個(gè)RST數(shù)據(jù)包到達(dá)一個(gè)監(jiān)聽(tīng)端口,RST被丟棄。 3:當(dāng)一個(gè)RST數(shù)據(jù)包到達(dá)一個(gè)關(guān)閉的端口,RST被丟棄。 4:當(dāng)一個(gè)包含ACK的數(shù)據(jù)包到達(dá)一個(gè)監(jiān)聽(tīng)端口時(shí),數(shù)據(jù)包被丟棄,同時(shí)發(fā)送一個(gè)RST數(shù)據(jù)包。 5:當(dāng)一個(gè)SYN位關(guān)閉的數(shù)據(jù)包到達(dá)一個(gè)監(jiān)聽(tīng)端口時(shí),數(shù)據(jù)包被丟棄。 6:當(dāng)一個(gè)SYN數(shù)據(jù)包到達(dá)一個(gè)監(jiān)聽(tīng)端口時(shí),正常的三階段握手繼續(xù),回答一個(gè)SYN ACK數(shù)據(jù)包。 7:當(dāng)一個(gè)FIN數(shù)據(jù)包到達(dá)一個(gè)監(jiān)聽(tīng)端口時(shí),數(shù)據(jù)包被丟棄。"FIN行為"(關(guān)閉得端口返回RST,監(jiān)聽(tīng)端口丟棄包),在URG和PSH標(biāo)志位置位時(shí)同樣要發(fā)生。所有的URG,PSH和FIN,或者沒(méi)有任何標(biāo)記的TCP數(shù)據(jù)包都會(huì)引起"FIN行為"。 二:全TCP連接和SYN掃描器 全TCP連接 全TCP連接是長(zhǎng)期以來(lái)TCP端口掃描的基礎(chǔ)。掃描主機(jī)嘗試(使用三次握手)與目的機(jī)指定端口建立建立正規(guī)的連接。連接由系統(tǒng)調(diào)用connect()開(kāi)始。對(duì)于每一個(gè)監(jiān)聽(tīng)端口,connect()會(huì)獲得成功,否則返回-1,表示端口不可訪問(wèn)。由于通常情況下,這不需要什么特權(quán),所以幾乎所有的用戶(包括多用戶環(huán)境下)都可以通過(guò)connect來(lái)實(shí)現(xiàn)這個(gè)技術(shù)。 這種掃描方法很容易檢測(cè)出來(lái)(在日志文件中會(huì)有大量密集的連接和錯(cuò)誤記錄)。Courtney,Gabriel和TCP Wrapper監(jiān)測(cè)程序通常用來(lái)進(jìn)行監(jiān)測(cè)。另外,TCP Wrapper可以對(duì)連接請(qǐng)求進(jìn)行控制,所以它可以用來(lái)阻止來(lái)自不明主機(jī)的全連接掃描。 TCP SYN掃描 在這種技術(shù)中,掃描主機(jī)向目標(biāo)主機(jī)的選擇端口發(fā)送SYN數(shù)據(jù)段。如果應(yīng)答是RST,那么說(shuō)明端口是關(guān)閉的,按照設(shè)定就探聽(tīng)其它端口;如果應(yīng)答中包含SYN和ACK,說(shuō)明目標(biāo)端口處于監(jiān)聽(tīng)狀態(tài)。由于所有的掃描主機(jī)都需要知道這個(gè)信息,傳送一個(gè)RST給目標(biāo)機(jī)從而停止建立連接。由于在SYN掃描時(shí),全連接尚未建立,所以這種技術(shù)通常被稱為半打開(kāi)掃描。SYN掃描的優(yōu)點(diǎn)在于即使日志中對(duì)掃描有所記錄,但是嘗試進(jìn)行連接的記錄也要比全掃描少得多。缺點(diǎn)是在大部分操作系統(tǒng)下,發(fā)送主機(jī)需要構(gòu)造適用于這種掃描的IP包,通常情況下,構(gòu)造SYN數(shù)據(jù)包需要超級(jí)用戶或者授權(quán)用戶訪問(wèn)專門(mén)的系統(tǒng)調(diào)用。 三:秘密掃描與間接掃描 秘密掃描技術(shù) 由于這種技術(shù)不包含標(biāo)準(zhǔn)的TCP三次握手協(xié)議的任何部分,所以無(wú)法被記錄下來(lái),從而必SYN掃描隱蔽得多。另外,F(xiàn)IN數(shù)據(jù)包能夠通過(guò)只監(jiān)測(cè)SYN包的包過(guò)濾器。 秘密掃描技術(shù)使用FIN數(shù)據(jù)包來(lái)探聽(tīng)端口。當(dāng)一個(gè)FIN數(shù)據(jù)包到達(dá)一個(gè)關(guān)閉的端口,數(shù)據(jù)包會(huì)被丟掉,并且回返回一個(gè)RST數(shù)據(jù)包。否則,當(dāng)一個(gè)FIN數(shù)據(jù)包到達(dá)一個(gè)打開(kāi)的端口,數(shù)據(jù)包只是簡(jiǎn)單的丟掉(不返回RST)。 Xmas和Null掃描是秘密掃描的兩個(gè)變種。Xmas掃描打開(kāi)FIN,URG和PUSH標(biāo)記,而Null掃描關(guān)閉所有標(biāo)記。這些組合的目的是為了通過(guò)所謂的FIN標(biāo)記監(jiān)測(cè)器的過(guò)濾。 秘密掃描通常適用于UNIX目標(biāo)主機(jī),除過(guò)少量的應(yīng)當(dāng)丟棄數(shù)據(jù)包卻發(fā)送reset信號(hào)的操作系統(tǒng)(包括CISCO,BSDI,HP/UX,MVS和IRIX)。在Windows95/NT環(huán)境下,該方法無(wú)效,因?yàn)椴徽撃繕?biāo)端口是否打開(kāi),操作系統(tǒng)都發(fā)送RST。 跟SYN掃描類似,秘密掃描也需要自己構(gòu)造IP 包。 間接掃描 間接掃描的思想是利用第三方的IP(欺騙主機(jī))來(lái)隱藏真正掃描者的IP。由于掃描主機(jī)會(huì)對(duì)欺騙主機(jī)發(fā)送回應(yīng)信息,所以必須監(jiān)控欺騙主機(jī)的IP行為,從而獲得原始掃描的結(jié)果。間接掃描的工作過(guò)程如下: 假定參與掃描過(guò)程的主機(jī)為掃描機(jī),隱藏機(jī),目標(biāo)機(jī)。掃描機(jī)和目標(biāo)記的角色非常明顯。隱藏機(jī)是一個(gè)非常特殊的角色,在掃描機(jī)掃描目的機(jī)的時(shí)候,它不能發(fā)送任何數(shù)據(jù)包(除了與掃描有關(guān)的包)。 四:認(rèn)證掃描和代理掃描 認(rèn)證掃描 到目前為止,我們分析的掃描器在設(shè)計(jì)時(shí)都只有一個(gè)目的:判斷一個(gè)主機(jī)中哪個(gè)端口上有進(jìn)程在監(jiān)聽(tīng)。然而,最近的幾個(gè)新掃描器增加了其它的功能,能夠獲取監(jiān)聽(tīng)端口的進(jìn)程的特征和行為。 認(rèn)證掃描是一個(gè)非常有趣的例子。利用認(rèn)證協(xié)議,這種掃描器能夠獲取運(yùn)行在某個(gè)端口上進(jìn)程的用戶名(userid)。認(rèn)證掃描嘗試與一個(gè)TCP端口建立連接,如果連接成功,掃描器發(fā)送認(rèn)證請(qǐng)求到目的主機(jī)的113TCP端口。認(rèn)證掃描同時(shí)也被成為反向認(rèn)證掃描,因?yàn)榧词棺畛醯腞FC建議了一種幫助服務(wù)器認(rèn)證客戶端的協(xié)議,然而在實(shí)際的實(shí)現(xiàn)中也考慮了反向應(yīng)用(即客戶端認(rèn)證服務(wù)器)。 代理掃描 文件傳輸協(xié)議(FTP)支持一個(gè)非常有意思的選項(xiàng):代理ftp連接。這個(gè)選項(xiàng)最初的目的(RFC959)是允許一個(gè)客戶端同時(shí)跟兩個(gè)FTP服務(wù)器建立連接,然后在服務(wù)器之間直接傳輸數(shù)據(jù)。然而,在大部分實(shí)現(xiàn)中,實(shí)際上能夠使得FTP服務(wù)器發(fā)送文件到Internet的任何地方。許多攻擊正是利用了這個(gè)缺陷。最近的許多掃描器利用這個(gè)弱點(diǎn)實(shí)現(xiàn)ftp代理掃描。 ftp端口掃描主要使用ftp代理服務(wù)器來(lái)掃描tcp端口。掃描步驟如下: 1:假定S是掃描機(jī),T是掃描目標(biāo),F(xiàn)是一個(gè)ftp服務(wù)器,這個(gè)服務(wù)器支持代理選項(xiàng),能夠跟S和T建立連接。 2:S與F建立一個(gè)ftp會(huì)話,使用PORT命令聲明一個(gè)選擇的端口(稱之為p-T)作為代理傳輸所需要的被動(dòng)端口。 3:然后S使用一個(gè)LIST命令嘗試啟動(dòng)一個(gè)到p-T的數(shù)據(jù)傳輸。 4:如果端口p-T確實(shí)在監(jiān)聽(tīng),傳輸就會(huì)成功(返回碼150和226被發(fā)送回給S)。否則S回收到"425無(wú)法打開(kāi)數(shù)據(jù)連接"的應(yīng)答。 5:S持續(xù)使用PORT和LIST命令,直到T上所有的選擇端口掃描完畢。 FTP代理掃描不但難以跟蹤,而且當(dāng)ftp服務(wù)器在防火墻后面的時(shí)候 五:其它掃描方法 Ping掃描 如果需要掃描一個(gè)主機(jī)上甚至整個(gè)子網(wǎng)上的成千上萬(wàn)個(gè)端口,首先判斷一個(gè)主機(jī)是否開(kāi)機(jī)就非常重要了。這就是Ping掃描器的目的。主要由兩種方法用來(lái)實(shí)現(xiàn)Ping掃描。 1:真實(shí)掃描:例如發(fā)送ICMP請(qǐng)求包給目標(biāo)IP地址,有相應(yīng)的表示主機(jī)開(kāi)機(jī)。 2:TCP Ping:例如發(fā)送特殊的TCP包給通常都打開(kāi)且沒(méi)有過(guò)濾的端口(例如80端口)。對(duì)于沒(méi)有root權(quán)限的掃描者,使用標(biāo)準(zhǔn)的connect來(lái)實(shí)現(xiàn)。否則,ACK數(shù)據(jù)包發(fā)送給每一個(gè)需要探測(cè)的主機(jī)IP。每一個(gè)返回的RST表明相應(yīng)主機(jī)開(kāi)機(jī)了。另外,一種類似于SYN掃描端口80(或者類似的)也被經(jīng)常使用。 安全掃描器 安全掃描器是用來(lái)自動(dòng)檢查一個(gè)本地或者遠(yuǎn)程主機(jī)的安全漏洞的程序。象其它端口掃描器一樣,它們查詢端口并記錄返回結(jié)果。但是它們。它們主要要解決以下問(wèn)題: 1:是否允許匿名登錄。 2:是否某種網(wǎng)絡(luò)服務(wù)需要認(rèn)證。 3:是否存在已知安全漏洞。 可能SATAN是最著名的安全掃描器。1995年四月SATAN最初發(fā)布的時(shí)候,人們都認(rèn)為這就是它的最終版本,認(rèn)為它不但能夠發(fā)現(xiàn)相當(dāng)多的已知漏洞,而且能夠針對(duì)任何很難發(fā)現(xiàn)的漏洞提供信息。但是,從它發(fā)布以來(lái),安全掃描器一直在不斷地發(fā)展,其實(shí)現(xiàn)機(jī)制也越來(lái)越復(fù)雜。 棧指紋 絕大部分安全漏洞與缺陷都與操作系統(tǒng)相關(guān),因此遠(yuǎn)程操作系統(tǒng)探測(cè)是系統(tǒng)管理員關(guān)心的一個(gè)問(wèn)題。 遠(yuǎn)程操作系統(tǒng)探測(cè)不是一個(gè)新問(wèn)題。近年來(lái),TCP/IP實(shí)現(xiàn)提供了主機(jī)操作系統(tǒng)信息服務(wù)。FTP,TELNET,HTTP和DNS服務(wù)器就是很好的例子。然而,實(shí)際上提供的信息都是不完整的,甚至有可能是錯(cuò)誤的。最初的掃描器,依靠檢測(cè)不同操作系統(tǒng)對(duì)TCP/IP的不同實(shí)現(xiàn)來(lái)識(shí)別操作系統(tǒng)。由于差別的有限性,現(xiàn)在只能最多只能識(shí)別出10余種操作系統(tǒng)。 最近出現(xiàn)的兩個(gè)掃描器,QueSO和NMAP,在指紋掃描中引入了新的技術(shù)。 QueSO第一個(gè)實(shí)現(xiàn)了使用分離的數(shù)據(jù)庫(kù)于指紋。NMAP包含了很多的操作系統(tǒng)探測(cè)技術(shù),定義了一個(gè)模板數(shù)據(jù)結(jié)構(gòu)來(lái)描述指紋。由于新的指紋可以很容易地以模板的形式加入,NMAP指紋數(shù)據(jù)庫(kù)是不斷增長(zhǎng)的,它能識(shí)別的操作系統(tǒng)也越來(lái)越多。 這種使用掃描器判斷遠(yuǎn)程操作系統(tǒng)的技術(shù)稱為(TCP/IP)棧指紋技術(shù)。 另外有一種技術(shù)稱為活動(dòng)探測(cè);顒(dòng)探測(cè)把TCP的實(shí)現(xiàn)看作一個(gè)黑盒子。通過(guò)研究TCP對(duì)探測(cè)的回應(yīng),就可以發(fā)現(xiàn) TCP實(shí)現(xiàn)的特點(diǎn)。TCP/IP 棧指紋技術(shù)是活動(dòng)探測(cè)的一個(gè)變種,它適用于整個(gè)TCP/IP協(xié)議的實(shí)現(xiàn)和操作系統(tǒng)。棧指紋使用好幾種技術(shù)來(lái)探測(cè)TCP/IP協(xié)議棧和操作系統(tǒng)的細(xì)微區(qū)別。這些信息用來(lái)創(chuàng)建一個(gè)指紋,然后跟已知的指紋進(jìn)行比較,就可以判斷出當(dāng)前被掃描的操作系統(tǒng)。 棧指紋掃描包含了相當(dāng)多的技術(shù)。下面是一個(gè)不太完整的清單: 1:FIN探測(cè) 2:BOGUS標(biāo)記探測(cè) 3:TCP ISN 取樣 4:TCP 初始窗口 5:ACK值 6:ICMP錯(cuò)誤信息 7:ICMP信息 8:服務(wù)類型 9:TCP選項(xiàng) 網(wǎng)絡(luò)的神奇作用吸引著越來(lái)越多的用戶加入其中,正因如此,網(wǎng)絡(luò)的承受能力也面臨著越來(lái)越嚴(yán)峻的考驗(yàn)―從硬件上、軟件上、所用標(biāo)準(zhǔn)上......,各項(xiàng)技術(shù)都需要適時(shí)應(yīng)勢(shì),對(duì)應(yīng)發(fā)展,這正是網(wǎng)絡(luò)迅速走向進(jìn)步的催化劑。 |
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!