探測遠程主機操作系統(tǒng)指紋 通信網(wǎng)絡(luò)綜合技術(shù)研究所06級3班 崔丹桐 學(xué)號:066802 操作系統(tǒng)探測技術(shù)主要有以下幾種方式: 獲取標識信息 在很多探測工具中都使用了此項技術(shù)來獲得某些服務(wù)的標識信息。它往往是通過對二進制文件的收集和分析來實現(xiàn)的。 TCP分段(標準/非標準)響應(yīng)分析 它是依靠不同操作系統(tǒng)對特定分段的不同反應(yīng)來區(qū)分的。比較流行的工具有Savage的QueSO和Fyodor的NMAP,他們都使用了很多來自于這種技術(shù)的變種。 ICMP響應(yīng)分析 它是剛推出不久的一種技術(shù)。它通過發(fā)送UPD或ICMP的請求報文,然后分析各種ICMP應(yīng)答。Ofir Arkin的X-Probe就是使用的這種技術(shù),在通常情況下,X-Probe工作的比較好,但是在防火墻阻塞某些協(xié)議時,得到的結(jié)果就不那么盡如人意了。 初始化序列號(ISN)分析 在TCP棧中不同的exploits隨機產(chǎn)生,通過鑒別足夠的測試結(jié)果來確定遠程主機的操作系統(tǒng)。 特殊的操作系統(tǒng) 拒絕服務(wù)同樣可以用在操作系統(tǒng)指紋的探測上,而不僅僅是被黑客所使用。在一些非常特殊的情況下,拒絕服務(wù)能探測到準確的結(jié)果。 在本文中,著重以Nmap為例,介紹一下探測遠程主機操作系統(tǒng)指紋的方法。 有許多技術(shù)可以用來定義網(wǎng)絡(luò)棧指紋。基本上,你只要找出操作系統(tǒng)間的不同并寫探測器查明它們。如果你合并足夠這些,你可以非常細致的區(qū)分它們。下面介紹一些這種技術(shù): FIN 探測器 -- 這里我們送一個FIN包(或任何其他包不帶ACK 或SYN標記)給一個打開的端口并等待回應(yīng)。正確的RFC793行為是不響應(yīng),但許多有問題的實現(xiàn)例如 MS Windows, BSDI, CISCO, HP/UX,MVS,和IRIX 發(fā)回一個RESET。許多現(xiàn)有工具利用這個技術(shù)。 BOGUS 標記探測器 -- Queso 是一個用這種技術(shù)的掃描器。它是設(shè)置一個未定義的TCP "標記"(64或128)在SYN包的TCP頭里。Linux機器到2.0.35之前在回應(yīng)中保持這個標記。其他OS還沒發(fā)現(xiàn)有這個錯誤。然而,一些操作系統(tǒng)象是復(fù)位連接當(dāng)它們得到一個SYN+ BOGUS包的時候。這一行為對辨識它們有用。
TCP ISN 取樣 -- 這個主意是找出當(dāng)響應(yīng)一個連接請求時由TCP 實現(xiàn)所選擇的初始化序列數(shù)式樣。這可分為許多組例如傳統(tǒng)的64K(許多老UNIX機器),隨機增量(新版本的Solaris, IRIX, FreeBSD,Digital UNIX, Cray, 和許多其他的),真“隨機”(Linux 2.0.*,OpenVMS,新的AIX,等)。Windows 機器(和一些其他的)用一個“時間相關(guān)”模型,每過一段時間ISN 就被加上一個小的固定數(shù)。不用說,這幾乎和老的64K 行為一樣容易攻破。當(dāng)然最讓人喜歡的技術(shù)是"常數(shù)"。機器總是使用確切同樣的ISN 。而3Com的集線器(用0x803)和Apple LaserWriter打印機(用0xC7001 )就是這樣。你也可以通過例如計算其隨機數(shù)的變化量,最大公約數(shù),以及序列數(shù)的其他函數(shù)和數(shù)之間的差異再進一步分組。 不分段位 -- 許多操作系統(tǒng)開始在送出的一些包中設(shè)置IP的"Don't Fragment"位。這帶來多種性能上的好處(盡管它也可能是討厭的 -- 這就是nmap的分段掃描對Solaris機器無效的原因)。無論如何,不是所有的OS都這樣做而且另一些做的場合不同,所以通過注意這個位我們甚至能收集目標OS的更多信息。 TCP 初始化窗口 -- 這只包括了檢查返回包的窗口大小。較老的掃描器簡單地用一個非零窗口在RST包中來表示“BSD 4.4 族”。新一些的如queso 和nmap則保持對窗口的精確跟蹤因為它對于特定OS基本是常數(shù)。這個測試事實上給出許多信息,因為有些可以被唯一確定(例如,AIX 是所知唯一用0x3F25的)。在它們“完全重寫”的NT5 TCP 棧中,Microsoft 用的是0x402E。有趣的是,這和OpenBSD 與FreeBSD 中所用的數(shù)字完全一樣。 ACK 值 -- 不同實現(xiàn)中一些情況下ACK域的值是不同的。例如,如果你送了一個FIN|PSH|URG 到一個關(guān)閉的TCP 端口。大多數(shù)實現(xiàn)會設(shè)置ACK 為你的初始序列數(shù),而Windows 和一些傻打印機會送給你序列數(shù)加1 。若你送一個SYN|FIN|URG|PSH 到一個打開的端口,Windows 會非常古怪。一些時候它送回序列號,但也有可能送回序列號加1, 甚至還可能送回一個隨機數(shù)。 ICMP 錯誤信息終結(jié) -- 一些操作系統(tǒng)跟從RFC 1812的建議限制各種錯誤信息的發(fā)送率。例如,Linux 內(nèi)核(在net/ipv4/icmp.h)限制目的不可達消息的生成每4 秒鐘80個,違反導(dǎo)致一個1/4 秒的處罰。測試的一種辦法是發(fā)一串包到一些隨機的高UDP 端口并計數(shù)收到的不可達消息。 ICMP 消息引用 -- RFC 規(guī)定ICMP錯誤消息可以引用一部分引起錯誤的源消息。對一個端口不可達消息,幾乎所有實現(xiàn)只送回IP請求頭外加8 字節(jié)。然而,Solaris 送回的稍多,而Linux 更多。這使得nmap甚至在沒有對方?jīng)]有監(jiān)聽端口的情況下認出Linux 和Solaris 主機。 ICMP 錯誤消息回應(yīng)完整性 -- 機器會把原始消息的一部分和端口不可達錯誤一起送回。然而一些機器傾向于在初始化處理時用你的消息頭作為“草稿紙”所以再得到時會有些許的改動。例如,AIX 和BSDI送回一個IP“全長”域在20字節(jié)處。一些 BSDI,F(xiàn)reeBSD,OpenBSD,ULTRIX,和VAXen 改變了你送的IP ID 。因為TTL 改變而改變了檢查和,有些機器(AIX, FreeBSD, 等)送回錯誤的或0 檢查和。總之,nmap作9 種測試在ICMP錯誤上以分辨出這類細微差別。 服務(wù)類型 -- 對于ICMP端口不可達消息可察看送回包的服務(wù)類型(TOS)值。幾乎所有實現(xiàn)在這個ICMP錯誤里用0 除了Linux 用0xc0。這不是標準的TOS 值,而是一個未使用優(yōu)先域(AFAIK) 的一部分。盡管不知道為什么如此,但如果他們改成0 我們還能夠分辨舊系統(tǒng)_而且_還能分辨出舊系統(tǒng)和新系統(tǒng)。 TCP 選項 -- 這簡直是泄漏信息的金礦。它的好處在于: 1) 這通常是可選的,所以并非所有實現(xiàn)都支持。 2) 若一個實現(xiàn)發(fā)出設(shè)置了選項的請求,目標通過設(shè)置它在回應(yīng)中表示支持。 3) 可以在一個數(shù)據(jù)包中設(shè)置而一次測試所有選項。 Nmap發(fā)送這些選項的幾乎所有可能的包:Window Scale=10; NOP; Max Segment Size = 265; Timestamp; End of Ops;當(dāng)你得到回應(yīng),看看那個選項被送回也就是被支持。一些操作系統(tǒng)如最近的FreeBSD 機器支持上面所有的,而其他,如Linux 2.0.X支持的則很少。最近的Linux 2.1.x 內(nèi)核支持上面所有的。另一方面,它們又有更易受攻擊的TCP 序列生成方式。 即使幾個操作系統(tǒng)支持同樣的選項集,有時仍可以通過選項的值分辨出它們。例如,如果送一個小的MSS值給Linux機器,它會用那個MSS 生成一個回答給你。其他主機會給你不同的值。甚至即使你得到同樣的支持選項集和同樣得值,你仍可以通過選項提供的順序和填充字進行辨識,例如Solaris返回'NNTNWME'表示;而Linux 2.2.122返回MENNTNW。同樣的選項,同樣的值,但不同順序! 沒見過其他OS檢測工具利用TCP 選項,但它非常有用。 因同樣原因有其他幾個有用的選項我會探測,象那些支持T/TCP和選擇性確認。
開發(fā)年代 -- 甚至使用上面所有測試,nmap仍不能從TCP 棧區(qū)分Win95,WinNT,或Win98。但你可以簡單的進行早期的WindowsDOS 攻擊(Ping of Death, Winnuke, 等)而比當(dāng)時的如Teardrop和Land多做一些。就是在每個攻擊之后,ping它們看是否垮掉了。等到你最后crash 掉它們,你就能縮小的某一服務(wù)包或補丁。 SYN洪水限度 -- 一些操作系統(tǒng)會停止新的連接嘗試如果你送太多的偽造SYN 給它(偽造包避免你的內(nèi)核復(fù)位連接)。許多操作系統(tǒng)只能處理8 個包。最近的Linux 內(nèi)核(包括其他操作系統(tǒng))允許不同的方式如SYN cookie來防止這成為嚴重問題。所以你可以試著從偽造地址發(fā)8 個包到目標打開的端口再嘗試你還能否建立連接以發(fā)現(xiàn)一些信息。這沒在nmap中實現(xiàn)因為有人不喜歡用SYN 洪水,甚至你解釋這只是想知道它運行的操作系統(tǒng)也不能使他們平靜。
本站部分文章來自網(wǎng)絡(luò),如發(fā)現(xiàn)侵犯了您的權(quán)益,請聯(lián)系指出,本站及時確認刪除 E-mail:349991040@qq.com
論文格式網(wǎng)(www.donglienglish.cn--論文格式網(wǎng)拼音首字母組合)提供其他論文畢業(yè)論文格式,論文格式范文,畢業(yè)論文范文