次の方法で共有


SMB トラフィックを傍受から保護する

この記事では、攻撃者が SMB プロトコルに対して傍受手法を使用する可能性のあるいくつかの方法と、攻撃を軽減するための考えられる方法について説明します。 この概念は、SMB プロトコル向けに独自の多層防衛戦略を開発するのを支援します。

傍受攻撃とは

adversary-in-the-middle (AITM) 攻撃は、クライアントとサーバーとの間のネットワーク通信を変更して、脅威アクターがトラフィックを傍受できるようにすることを目的としています。 傍受後、悪意のあるアクターは、組織のデータまたはアカウントの資格情報へのアクセスをスプーフィング、改ざん、開示、または拒否できる可能性があります。

多くの組織は、ユーザー間でファイルを共有するため、また Active Directory Domain Services などの他のアプリケーションやテクノロジをサポートするために SMB に依存しています。 SMB は、このように幅広く導入されているため、攻撃者にとって一般的な標的となり、しかもビジネス全体に影響を与える可能性があります。

たとえば、AITM 攻撃は、産業レベルまたは国家レベルのスパイ活動、恐喝、またはファイルに保存されている機密セキュリティ データの発見に使用される可能性があります。 また、攻撃者がネットワーク内を横方向に移動したり、複数のエンドポイントを標的にしたりするために、より広範な攻撃の一部として使用される可能性もあります。

攻撃は常に進化しており、多くの場合、攻撃者は確立された手法と新しい手法を組み合わせて使用します。 SMB 傍受からシステムを保護する場合、主に次の 2 つの目標があります。

  • 使用できる攻撃方法の数を削減する。
  • ユーザーに提示する経路をセキュリティで保護する。

多くの組織内では、テクノロジとクライアントが多様であるため、包括的な防御として複数の方法を組み合わせ、ゼロ トラストの原則に従います。 ゼロ トラストの詳細については、記事「ゼロ トラストとは」を参照してください。

ここでは、SMB 傍受のリスクを軽減するために適した一般的な構成のいくつかについて説明します。

使用できる攻撃方法の削減

SMB 傍受攻撃からシステムを保護するには、最初の手順として攻撃面を減らす必要があります。 攻撃面とは、システムがサイバー攻撃や危害に対して脆弱な場所です。

以降のセクションでは、攻撃面を減らすために実行する必要があるいくつかの基本的な手順について説明します。

の更新プログラムをインストールする

リリースされたら、組織が許す限り早急に、利用可能なすべてのセキュリティ更新プログラムを Windows Server とクライアント システムの両方に定期的にインストールします。 最新のセキュリティ更新プログラムをインストールすることは、現在 SMB だけでなく、Microsoft のすべての製品とサービスに影響を与えることがわかっているセキュリティの脆弱性からシステムを保護するための最も迅速かつ簡単な方法です。

セキュリティ更新プログラムは、組織の要件に応じていくつかの異なる方法を使用してインストールできます。 一般的な方法は次のとおりです。

Microsoft セキュリティ レスポンス センター (MSRC) のセキュリティ更新プログラム ガイドで通知の受信登録を行うことを検討してください。 新規および既存の共通脆弱性および露出 (CVE) に対処するためのソフトウェア更新プログラムが公開されると、"セキュリティ更新プログラム ガイドの通知システム" によって通知を受け取ることができます。

SMB 1.0 を削除する

SMB 1.0 機能は、これを必要としないすべての Windows Server とクライアントから削除するか、無効にする必要があります。 SMB 1.0 を必要とするシステムでは、できるだけ早急に SMB 2.0 以降に移行する必要があります。 Windows 10 Fall Creators Update および Windows Server 2019 以降では、SMB 1.0 は、既定ではインストールされなくなりました

ヒント

Windows 10 Home および Windows 10 Pro には、クリーン インストールまたはインプレース アップグレードの後も、既定で SMB 1.0 クライアントが含まれています。 この動作は Windows 11 で変更されています。詳細については、記事「SMB1、Windows 11 Home Insider ビルドでは既定で無効」を参照してください。

SMB 1.0 を削除すると、既知のセキュリティの脆弱性がいくつか排除され、システムが保護されます。 SMB 1.0 には、傍受からの保護に役立つ SMB 2.0 以降のセキュリティ機能がありません。 たとえば、SMB 3.0 以降では、接続の侵害を防ぐために、事前認証の整合性、暗号化、署名を使用します。 詳細については、記事「SMB セキュリティ拡張機能」を参照してください。

SMB 1.0 機能を削除する前に、コンピューター上のアプリケーションとプロセスで必要とされていないことを確認してください。 SMB 1.0 を検出して無効にする方法の詳細については、記事「Windows で SMBv1、SMBv2、および SMBv3 を検出、有効化、および無効化する方法」を参照してください。

また、Windows Admin Center のファイルとファイル共有ツールを使用して簡単に、SMB1 クライアント接続の監査を有効にし、SMB 1 をアンインストールすることもできます。

ゲスト認証とフォールバックを無効にする

SMB 1.0 では、ユーザーの資格情報が失敗すると、SMB クライアントによってゲスト アクセスが試行されます。 Windows 10 バージョン 1709 および Windows Server 2019、SMB2、SMB3 クライアント以降では、ゲスト アカウントへのアクセスまたはゲスト アカウントへのフォールバックが既定で許可されなくなりました。 SMB 2.0 以降を使用し、ゲスト アクセスが既定で無効になっていないすべてのシステムで SMB ゲスト アクセスの使用を無効にする必要があります。

ヒント

Windows 11 Home および Pro エディションでは、以前の既定の動作から変更されていません。ゲスト認証が既定で許可されます。

ゲスト アクセスを無効にすると、悪意のあるアクターがサーバーを作成し、ユーザーをだまして、ゲスト アクセスを使用してサーバーにアクセスさせることができなくなります。 たとえば、ユーザーがスプーフィングされた共有にアクセスすると、資格情報が失敗し、SMB 1.0 はゲスト アクセスを使用するようにフォールバックします。 ゲスト アクセスを無効にすると、SMB セッションの接続が停止され、ユーザーは共有や悪意のあるファイルにアクセスできなくなります。

ゲスト アクセスが既定で無効になっていない Windows SMB クライアントでゲスト フォールバックが使用されないようにするには (Windows Server を含む)、次の操作を行います。

  1. [グループ ポリシー管理コンソール] を開きます。
  2. コンソール ツリーで、[コンピューターの構成] > [管理用テンプレート] > [ネットワーク] > [Lanman ワークステーション] の順に選択します。
  3. 設定では、[安全でないゲスト ログオンを有効にする] を右クリックし、[編集] を選択します。
  4. [有効] を選択し、[OK] を選択します。

ゲスト アクセスの既定の動作の詳細については、記事「Windows では既定で無効になっている SMB2 および SMB3 でのゲスト アクセス」を参照してください。

WebDAV プロトコルを無効にする

Windows クライアントでは、WebClient サービスが実行されている必要がない場合があります。 このサービスは、Web 分散オーサリングとバージョン管理 (WebDAV) プロトコルを提供します。 クライアントが WebDAV を使用して HTTP または HTTPS 経由で SMB 共有にアクセスしていない場合は、このサービスを無効にすることができます。

ユーザーが WebDAV を使用してファイルにアクセスしている場合は、HTTPS 経由で TLS ベースの接続を強制する方法はありません。 たとえば、サーバーが SMB 署名または暗号化を要求するように構成されている場合がありますが、WebDAV が有効になっている場合、Webclient は HTTP/80 に接続できます。 結果として得られる接続は、SMB 構成に関係なく暗号化されません。

実装する準備ができたら、グループ ポリシーの設定を使用して、多数のコンピューターでこのサービスを無効にすることができます。 グループ ポリシー設定の構成の詳細については、サービス項目の構成に関する記事を参照してください。

送信 SMB の宛先を制限する

最低限、ネットワーク外のデバイスへの送信 SMB トラフィックをブロックします。 送信 SMB をブロックすると、データが外部エンドポイントに送信されなくなります。 悪意のあるアクターは、多くの場合、なりすまし、改ざん、またはフィッシング攻撃を試みて、電子メールやその他のファイル内のフレンドリ リンクまたはショートカットを偽装した悪意のあるエンドポイントにユーザーを誘導しようとします。 送信 SMB アクセスのブロックの詳細については、記事「Windows Server の SMB トラフィックをセキュリティで保護する」を参照してください。

この原則をさらに進めるために、アーキテクチャにマイクロ境界とマイクロセグメンテーションを導入します。 外部ネットワークへの送信 SMB トラフィックをブロックすると、データがインターネットに直接流出するのを防ぐことができますが、最新の攻撃では高度な手法を使用して、他のシステムを攻撃し、ネットワーク内を横方向に移動することで間接的にアクセスを取得します。 マイクロ境界とマイクロセグメンテーションは、明示的に必要でない限り、SMB 共有に直接接続できるシステムとユーザーの数を減らすことを目的とします。 詳細については、「ゼロ トラスト ガイダンス」に含まれている「ネットワーク セグメント化」を参照してください。

プロトコルをセキュリティで保護する

2 つ目の目標は、ユーザーとそのデータの間の経路をセキュリティで保護することです。これは転送中のデータ保護と呼ばれます。 転送中のデータ保護では、攻撃に対する耐性を向上するために、通常、暗号化、インターフェイスの強化、安全でないプロトコルの削除が必要です。

以降のセクションでは、SMB プロトコルをセキュリティで保護するために実行する必要があるいくつかの基本的な手順について説明します。

SMB 3.1.1 を使用する

Windows は常に使用可能な最高のプロトコルにネゴシエートし、デバイスおよびコンピューターで SMB 3.1.1 が確実にサポートされるようにします。

SMB 3.1.1 は、Windows 10 および Windows Server 2016 以降で使用できます。 SMB 3.1.1 には、"事前認証の整合性" と呼ばれる新しい必須のセキュリティ機能が含まれています。 事前認証の整合性は、暗号化ハッシュを使用してネゴシエート メッセージとセッション セットアップ メッセージの改ざんを防ぐために、SMB 接続の初期段階に署名または暗号化を行います。

暗号化ハッシュは、クライアントとサーバーが接続とセッションのプロパティを相互に信頼できることを意味します。 事前認証の整合性は、SMB 3.0 で導入された "セキュリティで保護された言語ネゴシエーション" よりも優先されます。 事前認証の整合性をオフにすることはできませんが、クライアントで古い言語を使用されている場合は使用されません。

少なくとも SMB 3.1.1 の使用を強制することで、セキュリティ体制をさらに強化できます。 最小限の SMB 言語を 3.1.1 に設定するには、管理者特権の PowerShell プロンプトから次のコマンドを実行します。

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" -Name "MinSMB2Dialect" -Value 0x000000311
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" -Name "MaxSMB2Dialect" -Value 0x000000311

Windows ServerおよびWindowsで使用されるSMB方言の最小値と最大値を設定する方法については、WindowsでSMB方言を管理するを参照してください。

UNC の強化を使用して署名、暗号化、相互認証を要求する

少なくとも相互認証 (Kerberos) と整合性 (SMB 署名) を要求することで、すべての SMB 共有に対して UNC の強化を有効にします。 また、SMB 署名の代わりに、プライバシー (SMB 暗号化) を評価することも検討する必要があります。 署名で使用される署名が暗号化に暗黙的に含まれるため、SMB 署名と暗号化の両方を構成する必要はありません。

注意事項

SMB 暗号化は、Windows 8 および Windows Server 2012 の SMB 3 で導入されました。 すべてのコンピューターで SMB 3.0 以降がサポートされているか、それらが SMB 3 と暗号化をサポートしているサード パーティである場合を除いて、暗号化は必要ありません。 SMB 暗号化をサポートしていないサーバーによってホストされているクライアントまたは UNC パスで SMB 暗号化を構成すると、SMB クライアントは指定されたパスにアクセスできなくなります。 また、SMB 暗号化用にサーバーを構成し、それをサポートしていないクライアントがそのサーバーにアクセスした場合も、それらのクライアントはパスにアクセスできなくなります。

UNC の強化により、UNC パスで必須のセキュリティ設定を確認でき、サーバーがそれらを満たすことができない場合は接続が拒否されます。 Windows Server 2016 および Windows 10 以降では、ドメイン コントローラー上の SYSVOL 共有と NETLOGON 共有に対して UNC の強化が既定で有効になります。 クライアントでサーバーの ID を認証し、SMB ペイロードの整合性を検証できるため、これは、なりすましと改ざんに対して非常に効果的なツールです。

UNC の強化を構成する場合、さまざまな UNC パス パターンを指定できます。 次に例を示します。

  • \\<Server>\<Share> - この構成エントリは、指定されたサーバー上の指定された名前を持つ共有に適用されます。
  • \\*\<Share> - この構成エントリは、任意のサーバー上の指定された名前を持つ共有に適用されます。
  • \\<Server>\* - この構成エントリは、指定されたサーバー上の任意の共有に適用されます。

実装する準備ができたら、グループ ポリシーを使用して、多数のコンピューターに UNC の強化を適用できます。 グループ ポリシーを使用して UNC の強化を構成する方法の詳細については、セキュリティ情報 MS15-011 を参照してください。

必須の署名または暗号化を使用してオンデマンドでドライブをマップする

UNC の強化に加えて、ネットワーク ドライブのマッピング時に署名または暗号化を使用できます。 Windows バージョン 1709 以降では、Windows PowerShell またはコマンド プロンプトを使用して、暗号化または署名されたマップ済みのドライブをオンデマンドで作成できます。 ドライブをマップするには、NET USERequireIntegrityNew-SmbMapping (署名) または RequirePrivacy (暗号化) パラメーターを指定して コマンドまたは PowerShell コマンドを使用します。

これらのコマンドは、管理者が使用するか、またはスクリプトに含めて、暗号化または整合性チェックを必要とするドライブのマッピングを自動化することができます。

パラメーターによって、署名または暗号化の動作方法や言語の要件は変更されません。 ドライブをマップしようとして、サーバーが署名または暗号化の要件を受け入れることを拒否した場合、安全でない接続は行われず、ドライブのマッピングが失敗します。

New-SmbMapping コマンドの構文とパラメーターについては、リファレンス記事「New-SmbMapping」を参照してください。

SMB 以外

NTLM の使用を停止し、Kerberos のセキュリティを強化します。 まず、NTLM の使用状況の監査を有効にし、ログを確認して NTLM が使用されている場所を見つけます。

NTLM では以前の MD4/MD5 暗号化ハッシュ関数が使用されているため、NTLM を削除すると、パス ハッシュ、ブルート フォース、レインボー ハッシュ テーブルなどの一般的な攻撃から保護するのに役立ちます。 Kerberos などの最新のプロトコルとは異なり、NTLM では、サーバー ID を確認することもできないため、NTLM リレー攻撃に対しても脆弱です。 これらの一般的な攻撃の多くは、Kerberos を使用して簡単に軽減できます。

Kerberos への移行を開始するための取り組みの一環として NTLM を監査する方法については、記事「NTLM 使用状況の評価」を参照してください。 また、Azure Sentinel を使用した安全でないプロトコルの検出については、ブログ記事「Azure Sentinel の安全でないプロトコル ブックの実装ガイド」を参照してください。

NTLM の削除と並行して、オフライン攻撃とチケット パッシング攻撃に対する保護レイヤーを追加することを検討する必要があります。 Kerberos のセキュリティを強化する場合、ガイドとして次の項目を使用します。

  1. Windows Hello for Business またはスマート カードをデプロイする - Windows Hello for Business を使用した 2 要素認証により、まったく新しい保護レイヤーが追加されます。 Windows Hello for Business については、こちらを参照してください。
  2. 長いパスワードとフレーズを適用する - ブルート フォース攻撃に対する抵抗を軽減するために、15 文字以上などの長いパスワードを使用することをお勧めします。 また、パスワードをさらに強くするために、一般的な単語やフレーズを避ける必要もあります。
  3. Active Directory Domain Services の Microsoft Entra パスワード保護を展開する - Microsoft Entra ID パスワード保護を使用して、組織に固有の既知の脆弱なパスワードや用語をブロックします。 詳細については、「Active Directory Domain Services にオンプレミスの Microsoft Entra パスワード保護を適用する」を参照してください。
  4. グループの管理されたサービス アカウント (gMSA) を使用する - ランダムな 127 文字の構成を使用する gMSA 対応サービスにより、ブルート フォース攻撃や辞書攻撃ではパスワードの解読に非常に時間がかかるようになります。 gMSA の概要については、記事「グループの管理されたサービス アカウントの概要」を参照してください。
  5. フレキシブル認証セキュア トンネリング (FAST) と呼ばれる Kerberos 防御 - FAST では、ユーザーの事前認証データが保護され、オフライン ブルート フォース攻撃または辞書攻撃の対象ではなくなるため、Kerberoasting が防止されます。 また、スプーフィングされた KDC からのダウングレード攻撃も防止されます。詳細については、Kerberos 防御に関する記事を参照してください。
  6. Windows Defender Credential Guard を使用する - Credential Guard を使用すると、ticket-granting チケットやキャッシュされたサービス チケットの盗難を防ぐことで、チケットのローカル侵害が困難になります。 詳細については、記事「Windows Defender Credential Guard のしくみ」を参照してください。
  7. SCRIL (対話型ログオンに必要なスマート カード) の要求を検討する - SCRIL をデプロイすると、ユーザーのパスワードが AD によってランダムな 128 ビット セットに変更され、ユーザーは対話型のサインインに使用できなくなります。 SCRIL は通常、特定のセキュリティ要件がある環境にのみ適しています。 パスワードレス戦略の詳細については、パスワード認証を禁止するためのユーザー アカウントの構成に関する記事を参照してください。

次の手順

SMB 傍受を防ぐためのいくつかのセキュリティ制御と軽減策について学習したので、1 つですべての傍受攻撃を防ぐ手順はないことが理解できたでしょう。 目標は、十分に検討した上で、階層化された防御を通じて複数のテクノロジにまたがるリスク軽減策の包括的な組み合わせを作成し、優先順位付けすることです。

これらの概念の詳細については、以下の記事を参照してください。