SMB協議原理抓包分析

SMB協議原理抓包分析shell

目錄:windows

1.SMB概述安全

2.SMB原理服務器

3.SMB配置網絡

1、SMB概述session

SMB(全稱是Server Message Block)是一個協議名,可用於在計算機間共享文件、打印機、串口等,電腦上的網上鄰居就是靠它實現的。編輯器

SMB 是一種客戶機/服務器、請求/響應協議。經過 SMB 協議,客戶端應用程序能夠在各類網絡環境下讀、寫服務器上的文件,以及對服務器程序提出服務請求。此外經過 SMB 協議,應用程序能夠訪問遠程服務器端的文件、以及打印機等資源。測試

SMB一開始的設計是在NetBIOS協議上運行的,而NetBIOS自己則運行在NetBEUI、IPX/SPX或TCP/IP協議上。spa

NetBIOS 使用下列端口:UDP/137(NetBIOS 名稱服務)、UDP/138(NetBIOS 數據報服務)、TCP/139(NetBIOS 會話服務);SMB 使用下列端口:TCP/13九、TCP/445。  #NetBIOS用於局域網內主機名發現。設計

2、SMB服務工做原理

① 首先客戶端發送一個SMB negprot請求數據報,並列出它所支持的全部SMB協議版本。服務器收到請求信息後響應請求,並列出但願使用的協議版本。若是沒有可以使用的協議版本則返回0XFFFFH,結束通訊。

② 協議肯定後,客戶端進程向服務器發起一個用戶或共享的認證,這個過程是經過發送SesssetupX請求數據報實現的。客戶端發送一對用戶名和密碼或一個簡單密碼到服務器,而後服務器經過發送一個SesssetupX應答數據報來容許或拒絕本次鏈接。

③ 當客戶端和服務器完成了磋商和認證以後,它會發送一個Tcon或TconX SMB數據報並列出它想訪問網絡資源的名稱,以後服務器會發送一個TconX應答數據報以表示這次鏈接是否被接受或拒絕。

④ 鏈接到相應資源後,SMB客戶端就可以經過open SMB打開一個文件,經過read SMB讀取文件,經過write SMB寫入文件,經過close SMB關閉文件。

抓包分析以下:

實驗環境,win10(客戶端)開啓SMB協議,win7(SMB協議服務端)開啓SMB協議並創建一個共享文件的夾,用於測試SMB協議的通訊過程

1.開啓SMB協議

2.服務端建立一個共享文件夾

  

3.客戶端開啓抓包,經過UNC路徑訪問共享文件夾,輸入用戶名和密碼

4.能夠分析SMB工做原理

4.1首先客戶端發送一個SMB negotiate protocol request請求數據報,並列出它所支持的全部SMB協議版本  

4.2服務器收到請求信息後響應請求,並列出但願使用的協議版本。若是沒有可以使用的協議版本則返回0XFFFFH,結束通訊。能夠看到下圖服務端但願使用的版本是SMB2.1 注意:win7雖然默認開啓smbv1(只要開啓共享服務),可是因爲windows的安全機制,版本協商就高不就低,除非客戶端版本只有SMBv1或者服務端只有SMBv1,這裏就能夠利用了:客戶端能夠惡意把版本設置爲只能是SMBv1,這樣服務端和客戶端協商經過只能用SMBv1了。

版本對應關係以下:

0x0202   SMB 2.002
0x0210    SMB 2.1
0x0300    SMB 3.0
0x0302    SMB 3.02
0x02FF    SMB2  

4.3協議肯定後,客戶端進程向服務器發起一個用戶或共享的認證,這個過程是經過發送session setup request請求數據報實現的。客戶端發送一對用戶名和密碼或一個簡單密碼到服務器。  

4.5而後服務器經過發送一個Session setup response應答數據報來容許或拒絕本次鏈接。 

4.6當客戶端和服務器完成了磋商和認證以後,它會發送一個Tree connect rerquest SMB數據報並列出它想訪問網絡資源的名稱  

4.7以後服務器會發送一個tree connect response應答數據報以表示這次鏈接是否被接受或拒絕  

4.8鏈接到相應資源後,SMB客戶端就可以幹一些讀、寫(須要有權限)等操做了  

 3、SMB服務配置管理

1.啓動網絡共享,見上面的圖

2. Windows 七、Windows Server 2008 上檢測是否開啓SMB

SMB 服務器上的 SMB v1:powershell 方法  默認啓用,(未建立註冊表項),因此不會返回 SMB1 值

2.1檢測:Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}

  

2.2禁用SMB1   #這是再檢測就能夠看到有SMB1,由於禁用是在修改註冊表

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force

   

2.3啓用SMB1  #就是修改註冊表的SMB對應的爲1

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 –Force

  

2.4檢測SMBV2和v3,禁用和啓用和上面的方法同樣。

註冊表編輯器:

若要在 SMB 服務器上啓用或禁用 SMBv1,請配置如下注冊表項:

註冊表子項:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

註冊表項: SMB1

REG_DWORD: 0 = 已禁用

REG_DWORD: 1 = 已啓用

默認值: 1 = 已啓用(未建立註冊表項)

若要在 SMB 服務器上啓用或禁用 SMBv2,請配置如下注冊表項:

註冊表子項:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

註冊表項: SMB2

REG_DWORD: 0 = 已禁用

REG_DWORD: 1 = 已啓用

默認值: 1 = 已啓用(未建立註冊表項)

注意進行這些更改後,必須重啓計算機。

3.設置把WIN7的SMBV2禁用掉(這時只留下SMBV1了),測試客戶端和服務端是否協商用smbv1版本進行通訊。

  

4.抓包分析文件共享過程,這裏只分析客戶端發送協商以後,服務器響應給的版本,其餘過程和上面的分析相似。 

相關文章
相關標籤/搜索