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