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