網(wǎng)絡(luò)協(xié)議棧指紋原理論文

時(shí)間:2022-08-02 03:20:00

導(dǎo)語:網(wǎng)絡(luò)協(xié)議棧指紋原理論文一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

網(wǎng)絡(luò)協(xié)議棧指紋原理論文

摘要遠(yuǎn)程探測(cè)計(jì)算機(jī)系統(tǒng)的OS(操作系統(tǒng))類型、版本號(hào)等信息,是黑客入侵行為的重要步驟,也是網(wǎng)絡(luò)安全中的一種重要的技術(shù)。在探測(cè)技術(shù)中,有一類是通過網(wǎng)絡(luò)協(xié)議棧指紋來進(jìn)行的。協(xié)議棧指紋是指不同操作系統(tǒng)的網(wǎng)絡(luò)協(xié)議棧存在的細(xì)微差別,這些差別可以用來區(qū)分不同的操作系統(tǒng)。本文研究和分析了此技術(shù)的原理和實(shí)踐,并提出了防止指紋探測(cè)的方法。

關(guān)鍵詞遠(yuǎn)程OS探測(cè)協(xié)議棧指紋TCP/IP協(xié)議

1引言

探測(cè)和識(shí)別一個(gè)計(jì)算機(jī)系統(tǒng)在運(yùn)行什么OS是黑客入侵的重要步驟。如果不知道目標(biāo)系統(tǒng)在運(yùn)行什么OS,就很難在目標(biāo)系統(tǒng)上執(zhí)行操作,也無法判斷是否存在安全漏洞,更談不上攻擊。

從管理和防范的角度來說,如果能減少被探測(cè)時(shí)泄漏的信息,就減少了黑客入侵行為的信息來源,使其入侵行為變得相當(dāng)困難。因此,研究這方面的技術(shù),對(duì)于提高系統(tǒng)的安全性和抵抗入侵的能力具有重要的意義。

2簡(jiǎn)單的OS探測(cè)技術(shù)

在早期,黑客經(jīng)常采用一些簡(jiǎn)單的探測(cè)方法來獲取目標(biāo)系統(tǒng)的信息。如通過telnet標(biāo)題,ftp的標(biāo)題和STAT命令,通過HTTP服務(wù)程序,DNS,SNMP等都可以得到很多有用信息。

但是,在長(zhǎng)期的入侵和防入侵的斗爭(zhēng)中,通過簡(jiǎn)單的手段即可獲得的信息越來越少了。管理員努力地減少通過網(wǎng)絡(luò)泄漏的信息,有時(shí)還修改OS的代碼,給出虛假的信息。在這種情況下,簡(jiǎn)單的方法已經(jīng)很難奏效了,因此出現(xiàn)了通過網(wǎng)絡(luò)協(xié)議棧指紋來識(shí)別OS的技術(shù)。

3網(wǎng)絡(luò)協(xié)議棧指紋原理

常用的網(wǎng)絡(luò)協(xié)議是標(biāo)準(zhǔn)的,因而從理論上講各個(gè)操作系統(tǒng)的協(xié)議棧應(yīng)該是相同的。但是,在實(shí)踐中,各種操作系統(tǒng)的協(xié)議棧的實(shí)現(xiàn)存在細(xì)微的差異。這些差異稱作網(wǎng)絡(luò)協(xié)議棧的“指紋”。

對(duì)TCP協(xié)議族來說,這些差異通常表現(xiàn)在數(shù)據(jù)包頭的標(biāo)志字段中。如windowsize、ACK序號(hào)、TTL等的不同取值。通過對(duì)這些差別進(jìn)行歸納和總結(jié),可以比較準(zhǔn)確地識(shí)別出遠(yuǎn)程系統(tǒng)的OS類型。

由于Internet廣泛使用TCP/IP協(xié)議族,因此下面的討論主要圍繞TCP/IP來進(jìn)行。

4網(wǎng)絡(luò)協(xié)議棧指紋構(gòu)成

下面列出了不同OS的網(wǎng)絡(luò)協(xié)議棧的差異,這些差異可作為協(xié)議棧指紋識(shí)別的依據(jù)。

1)TTL

TTL:TimeToLive,即數(shù)據(jù)包的“存活時(shí)間”,表示一個(gè)數(shù)據(jù)包在被丟棄之前可以通過多少躍點(diǎn)(Hop)。不同操作系統(tǒng)的缺省TTL值往往是不同的。

常見操作系統(tǒng)的TTL值:

Windows9x/NT/2000Intel128

DigitalUnix4.0Alpha60

Linux2.2.xIntel64

Netware4.11Intel128

AIX4.3.xIBM/RS600060

Cisco12.02514255

Solaris8Intel/Sparc64

2)DF位

DF(不分段)位識(shí)別:不同OS對(duì)DF位有不同的處理方式,有些OS設(shè)置DF位,有些不設(shè)置DF位;還有一些OS在特定場(chǎng)合設(shè)置DF位,在其它場(chǎng)合不設(shè)置DF位。

3)WindowSize

WindowSize:TCP接收(發(fā)送)窗口大小。它決定了接收信息的機(jī)器在收到多少數(shù)據(jù)包后發(fā)送ACK包。

特定操作系統(tǒng)的缺省WindowSize基本是常數(shù),例如,AIX用0x3F25,Windows、OpenBSD、FreeBSD用0x402E。

一般地,UNIX的WindowSize較大。MSWindows,路由器,交換機(jī)等的較小。

4)ACK序號(hào)

不同的OS處理ACK序號(hào)時(shí)是不同的。如果發(fā)送一個(gè)FIN|PSH|URG的數(shù)據(jù)包到一個(gè)關(guān)閉的TCP端口,大多數(shù)OS會(huì)把回應(yīng)ACK包的序號(hào)設(shè)置為發(fā)送的包的初始序號(hào),而Windows和一些打印機(jī)則會(huì)發(fā)送序號(hào)為初始序號(hào)加1的ACK包。

5)ICMP地址屏蔽請(qǐng)求

對(duì)于ICMP地址屏蔽請(qǐng)求,有些OS會(huì)產(chǎn)生相應(yīng)的應(yīng)答,有些則不會(huì)。會(huì)產(chǎn)生應(yīng)答的系統(tǒng)有OpenVMS,MSWindows,SUNSolaris等。在這些產(chǎn)生應(yīng)答的系統(tǒng)中,對(duì)分片ICMP地址屏蔽請(qǐng)求的應(yīng)答又存在差別,可以做進(jìn)一步的區(qū)分。

6)對(duì)FIN包的響應(yīng)

發(fā)送一個(gè)只有FIN標(biāo)志位的TCP數(shù)據(jù)包給一個(gè)打開的端口,Linux等系統(tǒng)不響應(yīng);有些系統(tǒng),例如MSWindows,CISCO,HP/UX等,發(fā)回一個(gè)RESET。

7)虛假標(biāo)記的SYN包

在SYN包的TCP頭里設(shè)置一個(gè)未定義的TCP標(biāo)記,目標(biāo)系統(tǒng)在響應(yīng)時(shí),有的會(huì)保持這個(gè)標(biāo)記,有的不保持。還有一些系統(tǒng)在收到這樣的包的時(shí)候會(huì)復(fù)位連接。

8)ISN(初始化序列號(hào))

不同的OS在選擇TCPISN時(shí)采用不同的方法。一些UNIX系統(tǒng)采用傳統(tǒng)的64K遞增方法,較新的Solaris,IRIX,FreeBSD,DigitalUnix,Cray等系統(tǒng)采用隨機(jī)增量的方法;Linux2.0,OpenVMS,AIX等系統(tǒng)采用真隨機(jī)方法。Windows系統(tǒng)采用一種時(shí)間相關(guān)的模型。還有一些系統(tǒng)使用常數(shù)。如,3Com集線器使用0x803,AppleLaserWriter打印機(jī)使用0xC7001。

9)ICMP錯(cuò)誤信息

在發(fā)送ICMP錯(cuò)誤信息時(shí),不同的OS有不同的行為。RFC1812建議限制各種錯(cuò)誤信息的發(fā)送率。有的OS做了限制,而有的沒做。

10)ICMP消息引用

RFC規(guī)定ICMP錯(cuò)誤消息可以引用一部分引起錯(cuò)誤的源消息。

在處理端口不可達(dá)消息時(shí),大多數(shù)OS送回IP請(qǐng)求頭外加8字節(jié)。Solaris送回的稍多,Linux更多。

有些OS會(huì)把引起錯(cuò)誤消息的頭做一些改動(dòng)再發(fā)回來。例如,F(xiàn)reeBSD,OpenBSD,ULTRIX,VAXen等會(huì)改變頭的ID。

這種方法功能很強(qiáng),甚至可以在目標(biāo)主機(jī)沒有打開任何監(jiān)聽端口的情況下就識(shí)別出Linux和Solaris。

11)TOS(服務(wù)類型)

對(duì)于ICMP端口不可達(dá)消息,送回包的服務(wù)類型(TOS)值也是有差別的。大多數(shù)OS是0,而Linux是0xc0。

12)分段重組處理

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

13)MSS(最大分段尺寸)

不同的OS有不同的缺省MSS值,對(duì)不同的MSS值的回應(yīng)也不同。如,給Linux發(fā)送一個(gè)MSS值很小的包,它一般會(huì)把這個(gè)值原封不動(dòng)地返回;其它的系統(tǒng)會(huì)返回不同的值。

14)SYNFlood限度

在處理SYNFlood的時(shí)候,不同的OS有不同的特點(diǎn)。如果短時(shí)間內(nèi)收到很多的偽造SYN包,一些OS會(huì)停止接受新的連接。有的系統(tǒng)支持?jǐn)U展的方式來防止SYNflood。

15)主機(jī)使用的端口

一些OS會(huì)開放特殊的端口,比如:WINDOWS的137、139,WIN2K的445;一些網(wǎng)絡(luò)設(shè)備,如入侵檢測(cè)系統(tǒng)、防火墻等也開放自己特殊的端口。

16)Telnet選項(xiàng)指紋

建立Telnet會(huì)話時(shí),Socket連接完成后,會(huì)收到telnet守候程序發(fā)送的一系列telnet選項(xiàng)信息。不同OS有不同的Telnet選項(xiàng)排列順序。

17)Http指紋

執(zhí)行Http協(xié)議時(shí),不同的WebServer存在差異。而從WebServer往往可以判斷OS類型。WebServer的差異體現(xiàn)在如下方面:

1:基本Http請(qǐng)求

處理HEAD/Http/1.0這樣的請(qǐng)求時(shí),不同系統(tǒng)返回信息基本相同,但存在細(xì)節(jié)差別。如,Apache返回的頭信息里的Server和Date項(xiàng)的排序和其它的服務(wù)器不同。

2:DELETE請(qǐng)求

對(duì)于DELETE/Http/1.0這樣的非法請(qǐng)求,Apache響應(yīng)"405MethodNotAllowed",IIS響應(yīng)"403Forbidden",Netscape響應(yīng)"401Unauthorized"。

3:非法Http協(xié)議版本請(qǐng)求

對(duì)于GET/Http/3.0這樣的請(qǐng)求,Apache響應(yīng)"400BadRequest",IIS忽略這種請(qǐng)求,響應(yīng)信息是OK,Netscape響應(yīng)"505HttpVersionNotSupported"。

4:不正確規(guī)則協(xié)議請(qǐng)求

對(duì)不規(guī)則協(xié)議的請(qǐng)求,Apache忽視不規(guī)則的協(xié)議并返回200"OK",IIS響應(yīng)"400BadRequest",Netscape幾乎不返回Http頭信息。

18)打印機(jī)服務(wù)程序指紋

RFC1179規(guī)定了請(qǐng)求打印服務(wù)時(shí)須遵循的協(xié)議。

在實(shí)踐中,如果打印請(qǐng)求符合RFC1179的格式,不同OS表現(xiàn)行為相同。但當(dāng)打印請(qǐng)求不符合RFC1179的格式時(shí),不同OS就會(huì)體現(xiàn)出差別。如對(duì)一個(gè)非法格式的請(qǐng)求,Solaris這樣回應(yīng):

Reply:Invalidprotocolrequest(77):xxxxxx

而AIX系統(tǒng)這樣回應(yīng):

Reply:0781-201ill-formedFROMaddress.

大多數(shù)OS會(huì)給出不同的響應(yīng)信息。個(gè)別OS會(huì)給出長(zhǎng)度為0的回應(yīng)。

對(duì)于Windows,則是通過專有的SMB協(xié)議(ServerMessageBlockProtocol)來實(shí)現(xiàn)打印機(jī)的共享。

19)網(wǎng)絡(luò)協(xié)議棧指紋實(shí)踐

在實(shí)踐中,網(wǎng)絡(luò)協(xié)議棧指紋方法通常這樣應(yīng)用:總結(jié)各種操作系統(tǒng)網(wǎng)絡(luò)協(xié)議棧的上述細(xì)微差異,形成一個(gè)指紋數(shù)據(jù)庫。在探測(cè)一個(gè)系統(tǒng)的時(shí)候,通過網(wǎng)絡(luò)和目標(biāo)系統(tǒng)進(jìn)行交互,或者偵聽目標(biāo)系統(tǒng)發(fā)往網(wǎng)絡(luò)的數(shù)據(jù)包,收集其網(wǎng)絡(luò)協(xié)議棧的行為特點(diǎn),然后以操作系統(tǒng)指紋數(shù)據(jù)庫為參考,對(duì)收集的信息進(jìn)行分析,從而得出目標(biāo)系統(tǒng)運(yùn)行何種OS的結(jié)論。

20)遠(yuǎn)程OS探測(cè)的防護(hù)方法

由于協(xié)議棧指紋方法是建立在操作系統(tǒng)底層程序差別的基礎(chǔ)上的,所以要徹底防護(hù)指紋識(shí)別是很難的。但是有一些方法可以減少信息泄漏并干擾指紋識(shí)別的結(jié)果,在很大程度上提高系統(tǒng)的安全性。

21)檢測(cè)和攔截

對(duì)于主動(dòng)向主機(jī)發(fā)送數(shù)據(jù)包的協(xié)議棧指紋識(shí)別,可以使用IDS檢測(cè)到異常包或異常的行為,從而加以記錄和攔截。

對(duì)于通過Sniffer來進(jìn)行的協(xié)議棧指紋識(shí)別,這種方法是無效的。

22)修改參數(shù)

一些操作系統(tǒng)的協(xié)議棧參數(shù),如缺省WINDOW、MSS、MTU等值,是可以修改的。在Solaris和Linux操作系統(tǒng)下,很多TCP/IP協(xié)議棧的參數(shù)可以通過系統(tǒng)配置程序來修改。在WINDOWS系統(tǒng)中,可以通過對(duì)注冊(cè)表的修改來配置一些協(xié)議棧參數(shù)。通過修改這些可設(shè)置參數(shù)的值,可以給指紋識(shí)別造成干擾,從而減少真實(shí)信息的泄漏。

23)修改程序

修改參數(shù)可以給指紋識(shí)別造成一些干擾,但是對(duì)于一些協(xié)議棧的行為特征,比如數(shù)據(jù)包序列號(hào)的生成方式,是無法通過參數(shù)來修改的。

對(duì)于這些行為特征,可以通過修改系統(tǒng)底層程序來實(shí)現(xiàn),但是這么做通常需要付出較高的開發(fā)成本,并可能降低一些網(wǎng)絡(luò)功能。

在實(shí)踐中,可以綜合上述幾種防護(hù)方法,來達(dá)到比較好的安全性。

參考文獻(xiàn)

[1]Fyodor,《X-RemoteICMPBasedOSFingerprintingTechniques》,PhrackMagazineVolume54

[2]Fyodor《RemoteOSdetectionviaTCP/IPStackFingerPrinting》,PhrackMagazineVolume8

[3]LanceSpitzner《PassiveFingerprinting》,/focus/ids/articles/pfinger.html

[4]RFC1179:LinePrinterDaemonProtocol,NetworkPrintingWorkingGroup,L.McLaughlinIII,1990