【Windows】SMBの暗号化設定,バージョンやセッション数の確認方法,パケットキャプチャ | SEの道標
others

【Windows】SMBの暗号化設定,バージョンやセッション数の確認方法,パケットキャプチャ

SMBの暗号化設定

SMB version 3 以降では通信を暗号化する機能があります。ただし、デフォルトでは無効ですので明示的に設定する必要があります。

Windows Server での有効化手順を以下に示します。

1. サーバーマネージャーの「ファイルサービスと記憶域サービス」の「共有」をクリックし、中央ペインの共有フォルダを右クリックし、「プロパティ」をクリック

2. 「設定」をクリックし、「データ アクセスの暗号化(E)」にチェックを入れ、OKをクリック

以上です。検証時は再起動無しで暗号化ができるようになりました。(クライアント側はセッションを切る必要がある)

SMBのバージョンとSMB暗号化の確認方法

クライアント側で PowerShell を管理者権限で起動します。

SMB のバージョンは [ Get-SmbConnection ] コマンドで確認できます。Dialect の列を確認します。以下の例では SMB バージョン 3.1.1 であることが分かります。

PS C:\> Get-SmbConnection

ServerName   ShareName UserName                  Credential                    Dialect NumOpens
----------   --------- --------                  ----------                    ------- --------
192.168.0.22 test      DESKTOP-BNF7OFU\test user DESKTOP-BNF7OFU\administrator 3.1.1   4

「アクセスが拒否されました」と出る場合は PowerShell を管理者権限で起動して再度試して下さい。

次に、暗号化されているかどうかを確認するには以下のようにします。

PS C:\> get-smbconnection | select-object -property *

SmbInstance           : Default
ContinuouslyAvailable : False
Credential            : DESKTOP-BNF7OFU\administrator
Dialect               : 3.1.1
Encrypted           : True
NumOpens              : 3
Redirected            : False
ServerName            : 192.168.0.22
ShareName             : test
Signed                : False
UserName              : DESKTOP-BNF7OFU\test user
PSComputerName        :
CimClass              : ROOT/Microsoft/Windows/SMB:MSFT_SmbConnection
CimInstanceProperties : {ContinuouslyAvailable, Credential, Dialect, Encrypted...}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties

Encrypted が True となっていることが分かります。

SMBのセッション数や開いているファイルの確認方法

SMB サーバ、つまりファイルサーバ側でセッション数やファイル数を確認してみましょう。

1. Windows ボタンを右クリックし、「コンピューターの管理(G)」を開きます。

2.「共有フォルダー」の「セッション」をクリックします。


中央ペインの行数がセッション数です。上記の例は 2 セッションになります。「セッション」の下にあるように、「開いているファイル」も確認することができます。

SMBv3のパケットキャプチャ (暗号化なし、あり)

パケットキャプチャも見てみましょう。

以下は暗号化前で 500M.dat (ファイルサイズ : 2KiB) というファイルを SMB v3.1.1 で転送したときのものです。

SetInfo Response の後の 2 パケット (赤枠とその次のパケット) が TCP セグメンテーションで分かれていますが、この 2 パケットで [Write Request ] として Length 2048 Bytes の 500M.dat を転送したことが分かります。

赤枠のパケットのペイロードを見ると「abcedfghijklmn...」となっています。これは 500M.dat のファイルの中身になります。(メモ帳で書きました。)

これが暗号化されると以下のようになります。

ところで、Wireshark 上では Protocol の列が「SMB2」になっていますね。SMB 3.1.1 等でもそのように表記されてしまうようです。

SMB のバージョン (Dialect : だいあれくと) は TCP 3way Handshake 直後の [Negotiate Request] と [Negotiate Respoinse] でネゴシエーションされます。

以下は左側が Request, 右側が Response になります。Request でクライアントがバージョンを複数案提示し、Response でサーバがバージョンを 3.1.1 に指定しています。

パケットキャプチャ (pcapng) は以下からダウンロードできます。

SMB暗号化無し [smb-not-enc.pcapng]

SMB暗号化あり [smb-enc.pcapng]

コメント

タイトルとURLをコピーしました