亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nmap是如何識別主機指紋的

發布時間:2022-01-18 14:46:00 來源:億速云 閱讀:356 作者:柒染 欄目:網絡安全

這篇文章給大家介紹Nmap是如何識別主機指紋的,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

0x01

Nmap維護一個nmap-os-db數據庫,存儲了上千種操作系統信息,簡單一點來說,Nmap通過TCP/IP協議棧的指紋信息來識別目標主機的操作系統信息,這主要是利用了RFC標準中,沒有強制規范了TCP/IP的某些實現,于是不同的系統中TCP/IP的實現方案可能都有其特定的方式,這些細節上的差異,給nmap識別操作系統信息提供了方案,具體一點說,Nmap分別挑選一個close和open的端口,分別發送給一個經過精心設計的TCP/UDP數據包,當然這個數據包也可能是ICMP數據包。然后根據收到返回報文,生成一份系統指紋。通過對比檢測生成的指紋和nmap-os-db數據庫中的指紋,來查找匹配的系統。最壞的情況下,沒有辦法匹配的時候,則用概率的形式枚舉出所有可能的信息。

所謂的指紋,即由特定的回復包提取出的數據特征

0x02

Nmap-os-db在kali中路徑如下

Nmap是如何識別主機指紋的

我把他下在到win上方便查看

Nmap是如何識別主機指紋的

這是指紋庫的版本

以這條為例

Nmap是如何識別主機指紋的

最前面幾行為注釋行,說明此指紋對應的操作系統與版本。

Fingerprint關鍵字定義一個新的指紋,緊隨其后的是指紋名字。

Class行用于指定該指紋所屬的類別,依次指定該系統的vendor(生產廠家),OS family(系統類別),OS generation(第幾代操作系統),and device type(設備類型)。

接下來是CPE行,此行非常重要,使用CPE(CommonPlatformEnumeration,通用平臺枚舉)格式描述該系統的信息。以標準的CPE格式來描述操作系統類型,便于Nmap與外界信息的交換,比如可以很快從網上開源數據庫查找到CPE描述的操作系統具體信息。

此處作為指紋描述字段的CPE格式如下:

cpe:/<part>:<vendor>:<product>:<version>:<update>:<edition>:<language>

接下來從SEQ到IE的13行都是具體指紋數據描述行,在對比指紋時,就是對比這13行里面的具體數據,如果匹配則目標機為指紋所描述的系統類型。

SEQ描述順序產生方式;OPS描述TCP包中可選字段的值;WIN描述TCP包的初始窗口大小;ECN(ExplicitCongestionNotification)描述TCP明確指定擁塞通知時的特征;T1-T7描述TCP回復包的字段特征;U1描述向關閉的UDP發包產生的回復的特征;IE描述向目標機發送ICMP包產生的特征。

0x03

在系統探測過程中,會執行五種不同的測試,每種測試由一個或者多個數據包組成,目標系統對每個數據包作出的響應有助于確定操作系統的類型。

五種不同的測試是:

1.sequencegeneration

2.ICMPecho

3.tcp explicit congestion notification

4.TCP

5.UDP

分別看看

序列生成(sequencegeneration):

序列生成測試由六個數據包組成,這六個包是每隔100 毫秒分開發送的,且都是TCP SYN 包。每個TCP SYN 包的結果將有助于NMAP 確定操作系統的類型。

ICMP回顯(ICMPecho):

兩個有著不同設置的ICMP請求包被送到目標系統,由此產生的反應將有助于實現驗證操作系統類型。

TCP顯式擁塞通知(explicitcongestion notification):

當生成許多包通過路由器時會導致其負載變大,這稱之為擁塞。其結果就是系統會變慢以降低擁堵,以便路由器不會發生丟包。這個包僅為了得到目標系統的響應而發送。因為不同的操作系統以不同的方式處理這個包,所以返回的特定值可以用來判斷操作系統。

TCP:在這個測試中會發送六個數據包。一些帶有特定的包設置的包被發送用來到打開的或關閉的端口。結果也將會因為操作系統的不同而不同。

所有TCP 包都是以如下不同的標志被發送:

無標志

SYN、FIN、URG和PSH

ACK

SYN

ACK

FIN、PSH和URG

UDP:這個測試由一個被發送給一個關閉的端口的數據包組成。如果目標系統上的這個端口是關閉的,而且返回一條ICMP 端口不可達的信息,那么就說明沒有防火墻。

0x04

以kali為例,如果關閉全部端口,則會顯示

Nmap是如何識別主機指紋的

開放一個80端口,此時就可以檢測出這是linux系統

Nmap是如何識別主機指紋的

Nmap是如何識別主機指紋的

0x05

接下來通過抓包分析

144為被掃描的機器,138為運行nmap的機器

Nmap是如何識別主機指紋的

我在前面提到,在kali上開發的唯一端口是80,所以在wireshark可以看到這一系列包是在發往80端口的

  1. Sequence generation (SEQ, OPS, WIN, and T1)

會發送一系列共6個tcp探測來生成4個響應行,每一個都是tcpsyn數據包,連接到遠程機器上檢測到的開放的端口。

這些數據包的序列(sequence)和確認號(acknowledgementnumbers)是隨機的,tcp選項和tcp窗口字段值也是不同的。

具體而言如下所示:

Packet #1: window scale (10), NOP, MSS (1460),timestamp (TSval: 0xFFFFFFFF; TSecr: 0), SACK permitted. The windowfield is 1.

如2006所示

Nmap是如何識別主機指紋的

Packet #2: MSS (1400), window scale (0), SACKpermitted, timestamp (TSval: 0xFFFFFFFF; TSecr: 0), EOL. The windowfield is 63.

如2009所示

Nmap是如何識別主機指紋的

Packet #3: Timestamp (TSval: 0xFFFFFFFF; TSecr:0), NOP, NOP, window scale (5), NOP, MSS (640). The window field is4.

如2012所示

Nmap是如何識別主機指紋的

Packet #4: SACK permitted, Timestamp (TSval:0xFFFFFFFF; TSecr: 0), window scale (10), EOL. The window field is 4.

如2015所示

Nmap是如何識別主機指紋的

Packet #5: MSS (536), SACK permitted, Timestamp(TSval: 0xFFFFFFFF; TSecr: 0), window scale (10), EOL. The windowfield is 16.

如2018所示

Nmap是如何識別主機指紋的

Packet #6: MSS (265), SACK permitted, Timestamp(TSval: 0xFFFFFFFF; TSecr: 0). The window field is 512.

如2021所示

Nmap是如何識別主機指紋的

Nmap是如何識別主機指紋的

上圖中2006-2007是一對syn,及對應返回的synack;

2006-2007,2009-2010,2012-2013,2015-2016,2018-2019,2021-2022一共6對

這些測試的結果包括四個結果類別行。

第一個SEQ包含基于探測包的序列分析的結果。這些測試結果是GCD,SP,ISR,TI,II,TS和SS。

SEQ測試將六個TCPSYN數據包發送到目標機器的開放端口,并收回SYN/ ACK數據包。這些SYN /ACK分組中的每一個包含32位初始序列號(ISN)。GCD,SP,ISR的計算比較麻煩。GCD根據ISN計算。ISR,SP都根據GCD計算。

下面的截圖是6個tcpsyn包中的ISN

Nmap是如何識別主機指紋的

Nmap是如何識別主機指紋的

Nmap是如何識別主機指紋的

Nmap是如何識別主機指紋的

Nmap是如何識別主機指紋的

TI會檢查響應的IP頭ID字段,必須至少收到三個響應才能包含測試,如果ID字段值都是0的話,則為Z在2007,2010,2013,2016,2019,2022數據包中的IP頭部ID字段均為0

Nmap是如何識別主機指紋的

所以在TI的值為Z

TS是根據SEQ探測的響應中的TCP時間戳選項,它檢查TSval(選項的前四個字節)

如果時間戳選項值不為0,還需計算,比較麻煩,根據計算結果再賦TS值為1或7或8

從數據包中,以2007為例,可以知道TS值為1或7或8

Nmap是如何識別主機指紋的

下一行OPS包含為每個探測器接收的TCPoption(測試名稱為O1到O6)。

按照順序來,即2007為O1,2010位O2...

以2007為例來分析

Nmap是如何識別主機指紋的

它對應的字符串是M5B4ST11NW7:

M代表Maximumsegment size,1460的16進制為5B4;

S代表SackPermitted

T代表Timestamp,如果TSval,TSecr都不是0,則為11

N代表NOP

W代表Windowscale,大小為7

O2-O6以此類推

WIN行包含response的windowsize(名為W1到W6)。

以2013為例

Nmap是如何識別主機指紋的

Windowsize為28960

與這些探測器相關的最后一行T1包含packet#1的各種測試值。這些結果用于R,DF,T,TG,W,S,A,F,O,RD和Q測試。這些測試僅針對第一個探針報告,因為它們對于每個探針幾乎總是相同的

R表示目標是否有響應,有響應則為Y

DF表示禁止路由器分段數據包的位是否置位,若置位則為Y,從下圖可以看出已置位

Nmap是如何識別主機指紋的

T表示初始TTL,下圖可以看到T應為39

Nmap是如何識別主機指紋的

TG為猜測的初始TTL值,如果發現實際TTL值,則不會打印該字段

S檢查TCP報頭中的32位序列號字段,與引發響應的探測中的TCP確認號進行比較。然后它記錄適當的值。下圖可以看到sequencenumber為0,所以S的值為Z

Nmap是如何識別主機指紋的

A測試響應中的確認號acknowledgementnumber與相應探測中的序列號的比較

下圖中可以看到2017的acknowledgementnumber為1,2016中的sequencenumber 為0,0+1=1,即2017的acknowledgementnumber等于2016的sequencenumber+1

所以A的值為S+

F記錄響應中的tcpflag

下圖以2017為例,flags中A和S置位,所以F的值為AS

Nmap是如何識別主機指紋的

RD是針對reset包的數據做校驗和的結果,如果沒數據或沒校驗或校驗和無效,則為0

下圖可以看出是沒校驗,RD值為0

Nmap是如何識別主機指紋的

Q主要針對兩處:一處是tcpheader的保留字段非0,如果出現則Q中記錄“R”

Nmap是如何識別主機指紋的

另一處是沒設置URGflag時,存在非零的URG指針字段

上圖可以看出都不存在,所以Q為空

Emm,好累啊,抓包分析就是這么個情況,照著懟就完事了

直接下結論吧:

Nmap是開源世界里主動識別遠程主機指紋最強的大佬。

關于Nmap是如何識別主機指紋的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

博白县| 红桥区| 嘉义市| 甘德县| 区。| 奉节县| 姚安县| 柳江县| 宜城市| 同江市| 临安市| 秦皇岛市| 开鲁县| 柯坪县| 兴仁县| 东山县| 化隆| 望城县| 长阳| 亳州市| 衡阳市| 临洮县| 宣城市| 冷水江市| 阿拉善右旗| 石河子市| 樟树市| 栖霞市| 洛浦县| 如东县| 依安县| 敦化市| 禹城市| 许昌县| 平阴县| 杭锦旗| 尚义县| 玉林市| 宜丰县| 南郑县| 宜章县|