以太網(wǎng)中網(wǎng)絡(luò)掃描原理與檢測(cè)
對(duì)網(wǎng)絡(luò)掃描原理和現(xiàn)有基本方法進(jìn)行了分析,并設(shè)計(jì)了一個(gè)陷阱機(jī)來(lái)檢測(cè)所在網(wǎng)段中的網(wǎng)絡(luò)掃描行為。?關(guān)鍵詞: 網(wǎng)絡(luò)掃描? 網(wǎng)絡(luò)掃描檢測(cè)? 陷阱機(jī)
網(wǎng)絡(luò)掃描通過(guò)掃描本地主機(jī),能檢測(cè)主機(jī)當(dāng)前可用的服務(wù)及其開(kāi)放端口,幫助網(wǎng)絡(luò)管理員查找安全漏洞,查殺木馬、蠕蟲(chóng)等危害系統(tǒng)安全的病毒。一些掃描器還封裝了簡(jiǎn)單的密碼探測(cè),利用自定義規(guī)則的密碼生成器來(lái)檢測(cè)過(guò)于簡(jiǎn)單和不安全的密碼。?
網(wǎng)絡(luò)掃描一般包括2個(gè)階段:(1)對(duì)整個(gè)網(wǎng)絡(luò)掃描一遍,從而找到活動(dòng)主機(jī)(因?yàn)樵S多子網(wǎng)配置得很稀疏,大部分IP地址是空的)。(2)對(duì)每個(gè)活動(dòng)主機(jī)進(jìn)行窮盡式的端口掃描。?
網(wǎng)絡(luò)掃描也是網(wǎng)絡(luò)入侵的基礎(chǔ)。一次成功的網(wǎng)絡(luò)入侵離不開(kāi)周密的網(wǎng)絡(luò)掃描。攻擊者利用網(wǎng)絡(luò)掃描探知目標(biāo)主機(jī)的各種信息,根據(jù)掃描的結(jié)果選擇攻擊方法以達(dá)到目的。因此,若能及時(shí)監(jiān)測(cè)、識(shí)別網(wǎng)絡(luò)掃描,就能預(yù)防網(wǎng)絡(luò)攻擊。為了得到被掃描主機(jī)的信息,網(wǎng)絡(luò)掃描報(bào)文對(duì)應(yīng)的源地址往往是真正的地址,因此監(jiān)測(cè)網(wǎng)絡(luò)掃描可以定位攻擊者。?
1? 網(wǎng)絡(luò)掃描原理?
網(wǎng)絡(luò)掃描通過(guò)檢測(cè)目標(biāo)主機(jī)TCP/IP不同端口的服務(wù),記錄目標(biāo)給予的回答。通過(guò)這種方法,可以搜集到很多目標(biāo)主機(jī)的各種信息(如是否能用匿名登錄,是否有可寫(xiě)的FTP目錄,是否能用Telnet等)。在獲得目標(biāo)主機(jī)TCP/IP端口和其對(duì)應(yīng)的網(wǎng)絡(luò)訪(fǎng)問(wèn)服務(wù)的相關(guān)信息后,與網(wǎng)絡(luò)漏洞掃描系統(tǒng)提供的漏洞庫(kù)進(jìn)行匹配,如果滿(mǎn)足匹配條件,則視為漏洞存在。?
在匹配原理上,網(wǎng)絡(luò)漏洞掃描器一般采用基于規(guī)則的匹配技術(shù)。根據(jù)安全專(zhuān)家對(duì)網(wǎng)絡(luò)系統(tǒng)安全漏洞、黑客攻擊案例的分析和系統(tǒng)管理員關(guān)于網(wǎng)絡(luò)系統(tǒng)安全配置的實(shí)際經(jīng)驗(yàn),形成一套標(biāo)準(zhǔn)的系統(tǒng)漏洞庫(kù),然后在此基礎(chǔ)上構(gòu)成相應(yīng)的匹配規(guī)則,由程序自動(dòng)進(jìn)行系統(tǒng)漏洞掃描的分析工作。如在對(duì)TCP 80端口的掃描過(guò)程中,發(fā)現(xiàn)/cgi-bin/phf或/cgi-bin/Count.cgi,則根據(jù)專(zhuān)家經(jīng)驗(yàn)以及CGI程序的共享性和標(biāo)準(zhǔn)化,可以推知該WWW服務(wù)存在2個(gè)CGI漏洞。?
1.1 主機(jī)在線(xiàn)探測(cè)?
為了避免不必要的空掃描,在掃描之前一般要先探測(cè)主機(jī)是否在線(xiàn)。其實(shí)現(xiàn)原理和常用的ping命令相似。具體方法是向目標(biāo)主機(jī)發(fā)送ICMP報(bào)文請(qǐng)求,根據(jù)返回值來(lái)判斷主機(jī)是否在線(xiàn)。所有安裝了TCP/IP協(xié)議的在線(xiàn)網(wǎng)絡(luò)主機(jī),都會(huì)對(duì)這樣的ICMP報(bào)文請(qǐng)求給予答復(fù)。該方法不僅能探測(cè)主機(jī)是否在線(xiàn),而且能根據(jù)ICMP應(yīng)答報(bào)文的TTL(TTL是位于IP首部的生存時(shí)間字段)值來(lái)粗略分辨出目標(biāo)主機(jī)操作系統(tǒng),為下一步的掃描工作提供依據(jù)。RFC793說(shuō)明了TCP怎樣響應(yīng)特別的信息包:這些響應(yīng)基于2個(gè)TCP狀態(tài),即關(guān)閉(CLOSED)和監(jiān)聽(tīng)(LISTEN)。?
RFC793描述了當(dāng)一個(gè)端口在關(guān)閉狀態(tài)時(shí),必須采用下面的規(guī)則:(1)任意進(jìn)入的包含RST標(biāo)志的信息段(segment)將被丟棄。(2)任意進(jìn)入的不包含RST標(biāo)志的信息段(如SYN、FIN和ACK)會(huì)導(dǎo)致在響應(yīng)中回送一個(gè)RST?!?/P>
當(dāng)一個(gè)端口處于監(jiān)聽(tīng)狀態(tài)時(shí),將采用下面的規(guī)則:(1)任意進(jìn)入的包含RST標(biāo)志的信息段將被忽略。(2)任意進(jìn)入的包含ACK標(biāo)志的信息段將導(dǎo)致一個(gè)RST的響應(yīng)。?
如果SYN位被設(shè)置,且進(jìn)入的信息段不被允許,則將導(dǎo)致一個(gè)RST的響應(yīng);若進(jìn)入的信息段被允許,則將導(dǎo)致響應(yīng)中發(fā)送一個(gè)SYN|ACK 信息包。?
這樣,通過(guò)2個(gè)ACK信息包的發(fā)送就可以驗(yàn)證計(jì)算機(jī)是否處于在線(xiàn)狀態(tài)。?
1.2 端口狀態(tài)探測(cè)?
發(fā)送1個(gè)SYN包到主機(jī)端口并等待響應(yīng)。如果端口打開(kāi),則響應(yīng)必定是SYN|ACK;如果端口關(guān)閉,則會(huì)收到RST|ACK響應(yīng)。這個(gè)掃描可以稱(chēng)為半打開(kāi)(half-scan)掃描。如NMAP(Network Mapper)在進(jìn)行端口狀態(tài)探測(cè)時(shí)會(huì)發(fā)送1個(gè)SYN包到主機(jī),如果端口關(guān)閉就發(fā)送RST信息通知NMAP。但如果NMAP發(fā)送SYN信息包到打開(kāi)狀態(tài)的端口,端口就會(huì)響應(yīng)SYN|ACK信息包給NMAP。當(dāng)NMAP探測(cè)到SYN|ACK信息包后自動(dòng)回應(yīng)RST,并由這個(gè)RST斷開(kāi)連接。一般情況下,計(jì)算機(jī)不會(huì)記錄這種情況,但對(duì)于NMAP來(lái)說(shuō)也已經(jīng)知道端口是否打開(kāi)或者關(guān)閉。如果被掃描主機(jī)安裝了防火墻則會(huì)過(guò)濾掉請(qǐng)求包,使發(fā)送者得不到回應(yīng),這時(shí)就需發(fā)送設(shè)置了TCP首部中標(biāo)志位的FIN、PSH和URG位(其中FIN表示發(fā)端完成發(fā)送任務(wù),PSH表示接收方應(yīng)該盡快將這個(gè)報(bào)文段交給應(yīng)用層,URG表示緊急指針有效)的echo request請(qǐng)求信息包。因?yàn)橐恍┡渲幂^差的防火墻允許這些信息包通過(guò)。?
1.3 操作系統(tǒng)探測(cè)?
每個(gè)操作系統(tǒng),甚至每個(gè)內(nèi)核修訂版本在TCP/IP棧方面都存在微小的差別,這將直接影響對(duì)相應(yīng)數(shù)據(jù)包的響應(yīng)。如NMAP提供了一個(gè)響應(yīng)列表,把所接收到的響應(yīng)與表中的各項(xiàng)響應(yīng)進(jìn)行比較,如果能與某種操作系統(tǒng)的響應(yīng)相匹配,就能識(shí)別出被探測(cè)主機(jī)所運(yùn)行的操作系統(tǒng)的類(lèi)型。在進(jìn)行網(wǎng)絡(luò)入侵攻擊時(shí),了解操作系統(tǒng)的類(lèi)型是相當(dāng)重要的,因?yàn)楣粽呖梢杂纱嗣鞔_應(yīng)用何種漏洞,或由此掌握系統(tǒng)存在的弱點(diǎn)。?
2? 主要掃描技術(shù)?
2.1 TCP connect掃描?
這是最基本的TCP掃描。利用操作系統(tǒng)提供的系統(tǒng)調(diào)用connect(),與每一個(gè)感興趣的目標(biāo)計(jì)算機(jī)的端口進(jìn)行連接。如果端口處于偵聽(tīng)狀態(tài),則connect()就能成功。否則,該端口是不能用的,即沒(méi)有提供服務(wù)。該技術(shù)的優(yōu)點(diǎn)是響應(yīng)速度快,并且使用者不需要任何權(quán)限。系統(tǒng)中的任何用戶(hù)都有權(quán)利使用該調(diào)用。另一個(gè)優(yōu)點(diǎn)就是速度很快。但缺點(diǎn)是容易被發(fā)覺(jué),并且易被過(guò)濾掉。使用該方法時(shí)目標(biāo)計(jì)算機(jī)的logs文件會(huì)顯示一連串的連接和連接時(shí)出錯(cuò)的服務(wù)消息,并且能很快將連接關(guān)閉。?
2.2 TCP SYN掃描?
TCP SYN掃描是半開(kāi)放式掃描,掃描程序不必打開(kāi)一個(gè)完全的TCP連接。掃描程序發(fā)送的是SYN數(shù)據(jù)包。返回RST,表示端口沒(méi)有處于偵聽(tīng)狀態(tài);返回SYN/ACK信息表示端口處于偵聽(tīng)狀態(tài),此時(shí)掃描程序必須再發(fā)送一個(gè)RST信號(hào)來(lái)關(guān)閉這個(gè)連接過(guò)程。這種掃描技術(shù)的優(yōu)點(diǎn)是一般不會(huì)在目標(biāo)計(jì)算機(jī)上留下記錄。但這種方法必須要有管理員權(quán)限才能建立自己的SYN數(shù)據(jù)包。通常這個(gè)條件很容易滿(mǎn)足。?
2.3 TCP FIN掃描?
有時(shí)SYN掃描不夠秘密,防火墻和包過(guò)濾器就會(huì)對(duì)一些指定的端口進(jìn)行監(jiān)視,并能檢測(cè)到這些掃描。相反,FIN數(shù)據(jù)包可能會(huì)沒(méi)有任何麻煩地被放行。這種掃描方法的思想是關(guān)閉的端口會(huì)用適當(dāng)?shù)腞ST來(lái)回復(fù)FIN數(shù)據(jù)包;而打開(kāi)的端口會(huì)忽略對(duì)FIN數(shù)據(jù)包的回復(fù)。但這種方法和系統(tǒng)的實(shí)現(xiàn)有關(guān)。有的系統(tǒng)不管端口是否打開(kāi),都回復(fù)RST,這時(shí)這種掃描方法就不適用了。在區(qū)分Unix和NT操作系統(tǒng)時(shí),這種方法是有效的。?
2.4 IP段掃描?
IP段掃描并不是直接發(fā)送TCP探測(cè)數(shù)據(jù)包,而是將數(shù)據(jù)包分成2個(gè)較小的IP段。這樣就將一個(gè)TCP頭分成好幾個(gè)數(shù)據(jù)包,從而很難探測(cè)到過(guò)濾器。但必須小心,一些程序在處理這些小數(shù)據(jù)包時(shí)會(huì)丟棄。?
2.5 TCP反向ident掃描?
ident協(xié)議(RFC1413)允許看到通過(guò)TCP連接的任何進(jìn)程的擁有者的用戶(hù)名。例如用戶(hù)能連接到http端口,然后用identd來(lái)發(fā)現(xiàn)服務(wù)器是否正在以管理員權(quán)限運(yùn)行。這種方法只能在和目標(biāo)端口建立了完整的TCP連接后才能使用。?
2.6 FTP代理間接掃描?
FTP協(xié)議支持代理(proxy)FTP連接,攻擊者可以通過(guò)FTP server-PI(協(xié)議解釋器)使源主機(jī)和目標(biāo)主機(jī)建立控制通信連接。然后,請(qǐng)求該server-PI激活一個(gè)有效的server -DTP(即數(shù)據(jù)傳輸進(jìn)程)來(lái)給其他主機(jī)發(fā)送信息。因此,攻擊者可以用代理服務(wù)技術(shù)來(lái)掃描代理服務(wù)器所在網(wǎng)段主機(jī)的TCP端口。這樣,攻擊者就可以繞過(guò)防火墻,通過(guò)連接到防火墻內(nèi)部的一個(gè)FTP服務(wù)器進(jìn)行端口掃描。該方法的優(yōu)點(diǎn)是很難被跟蹤,能穿過(guò)防火墻;其缺點(diǎn)是速度很慢。?
2.7 UDP不可達(dá)掃描?
該方法與前述方法的不同之處在于使用的是UDP協(xié)議。UDP協(xié)議對(duì)數(shù)據(jù)包的請(qǐng)求不回應(yīng),打開(kāi)的端口對(duì)掃描探測(cè)不發(fā)送確認(rèn),關(guān)閉的端口也不發(fā)送錯(cuò)誤數(shù)據(jù)包。但是許多主機(jī)在用戶(hù)向一個(gè)未打開(kāi)的UDP端口發(fā)送數(shù)據(jù)包時(shí),會(huì)返回一個(gè)ICMP_PORT_UNREACH錯(cuò)誤信息。這樣攻擊者就能判斷哪些端口是關(guān)閉的。UDP包和ICMP錯(cuò)誤消息都不保證能到達(dá)。因此,在掃描時(shí)必須在探測(cè)包看似丟失時(shí)重傳。RFC793對(duì)ICMP錯(cuò)誤消息的產(chǎn)生速率做了規(guī)定,因此,這種掃描方法很慢。?
當(dāng)非管理員用戶(hù)不能直接讀取端口且不能到達(dá)錯(cuò)誤信息時(shí),Linux能間接地在它們到達(dá)時(shí)通知用戶(hù),如對(duì)一個(gè)關(guān)閉的端口的第2個(gè)write()調(diào)用將失敗;在非阻塞的UDP套接字上調(diào)用recvfrom()時(shí),如果ICMP出錯(cuò)信息還沒(méi)有到達(dá),則返回EAGAIN(重試),否則返回ECONNREFUSED(連接被拒絕)。?
3? 網(wǎng)絡(luò)掃描檢測(cè)的實(shí)現(xiàn)?
因?yàn)榫W(wǎng)絡(luò)掃描首先需要對(duì)整個(gè)網(wǎng)絡(luò)掃描一遍,從而找到活動(dòng)主機(jī)(因?yàn)樵S多子網(wǎng)配置得很稀疏,所以大部分IP地址是空的),然后對(duì)每個(gè)活動(dòng)主機(jī)進(jìn)行窮盡式的端口掃描。因此可以設(shè)計(jì)一個(gè)網(wǎng)絡(luò)陷阱機(jī)來(lái)檢測(cè)網(wǎng)絡(luò)掃描。其原理與實(shí)現(xiàn)過(guò)程如下。?
在網(wǎng)絡(luò)陷阱機(jī)上虛擬多個(gè)IP地址,這些地址與需重點(diǎn)保護(hù)的主機(jī)的IP地址相鄰,并且服務(wù)與開(kāi)放端口及需重點(diǎn)保護(hù)的主機(jī)相同。網(wǎng)絡(luò)陷阱機(jī)與交換機(jī)或路由器的映射端口(span port)相連,這樣連接就能采集到流經(jīng)整個(gè)網(wǎng)絡(luò)的數(shù)據(jù)。?
3.1 數(shù)據(jù)包過(guò)濾?
數(shù)據(jù)包過(guò)濾的主要目的是縮減數(shù)據(jù)。為了防止丟包,包過(guò)濾只做簡(jiǎn)單的基于包頭內(nèi)容的過(guò)濾(如IP地址、TCP/IP端口、TCP標(biāo)志位等),去除不關(guān)心的網(wǎng)絡(luò)數(shù)據(jù)包的數(shù)據(jù)而只留下其報(bào)頭,并將其結(jié)果存入指定數(shù)據(jù)庫(kù)。經(jīng)過(guò)包過(guò)濾之后的網(wǎng)絡(luò)包數(shù)據(jù)量將大大減少。包過(guò)濾規(guī)則的BNF范式描述如下:?
例如,在以下規(guī)則中:“{12,4}=={16,4}20”,表示若從第12字節(jié)偏移處開(kāi)始的4個(gè)字節(jié)(源IP地址)等于從第16個(gè)字節(jié)偏移處開(kāi)始的4個(gè)字節(jié)(目的IP地址),則將包的前20字節(jié)獲取過(guò)來(lái),而拋棄包的其余內(nèi)容。利用此語(yǔ)法定義的過(guò)濾規(guī)則簡(jiǎn)單且過(guò)濾條件基本上是簡(jiǎn)單的比較運(yùn)算,適于計(jì)算機(jī)進(jìn)行高效快速地處理。?
3.2 網(wǎng)絡(luò)掃描檢測(cè)?
????檢測(cè)程序?qū)χ付〝?shù)據(jù)庫(kù)文件進(jìn)行分析。當(dāng)源地址連續(xù)相同的IP請(qǐng)求連接記錄大于某一閥值時(shí),則認(rèn)為此地址的用戶(hù)可能在掃描網(wǎng)絡(luò),這時(shí)將此地址上報(bào)給執(zhí)行程序。執(zhí)行程序通過(guò)對(duì)可疑IP地址某一時(shí)間段內(nèi)的所有記錄進(jìn)行分析,來(lái)發(fā)現(xiàn)網(wǎng)絡(luò)掃描。例如若發(fā)現(xiàn)可疑IP對(duì)其他主機(jī)進(jìn)行了窮盡式的端口連接,則認(rèn)為該IP地址用戶(hù)在進(jìn)行網(wǎng)絡(luò)掃描。?
但是隱蔽掃描的IP地址很可能是偽裝的,且掃描時(shí)間也可能不連續(xù),因此用上面的方法不一定能檢測(cè)到隱蔽掃描。?
網(wǎng)絡(luò)掃描的目的是要發(fā)現(xiàn)網(wǎng)絡(luò)中活動(dòng)主機(jī)并找出其安全漏洞,因此服務(wù)與端口開(kāi)放較多的重點(diǎn)保護(hù)主機(jī)是掃描者的重點(diǎn)對(duì)象。檢測(cè)程序?qū)χ付〝?shù)據(jù)庫(kù)文件進(jìn)行分析,比較受保護(hù)主機(jī)的請(qǐng)求連接和網(wǎng)絡(luò)陷阱機(jī)與之相近IP地址的請(qǐng)求連接,如在某時(shí)間段內(nèi)的非常用連接相近,則認(rèn)為此地址的主機(jī)可能被掃描。將此地址上報(bào)給執(zhí)行程序,執(zhí)行程序?qū)梢芍鳈C(jī)IP地址某一時(shí)間段內(nèi)的所有記錄進(jìn)行分析,如發(fā)現(xiàn)有窮盡式的端口連接,則認(rèn)為該主機(jī)被網(wǎng)絡(luò)掃描。?
4? 結(jié)束語(yǔ)?
網(wǎng)絡(luò)掃描是一把雙刃劍。網(wǎng)絡(luò)管理員通過(guò)網(wǎng)絡(luò)掃描能檢測(cè)網(wǎng)絡(luò)中主機(jī)存在的漏洞,從而查漏補(bǔ)缺,使得網(wǎng)絡(luò)運(yùn)行更為安全可靠。然而現(xiàn)在網(wǎng)絡(luò)掃描技術(shù)的發(fā)展,特別是黑客的積極參與使得網(wǎng)絡(luò)掃描技術(shù)成為一種危害網(wǎng)絡(luò)安全的行為。只有對(duì)網(wǎng)絡(luò)掃描進(jìn)行有效監(jiān)控,才能更有效地保護(hù)網(wǎng)絡(luò),將網(wǎng)絡(luò)優(yōu)勢(shì)發(fā)揮出來(lái)。?
參考文獻(xiàn)?
1?? Fyodor.Remote OS Detection via TCP/IP Stack FingerPrinting.?www.insecure.org,1998?
2?? Guo X B,Qian D P,Liu M et al.Detection and Protection?Against Network Scanning:IEDP.ICCNMC2001,2001?
3?? Postel J.Transmission Control Protocol.RFC 793,1981?
4?? Johns M S.Identification Protocol.RFC 1413,1993?
5?? Nothcutt S著,林琪譯.入侵檢測(cè)特征與分析.北京:中國(guó)電力出版社,2002?
6?? 劉敏,過(guò)曉冰.針對(duì)網(wǎng)絡(luò)掃描的監(jiān)測(cè)系統(tǒng).計(jì)算機(jī)工程,?2002;28(7)?
7?? 朱艷輝,黃家林.網(wǎng)絡(luò)掃描的自動(dòng)監(jiān)控.計(jì)算機(jī)應(yīng)用,2000;20(7)?
8?? 李素科.掃描器原理與反掃描措施.網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2001;(3)?
評(píng)論
查看更多