網(wǎng)絡(luò)協(xié)議棧指紋原理論文
時間:2022-08-02 03:20:00
導語:網(wǎng)絡(luò)協(xié)議棧指紋原理論文一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
摘要遠程探測計算機系統(tǒng)的OS(操作系統(tǒng))類型、版本號等信息,是黑客入侵行為的重要步驟,也是網(wǎng)絡(luò)安全中的一種重要的技術(shù)。在探測技術(shù)中,有一類是通過網(wǎng)絡(luò)協(xié)議棧指紋來進行的。協(xié)議棧指紋是指不同操作系統(tǒng)的網(wǎng)絡(luò)協(xié)議棧存在的細微差別,這些差別可以用來區(qū)分不同的操作系統(tǒng)。本文研究和分析了此技術(shù)的原理和實踐,并提出了防止指紋探測的方法。
關(guān)鍵詞遠程OS探測協(xié)議棧指紋TCP/IP協(xié)議
1引言
探測和識別一個計算機系統(tǒng)在運行什么OS是黑客入侵的重要步驟。如果不知道目標系統(tǒng)在運行什么OS,就很難在目標系統(tǒng)上執(zhí)行操作,也無法判斷是否存在安全漏洞,更談不上攻擊。
從管理和防范的角度來說,如果能減少被探測時泄漏的信息,就減少了黑客入侵行為的信息來源,使其入侵行為變得相當困難。因此,研究這方面的技術(shù),對于提高系統(tǒng)的安全性和抵抗入侵的能力具有重要的意義。
2簡單的OS探測技術(shù)
在早期,黑客經(jīng)常采用一些簡單的探測方法來獲取目標系統(tǒng)的信息。如通過telnet標題,ftp的標題和STAT命令,通過HTTP服務(wù)程序,DNS,SNMP等都可以得到很多有用信息。
但是,在長期的入侵和防入侵的斗爭中,通過簡單的手段即可獲得的信息越來越少了。管理員努力地減少通過網(wǎng)絡(luò)泄漏的信息,有時還修改OS的代碼,給出虛假的信息。在這種情況下,簡單的方法已經(jīng)很難奏效了,因此出現(xiàn)了通過網(wǎng)絡(luò)協(xié)議棧指紋來識別OS的技術(shù)。
3網(wǎng)絡(luò)協(xié)議棧指紋原理
常用的網(wǎng)絡(luò)協(xié)議是標準的,因而從理論上講各個操作系統(tǒng)的協(xié)議棧應(yīng)該是相同的。但是,在實踐中,各種操作系統(tǒng)的協(xié)議棧的實現(xiàn)存在細微的差異。這些差異稱作網(wǎng)絡(luò)協(xié)議棧的“指紋”。
對TCP協(xié)議族來說,這些差異通常表現(xiàn)在數(shù)據(jù)包頭的標志字段中。如windowsize、ACK序號、TTL等的不同取值。通過對這些差別進行歸納和總結(jié),可以比較準確地識別出遠程系統(tǒng)的OS類型。
由于Internet廣泛使用TCP/IP協(xié)議族,因此下面的討論主要圍繞TCP/IP來進行。
4網(wǎng)絡(luò)協(xié)議棧指紋構(gòu)成
下面列出了不同OS的網(wǎng)絡(luò)協(xié)議棧的差異,這些差異可作為協(xié)議棧指紋識別的依據(jù)。
1)TTL
TTL:TimeToLive,即數(shù)據(jù)包的“存活時間”,表示一個數(shù)據(jù)包在被丟棄之前可以通過多少躍點(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(不分段)位識別:不同OS對DF位有不同的處理方式,有些OS設(shè)置DF位,有些不設(shè)置DF位;還有一些OS在特定場合設(shè)置DF位,在其它場合不設(shè)置DF位。
3)WindowSize
WindowSize:TCP接收(發(fā)送)窗口大小。它決定了接收信息的機器在收到多少數(shù)據(jù)包后發(fā)送ACK包。
特定操作系統(tǒng)的缺省WindowSize基本是常數(shù),例如,AIX用0x3F25,Windows、OpenBSD、FreeBSD用0x402E。
一般地,UNIX的WindowSize較大。MSWindows,路由器,交換機等的較小。
4)ACK序號
不同的OS處理ACK序號時是不同的。如果發(fā)送一個FIN|PSH|URG的數(shù)據(jù)包到一個關(guān)閉的TCP端口,大多數(shù)OS會把回應(yīng)ACK包的序號設(shè)置為發(fā)送的包的初始序號,而Windows和一些打印機則會發(fā)送序號為初始序號加1的ACK包。
5)ICMP地址屏蔽請求
對于ICMP地址屏蔽請求,有些OS會產(chǎn)生相應(yīng)的應(yīng)答,有些則不會。會產(chǎn)生應(yīng)答的系統(tǒng)有OpenVMS,MSWindows,SUNSolaris等。在這些產(chǎn)生應(yīng)答的系統(tǒng)中,對分片ICMP地址屏蔽請求的應(yīng)答又存在差別,可以做進一步的區(qū)分。
6)對FIN包的響應(yīng)
發(fā)送一個只有FIN標志位的TCP數(shù)據(jù)包給一個打開的端口,Linux等系統(tǒng)不響應(yīng);有些系統(tǒng),例如MSWindows,CISCO,HP/UX等,發(fā)回一個RESET。
7)虛假標記的SYN包
在SYN包的TCP頭里設(shè)置一個未定義的TCP標記,目標系統(tǒng)在響應(yīng)時,有的會保持這個標記,有的不保持。還有一些系統(tǒng)在收到這樣的包的時候會復位連接。
8)ISN(初始化序列號)
不同的OS在選擇TCPISN時采用不同的方法。一些UNIX系統(tǒng)采用傳統(tǒng)的64K遞增方法,較新的Solaris,IRIX,FreeBSD,DigitalUnix,Cray等系統(tǒng)采用隨機增量的方法;Linux2.0,OpenVMS,AIX等系統(tǒng)采用真隨機方法。Windows系統(tǒng)采用一種時間相關(guān)的模型。還有一些系統(tǒng)使用常數(shù)。如,3Com集線器使用0x803,AppleLaserWriter打印機使用0xC7001。
9)ICMP錯誤信息
在發(fā)送ICMP錯誤信息時,不同的OS有不同的行為。RFC1812建議限制各種錯誤信息的發(fā)送率。有的OS做了限制,而有的沒做。
10)ICMP消息引用
RFC規(guī)定ICMP錯誤消息可以引用一部分引起錯誤的源消息。
在處理端口不可達消息時,大多數(shù)OS送回IP請求頭外加8字節(jié)。Solaris送回的稍多,Linux更多。
有些OS會把引起錯誤消息的頭做一些改動再發(fā)回來。例如,F(xiàn)reeBSD,OpenBSD,ULTRIX,VAXen等會改變頭的ID。
這種方法功能很強,甚至可以在目標主機沒有打開任何監(jiān)聽端口的情況下就識別出Linux和Solaris。
11)TOS(服務(wù)類型)
對于ICMP端口不可達消息,送回包的服務(wù)類型(TOS)值也是有差別的。大多數(shù)OS是0,而Linux是0xc0。
12)分段重組處理
在做IP包的分段重組時,不同OS的處理方式不同。有些OS會用新IP段覆蓋舊的IP段,而有些會用舊的IP段覆蓋新的IP段。
13)MSS(最大分段尺寸)
不同的OS有不同的缺省MSS值,對不同的MSS值的回應(yīng)也不同。如,給Linux發(fā)送一個MSS值很小的包,它一般會把這個值原封不動地返回;其它的系統(tǒng)會返回不同的值。
14)SYNFlood限度
在處理SYNFlood的時候,不同的OS有不同的特點。如果短時間內(nèi)收到很多的偽造SYN包,一些OS會停止接受新的連接。有的系統(tǒng)支持擴展的方式來防止SYNflood。
15)主機使用的端口
一些OS會開放特殊的端口,比如:WINDOWS的137、139,WIN2K的445;一些網(wǎng)絡(luò)設(shè)備,如入侵檢測系統(tǒng)、防火墻等也開放自己特殊的端口。
16)Telnet選項指紋
建立Telnet會話時,Socket連接完成后,會收到telnet守候程序發(fā)送的一系列telnet選項信息。不同OS有不同的Telnet選項排列順序。
17)Http指紋
執(zhí)行Http協(xié)議時,不同的WebServer存在差異。而從WebServer往往可以判斷OS類型。WebServer的差異體現(xiàn)在如下方面:
1:基本Http請求
處理HEAD/Http/1.0這樣的請求時,不同系統(tǒng)返回信息基本相同,但存在細節(jié)差別。如,Apache返回的頭信息里的Server和Date項的排序和其它的服務(wù)器不同。
2:DELETE請求
對于DELETE/Http/1.0這樣的非法請求,Apache響應(yīng)"405MethodNotAllowed",IIS響應(yīng)"403Forbidden",Netscape響應(yīng)"401Unauthorized"。
3:非法Http協(xié)議版本請求
對于GET/Http/3.0這樣的請求,Apache響應(yīng)"400BadRequest",IIS忽略這種請求,響應(yīng)信息是OK,Netscape響應(yīng)"505HttpVersionNotSupported"。
4:不正確規(guī)則協(xié)議請求
對不規(guī)則協(xié)議的請求,Apache忽視不規(guī)則的協(xié)議并返回200"OK",IIS響應(yīng)"400BadRequest",Netscape幾乎不返回Http頭信息。
18)打印機服務(wù)程序指紋
RFC1179規(guī)定了請求打印服務(wù)時須遵循的協(xié)議。
在實踐中,如果打印請求符合RFC1179的格式,不同OS表現(xiàn)行為相同。但當打印請求不符合RFC1179的格式時,不同OS就會體現(xiàn)出差別。如對一個非法格式的請求,Solaris這樣回應(yīng):
Reply:Invalidprotocolrequest(77):xxxxxx
而AIX系統(tǒng)這樣回應(yīng):
Reply:0781-201ill-formedFROMaddress.
大多數(shù)OS會給出不同的響應(yīng)信息。個別OS會給出長度為0的回應(yīng)。
對于Windows,則是通過專有的SMB協(xié)議(ServerMessageBlockProtocol)來實現(xiàn)打印機的共享。
19)網(wǎng)絡(luò)協(xié)議棧指紋實踐
在實踐中,網(wǎng)絡(luò)協(xié)議棧指紋方法通常這樣應(yīng)用:總結(jié)各種操作系統(tǒng)網(wǎng)絡(luò)協(xié)議棧的上述細微差異,形成一個指紋數(shù)據(jù)庫。在探測一個系統(tǒng)的時候,通過網(wǎng)絡(luò)和目標系統(tǒng)進行交互,或者偵聽目標系統(tǒng)發(fā)往網(wǎng)絡(luò)的數(shù)據(jù)包,收集其網(wǎng)絡(luò)協(xié)議棧的行為特點,然后以操作系統(tǒng)指紋數(shù)據(jù)庫為參考,對收集的信息進行分析,從而得出目標系統(tǒng)運行何種OS的結(jié)論。
20)遠程OS探測的防護方法
由于協(xié)議棧指紋方法是建立在操作系統(tǒng)底層程序差別的基礎(chǔ)上的,所以要徹底防護指紋識別是很難的。但是有一些方法可以減少信息泄漏并干擾指紋識別的結(jié)果,在很大程度上提高系統(tǒng)的安全性。
21)檢測和攔截
對于主動向主機發(fā)送數(shù)據(jù)包的協(xié)議棧指紋識別,可以使用IDS檢測到異常包或異常的行為,從而加以記錄和攔截。
對于通過Sniffer來進行的協(xié)議棧指紋識別,這種方法是無效的。
22)修改參數(shù)
一些操作系統(tǒng)的協(xié)議棧參數(shù),如缺省WINDOW、MSS、MTU等值,是可以修改的。在Solaris和Linux操作系統(tǒng)下,很多TCP/IP協(xié)議棧的參數(shù)可以通過系統(tǒng)配置程序來修改。在WINDOWS系統(tǒng)中,可以通過對注冊表的修改來配置一些協(xié)議棧參數(shù)。通過修改這些可設(shè)置參數(shù)的值,可以給指紋識別造成干擾,從而減少真實信息的泄漏。
23)修改程序
修改參數(shù)可以給指紋識別造成一些干擾,但是對于一些協(xié)議棧的行為特征,比如數(shù)據(jù)包序列號的生成方式,是無法通過參數(shù)來修改的。
對于這些行為特征,可以通過修改系統(tǒng)底層程序來實現(xiàn),但是這么做通常需要付出較高的開發(fā)成本,并可能降低一些網(wǎng)絡(luò)功能。
在實踐中,可以綜合上述幾種防護方法,來達到比較好的安全性。
參考文獻
[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
- 上一篇:影視文化管理論文
- 下一篇:無極視聽震撼管理論文