三. 常見掃描主要技術(shù)
要了解常見掃描的主要技術(shù),還要以掃描器工作的流程開始,以nmap為例,整個掃描流程如下:
1、存活性掃描:是指大規(guī)模去評估一個較大網(wǎng)絡(luò)的存活狀態(tài)。例如跨地域、跨系統(tǒng)的大型企業(yè)。但是被掃描主機(jī)可能會有一些欺騙性措施,例如使用防火墻阻塞ICMP數(shù)據(jù)包,可能會逃過存活性掃描的判定。
2、端口掃描:針對主機(jī)判斷端口開放和關(guān)閉情況,不管其是不是存活。端口掃描也成為存活性掃描的一個有益補(bǔ)充,如果主機(jī)存活,必然要提供相應(yīng)的狀態(tài),因此無法隱藏其存活情況。
3、服務(wù)識別:通過端口掃描的結(jié)果,可以判斷出主機(jī)提供的服務(wù)及其版本。
4、操作系統(tǒng)識別:利用服務(wù)的識別,可以判斷出操作系統(tǒng)的類型及其版本。
這就是以nmap為代表的掃描過程。
3.1 主機(jī)存活掃描技術(shù)
主機(jī)掃描的目的是確定在目標(biāo)網(wǎng)絡(luò)上的主機(jī)是否可達(dá)。這是信息收集的初級階段,其效果直接影響到后續(xù)的掃描。Ping就是最原始的主機(jī)存活掃描技術(shù),利用icmp的echo字段,發(fā)出的請求如果收到回應(yīng)的話代表主機(jī)存活。
常用的傳統(tǒng)掃描手段有:
1. ICMP Echo掃描 精度相對較高。通過簡單地向目標(biāo)主機(jī)發(fā)送ICMP Echo Request 數(shù)據(jù)包,并等待回復(fù)的ICMP Echo Reply 包,如Ping。
2. ICMP Sweep 掃描:sweep這個詞的動作很像機(jī)槍掃射,icmp進(jìn)行掃射式的掃描,就是并發(fā)性掃描,使用ICMP Echo Request一次探測多個目標(biāo)主機(jī)。通常這種探測包會并行發(fā)送,以提高探測效率,適用于大范圍的評估。
3. Broadcast ICMP掃描:廣播型icmp掃描,利用了一些主機(jī)在icmp實(shí)現(xiàn)上的差異,設(shè)置ICMP請求包的目標(biāo)地址為廣播地址或網(wǎng)絡(luò)地址,則可以探測廣播域或整個網(wǎng)絡(luò)范圍內(nèi)的主機(jī),子網(wǎng)內(nèi)所有存活主機(jī)都會給以回應(yīng)。但這種情況只適合于UNIX/Linux系統(tǒng)。
4. Non-Echo ICMP掃描:在ICMP協(xié)議中不光光只有ICMP ECHO的ICMP查詢信息類型,在ICMP掃描 技術(shù)中也用到Non-ECHO ICMP技術(shù)(不僅僅能探測主機(jī),也可以探測網(wǎng)絡(luò)設(shè)備如路由)。利用了ICMP的服務(wù)類型(Timestamp和Timestamp Reply 、Information Request和Information Reply 、Address Mask Request 和Address Mask Reply)。
3.2 規(guī)避技術(shù)
為到達(dá)規(guī)避防火墻和入侵檢測設(shè)備的目的, ICMP協(xié)議提供網(wǎng)絡(luò)間傳送錯誤信息的功能也成為了主要的掃非常規(guī)描手段。其主要原理就是利用被探測主機(jī)產(chǎn)生的ICMP錯誤報文來進(jìn)行復(fù)雜的主機(jī)探測。
常用的規(guī)避技術(shù)大致分為4類:
1. 異常的IP包頭 :向目標(biāo)主機(jī)發(fā)送包頭錯誤的IP包,目標(biāo)主機(jī)或過濾設(shè)備會反饋ICMP Parameter Problem Error信息。常見的偽造錯誤字段為Header Length 和IP Options。不同廠家的路由器和操作系統(tǒng)對這些錯誤的處理方式不同,返回的結(jié)果也不同。
2. 在IP頭中設(shè)置無效的字段值:向目標(biāo)主機(jī)發(fā)送的IP包中填充錯誤的字段值,目標(biāo)主機(jī)或過濾設(shè)備會反饋ICMP Destination Unreachable信息。這種方法同樣可以探測目標(biāo)主機(jī)和網(wǎng)絡(luò)設(shè)備。
3. 通過超長包探測內(nèi)部路由器:若構(gòu)造的數(shù)據(jù)包長度超過目標(biāo)系統(tǒng)所在路由器的PMTU且設(shè)置禁止分片標(biāo)志, 該路由器會反饋 Fragmentation Needed and Don’t Fragment Bit was Set差錯報文。
4. 反向映射探測:用于探測被過濾設(shè)備或防火墻保護(hù)的網(wǎng)絡(luò)和主機(jī)。構(gòu)造可能的內(nèi)部IP地址列表,并向這些地址發(fā)送數(shù)據(jù)包。當(dāng)對方路由器接收到這些數(shù)據(jù)包時,會進(jìn)行IP識別并路由,對不在其服務(wù)的范圍的IP包發(fā)送ICMP Host Unreachable或ICMP Time Exceeded 錯誤報文,沒有接收到相應(yīng)錯誤報文的IP地址可被認(rèn)為在該網(wǎng)絡(luò)中。
舉例來看:
|
圖1 |
當(dāng)發(fā)送一個數(shù)據(jù)包的時候,數(shù)據(jù)包頭部會顯示其封裝類型,這里顯示的是tcp協(xié)議。其編號是06,看到06就可以知道這是一個tcp報文。如果把報文標(biāo)識成不可識別的協(xié)議,例如:
|
圖2 |
協(xié)議字段里顯示是unknown,編號是b2,這個協(xié)議是未知的,那嗅探器也會返回給一個unknown。就是這樣發(fā)送一個不可識別的協(xié)議給其他主機(jī)的時候,對方主機(jī)也無法識別。當(dāng)不可識別的時候:
|
圖3 |
對方認(rèn)為自己的協(xié)議棧上無法識別,第一個動作就是先把數(shù)據(jù)包丟棄,丟掉報文之后去通知對方,返回了這條icmp的信息。類型為3,目標(biāo)不可達(dá),其code是2,告訴你目標(biāo)不可達(dá)的原因是協(xié)議不可達(dá)。當(dāng)你發(fā)送一個錯誤的數(shù)據(jù)包,對方不可識別就返回給你一個icmp信息,達(dá)到了探測對方的目的。
3.3 端口掃描技術(shù)
在完成主機(jī)存活性判斷之后,就應(yīng)該去判定主機(jī)開放信道的狀態(tài),端口就是在主機(jī)上面開放的信道,0-1024為知名端口,端口總數(shù)是65535。端口實(shí)際上就是從網(wǎng)絡(luò)層映射到進(jìn)程的通道。通過這個關(guān)系就可以掌握什么樣的進(jìn)程使用了什么樣的通信,在這個過程里面,能夠通過進(jìn)程取得的信息,就為查找后門、了解系統(tǒng)狀態(tài)提供了有力的支撐。常見流行的端口掃描技術(shù)通常有:
3.3.1 TCP掃描:
利用三次握手過程與目標(biāo)主機(jī)建立完整或不完整的TCP連接。
TCP connect()掃描: tcp的報頭里,有6個連接標(biāo)記,分別是urg、ack、psh、rst、syn、fin。通過這些連接標(biāo)記不同的組合方式,可以獲得不同的返回報文。例如,發(fā)送一個syn置位的報文,如果syn置位瞄準(zhǔn)的端口是開放的,syn置位的報文到達(dá)的端口開放的時候,他就會返回syn+ack,代表其能夠提供相應(yīng)的服務(wù)。我收到syn+ack后,返回給對方一個ack。這個過程就是著名的三次握手。這種掃描的速度和精度都是令人滿意的。
Reverse-ident掃描:這種技術(shù)利用了Ident協(xié)議(RFC1413),tcp端口113.很多主機(jī)都會運(yùn)行的協(xié)議,用于鑒別TCP連接的用戶。
identd 的操作原理是查找特定 TCP/IP 連接并返回?fù)碛写诉B接的進(jìn)程的用戶名。它也可以返回主機(jī)的其他信息。但這種掃描方式只能在tcp全連接之后才有效,并且實(shí)際上很多主機(jī)都會關(guān)閉ident服務(wù)。
Tcp syn掃描:向目標(biāo)主機(jī)的特定端口發(fā)送一個SYN包,如果端口沒開放就不會返回syn+ack,這時會給你一個rst,停止建立連接。由于連接沒有完全建立,所以稱為半開放掃描。但由于syn flood作為一種ddos攻擊手段被大量采用,因此很多防火墻都會對syn報文進(jìn)行過濾,所以這種方法并不能總是有用。
其他還有fin、NULL、Xmas等掃描方式。
3.3.2 UDP掃描
由于現(xiàn)在防火墻設(shè)備的流行,tcp端口的管理狀態(tài)越來越嚴(yán)格,不會輕易開放,并且通信監(jiān)視嚴(yán)格。為了避免這種監(jiān)視,達(dá)到評估的目的,就出現(xiàn)了秘密掃描。這種掃描方式的特點(diǎn)是利用UDP端口關(guān)閉時返回的ICMP信息,不包含標(biāo)準(zhǔn)的TCP三次握手協(xié)議的任何部分,隱蔽性好,但這種掃描使用的數(shù)據(jù)包在通過網(wǎng)絡(luò)時容易被丟棄從而產(chǎn)生錯誤的探測信息。
但是,UDP掃描方式的缺陷很明顯,速度慢、精度低。UDP的掃描方法比較單一,基礎(chǔ)原理是:當(dāng)你發(fā)送一個報文給udp端口,該端口是關(guān)閉狀態(tài)時,端口會返回給一個icmp信息,所有的判定都是基于這個原理。如果關(guān)閉的話,什么信息都不發(fā)。
Traceroute掃描:tracert 向30000以上的高端口(一般認(rèn)為,主機(jī)的30000以上高端口利用率非常低,任何主機(jī)都不會輕易開放這種高端口,默認(rèn)都是關(guān)閉的)。如果對方端口關(guān)閉,會返回給icmp信息,根據(jù)這個往返時間,計(jì)算跳數(shù)、路徑信息,了解延時情況。這是tracerote原理,也是從這個原理上演變出來udp掃描技術(shù)。
使用udp掃描要注意的是1、udp狀態(tài)、精度比較差,因?yàn)閡dp是不面向連接的,所以整個精度會比較低。2、udp掃描速度比較慢,tcp掃描開放1秒的延時,在udp里可能就需要2秒,這是由于不同操作系統(tǒng)在實(shí)現(xiàn)icmp協(xié)議的時候?yàn)榱吮苊鈴V播風(fēng)暴都會有峰值速率的限制(因?yàn)閕cmp信息本身并不是傳輸載荷信息,不會有人拿他去傳輸一些有價值信息。操作系統(tǒng)在實(shí)現(xiàn)的時候是不希望icmp報文過多的。為了避免產(chǎn)生廣播風(fēng)暴,操作系統(tǒng)對icmp報文規(guī)定了峰值速率,不同操作系統(tǒng)的速率不同) 利用udp作為掃描的基礎(chǔ)協(xié)議,就會對精度、延時產(chǎn)生較大影響。
當(dāng)前在滲透測試過程中對于端口的掃描是非常靈活的,06年的黑帽大會上,就有人利用了開發(fā)了工具探測網(wǎng)內(nèi)哪臺主機(jī)打開了80端口,這樣的技術(shù)在當(dāng)前的互聯(lián)網(wǎng)上利用的非常普遍。
|
圖4 |