標籤: 暫無標籤

1 協議棧指紋 -概述

  協議棧指紋識別是一項強大的技術,能夠以很高的概率迅速確定操作系統的版本。雖然TCP/IP協議棧的定義已經成為一項標準,但是各個廠家,如微軟和RedHat等在編寫自己的TCP/IP協議棧時,卻做出了不同的解釋。這些解釋因具有獨一無二的特性,故被稱為「指紋」。通過這些細微的差別,可以準確定位操作系統的版本。

2 協議棧指紋 -識別依據

  以下是不同OS的網路協議棧的差異,這些差異可作為協議棧指紋識別的依據。

ACK序號

  不同的OS處理ACK序號時是不同的。如果發送一個FIN/PSH/URG數據包到一個關閉的TCP埠,大多數OS會把回應ACK包的序號設置為發送的包的初始序號,而Windows和一些印表機貝iJ會發送序號為初始序號加1的ACK包。

TOS(服務類型)

  對於ICMP埠不可達消息,送回包的TOS值也是有差別的。大多數TOS是0,而Linux是OXCO。

ICMP地址屏蔽請求

  對於ICMP地址屏蔽請求,有些OS會產生相應的應答,有些則不會。會產生應答的系統有OpenVMS,MS Windows和Sun Solaris等。在這些產生應答的系統中,對分片ICMP地址屏蔽請求的應答又存在差別,可以做進一步的區分。

對FIN包的響應

  發送一個只有FIN標誌位的TCP數據包給一個打開的埠,Linux等系統不做響應;有些系統,例如MS Windows,CISCO和HP/UX等,則發回一個RESET。

虛假標記的SYN包

  在SYN包的TCP頭裡設置一個未定義的TCP標記,目標系統在響應時,有的會保持這個標記,有的不保持。還有一些系統在收到這樣的包時會複位連接。

ISN(初始化序列號)

  不同的OS在選擇TCP ISN時採用不同的方法。一些UNIX系統採用傳統的64K遞增方法,較新的Solaris,IRIX,FreeBSD,DIGITAL UNIX和Cray等系統則採用隨機增量的方法,Linux 2.0,OpenVMS和AIX等系統採用真隨機方法,Windows系統採用一種時間相關的模型。還有一些系統使用常數,如3Com集線器使用0x803,Apple LaserWriter印表機使用OxC 7001等。

ICMP錯誤信息

  在發送ICMP錯誤信息時,不同的OS有不同的行為。RFC 1812建議限制各種錯誤信息的發送率。有的OS做了限制,有的沒有。

ICMP消息引用

  RFC規定 ICMP錯誤消息可以引用一部分引起錯誤的原消息。在處理埠不可達消息時,大多數OS送回IP請求頭外加8個位元組。Solaris送回的稍多,Linux更多。有些OS會把引起錯誤消息的頭做一些改動再發回來。例如,FreeBSD,OpenBSD,ULTRIX和VAXen等會改變頭的舊。這種方法功能很強,甚至可以在目標主機沒有打開任何監聽埠的情況下就識別出Linux和Solaris。

分段重組處理

  在做IP包的分段重組時,不同 OS的處理方式不同。有些OS會用新IP段覆蓋舊的IP段,而有些則會用舊的IP段覆蓋新的IP段。

MSS(最大分段尺寸)

  不同的OS有不同的默認MSS值,對不同MSS值的回應也不盡相同。如給Linux發送一個MSS值很小的包,它一般會把這個值原封不動地返回,但其他系統會返回不同的值。

Synflood限度

  在處理SYN flood時,不同的OS有不同的特點。如果短時間內收到很多的偽造SYN包,一些OS會停止接受新的連接。有的系統以支持擴展的方式來防止SYN Flood。

上一篇[耐火混凝土]  

相關評論

同義詞:暫無同義詞