常用的傳統(tǒng)掃描手段有:

      1. ICMP Echo掃描  精度相對較高。通過簡單地向目標主機發(fā)送ICMP Echo Request 數(shù)據(jù)包,并等待回復的ICMP Echo Reply 包,如Ping。

      2. ICMP Sweep 掃描:sweep這個詞的動作很像機槍掃射,icmp進行掃射式的掃描,就是并發(fā)性掃描,使用ICMP Echo Request一次探測多個目標主機。通常這種探測包會并行發(fā)送,以提高探測效率,適用于大范圍的評估。

      3. Broadcast ICMP掃描:廣播型icmp掃描,利用了一些主機在icmp實現(xiàn)上的差異,設置ICMP請求包的目標地址為廣播地址或網(wǎng)絡地址,則可以探測廣播域或整個網(wǎng)絡范圍內(nèi)的主機,子網(wǎng)內(nèi)所有存活主機都會給以回應。但這種情況只適合于UNIX/Linux系統(tǒng)。

      4. Non-Echo ICMP掃描:在ICMP協(xié)議中不光光只有ICMP ECHO的ICMP查詢信息類型,在ICMP掃描 技術中也用到Non-ECHO ICMP技術(不僅僅能探測主機,也可以探測網(wǎng)絡設備如路由)。利用了ICMP的服務類型(Timestamp和Timestamp Reply 、Information Request和Information Reply 、Address Mask Request 和Address Mask Reply)。

      3.2  規(guī)避技術

      為到達規(guī)避防火墻和入侵檢測設備的目的, ICMP協(xié)議提供網(wǎng)絡間傳送錯誤信息的功能也成為了主要的掃非常規(guī)描手段。其主要原理就是利用被探測主機產(chǎn)生的ICMP錯誤報文來進行復雜的主機探測。

      常用的規(guī)避技術大致分為4類:

      1. 異常的IP包頭 :向目標主機發(fā)送包頭錯誤的IP包,目標主機或過濾設備會反饋ICMP Parameter Problem Error信息。常見的偽造錯誤字段為Header Length  和IP Options。不同廠家的路由器和操作系統(tǒng)對這些錯誤的處理方式不同,返回的結果也不同。

      2. 在IP頭中設置無效的字段值:向目標主機發(fā)送的IP包中填充錯誤的字段值,目標主機或過濾設備會反饋ICMP Destination Unreachable信息。這種方法同樣可以探測目標主機和網(wǎng)絡設備。

      3. 通過超長包探測內(nèi)部路由器:若構造的數(shù)據(jù)包長度超過目標系統(tǒng)所在路由器的PMTU且設置禁止分片標志, 該路由器會反饋 Fragmentation Needed and Don’t Fragment Bit was Set差錯報文。

      4. 反向映射探測:用于探測被過濾設備或防火墻保護的網(wǎng)絡和主機。構造可能的內(nèi)部IP地址列表,并向這些地址發(fā)送數(shù)據(jù)包。當對方路由器接收到這些數(shù)據(jù)包時,會進行IP識別并路由,對不在其服務的范圍的IP包發(fā)送ICMP Host Unreachable或ICMP Time Exceeded 錯誤報文,沒有接收到相應錯誤報文的IP地址可被認為在該網(wǎng)絡中。

      舉例來看:

 
圖1

      當發(fā)送一個數(shù)據(jù)包的時候,數(shù)據(jù)包頭部會顯示其封裝類型,這里顯示的是tcp協(xié)議。其編號是06,看到06就可以知道這是一個tcp報文。如果把報文標識成不可識別的協(xié)議,例如:

 
圖2

      協(xié)議字段里顯示是unknown,編號是b2,這個協(xié)議是未知的,那嗅探器也會返回給一個unknown。就是這樣發(fā)送一個不可識別的協(xié)議給其他主機的時候,對方主機也無法識別。當不可識別的時候:

 
圖3

      對方認為自己的協(xié)議棧上無法識別,第一個動作就是先把數(shù)據(jù)包丟棄,丟掉報文之后去通知對方,返回了這條icmp的信息。類型為3,目標不可達,其code是2,告訴你目標不可達的原因是協(xié)議不可達。當你發(fā)送一個錯誤的數(shù)據(jù)包,對方不可識別就返回給你一個icmp信息,達到了探測對方的目的。

      3.3  端口掃描技術

      在完成主機存活性判斷之后,就應該去判定主機開放信道的狀態(tài),端口就是在主機上面開放的信道,0-1024為知名端口,端口總數(shù)是65535。端口實際上就是從網(wǎng)絡層映射到進程的通道。通過這個關系就可以掌握什么樣的進程使用了什么樣的通信,在這個過程里面,能夠通過進程取得的信息,就為查找后門、了解系統(tǒng)狀態(tài)提供了有力的支撐。常見流行的端口掃描技術通常有:

      3.3.1  TCP掃描:

      利用三次握手過程與目標主機建立完整或不完整的TCP連接。

      TCP connect()掃描: tcp的報頭里,有6個連接標記,分別是urg、ack、psh、rst、syn、fin。通過這些連接標記不同的組合方式,可以獲得不同的返回報文。例如,發(fā)送一個syn置位的報文,如果syn置位瞄準的端口是開放的,syn置位的報文到達的端口開放的時候,他就會返回syn+ack,代表其能夠提供相應的服務。我收到syn+ack后,返回給對方一個ack。這個過程就是著名的三次握手。這種掃描的速度和精度都是令人滿意的。

      Reverse-ident掃描:這種技術利用了Ident協(xié)議(RFC1413),tcp端口113.很多主機都會運行的協(xié)議,用于鑒別TCP連接的用戶。

      identd 的操作原理是查找特定 TCP/IP 連接并返回擁有此連接的進程的用戶名。它也可以返回主機的其他信息。但這種掃描方式只能在tcp全連接之后才有效,并且實際上很多主機都會關閉ident服務。

      Tcp syn掃描:向目標主機的特定端口發(fā)送一個SYN包,如果端口沒開放就不會返回syn+ack,這時會給你一個rst,停止建立連接。由于連接沒有完全建立,所以稱為半開放掃描。但由于syn flood作為一種ddos攻擊手段被大量采用,因此很多防火墻都會對syn報文進行過濾,所以這種方法并不能總是有用。

      其他還有fin、NULL、Xmas等掃描方式。

      3.3.2     UDP掃描

      由于現(xiàn)在防火墻設備的流行,tcp端口的管理狀態(tài)越來越嚴格,不會輕易開放,并且通信監(jiān)視嚴格。為了避免這種監(jiān)視,達到評估的目的,就出現(xiàn)了秘密掃描。這種掃描方式的特點是利用UDP端口關閉時返回的ICMP信息,不包含標準的TCP三次握手協(xié)議的任何部分,隱蔽性好,但這種掃描使用的數(shù)據(jù)包在通過網(wǎng)絡時容易被丟棄從而產(chǎn)生錯誤的探測信息。

      但是,UDP掃描方式的缺陷很明顯,速度慢、精度低。UDP的掃描方法比較單一,基礎原理是:當你發(fā)送一個報文給udp端口,該端口是關閉狀態(tài)時,端口會返回給一個icmp信息,所有的判定都是基于這個原理。如果關閉的話,什么信息都不發(fā)。

      Traceroute掃描:tracert 向30000以上的高端口(一般認為,主機的30000以上高端口利用率非常低,任何主機都不會輕易開放這種高端口,默認都是關閉的)。如果對方端口關閉,會返回給icmp信息,根據(jù)這個往返時間,計算跳數(shù)、路徑信息,了解延時情況。這是tracerote原理,也是從這個原理上演變出來udp掃描技術。

      使用udp掃描要注意的是1、udp狀態(tài)、精度比較差,因為udp是不面向連接的,所以整個精度會比較低。2、udp掃描速度比較慢,tcp掃描開放1秒的延時,在udp里可能就需要2秒,這是由于不同操作系統(tǒng)在實現(xiàn)icmp協(xié)議的時候為了避免廣播風暴都會有峰值速率的限制(因為icmp信息本身并不是傳輸載荷信息,不會有人拿他去傳輸一些有價值信息。操作系統(tǒng)在實現(xiàn)的時候是不希望icmp報文過多的。為了避免產(chǎn)生廣播風暴,操作系統(tǒng)對icmp報文規(guī)定了峰值速率,不同操作系統(tǒng)的速率不同) 利用udp作為掃描的基礎協(xié)議,就會對精度、延時產(chǎn)生較大影響。

      當前在滲透測試過程中對于端口的掃描是非常靈活的,06年的黑帽大會上,就有人利用了開發(fā)了工具探測網(wǎng)內(nèi)哪臺主機打開了80端口,這樣的技術在當前的互聯(lián)網(wǎng)上利用的非常普遍。

 
圖4

 

      3.4  服務及系統(tǒng)指紋

      在判定完端口情況之后,繼而就要判定服務。

      3.4.1  根據(jù)端口判定

      這種判定服務的方式就是根據(jù)端口,直接利用端口與服務對應的關系,比如23端口對應telnet,21對應ftp,80對應http。這種方式判定服務是較早的一種方式,對于大范圍評估是有一定價值的,但其精度較低。例如使用nc這樣的工具在80端口上監(jiān)聽,這樣掃描時會以為80在開放,但實際上80并沒有提供http服務,由于這種關系只是簡單對應,并沒有去判斷端口運行的協(xié)議,這就產(chǎn)生了誤判,認為只要開放了80端口就是開放了http協(xié)議。但實際并非如此,這就是端口掃描技術在服務判定上的根本缺陷。

      3.4.2  BANNER

      Banner的方式相對精確,獲取服務的banner,是一種比較成熟的技術,可以用來判定當前運行的服務,對服務的判定較為準確。而且不僅能判定服務,還能夠判定具體的服務版本信息。例如下圖,根據(jù)頭部信息發(fā)現(xiàn)對方是redhat linux,基本上可以鎖定服務的真實性。

 
圖5

      這種技術比較靈活。像http,ftp,telnet都能夠獲取一些banner信息。為了判斷服務類型、應用版本、OS平臺,通過模擬各種協(xié)議初始化握手,就可以獲取信息 。

      但是在安全意識普遍提升的今天, 對Banner的偽裝導致精度大幅降低。例如IIS&Apache:修改存放Banner信息的文件字段進行修改,這種修改的開銷很低?,F(xiàn)在流行的一個偽裝工具Servermask ,不僅能夠偽造多種主流Web服務器Banner,還能偽造Http應答頭信息里的項的序列。

      使用前

 
圖6

      使用后

 
圖7

      變的不僅是紅色的部分,而且整個返回序列都變化了。這個變化是手工難已修改的。如果不能成功的修改序列,那就可能給有經(jīng)驗的滲透者提供依據(jù)。

      3.4.3  指紋技術

      指紋技術利用TCP/IP協(xié)議棧實現(xiàn)上的特點來辨識一個操作系統(tǒng)。可辨識的OS的種類,包括哪些操作系統(tǒng),甚至小版本號。指紋技術有主動和被動兩種。

      主動識別技術:采用主動發(fā)包,利用多次的試探,去一次一次篩選不同信息,比如根據(jù)ACK值判斷,有些系統(tǒng)會發(fā)送回所確認的TCP分組的序列號,有些會發(fā)回序列號加1。還有一些操作系統(tǒng)會使用一些固定的tcp窗口。某些操作系統(tǒng)還會設置IP頭的DF位來改善性能。這些都成為判斷的依據(jù)。這種技術判定windows的精度比較差,只能夠判定一個大致區(qū)間,很難判定出其精確版本,但是在unix,網(wǎng)絡設備時甚至可以判定出小版本號,比較精確。如果目標主機與源主機跳數(shù)越多,精度越差。因為數(shù)據(jù)包里的很多特征值在傳輸過程中都已經(jīng)被修改或模糊化,會影響到探測的精度。nmap –O參數(shù)就是其代表。

      被動識別技術:不是向目標系統(tǒng)發(fā)送分組,而是被動監(jiān)測網(wǎng)絡通信,以確定所用的操作系統(tǒng)。利用對報頭內(nèi)DF位,TOS位,窗口大小,TTL的嗅探判斷。因為并不需要發(fā)送數(shù)據(jù)包,只需要抓取其中的報文,所以叫做被動識別技術。例如telnet對方,并用snort監(jiān)聽數(shù)據(jù)包:

TCP TTL:255 TOS:0x0 ID:58955 DF
**S***A* Seq:0xD3B709A4 Ack:0xBE09B2B7 Win:0x2798
TCP Options => NOP NOP TS:9688775 9682347 NOP WS:0
MSS:1460

      得到這些信息后,熟悉系統(tǒng)的人可猜測到操作系統(tǒng)是Solaris 2.6-2.7。在nmap中,也有操作系統(tǒng)的指紋庫,可以從指紋庫中去匹配。其代表掃描工具有 Siphon,天眼。

      ICMP指紋識別技術 :這種工具的出現(xiàn)較晚,大概在2001-2002年,在黑帽大會上提出,并開發(fā)出相應的工具xprobe,其優(yōu)勢是只需要通過icmp,發(fā)送一批UDP包給高端關閉的端口,然后計算返回來的不可達錯誤消息。通常情況下送回IP頭+8個字節(jié),但是個別系統(tǒng)送回的數(shù)據(jù)更多一些。根據(jù)ICMP回應的TOS、TTL值、校驗和等信息,通過這些信息以樹狀的形式去過濾,最終精確鎖定。下圖只是整個判定過程中的一小量部分,類似的圖還有很多張。

 
圖8

      例如TTL值,當你發(fā)送icmp 的echo請求,對方回應的ttl值是有一定規(guī)律可循的,一般是4個數(shù)值,32(win95,唯一值為32的操作系統(tǒng)),64,128(windows家族,只有win95例外),256。64和256比較難以分辨,大多數(shù)的unix和linux都可能是。 代表性掃描工具 Xprobe。

 

分享到

yajing

相關推薦