以太網(wǎng)中網(wǎng)絡(luò)掃描的原理與檢測方法
對網(wǎng)絡(luò)掃描原理和現(xiàn)有基本方法進(jìn)行了分析,并設(shè)計(jì)了一個陷阱機(jī)來檢測所在網(wǎng)段中的網(wǎng)絡(luò)掃描行為。
本文引用地址:http://m.butianyuan.cn/article/153916.htm關(guān)鍵詞: 網(wǎng)絡(luò)掃描 網(wǎng)絡(luò)掃描檢測 陷阱機(jī)
網(wǎng)絡(luò)掃描通過掃描本地主機(jī),能檢測主機(jī)當(dāng)前可用的服務(wù)及其開放端口,幫助網(wǎng)絡(luò)管理員查找安全漏洞,查殺木馬、蠕蟲等危害系統(tǒng)安全的病毒。一些掃描器還封裝了簡單的密碼探測,利用自定義規(guī)則的密碼生成器來檢測過于簡單和不安全的密碼。
網(wǎng)絡(luò)掃描一般包括2個階段:(1)對整個網(wǎng)絡(luò)掃描一遍,從而找到活動主機(jī)(因?yàn)樵S多子網(wǎng)配置得很稀疏,大部分IP地址是空的)。(2)對每個活動主機(jī)進(jìn)行窮盡式的端口掃描。
網(wǎng)絡(luò)掃描也是網(wǎng)絡(luò)入侵的基礎(chǔ)。一次成功的網(wǎng)絡(luò)入侵離不開周密的網(wǎng)絡(luò)掃描。攻擊者利用網(wǎng)絡(luò)掃描探知目標(biāo)主機(jī)的各種信息,根據(jù)掃描的結(jié)果選擇攻擊方法以達(dá)到目的。因此,若能及時監(jiān)測、識別網(wǎng)絡(luò)掃描,就能預(yù)防網(wǎng)絡(luò)攻擊。為了得到被掃描主機(jī)的信息,網(wǎng)絡(luò)掃描報(bào)文對應(yīng)的源地址往往是真正的地址,因此監(jiān)測網(wǎng)絡(luò)掃描可以定位攻擊者。
1 網(wǎng)絡(luò)掃描原理
網(wǎng)絡(luò)掃描通過檢測目標(biāo)主機(jī)TCP/IP不同端口的服務(wù),記錄目標(biāo)給予的回答。通過這種方法,可以搜集到很多目標(biāo)主機(jī)的各種信息(如是否能用匿名登錄,是否有可寫的FTP目錄,是否能用Telnet等)。在獲得目標(biāo)主機(jī)TCP/IP端口和其對應(yīng)的網(wǎng)絡(luò)訪問服務(wù)的相關(guān)信息后,與網(wǎng)絡(luò)漏洞掃描系統(tǒng)提供的漏洞庫進(jìn)行匹配,如果滿足匹配條件,則視為漏洞存在。
在匹配原理上,網(wǎng)絡(luò)漏洞掃描器一般采用基于規(guī)則的匹配技術(shù)。根據(jù)安全專家對網(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)漏洞庫,然后在此基礎(chǔ)上構(gòu)成相應(yīng)的匹配規(guī)則,由程序自動進(jìn)行系統(tǒng)漏洞掃描的分析工作。如在對TCP 80端口的掃描過程中,發(fā)現(xiàn)/cgi-bin/phf或/cgi-bin/Count.cgi,則根據(jù)專家經(jīng)驗(yàn)以及CGI程序的共享性和標(biāo)準(zhǔn)化,可以推知該WWW服務(wù)存在2個CGI漏洞。
1.1 主機(jī)在線探測
為了避免不必要的空掃描,在掃描之前一般要先探測主機(jī)是否在線。其實(shí)現(xiàn)原理和常用的ping命令相似。具體方法是向目標(biāo)主機(jī)發(fā)送ICMP報(bào)文請求,根據(jù)返回值來判斷主機(jī)是否在線。所有安裝了TCP/IP協(xié)議的在線網(wǎng)絡(luò)主機(jī),都會對這樣的ICMP報(bào)文請求給予答復(fù)。該方法不僅能探測主機(jī)是否在線,而且能根據(jù)ICMP應(yīng)答報(bào)文的TTL(TTL是位于IP首部的生存時間字段)值來粗略分辨出目標(biāo)主機(jī)操作系統(tǒng),為下一步的掃描工作提供依據(jù)。RFC793說明了TCP怎樣響應(yīng)特別的信息包:這些響應(yīng)基于2個TCP狀態(tài),即關(guān)閉(CLOSED)和監(jiān)聽(LISTEN)。
RFC793描述了當(dāng)一個端口在關(guān)閉狀態(tài)時,必須采用下面的規(guī)則:(1)任意進(jìn)入的包含RST標(biāo)志的信息段(segment)將被丟棄。(2)任意進(jìn)入的不包含RST標(biāo)志的信息段(如SYN、FIN和ACK)會導(dǎo)致在響應(yīng)中回送一個RST?!?/span>
當(dāng)一個端口處于監(jiān)聽狀態(tài)時,將采用下面的規(guī)則:(1)任意進(jìn)入的包含RST標(biāo)志的信息段將被忽略。(2)任意進(jìn)入的包含ACK標(biāo)志的信息段將導(dǎo)致一個RST的響應(yīng)。
如果SYN位被設(shè)置,且進(jìn)入的信息段不被允許,則將導(dǎo)致一個RST的響應(yīng);若進(jìn)入的信息段被允許,則將導(dǎo)致響應(yīng)中發(fā)送一個SYN|ACK 信息包。
這樣,通過2個ACK信息包的發(fā)送就可以驗(yàn)證計(jì)算機(jī)是否處于在線狀態(tài)。
1.2 端口狀態(tài)探測
發(fā)送1個SYN包到主機(jī)端口并等待響應(yīng)。如果端口打開,則響應(yīng)必定是SYN|ACK;如果端口關(guān)閉,則會收到RST|ACK響應(yīng)。這個掃描可以稱為半打開(half-scan)掃描。如NMAP(Network Mapper)在進(jìn)行端口狀態(tài)探測時會發(fā)送1個SYN包到主機(jī),如果端口關(guān)閉就發(fā)送RST信息通知NMAP。但如果NMAP發(fā)送SYN信息包到打開狀態(tài)的端口,端口就會響應(yīng)SYN|ACK信息包給NMAP。當(dāng)NMAP探測到SYN|ACK信息包后自動回應(yīng)RST,并由這個RST斷開連接。一般情況下,計(jì)算機(jī)不會記錄這種情況,但對于NMAP來說也已經(jīng)知道端口是否打開或者關(guān)閉。如果被掃描主機(jī)安裝了防火墻則會過濾掉請求包,使發(fā)送者得不到回應(yīng),這時就需發(fā)送設(shè)置了TCP首部中標(biāo)志位的FIN、PSH和URG位(其中FIN表示發(fā)端完成發(fā)送任務(wù),PSH表示接收方應(yīng)該盡快將這個報(bào)文段交給應(yīng)用層,URG表示緊急指針有效)的echo request請求信息包。因?yàn)橐恍┡渲幂^差的防火墻允許這些信息包通過。
1.3 操作系統(tǒng)探測
每個操作系統(tǒng),甚至每個內(nèi)核修訂版本在TCP/IP棧方面都存在微小的差別,這將直接影響對相應(yīng)數(shù)據(jù)包的響應(yīng)。如NMAP提供了一個響應(yīng)列表,把所接收到的響應(yīng)與表中的各項(xiàng)響應(yīng)進(jìn)行比較,如果能與某種操作系統(tǒng)的響應(yīng)相匹配,就能識別出被探測主機(jī)所運(yùn)行的操作系統(tǒng)的類型。在進(jìn)行網(wǎng)絡(luò)入侵攻擊時,了解操作系統(tǒng)的類型是相當(dāng)重要的,因?yàn)楣粽呖梢杂纱嗣鞔_應(yīng)用何種漏洞,或由此掌握系統(tǒng)存在的弱點(diǎn)。
2 主要掃描技術(shù)
2.1 TCP connect掃描
這是最基本的TCP掃描。利用操作系統(tǒng)提供的系統(tǒng)調(diào)用connect(),與每一個感興趣的目標(biāo)計(jì)算機(jī)的端口進(jìn)行連接。如果端口處于偵聽狀態(tài),則connect()就能成功。否則,該端口是不能用的,即沒有提供服務(wù)。該技術(shù)的優(yōu)點(diǎn)是響應(yīng)速度快,并且使用者不需要任何權(quán)限。系統(tǒng)中的任何用戶都有權(quán)利使用該調(diào)用。另一個優(yōu)點(diǎn)就是速度很快。但缺點(diǎn)是容易被發(fā)覺,并且易被過濾掉。使用該方法時目標(biāo)計(jì)算機(jī)的logs文件會顯示一連串的連接和連接時出錯的服務(wù)消息,并且能很快將連接關(guān)閉。
2.2 TCP SYN掃描
TCP SYN掃描是半開放式掃描,掃描程序不必打開一個完全的TCP連接。掃描程序發(fā)送的是SYN數(shù)據(jù)包。返回RST,表示端口沒有處于偵聽狀態(tài);返回SYN/ACK信息表示端口處于偵聽狀態(tài),此時掃描程序必須再發(fā)送一個RST信號來關(guān)閉這個連接過程。這種掃描技術(shù)的優(yōu)點(diǎn)是一般不會在目標(biāo)計(jì)算機(jī)上留下記錄。但這種方法必須要有管理員權(quán)限才能建立自己的SYN數(shù)據(jù)包。通常這個條件很容易滿足。
2.3 TCP FIN掃描
有時SYN掃描不夠秘密,防火墻和包過濾器就會對一些指定的端口進(jìn)行監(jiān)視,并能檢測到這些掃描。相反,FIN數(shù)據(jù)包可能會沒有任何麻煩地被放行。這種掃描方法的思想是關(guān)閉的端口會用適當(dāng)?shù)腞ST來回復(fù)FIN數(shù)據(jù)包;而打開的端口會忽略對FIN數(shù)據(jù)包的回復(fù)。但這種方法和系統(tǒng)的實(shí)現(xiàn)有關(guān)。有的系統(tǒng)不管端口是否打開,都回復(fù)RST,這時這種掃描方法就不適用了。在區(qū)分Unix和NT操作系統(tǒng)時,這種方法是有效的。
2.4 IP段掃描
IP段掃描并不是直接發(fā)送TCP探測數(shù)據(jù)包,而是將數(shù)據(jù)包分成2個較小的IP段。這樣就將一個TCP頭分成好幾個數(shù)據(jù)包,從而很難探測到過濾器。但必須小心,一些程序在處理這些小數(shù)據(jù)包時會丟棄。
2.5 TCP反向ident掃描
ident協(xié)議(RFC1413)允許看到通過TCP連接的任何進(jìn)程的擁有者的用戶名。例如用戶能連接到http端口,然后用identd來發(fā)現(xiàn)服務(wù)器是否正在以管理員權(quán)限運(yùn)行。這種方法只能在和目標(biāo)端口建立了完整的TCP連接后才能使用。
tcp/ip相關(guān)文章:tcp/ip是什么
評論