[Wireshark] 觀察 SMB 掛載目錄失敗的封包

[Wireshark] 觀察 SMB 掛載目錄失敗的封包

最近在看一本書「實戰 Wireshark:網路分析其實很簡單」,

覺得寫的不錯,算是淺顯易懂,對於封包的分析也有點興趣了~

正好今天想從 Mac 去連公司的一個 SMB 伺服器時遇到了錯誤,就想說來研究看看:

Screen Shot 2015-12-09 at 4.43.00 PM

 

其實從上面的錯誤訊息裡面就已經是寫說沒有權限存取了,

不過我們可以從網路封包的內容也看出這一點,來試試看吧~

 

1. 設定 Filter

先設定只看跟遠端伺服器 IP 相關的封包,免得混亂,

本例中的 SMB server 是 10.204.16.2,因此就設定 ip.addr == 10.204.16.2 的 filter:

Screen Shot 2015-12-09 at 11.39.22 PM  

 

2. 觀察 SMB 登入的流程

前面三個封包是 TCP 的 three-way handshake,

接著分別有個 SMB 和 SMB2 的 Negotiate Protocol Request,

後來的 Session Setup Request 看起來是要建 session 了,

但伺服器傳回了 STATUS_MORE_PROCESSING_REQUIRED,看來是要通過 NTLM 的驗證機制才行:

Screen Shot 2015-12-09 at 11.43.27 PM  

接著就開始 NTLM authentication… 下面可以看到我們登入使用的 Domain 和 User name:

Screen Shot 2015-12-09 at 11.52.08 PM    

 

從 Response 來看,結果是 accept-completed,應該是代表登入成功了:

Screen Shot 2015-12-10 at 12.11.34 AM  

 

3. 觀察存取 SMB 目錄的流程

首先會先發出一個 Tree Connect Request,指定要存取的目錄,

像在本例中是 10.204.16.2BUILD,從 Response 來看應該也是成功了:

Screen Shot 2015-12-10 at 12.14.41 AM  

 

接下來會發一個 Create Request File 來存取目錄 (像本例中的 xxxOutputIMAGE),

可以看到 Response 回了一個 STATUS_ACCESS_DENIED 存取被拒,

接著就發出 Tree Disconnect 中斷連線了:

Screen Shot 2015-12-10 at 12.31.41 AM  

由上面的網路封包可以知道,我們用來登入 SMB server 的帳號密碼是正確的,

因此可以通過 NTLM 的驗證~

但是在存取目錄時,出現了 ACCESS_DENIED 錯誤,表示權限不足~

 

看一下存取目錄成功的例子,作個比較吧~

下面的例子是存取 Sandbox 這個目錄時,同樣發出一個 Create Request File,

但此時 Response 回應的是 STATUS_SUCCESS,

同時也說明了檔案存在並且開啟成功 (The file existed and was opened),

下面的 File Id 也給了這個檔案的對應 handle,表示檔案存取是成功的:

Screen Shot 2015-12-10 at 12.39.41 AM  

 

有興趣了解更多 SMB 細節的話,可以參考一下:

MSDN: Connecting to a Share by Using a Multi-Protocol Negotiate

像這樣分析一下封包,感覺挺有趣的,對於網路下發生的細節也有多一點的了解囉~^^

 

(本頁面已被瀏覽過 2,511 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料