使用TCP/IP協(xié)議棧指紋進(jìn)行遠(yuǎn)程操作系統(tǒng)辨識(shí)
概述
本文討論了如何查詢(xún)一臺(tái)主機(jī)的TCP/IP協(xié)議棧來(lái)收集寶貴的信息。首
先,我列舉了棧指紋之外的幾種“經(jīng)典的”操作系統(tǒng)辨識(shí)方法。然后
我描述了棧指紋工具的“工藝現(xiàn)狀”。接下來(lái)說(shuō)明讓遠(yuǎn)程主機(jī)泄漏其
信息的一些技術(shù)。最后詳述了我的實(shí)現(xiàn)(nmap),和用它獲得的一些
流行網(wǎng)站的操作系統(tǒng)信息。
理由熱點(diǎn)網(wǎng)絡(luò)
我認(rèn)為辨識(shí)一個(gè)系統(tǒng)所運(yùn)行OS的用處是相當(dāng)顯而易見(jiàn)的,所以這一節(jié)
會(huì)很短。最有力的例子之一是許多安全漏洞是OS相關(guān)的。試想你正在
作突破試驗(yàn)并發(fā)現(xiàn)53端口是打開(kāi)的。如果那是易遭攻擊的bind版本,
則你只有一次機(jī)會(huì)利用它因?yàn)槭〉膰L試會(huì)殺死守護(hù)程序。有了正確
的TCP/IP指紋,你將很快發(fā)現(xiàn)它運(yùn)行的是'Solaris 2.51'或者'Linux 2.0.35'
而因此調(diào)整你的外殼代碼。
一個(gè)比較糟的例子是某人掃描500,000臺(tái)主機(jī)以找出它們運(yùn)行什么OS
和哪些端口是打開(kāi)的。然后等誰(shuí)貼(說(shuō))有一個(gè)root漏洞在Sun的comsat
守護(hù)程序里,我們的小朋友能從人家的列表中找出 'UDP/512'和'Solaris 2.6'
這兩個(gè)詞,并立即得到了整頁(yè)整頁(yè)的可得到root特權(quán)的盒子。必須認(rèn)
識(shí)到那是腳本小子(SCRIPT KIDDIE)的行為。你證明了你的無(wú)能而
且沒(méi)有人,甚至對(duì)方也,對(duì)你能找到?jīng)]有及時(shí)修補(bǔ)漏洞而易受攻擊的
.edu之事留有印象。人們也_較少_留有印象如果你用你新找到的通路
去破壞的web 站,換以一個(gè)自大的你如何強(qiáng)大而管理員們?nèi)绾斡?br />蠢的話(huà)的話(huà)。。
另一個(gè)用法是社會(huì)工學(xué)。假如你掃描目標(biāo)公司而namp報(bào)告一個(gè)'Datavoice
TxPOR TPRISM 3000 T1 CSU/DSU 6.22/2.06'。則黑客就以'Datavoice
support'為名打電話(huà)并討論他們PRISM 3000的一些問(wèn)題。“我們正要
公布一個(gè)安全漏洞,但希望我們現(xiàn)在的客戶(hù)先安裝補(bǔ)丁--我剛剛寄給
你...”一些天真的管理員會(huì)假定只有Datavoice指定的工程師才會(huì)對(duì)
他們的CSU/DSU知道的如此之多。
這個(gè)能力另一個(gè)潛在的用途是評(píng)價(jià)你要交易的公司。在選擇一個(gè)新ISP
前,掃描它們看用的是什么設(shè)備。那些“ 99美元/年”的買(mǎi)賣(mài)不向聽(tīng)
起來(lái)那么好當(dāng)你發(fā)現(xiàn)它們用廉價(jià)的路由器并用一堆運(yùn)行Windows 的機(jī)
器提供PPP 服務(wù)的時(shí)候。
經(jīng)典技術(shù)
棧指紋以獨(dú)特的方式解決OS辨識(shí)的問(wèn)題。我想這個(gè)技術(shù)最有把握,但
現(xiàn)在有許多其他解決方案。遺憾的是,這仍是其中最有效的:
playground~> telnet hpux.u-aizu.ac.jp
Trying 163.143.103.12...
Connected to hpux.u-aizu.ac.jp.
Escape character is '^]'.
HP-UX hpux B.10.01 A 9000/715 (ttyp2)
login:
沒(méi)有必要在指紋上費(fèi)這么大力氣,如果機(jī)器能大聲對(duì)世界說(shuō)明它們運(yùn)
行的是什么!遺憾的是,許多制造商交付帶有這類(lèi)標(biāo)志的_現(xiàn)有的_系
統(tǒng)而且許多管理員沒(méi)有關(guān)上它。[譯者:原文如此]只是因?yàn)檫€有其他
方法找出運(yùn)行的OS(例如指紋),但不是說(shuō)我們應(yīng)該通知每個(gè)嘗試連
接的笨蛋我們的OS和體系結(jié)構(gòu)。
依靠這個(gè)技術(shù)的問(wèn)題是越來(lái)越多的人把標(biāo)志關(guān)閉,許多系統(tǒng)不給出更
多信息,還有少數(shù)在標(biāo)志中“說(shuō)謊”。不過(guò),你得到全部就是讀標(biāo)志
方式的OS和OS版本檢查,如果你把上千美元花在商業(yè)的ISS 掃描器上
的話(huà)。下載nmap或queso代替它們可以替你省錢(qián):)。
即使你關(guān)閉了標(biāo)志,當(dāng)被詢(xún)問(wèn)時(shí)許多應(yīng)用程序仍然很高興給出這類(lèi)信
息。例如這個(gè)FTP服務(wù)器:
payfonez> telnet ftp.netscape.com 21
Trying 207.200.74.26...
Connected to ftp.netscape.com.
Escape character is '^]'.
220 ftp29 FTP server (UNIX(r) System V Release 4.0) ready.
SYST
215 UNIX Type: L8 Version: SUNOS
首先,它給出了它默認(rèn)的系統(tǒng)細(xì)節(jié)標(biāo)志。然后如果我們給出'SYST'命
令它愉快地送回更多信息。
如果FTP的anon被支持,我們經(jīng)??梢韵螺d/bin/ls或其他的二進(jìn)制文
件而測(cè)定它所建造的體系結(jié)構(gòu)。 許多其他應(yīng)用程序?qū)π畔⑻S便了。比如web服務(wù)器:
playground> echo 'GET / HTTP/1.0\n' | nc hotbot.com 80 | egrep '^Server:'
Server: Microsoft-IIS/4.0
playground>
Hmmm ... 我對(duì)這些家伙運(yùn)行的感到驚訝。
其他經(jīng)典技術(shù)包括DNS 主機(jī)信息記錄(不太有效)和社會(huì)工學(xué)。如果
它在聽(tīng)161/udp (snmp),用CMU SNMU工具包里的'snmpwalk'和'public'
通信名你肯定能獲得一大堆信息。
當(dāng)前指紋問(wèn)題
Nmap不是第一個(gè)用TCP/IP指紋辨識(shí)OS的程序。Johan的通用的IRC欺騙
程序sirc包括了非常基本的指紋技術(shù)從版本3 (或更早)開(kāi)始。它嘗
試把主機(jī)分為 "Linux","4.4BSD", "Win95", 或 "Unknown"幾類(lèi)通過(guò)
幾個(gè)簡(jiǎn)單TCP標(biāo)志測(cè)試。
另一個(gè)這樣的程序是checkos,作者Shok對(duì)版本7終于有了信心在今年
一月公開(kāi)發(fā)行。指紋技術(shù)和SIRC的完全一樣,甚至_代碼_都有許多同
樣之處。Checkos 在公開(kāi)發(fā)行前私下流傳了很久,所以不知誰(shuí)偷誰(shuí)的。
但看起來(lái)誰(shuí)都不信任對(duì)方。checkos增加的是telnet 標(biāo)志檢查,有用
但有前面說(shuō)的問(wèn)題。[更新:Shok寫(xiě)信來(lái)說(shuō)checkos無(wú)意公開(kāi)發(fā)行而這
就是為什么他沒(méi)有找SIRC要那些代碼的許可。]
Su1d也寫(xiě)了一個(gè)OS檢查程序。他稱(chēng)它叫SS其版本3.11可以辨識(shí)12個(gè)不
同的OS類(lèi)型。我有些偏愛(ài)它因?yàn)樗S可我的nmap程序一些網(wǎng)絡(luò)代碼:)。
然后是queso 。這是最新的而且對(duì)其他程序是一個(gè)巨大的飛躍。不僅
是因?yàn)樗鼈兺瞥隽艘恍┬聹y(cè)試,而且它們是首先(就我所見(jiàn))把OS指
紋_移出_代碼的。其他掃描的代碼象:
/* from ss */
if ((flagsfour & TH_RST) && (flagsfour & TH_ACK) && (winfour == 0) &&
(flagsthree & TH_ACK))
reportos(argv[2],argv[3],"Livingston Portmaster ComOS");
相反,queso 把這些代碼移到一個(gè)配置文件顯然使更易擴(kuò)展而且使增
加一個(gè)OS成為在指紋文件中增加幾行的簡(jiǎn)單工作。
Queso由Savage,Apostols.org的高手之一,所寫(xiě)。
以上所述所有問(wèn)題中的一個(gè)問(wèn)題是只有非常有限數(shù)量的指紋測(cè)試從而
限制了回答的詳細(xì)程度。我想知道不僅是'這臺(tái)機(jī)器是OpenBSD, FreeBSD,
或者NetBSD',我想確切知道它到底是那一個(gè)還有版本號(hào)。同樣,我希
望看到'Solaris 2.6' 而不僅僅是'Solaris'。為此,我對(duì)一系列指紋
技術(shù)進(jìn)行了研究,它們將在下一節(jié)說(shuō)明。
指紋方法學(xué)
有許多許多技術(shù)可以用來(lái)定義網(wǎng)絡(luò)棧指紋?;旧希阒灰页霾僮?br />系統(tǒng)間的不同并寫(xiě)探測(cè)器查明它們。如果你合并足夠這些,你可以非
常細(xì)致的區(qū)分它們。例如nmap可以可靠分辨出Solaris 2.4 和Solaris 2.5-2.51
以及Solaris 2.6。他能分辨Linux內(nèi)核2.0.30到2.0.31-34或or 2.0.35。
這有一些技術(shù):
FIN 探測(cè)器 -- 這里我們送一個(gè)FIN包(或任何其他包不帶ACK 或SYN
標(biāo)記)給一個(gè)打開(kāi)的端口并等待回應(yīng)。正確的RFC793行為是不
響應(yīng),但許多有問(wèn)題的實(shí)現(xiàn)例如 MS Windows, BSDI, CISCO,
HP/UX,MVS,和IRIX 發(fā)回一個(gè)RESET。許多現(xiàn)有工具利用這個(gè)技
術(shù)。
BOGUS 標(biāo)記探測(cè)器 -- Queso 是我見(jiàn)過(guò)的第一個(gè)用這個(gè)聰明技術(shù)掃描
器。這個(gè)主意是設(shè)置一個(gè)未定義的TCP "標(biāo)記"(64或128)在SYN
包的TCP頭里。Linux機(jī)器到2.0.35之前在回應(yīng)中保持這個(gè)標(biāo)記。
我沒(méi)有發(fā)現(xiàn)其他OS有這個(gè)錯(cuò)誤。然而,一些操作系統(tǒng)象是復(fù)位
連接當(dāng)它們得到一個(gè)SYN+ BOGUS包的時(shí)候。這一行為對(duì)辨識(shí)它
們有用。
TCP ISN 取樣 -- 這個(gè)主意是找出當(dāng)響應(yīng)一個(gè)連接請(qǐng)求時(shí)由TCP 實(shí)現(xiàn)
所選擇的初始化序列數(shù)式樣。這可分為許多組例如傳統(tǒng)的64K
(許多老UNIX機(jī)器),隨機(jī)增量(新版本的Solaris, IRIX, FreeBSD,
Digital UNIX, Cray, 和許多其他的),真“隨機(jī)”(Linux 2.0.*,
OpenVMS,新的AIX,等)。Windows 機(jī)器(和一些其他的)用一
個(gè)“時(shí)間相關(guān)”模型,每過(guò)一段時(shí)間ISN 就被加上一個(gè)小的固
定數(shù)。不用說(shuō),這幾乎和老的64K 行為一樣容易攻破。當(dāng)然我
喜歡的技術(shù)是"常數(shù)"。機(jī)器總是使用確切同樣的ISN :)。我已
經(jīng)在3Com的集線(xiàn)器(用0x803)和Apple LaserWriter打印機(jī)(
用0xC7001 )上看到了。
你也可以通過(guò)例如計(jì)算其隨機(jī)數(shù)的變化量,最大公約數(shù),以及
序列數(shù)的其他函數(shù)和數(shù)之間的差異再進(jìn)一步分組。
要知道ISN 的生成和安全息息相關(guān)。想了解更多情況,聯(lián)絡(luò)在
SDSC的“安全專(zhuān)家”Tsutome Shimmy Shimomura,問(wèn)他所知道
的。Nmap是我所見(jiàn)到的第一個(gè)用它來(lái)辨識(shí)OS的程序。
不分段位 -- 許多操作系統(tǒng)開(kāi)始在送出的一些包中設(shè)置IP的"Don't Fragment"
位。這帶來(lái)多種性能上的好處(盡管它也可能是討厭的 -- 這
就是nmap的分段掃描對(duì)Solaris機(jī)器無(wú)效的原因)。無(wú)論如何,
不是所有的OS都這樣做而且另一些做的場(chǎng)合不同,所以通過(guò)注
意這個(gè)位我們甚至能收集目標(biāo)OS的更多信息。在那兩個(gè)程序中
沒(méi)見(jiàn)過(guò)這個(gè)。
TCP 初始化窗口 -- 這只包括了檢查返回包的窗口大小。較老的掃描
器簡(jiǎn)單地用一個(gè)非零窗口在RST包中來(lái)表示“BSD 4.4 族”。新
一些的如queso 和nmap則保持對(duì)窗口的精確跟蹤因?yàn)樗鼘?duì)于特定
OS基本是常數(shù)。這個(gè)測(cè)試事實(shí)上給出許多信息,因?yàn)橛行┛梢员?br />唯一確定(例如,AIX 是所知唯一用0x3F25的)。在它們“完全
重寫(xiě)”的NT5 TCP 棧中,Microsoft 用的是0x402E。有趣的是,
這和OpenBSD 與FreeBSD 中所用的數(shù)字完全一樣。
ACK 值 -- 盡管你會(huì)認(rèn)為這個(gè)會(huì)完全標(biāo)準(zhǔn),不同實(shí)現(xiàn)中一些情況下ACK
域的值是不同的。例如,如果你送了一個(gè)FIN|PSH|URG 到一個(gè)
關(guān)閉的TCP 端口。大多數(shù)實(shí)現(xiàn)會(huì)設(shè)置ACK 為你的初始序列數(shù),
而Windows 和一些傻打印機(jī)會(huì)送給你序列數(shù)加1 。若你送一個(gè)
SYN|FIN|URG|PSH 到一個(gè)打開(kāi)的端口,Windows 會(huì)非常古怪。
一些時(shí)候它送回序列號(hào),但也有可能送回序列號(hào)加1, 甚至還
可能送回一個(gè)隨機(jī)數(shù)。我們覺(jué)得奇怪,不知微軟寫(xiě)的是些什么
代碼。
ICMP 錯(cuò)誤信息終結(jié) -- 一些(聰明的)操作系統(tǒng)跟從RFC 1812的建
議限制各種錯(cuò)誤信息的發(fā)送率。例如,Linux 內(nèi)核(在net/ipv4/icmp.h)
限制目的不可達(dá)消息的生成每4 秒鐘80個(gè),違反導(dǎo)致一個(gè)1/4
秒的處罰。測(cè)試的一種辦法是發(fā)一串包到一些隨機(jī)的高UDP 端
口并計(jì)數(shù)收到的不可達(dá)消息。沒(méi)見(jiàn)過(guò)用它的,而且實(shí)際上我也
沒(méi)有把它加進(jìn)nmap(除了作為UDP 端口掃描用)。這個(gè)測(cè)試會(huì)
讓OS辨識(shí)多花一些時(shí)間因?yàn)樾枰鸵慌俚人鼈兓貋?lái)。而且
對(duì)付網(wǎng)絡(luò)丟包會(huì)很痛苦。
ICMP 消息引用 -- RFC 規(guī)定ICMP錯(cuò)誤消息可以引用一部分引起錯(cuò)誤
的源消息。對(duì)一個(gè)端口不可達(dá)消息,幾乎所有實(shí)現(xiàn)只送回IP請(qǐng)
求頭外加8 字節(jié)。然而,Solaris 送回的稍多,而Linux 更多。
這使得nmap甚至在沒(méi)有對(duì)方?jīng)]有監(jiān)聽(tīng)端口的情況下認(rèn)出Linux
和Solaris 主機(jī)。
ICMP 錯(cuò)誤消息回應(yīng)完整性 -- 我這個(gè)想法來(lái)自Theo De Raadt (OpenBSD
開(kāi)發(fā)負(fù)責(zé)人)貼在comp.security.unix的文章。剛剛提到,機(jī)
器會(huì)把原始消息的一部分和端口不可達(dá)錯(cuò)誤一起送回。然而一
些機(jī)器傾向于在初始化處理時(shí)用你的消息頭作為“草稿紙”所
以再得到時(shí)會(huì)有些許的改動(dòng)。例如,AIX 和BSDI送回一個(gè)IP“
全長(zhǎng)”域在20字節(jié)處。一些 BSDI,F(xiàn)reeBSD,OpenBSD,ULTRIX,
和VAXen 改變了你送的IP ID 。因?yàn)門(mén)TL 改變而改變了檢查和,
有些機(jī)器(AIX, FreeBSD, 等)送回錯(cuò)誤的或0 檢查和??傊?,
nmap作9 種測(cè)試在ICMP錯(cuò)誤上以分辨出這類(lèi)細(xì)微差別。
服務(wù)類(lèi)型 -- 對(duì)于ICMP端口不可達(dá)消息我察看送回包的服務(wù)類(lèi)型(TOS)
值。幾乎所有實(shí)現(xiàn)在這個(gè)ICMP錯(cuò)誤里用0 除了Linux 用0xc0。
這不是標(biāo)準(zhǔn)的TOS 值,而是一個(gè)未使用優(yōu)先域(AFAIK) 的一部
分。我不知道為什么如此,但如果他們改成0 我們還能夠分辨
舊系統(tǒng)_而且_還能分辨出舊系統(tǒng)和新系統(tǒng)。
分段控制 -- 這是安全網(wǎng)絡(luò)公司(現(xiàn)在由一幫在NAI 的Windows 用戶(hù)
所擁有)的Thomas H. Ptacek喜愛(ài)的技術(shù)。它獲益于事實(shí)即不
同實(shí)現(xiàn)經(jīng)常以不同方式控制覆蓋IP段。一些會(huì)用新的覆蓋舊的
部分,另一些情況中舊的優(yōu)先。有很多不同可能你可以用來(lái)決
定如何重組數(shù)據(jù)包。我沒(méi)有加入這一特性因?yàn)闆](méi)有簡(jiǎn)便的方式
發(fā)送IP分段(特別是,在Solaris 上是不允許的)。關(guān)于覆蓋
段的更多信息,可以看IDS 的論文(www.secnet.com)
TCP 選項(xiàng) -- 這簡(jiǎn)直是泄漏信息的金礦。它的好處在于:
1) 這通常是可選的(哈!):) 所以并非所有實(shí)現(xiàn)都支持。
2) 若一個(gè)實(shí)現(xiàn)發(fā)出設(shè)置了選項(xiàng)的請(qǐng)求,目標(biāo)通過(guò)設(shè)置它在回
應(yīng)中表示支持。
3) 可以在一個(gè)數(shù)據(jù)包中設(shè)置而一次測(cè)試所有選項(xiàng)。
Nmap發(fā)送這些選項(xiàng)的幾乎所有可能的包:
Window Scale=10; NOP; Max Segment Size = 265; Timestamp; End of Ops;
當(dāng)你得到回應(yīng),看看那個(gè)選項(xiàng)被送回也就是被支持。一些操作
系統(tǒng)如最近的FreeBSD 機(jī)器支持上面所有的,而其他,如Linux 2.0.X
支持的則很少。最近的Linux 2.1.x 內(nèi)核支持上面所有的。另
一方面,它們又有更易受攻擊的TCP 序列生成方式。去看看。
即使幾個(gè)操作系統(tǒng)支持同樣的選項(xiàng)集,有時(shí)仍可以通過(guò)選項(xiàng)的
_值_分辨出它們。例如,如果送一個(gè)小的MSS值給Linux機(jī)器,
它會(huì)用那個(gè)MSS 生成一個(gè)回答給你。其他主機(jī)會(huì)給你不同的值。
甚至即使你得到同樣的支持選項(xiàng)集和同樣得值,你仍可以通過(guò)
選項(xiàng)提供的_順序_和填充字進(jìn)行辨識(shí),例如Solaris返回'NNTNWME'
表示:
而Linux 2.2.122返回MENNTNW。同樣的選項(xiàng),同樣的值,但不
同順序!
沒(méi)見(jiàn)過(guò)其他OS檢測(cè)工具利用TCP 選項(xiàng),但它非常有用。
因同樣原因有其他幾個(gè)有用的選項(xiàng)我會(huì)探測(cè),象那些支持T/TCP
和選擇性確認(rèn)。
開(kāi)發(fā)年代 -- 甚至使用上面所有測(cè)試,nmap仍不能從TCP 棧區(qū)分Win95,
WinNT,或Win98。這很令人驚訝,尤其是Win98 比Win95 晚出
現(xiàn)4 年。你可能想它們不得不從某些方面進(jìn)行改善(象支持更
多的TCP 選項(xiàng))這樣我們可以檢測(cè)到改變而分辨出它們。不幸
的是,不是這樣的。NT的棧顯然就是放在95里的蹩腳的東西。
而且到98也沒(méi)加改動(dòng)。
但別放棄希望,還有個(gè)辦法。你可以簡(jiǎn)單的進(jìn)行早期的Windows
DOS 攻擊(Ping of Death, Winnuke, 等)而比當(dāng)時(shí)的如Teardrop
和Land多做一些。就是在每個(gè)攻擊之后,ping它們看是否垮
掉了。等到你最后crash 掉它們,你就能縮小的某一服務(wù)包
或補(bǔ)丁。
這個(gè)沒(méi)加進(jìn)nmap,盡管我承認(rèn)它非常誘人:)。
SYN洪水限度 -- 一些操作系統(tǒng)會(huì)停止新的連接嘗試如果你送太多的
偽造SYN 給它(偽造包避免你的內(nèi)核復(fù)位連接)。許多操作系
統(tǒng)只能處理8 個(gè)包。最近的Linux 內(nèi)核(包括其他操作系統(tǒng))
允許不同的方式如SYN cookie來(lái)防止這成為嚴(yán)重問(wèn)題。所以你
可以試著從偽造地址發(fā)8 個(gè)包到目標(biāo)打開(kāi)的端口再?lài)L試你還能
否建立連接以發(fā)現(xiàn)一些信息。這沒(méi)在nmap中實(shí)現(xiàn)因?yàn)橛腥瞬幌?br />歡你用SYN 洪水,甚至你解釋這只是想知道它運(yùn)行的操作系統(tǒng)
也不能使他們平靜。
NMAP實(shí)現(xiàn)和結(jié)果
我已經(jīng)作了一個(gè)上面說(shuō)的OS探測(cè)技術(shù)的參考實(shí)現(xiàn)(除了我說(shuō)不包括的)。
我把它們加到了我的Nmap掃描器這樣在分析指紋時(shí)它已經(jīng)知道了什么
端口是打開(kāi)還是關(guān)閉的而不用你再告訴。它也能在Linux,*BSD, 和
Solaris 2.51和2.6, 以及其他一些操作系統(tǒng)間移植。
新版的nmap讀一個(gè)指紋模板文件。下面是語(yǔ)法的例子:
FingerPrint IRIX 6.2 - 6.4 # Thanks to Lamont Granquist
TSeq(Class=i800)
T1(DF=N%W=C000|EF2A%ACK=S++%Flags=AS%Ops=MNWNNT)
T2(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=)
T3(Resp=Y%DF=N%W=C000|EF2A%ACK=O%Flags=A%Ops=NNT)
T4(DF=N%W=0%ACK=O%Flags=R%Ops=)
T5(DF=N%W=0%ACK=S++%Flags=AR%Ops=)
T6(DF=N%W=0%ACK=O%Flags=R%Ops=)
T7(DF=N%W=0%ACK=S%Flags=AR%Ops=)
PU(DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E)
看第一行(我加了'>'標(biāo)記):
> FingerPrint IRIX 6.2 - 6.3 # Thanks to Lamont Granquist
這簡(jiǎn)單表明這個(gè)指紋覆蓋IRIX版本6.2到6.3而注釋表明Lamont Granquist
友好地送給我測(cè)試用IRIX機(jī)器的IP地址或指紋。
> TSeq(Class=i800)
這表明ISN 取樣放在"i800組"。這意味著每一個(gè)新序列號(hào)比前一個(gè)大
800的整數(shù)倍。
> T1(DF=N%W=C000|EF2A%ACK=S++%Flags=AS%Ops=MNWNNT)
這個(gè)測(cè)試叫T1(比test1 聰明吧?)。這個(gè)測(cè)試我們送一個(gè)SYN 包帶
一組TCP 選項(xiàng)到一個(gè)打開(kāi)的端口。DF=N意為回答的"Don't fragment"
位必須沒(méi)有設(shè)置。W=C000|EF2A意為收到的窗口特征必須是0xC000 或
EF2A。ACK=S++是說(shuō)響應(yīng)必須是我們送的序列號(hào)加1 。Flags=AS 意為
ACK 和SYN 標(biāo)記在回答中。Ops=MNWNNT意為回答的選項(xiàng)必須如此順序:
> T2(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=)
測(cè)試2 包括一個(gè)NULL及同樣選項(xiàng)到一個(gè)打開(kāi)的端口。Resp=Y表示我們
必須得到一個(gè)回答。Ops=表示必須沒(méi)有任何選項(xiàng)包括在回答中。若整
個(gè)用'%Ops='則任何選項(xiàng)都匹配。
> T3(Resp=Y%DF=N%W=400%ACK=S++%Flags=AS%Ops=M)
測(cè)試3 是一個(gè)SYN|FIN|URG|PSH w/options 到一個(gè)打開(kāi)端口。
> T4(DF=N%W=0%ACK=O%Flags=R%Ops=)
這是一個(gè)到打開(kāi)端口的ACK。注意這兒沒(méi)有Resp=。這意味著缺少回答
(比如包在網(wǎng)絡(luò)上掉了或被防火墻攔住了)不會(huì)妨礙其他測(cè)試的匹配。
我們?nèi)绱耸且驗(yàn)閷?shí)際上所有的OS都會(huì)回答,所以缺少回答總是網(wǎng)絡(luò)原
因而不是OS本身造成。測(cè)試2和3里有Resp標(biāo)記因?yàn)橛蠴S_確實(shí)_丟棄它
們而不回答。
> T5(DF=N%W=0%ACK=S++%Flags=AR%Ops=)
> T6(DF=N%W=0%ACK=O%Flags=R%Ops=)
> T7(DF=N%W=0%ACK=S%Flags=AR%Ops=)
這些測(cè)試是SYN,ACK,和FIN|PSH|URG, 分別地,到一個(gè)關(guān)閉端口。
總是設(shè)置同樣的選項(xiàng)。當(dāng)然這顯然給了名字'T5', 'T6', 和 'T7' :)。
> PU(DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E)
這大家伙是端口不可達(dá)消息測(cè)試?,F(xiàn)在你應(yīng)該認(rèn)識(shí)DF=N了。TOS=0 意
為IP服務(wù)域類(lèi)型是0 。下兩個(gè)域給出(16進(jìn)制)返回的消息頭IP全長(zhǎng)
域和IP頭中給的全長(zhǎng)。RID=E 是說(shuō)在返回的部分原始包中的RID 值應(yīng)
和原來(lái)的一樣(就如我們送出的)。RIPCK=E 表示沒(méi)有修改檢查和(
改了的話(huà)用RIPCK=F)。UCK=E表示UDP 檢查和也正確。下面的是UDP
長(zhǎng)度0x134 和DAT=E 表示它們正確返回我們的UDP 數(shù)據(jù)。因?yàn)榇蠖鄶?shù)
實(shí)現(xiàn)(包括這個(gè))不送回任何我們的UDP 數(shù)據(jù)包,它們默認(rèn)DAT=E。
帶這個(gè)功能的這個(gè)版本的nmap正在私下進(jìn)行第六次beta測(cè)試循環(huán)。你
讀到的時(shí)候,也許已經(jīng)完成,也許沒(méi)有。訪問(wèn)http://www.insecure.org/nmap/
以得到最新版本。
流行網(wǎng)站快照
下面是我們努力的成果。我們現(xiàn)在可以隨機(jī)挑選Internet網(wǎng)站判斷它
使用的OS。它們?cè)S多修改了telnet標(biāo)志,等。以使這些信息保密。但
這對(duì)我們的新指紋沒(méi)用!這也是好辦法揭露<填你喜歡的傻OS>的用
戶(hù)是多么的愚蠢。:)
用在這些例子中的命令是:nmap -sS -p 80 -O -v <主機(jī)>
也要注意大多數(shù)掃描是在98-10-18進(jìn)行的。那以后一些家伙會(huì)升級(jí)/
改變了它們的服務(wù)器。
注意我并不喜歡這的每個(gè)網(wǎng)站。
# "黑客" 網(wǎng)站或(兩方都是)自認(rèn)為是的
www.l0pht.com => OpenBSD 2.2 - 2.4
www.insecure.org => Linux 2.0.31-34
www.rhino9.ml.org => Windows 95/NT # 沒(méi)的說(shuō) :)
www.technotronic.com => Linux 2.0.31-34
www.nmrc.org => FreeBSD 2.2.6 - 3.0
www.cultdeadcow.com => OpenBSD 2.2 - 2.4
www.kevinmitnick.com => Linux 2.0.31-34 # Free Kevin!
www.2600.com => FreeBSD 2.2.6 - 3.0 Beta
www.antionline.com => FreeBSD 2.2.6 - 3.0 Beta
www.rootshell.com => Linux 2.0.35 # 改成了 OpenBSD 在他們得到以后
# 安全提供商,顧問(wèn),等
www.repsec.com => Linux 2.0.35
www.iss.net => Linux 2.0.31-34
www.checkpoint.com => Solaris 2.5 - 2.51
www.infowar.com => Win95/NT
# OS制造商
www.li.org => Linux 2.0.35 # Linux 國(guó)際版
www.redhat.com => Linux 2.0.31-34 # 我奇怪它們發(fā)行什么 :)
www.debian.org => Linux 2.0.35
www.linux.org => Linux 2.1.122 - 2.1.126
www.sgi.com => IRIX 6.2 - 6.4
www.netbsd.org => NetBSD 1.3X
www.openbsd.org => Solaris 2.6 # 啊嗨 :)
www.freebsd.org => FreeBSD 2.2.6-3.0 Beta
# 學(xué)聯(lián)
www.harvard.edu => Solaris 2.6
www.yale.edu => Solaris 2.5 - 2.51
www.caltech.edu => SunOS 4.1.2-4.1.4 # Hello! 這是90年代的 :)
www.stanford.edu => Solaris 2.6
www.mit.edu => Solaris 2.5 - 2.51 # 這么多好學(xué)校喜歡SUN?
# 大概是給.edu打40%的折扣 :)
www.berkeley.edu => UNIX OSF1 V 4.0,4.0B,4.0D
www.oxford.edu => Linux 2.0.33-34 # 好家伙!
# 殘疾網(wǎng)站
www.aol.com => IRIX 6.2 - 6.4 # 不奇怪它們那么不安全 :)
www.happyhacker.org => OpenBSD 2.2-2.4 # 病態(tài)的, Carolyn?
# 甚至最安全的OS在不合格的管理員手里也沒(méi)用
# 其他
www.lwn.net => Linux 2.0.31-34 # 這是Linux新聞網(wǎng)站!
www.slashdot.org => Linux 2.1.122 - 2.1.126
www.whitehouse.gov => IRIX 5.3
sunsite.unc.edu => Solaris 2.6
注意:在它們的安全白皮書(shū)中,Microsoft 說(shuō)到它們松懈的安全:“
這種假設(shè)已經(jīng)改變?cè)谶@些年中Windows NT獲得普及很大程度上是由于
其安全特性”。喔,從我這里看Windows 在安全團(tuán)體中不是很普遍:)。
從中我只看到2 臺(tái)Windows 機(jī)器,而且對(duì)nmap來(lái)說(shuō)Windows 是_ 容易_
分辨的它太破了(一流的聰明)
當(dāng)然,有更多需要檢查的。這是ultra-secret Transmeta公司的網(wǎng)站。
有趣的是該公司主要由微軟的Paul Allen建立,而非其雇員Linus Torvalds。
那么它們是和Paul用NT或者投身到Linux中去呢?我們看看:
我們用命令:
nmap -sS -F -o transmeta.log -v -O www.transmeta.com/24
這個(gè)說(shuō)SYN 掃描一致端口(從/etc/services),記錄結(jié)果到'transmeta.log',
詳細(xì)地,進(jìn)行OS掃描,并掃描www.transmeta.com所在的'C'地址。這
是結(jié)果摘要:熱點(diǎn)網(wǎng)絡(luò)
neon-best.transmeta.com (206.184.214.10) => Linux 2.0.33-34
www.transmeta.com (206.184.214.11) => Linux 2.0.30
neosilicon.transmeta.com (206.184.214.14) => Linux 2.0.33-34
ssl.transmeta.com (206.184.214.15) => Linux unknown version
linux.kernel.org (206.184.214.34) => Linux 2.0.35
www.linuxbase.org (206.184.214.35) => Linux 2.0.35 可能和上面的是同一臺(tái)機(jī)器
- C#基于TCP協(xié)議的服務(wù)器端和客戶(hù)端通信編程的基礎(chǔ)教程
- 使用C語(yǔ)言編寫(xiě)基于TCP協(xié)議的Socket通訊程序?qū)嵗窒?/a>
- C語(yǔ)言編寫(xiě)基于TCP和UDP協(xié)議的Socket通信程序示例
- Java基于Tcp協(xié)議的socket編程實(shí)例
- 使用批處理重置TCP_IP協(xié)議
- .Net WInform開(kāi)發(fā)筆記(二)Winform程序運(yùn)行結(jié)構(gòu)圖及TCP協(xié)議在Winform中的應(yīng)用
- TCP協(xié)議詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
相關(guān)文章
五十六、 NT網(wǎng)卡和Novell網(wǎng)卡互用
五十六、 NT網(wǎng)卡和Novell網(wǎng)卡互用...2006-11-11Microsoft 發(fā)布5個(gè)新的安全補(bǔ)丁
Microsoft 發(fā)布5個(gè)新的安全補(bǔ)丁...2006-11-11專(zhuān)家八招秘技防范春節(jié)病毒爆發(fā)
專(zhuān)家八招秘技防范春節(jié)病毒爆發(fā)...2006-11-11