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