1 引言
網洛掃瞄,是基於Internetde、探測遠端網洛或主機信息de一種技術,也是保證系統和網洛安全必不可少de一種手段。主機掃瞄,是指對計算機主機或者其它網洛設備進行安全性檢測,以找出安全隱患和系統漏洞。總體而言,網洛掃瞄和主機掃瞄都可歸入漏洞掃瞄一類。漏洞掃瞄本質上是一把雙刃劍:黑客利用它來尋找對網洛或系統發起攻擊de途徑,而系統管理員則利用它來有效防范黑客入侵。通過漏洞掃瞄,掃瞄者能夠發現遠端網洛或主機de配置信息、 TCP/UDP端口de分配、提供de網洛服務、服務器de具體信息等。
2 漏洞掃瞄原理
漏洞掃瞄可以劃分為ping掃瞄、端口掃瞄、OS探測、脆弱點探測、防火牆掃瞄五種主要技術,每種技術實現de目標和運用de原理各不相同。按照 TCP/IP協議簇de結構,ping掃瞄工作在互聯網洛層:端口掃瞄、防火牆探測工作在傳輸層;0S探測、脆弱點探測工作在互聯網洛層、傳輸層、應用層。 ping掃瞄確定目標主機deIP地址,端口掃瞄探測目標主機所開放de端口,然後基於端口掃瞄de結果,進行OS探測和脆弱點掃瞄。
2.1 Ping掃瞄
ping掃瞄是指偵測主機IP地址de掃瞄。ping掃瞄de目de,就是確認目標主機deTCP/IP網洛是否聯通,即掃瞄deIP地址是否分配了主機。對沒有任何預知信息de黑客而言,ping掃瞄是進行漏洞掃瞄及入侵de第一步;對已經了解網洛整體IP劃分de網洛安全人員來講,也可以借助ping掃瞄,對主機deIP分配有一個精確de定位。大體上,ping掃瞄是基於ICMP協議de。其主要思想,就是構造一個ICMP包,發送給目標主機,從得到de響應來進行判斷。根據構造ICMP包de不同,分為ECH0掃瞄和non—ECHO掃瞄兩種。
2.1.1 ECH0掃瞄
向目標IP地址發送一個ICMP ECHOREQUEST(ICMP type 8)de包,等待是否收至UICMP ECHO REPLY(ICMP type 0)。如果收到了ICMP ECHO REPLY,就表示目標IP上存在主機,否則就說明沒有主機。值得注意de是,如果目標網洛上de防火牆配置為阻止ICMP ECH0流量,ECH0掃瞄不能真實反映目標IP上是否存在主機。
此外,如果向廣播地址發送ICMPECHO REQUEST,網洛中deunix主機會響應該請求,而windows主機不會生成響應,這也可以用來進行OS探測。
2.1.2 non-ECH0掃瞄
向目deIP地址發送一個ICMP TIMESTAMP REQUEST(ICMP type l3),或ICMP ADDRESS MASK REQUEST (ICMP type l7)de包,根據是否收到響應,可以確定目de主機是否存在。當目標網洛上de防火牆配置為阻止ICMP ECH0流量時,則可以用non.ECH0掃瞄來進行主機探測。
2.2端口掃瞄
端口掃瞄用來探測主機所開放de端口。端口掃瞄通常只做最簡單de端口聯通性測試,不做進一步de數據分析,因此比較適合進行大范圍de掃瞄:對指定 IP地址進行某個端口值段de掃瞄,或者指定端口值對某個IP地址段進行掃瞄。根據端口掃瞄使用de協議,分為TCP掃瞄和UDP掃瞄。
2.2.1 TCP掃瞄
主機間建立TCP連接分三步(也稱三次握手):
(1)請求端發送一個SYN包,指明打算連接de目de端口。
(2)觀察目de端返回de包:
返回SYN/ACK包,說明目de端口處於偵聽狀態;
返回RST/ACK包,說明目de端口沒有偵聽,連接重置。
(3)若返回SYN/ACK包,則請求端向目de端口發送ACK包完成3次握手,TCP連接建立。
根據TCP連接de建立步驟,TCP掃瞄主要包含兩種方式:
(1)TCP全連接和半連接掃瞄
全連接掃瞄通過三次握手,與目de主機建立TCP連接,目de主機delog文件中將記錄這次連接。而半連接掃瞄(也稱TCP SYN掃瞄)並不完成TCP三次握手de全過程。掃瞄者發送SYN包開始三次握手,等待目de主機de響應。如果收到SYN/ACK包,則說明目標端口處於偵聽狀態,掃瞄者馬上發送RST包,中止三次握手。因為半連接掃瞄並沒有建立TCP連接,目de主機delog文件中可能不會記錄此掃瞄。
(2)TCP隱蔽掃瞄
根據TCP協議,處於關閉狀態de端口,在收到探測包時會響應RST包,而處於偵聽狀態de端口則忽略此探測包。根據探測包中各標志位設置de不同,TCP隱蔽掃瞄又分為SYN/ACK掃瞄、FIN掃瞄、XMAS(聖誕樹)掃瞄和NULL掃瞄四種。
SYN/ACK掃瞄和FIN掃瞄均繞過TCP三次握手過程de第一步,直接給目de端口發送SYN/ACK包或者FIN包。因為TCP是基於連接de協議,目標主機認為發送方在第一步中應該發送deSYN包沒有送出,從而定義這次連接過程錯誤,會發送一個RST包以重置連接。而這正是掃瞄者需要de結果— 只要有響應,就說明目標系統存在,且目標端口處於關閉狀態。
XMAS掃瞄和NULL掃瞄:這兩類掃瞄正好相反,XMAS掃瞄設置TCP包中所有標志位(URG、ACK、RST、PSH、SYN、FIN),而NULL掃瞄則關閉TCP包中de所有標志位http://.。
2.2.2 UDP端口掃瞄
UDP協議是數據包協議,為了要發現正在服務deUDP端口,通常de掃瞄方式是構造一個內容為空deUDP數據包送往目de端口。若目de端口上有服務正在等待,則目de端口返回錯誤de消息;若目de端口處於關閉狀態,則目de主機返回ICMP端口不可達消息。因為UDP端口掃瞄軟件要計算傳輸中丟包de數量,所以UDP端口掃瞄de速度很慢。
2.3 0S探測
OS探測有雙重目de:一是探測目標主機de0S信息,二是探測提供服務de計算機程序de信息。比如OS探測de結果是:OS是Windows XP sp3,服務器平台是IIS 4.0。
2.3.1二進制信息探測
通過登錄目標主機,從主機返回debanner中得知OS類型、版本等,這是最簡單de0S探測技術。
圖1 二進制信息
從圖l可以看出,在telnet連上FTP服務器後,服務器返回debanner已經提供了serverde信息,在執行ftpdesyst命令後可得到更具體de信息。
2.3.2 HTTP響應分析
在和目標主機建立HTTP連接後,可以分析服務器de響應包得出OS類型。比如響應包中可能包含如下信息:
圖2 響應包分析
從圖2中對響應包中de數據分析,可以得到serverde信息。
2.3.3棧指紋分析
網洛上de主機都會通過TCP/IP或類似de協議棧來互通互聯。由於0S開發商不唯一,系統架構多樣,甚至是軟件版本de差異,都導致了協議棧具體實現上de不同。對錯誤包de響應,默認值等都可以作為區分0Sde依據。
(1)主動棧指紋探測
主動棧指紋探測是主動向主機發起連接,並分析收到de響應,從而確定OS類型de技術。
1)FIN探測。跳過TCP三次握手de順序,給目標主機發送一個FIN包。RFC793規定,正確de處理是沒有響應,但有些OS,如MS Windows,CISC0,HP/UX等會響應一個RST包。
2)Bogus標志探測。某些OS會設置SYN包中TCP頭de未定義位(一般為64或128),而某些0S在收到設置了這些Bogus位deSYN包後,會重置連接。
3)統計ICMP ERROR報文。RFCl812中規定了ICMP ERROR消息de發送速度。Linux設定了目標不可達消息上限為80個/4秒。0S探測時可以向隨機de高端UDP端口大量發包,然後統計收到de目標不可達消息。用此技術進行OS探測時時間會長一些,因為要大量發包,並且還要等待響應,同時也可能出現網洛中丟包de情況。
4)ICMPERROR報文引用。RFC文件中規定,ICMP ERROR消息要引用導致該消息deICMP消息de部分內容。例如對於端口不可達消息,某些OS返回收到deIP頭及後續de8個字節,Solaris返回de ERROR消息中則引用內容更多一些,而Linux比Solaris還要多。
(2)被動棧指紋探測
被動棧指紋探測是在網洛中監聽,分析系統流量,用默認值來猜測0S類型de技術。
1)TCP初始化窗口尺寸。通過分析響應中de初始窗口大小來猜測OSde技術比較可靠,因為很多0Sde初始窗口尺寸不同。比如AIX設置de初始窗口尺寸是0x3F25,而Windows NT5、OpenBSD、FreeBSD設置de值是0x402E。
2)Don’t Fragment位。為了增進性能,某些0S在發送de包中設置了DF位,可以從DF位de設置情況中做大概de判斷。
3)TCPISN采樣。建立TCP連接時,SYN/ACK中初始序列號ISNde生成存在規律,比如固定不變、隨機增加 (Solaris,FreeBSD等),真正de隨機(Linux 2.0.*),而Windows使用de是時間相關模型,ISN在每個不同時間段都有固定de增量。
2.4脆弱點掃瞄
從對黑客攻擊行為de分析和脆弱點de分類,絕大多數掃瞄都是針對特定操作系統中特定de網洛服務來進行,即針對主機上de特定端口。脆弱點掃瞄使用de技術主要有基於脆弱點數據庫和基於插件兩種。
2.4.1基於脆弱點數據庫de掃瞄
首先構造掃瞄de環境模型,對系統中可能存在de脆弱點、過往黑客攻擊案例和系統管理員de安全配置進行建模與分析。其次基於分析de結果,生成一套標准de脆弱點數據庫及匹配模式。最後由程序基於脆弱點數據庫及匹配模式自動進行掃瞄工作。脆弱點掃瞄de准確性取決於脆弱點數據庫de完整性及有效性。
2.4.2基於插件de掃瞄
插件是由腳本語言編寫de子程序模塊,掃瞄程序可以通過調用插件來執行掃瞄。添加新de功能插件可以使掃瞄程序增加新de功能,或者增加可掃瞄脆弱點de類型與數量。也可以升級插件來更新脆弱點de特征信息,從而得到更為准確de結果。插件技術使脆弱點掃瞄軟件de升級維護變得相對簡單,而專用腳本語言de使用也簡化了編寫新插件de編程工作,使弱點掃瞄軟件具有很強de擴展性。
2.5防火牆規則探測
采用類似於traceroutedeIP數據包分析法,檢測能否給位於過濾設備後de主機發送一個特定de包,目de是便於漏洞掃瞄後de入侵或下次掃瞄d