目標主機作業系統識別技術分析(轉)

RegisterForBlog發表於2007-09-19
目標主機作業系統識別技術分析(轉)[@more@]

  普遍的入侵行為需要進行埠掃描,這是多數“駭客”的熟練技巧。大多數的埠掃描就是讓我們能夠達到這樣的目的:

  1、讓我們能夠大致判斷目標是什麼作業系統

  2、目標到底在執行些什麼服務

  當然,要掃描得到這些東西還是最後為了讓我們能夠知道哪些可能拿來利用,可能存在的漏洞,對目標主機的作業系統型別識別,更能夠方便地讓我們去利用作業系統對應的漏洞實施攻擊。很多工具提供的掃描也可能就直接得到什麼作業系統了,或者相對應的埠使用的是什麼程式,程式是什麼版本的等等。不過,這些都是由那些工具自己做了,不討論這個,我們應該去想想這些工具到底是怎麼去實現的。

  對目標主機作業系統識別的目的,正如Fyodor(nmap的作者)在他的

  《Remote OS detection via TCP/IP Stack FingerPrinting》中講解那樣,進行主機識別有兩個主要作用,第一,很多系統漏洞是同OS密切相關的,還有就是社會學(social engineering)問題,你能夠在非常瞭解對方的系統之後,冒充軟體提供商給目標傳送“補丁”。按照我們上面提到的高階掃描方式,直接進行的埠掃描,能夠賦予我們繞過防火牆的能力,而且可以儘可能地隱藏

  自己等等,但是,我們能夠得到的資訊也是有限的,也許對是否開放一個埠並不是那麼直接地感興趣,比如一個21埠,我們真正感興趣的是這個埠被用來作什麼了,執行地什麼版本的程式,而不是僅僅開啟一個21埠就滿意了。也就是說,我們對下面得到地這個東西更感興趣(關係到IP的地方,我都用X代替了):

  C:>ftp XXX.XXX.XXX.XXX

  Connected to XXX.XXX.XXX.XXX.

  220 XXXXX X2 WS_FTP Server 1.0.5 (1327846197)

  User (XXX.XXX.XXX.XXX:(none)):

  其實,這就是一種最簡單和最直接的判別方式,獲得程式版本變相地也讓我們能夠估計到目標的作業系統類別。我們可以對每個開啟的埠進行相應的連線,通常這些服務程式就會非常高興地顯示自己的“banner”,也就讓我們能夠直接得到他是什麼版本了。甚至,我們能夠得到更好的東西:

  C:>telnet XXX.XXX.XXX.XXX

  Red Hat Linux release 7.1 (Seawolf)

  Kernel 2.4.2-2 on an i686

  login:

  這讓我們對作業系統版本一覽無餘了。正象這些只對80埠感興趣的“駭客”一樣,透過對80埠的連線,我們也能得到足夠多的資訊。

  C:>telnet XXX.XXX.XXX.XXX 80

  HEAD / HTTP/1.1

  HTTP/1.1 200 OK

  Via: 1.1 ADSL2000

  Content-Length: 97

  Date: Thu, 24 Jan 2002 13:46:56 GMT

  Content-Type: text/html

  Server: Apache/1.3.20 (Unix) PHP/4.0.6

  Last-Modified: Wed, 26 Dec 2001 09:22:54 GMT

  ETag: "8715f-61-3c2996ee"

  Accept-Ranges: bytes

  Keep-Alive: timeout=15, max=100

  可以注意到:Server: Apache/1.3.20 (Unix) PHP/4.0.6,這裡很明白地“貢獻”出WEB伺服器的軟體版本。

  這樣直接的連線探測方式,對於這些banner開放的,簡直是太容易了,當然,負責的管理員也會遮蔽或者修改掉這些BANNER。

  還有一種粗劣而且簡單的判別主機作業系統型別的辦法就是透過Ping,然後分析得到的TTL值,當然,稍微準確點可以同時在配合Tracert來確定主機原始的TTL值,不過,這種辦法很容易被欺騙,比如,在WINDOWS系統中,對登錄檔的修改:

  HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters

  Key: DefaultTTL

  透過對DefaultTTL的修改,比如:修改成為255,偽裝成為一臺UNIX主機,就能夠造成探測者的錯誤判斷。

  對主機使用埠的分析,同樣也能夠進行作業系統識別,一些作業系統使用特殊的埠,比如:WINDOWS的137、139,WIN2K的445,而且一些網路裝置比如入侵檢測系統、防火牆等等也都有廠商自己的埠開放。

  上面的這些識別方式也是那些負責管理員能夠簡單應付的方式,這裡,我們可以看看高階的主機識別技術,這些技術主要分為兩類:主動協議識別和被動協議識別,都是利用各種作業系統在網路協議通訊中使用不同的協議內容(各個廠商有自己的規定),然後對這些不同之處進行分析進行的識別。

  Nmap這個強大的掃描工具在遠端主機判斷上也使用了很多技術,來實現更高階的主機系統檢測。這主要是透過主動的TCP/IP協議辨識來實現的,每種作業系統在TCP交流中總是使用一些具有特性的標誌,這些標誌在TCP IP資料包的頭中表現出來。比如window、ACK序號、TTL等等的不同反應,透過大量的資料分析,然後精確地判斷主機系統。這些系統的協議特性包括(這只是一小部分):

  FIN識別:傳送一個只有FIN標誌位的TCP資料包給一個開啟的埠並等待回應。正確的RFC793行為是不響應,但有些系統,例如 MS Windows, BSDI, CISCO, HP/UX,MVS,和IRIX 發回一個RESET。

  DF位識別:許多作業系統在送出的一些包中設定IP的DF(不分片)位。

  WINDOW大小:檢查返回包的視窗大小。特定作業系統反應的視窗大小基本是常數,例如,AIX 是唯一用0x3F25的),Microsoft 以及OpenBSD 與FreeBSD用的是0x402E。

  ACK 序號識別:不同實現中ACK的值是不同的。例如,如果你送了一個FIN|PSH|URG 到一個關閉的TCP 埠。大多數實現會設定ACK 為你的初始序列數,而Windows 和一些傻印表機會送給你序列數加1。

  在之後,Fyodor 和Ofir又分析和收集利用ICMP協議的作業系統特性來進行的主機系統判別,這種主動的識別方式都經過了大量的分析,原理和上面的TCP/IP協議識別相同,比如:用ICMP的地址掩碼請求來探測SUN作業系統,對於ICMP地址掩碼請求,只有少數作業系統會產生相應的應答,這些系統包括ULTRIX OpenVMS, Windows 95/98/98 SE/ME,

  NT below SP 4, 和 SUN Solaris機器。但SUN對分片ICMP地址掩碼請求的應答同其他作業系統不相同,這樣就可以來識別SUN主機作業系統。

  和主動的協議識別原理相同,Lance Spitzner在《Passive Fingerprinting》中提出了被動的協議識別,同樣用來判別主機系統。這種辦法主要集中考慮:

  1、TTL的設定

  2、WINDOW SIZE:作業系統設定的視窗大小

  3、DF:作業系統是否設定分片位

  4、TOS:作業系統設定的服務型別

  對於TTL,對於一個作業系統來說一般是固定的,比如LINUX Kernel 2.2.x & 2.4.x的 TTL 欄位值為 64,

  FreeBSD 4.1, 4.0, 3.4; Sun Solaris 2.5.1, 2.6, 2.7, 2.8;的 TTL為 255 Windows NT,Windows 2000 的為 128等,同時將配合其他需驗證的內容,比如:LINUX的視窗值是0x7D78,Solaris2.6-2.7的視窗值有幾種0x2328,0x2238等等。我們以WIN2000為例,它的TTL為“128”,視窗大小在“17000-18000”這個範圍內,並且設定分片位,即DF為1,

  而作業系統設定的服務型別TOS為“0”,如果我們對接收的原始資料分析得到這樣的結果,那麼我們可以判斷這是一個WIN2000的作業系統。

  當然被動協議識別作業系統也需要分析各個作業系統的不同反饋屬性,然後根據得到的資訊同收集的屬性相比較。比如多數系統使用DF位設定,但是有些系統如SCO和OPENBSD不使用這個DF標誌,這樣就可以用來識別一些沒有設定DF位的作業系統。被動協議識別也可以用來判斷遠端代理防火牆,因為代理防火牆重建對客戶的連線,它有它自身的特徵程式碼,也可以用這樣的辦法來分析。

  主動協議識別和被動協議識別需要進行大量的統計分析,雖然比最開始介紹的那些簡單識別方法準確些,但是也並不能保證一定能夠識別得到準確的作業系統型別。同時這兩種方法主要區別就在於一個是主動,而一個是被動的,主動識別方式需要主動傳送資料包,因此相對於那些安全裝置來說,也比較容易識別這些資料包,同被動識別比較起來,隱蔽性稍微差些。

  Reference:

  1、《X - Remote ICMP Based OS Fingerprinting Techniques》

  2、Phrack #57《ICMP based remote OS TCP/IP stack fingerprinting techniques》

  3、Fyodor《Remote OS detection via TCP/IP Stack FingerPrinting》

  4、Lance Spitzner《Passive Fingerprinting》

  

·上一篇:

·下一篇:
 
     最新更新
·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·

·


| | | | | | |

Copyright © 2004 - 2007 All Rights Reserved

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10763080/viewspace-970167/,如需轉載,請註明出處,否則將追究法律責任。

目標主機作業系統識別技術分析(轉)
請登入後發表評論 登入
全部評論

相關文章