NTLMの使用目的
Windows New Technology LAN Manager (NTLM) は、Microsoftが提供するセキュリティプロトコルスイートであり、ユーザーのアイデンティティを認証し、そのアクティビティの整合性と機密性を保護します。根本的に、NTLMはSSO(シングルサインオン) ツールであるため、チャレンジレスポンスプロトコルに依存しており、パスワードを送信しなくてもユーザーを確認できます。
既知の脆弱性があるにもかかわらず、NTLMは、従来のクライアントやサーバーとの互換性を維持するために、新しいシステムでも広く展開されています。NTLMはMicrosoftで引き続きサポートされていますが、Windows 2000以降のActive Directory (AD) ドメインのデフォルトの認証プロトコルとしてはKerberosに置き換えられています。
NTLMプロトコルの仕組み
NTLMはチャレンジレスポンスメカニズムを通じてユーザーを認証します。このプロセスは、次の3つのメッセージで構成されます。
- クライアントからのネゴシエーションメッセージ
- サーバーからのチャレンジメッセージ
- クライアントからの認証メッセージ
NTLM認証プロセス
NTLM認証は、通常、次の段階的なプロセスに従います。
- ユーザーは、ユーザー名、パスワード、ドメイン名をクライアントと共有します。
- クライアントは、パスワードのスクランブルバージョン(つまりハッシュ)を作成し、完全なパスワードを削除します。
- クライアントは、ユーザー名のプレーンテキストバージョンを関連するサーバーに渡します。
- サーバーは、16バイトの乱数であるチャレンジでクライアントに応答します。
- その応答として、クライアントは、ユーザーのパスワードのハッシュで暗号化されたチャレンジを送信します。
- その後、サーバーはチャレンジ、レスポンス、およびユーザー名をドメインコントローラー (DC) に送信します。
- DCは、データベースからユーザーのパスワードを取得し、それを使用してチャレンジを暗号化します。
- 次に、DCは暗号化されたチャレンジとクライアントのレスポンスを比較します。これら2つの要素が一致すると、ユーザーは認証され、アクセスが許可されます。
NTLMとKerberosの違い
NTLMと同じく、Kerberosは認証プロトコルです。これは、Windows 2000以降のリリースでデフォルト/標準の認証ツールとしてNTLMに取って代わりました。
NTLMとKerberosの主な違いは、2つのプロトコルが認証を管理する方法です。NTLMは、クライアントとサーバーの間の3ウェイハンドシェイクに依存してユーザーを認証します。Kerberosは、チケット付与サービスまたはキー配布センターを活用する2つの部分からなるプロセスを使用します。
もう1つの主な違いは、パスワードがハッシュ化されるか暗号化されるかです。NTLMはパスワードのハッシュ化に依存しています。これは入力ファイルに基づいてテキストの文字列を生成する一方向の機能です。一方、Kerberosでは暗号化を活用します。これは暗号化キーと復号化キーをそれぞれに使用して情報をスクランブルおよびロック解除する双方向の機能です。
Kerberosプロトコルが今日のMicrosoftのデフォルトの認証方法ですが、NTLMはバックアップとして機能します。Kerberosがユーザーの認証に失敗した場合、システムは代わりにNTLMを使用しようとします。
NTLMがKerberosに置き換えられた理由
NTLMは、パスワードのハッシュ化とソルト化に関連するいくつかの既知のセキュリティ脆弱性の影響を受けていました。
NTLMでは、サーバーとドメインコントローラーに保存されたパスワードは、「ソルト化」されません。つまり、クラッキング手法からさらに保護するために、ハッシュ化したパスワードにランダムな文字列は追加されません。そのため、パスワードハッシュを所有する攻撃者は、セッションを認証するために基になるパスワードを必要としないことになります。結果として、システムはブルートフォース攻撃(攻撃者が複数回のログイン試行を通じてパスワードを解読しようとする攻撃)に対して脆弱でした。ユーザーが脆弱なパスワードや一般的なパスワードを選択した場合、このような戦術の影響を特に受けやすくなります。
NTLMの暗号化手法でも、セキュリティ機能を大幅に強化するアルゴリズムと暗号化の新技術を利用することはできません。
Kerberosプロトコル
Kerberosは、1980年代にマサチューセッツ工科大学 (MIT) の研究者によって開発されました。その名前は、ギリシャ神話に登場する、冥界を守る3つの頭を持つ犬であるKerberosに由来しています。
実際には、Kerberosプロトコルの3つのセキュリティコンポーネントは次のように表されます。
- 認証を求めるクライアント
- クライアントがアクセスするサーバー
- チケット発行サービスまたはキー配布センター (KDC)
Kerberos認証
次に、Kerberos認証の12ステップのプロセスを示します。
- ユーザーは、ユーザー名、パスワード、ドメイン名をクライアントと共有します。
- クライアントは、ユーザー名、日付、時刻など、クライアントに関するすべての関連情報を含むパッケージ(つまり、オーセンティケータ)を構築します。オーセンティケータに含まれるすべての情報は、ユーザー名を除き、ユーザーのパスワードで暗号化されます。
- クライアントは、暗号化されたオーセンティケータをKDCに送信します。
- KDCは、クライアントのアイデンティティを確立するためにユーザー名を確認します。次に、KDCはADデータベースでユーザーのパスワードを確認します。その後、パスワードを使用してオーセンティケータの復号化を試みます。KDCがオーセンティケータを復号化できる場合は、クライアントのアイデンティティが検証されます。
- クライアントのアイデンティティが検証されると、KDCはチケットまたはセッションキーを作成し、これも暗号化されてクライアントに送信されます。
- チケットまたはセッションキーは、クライアントのKerberosトレイに格納されます。チケットは、設定された期間(通常は8時間)サーバーにアクセスするために使用できます。
- クライアントが別のサーバーにアクセスする必要がある場合は、新しいリソースにアクセスするためのリクエストとともに、元のチケットをKDCに送信します。
- KDCは、そのキーを使用してチケットを復号化します。(KDCはユーザーのアイデンティティが以前に確認されていることを、チケットを使用して確認できるため、クライアントがユーザーを認証する必要はありません。)
- KDCは、クライアントが新しい共有リソースにアクセスするための更新されたチケットまたはセッションキーを生成します。このチケットもサーバーのキーによって暗号化されます。その後、KDCはこのチケットをクライアントに送信します。
- クライアントは、この新しいセッションキーをKerberosトレイに保存し、コピーをサーバーに送信します。
- サーバーは、独自のパスワードを使用してチケットを復号化します。
- サーバーがセッションキーの復号化に成功した場合、そのチケットは正当なものです。その後、サーバーはチケットを開き、アクセスコントロールリスト (ACL) を確認して、クライアントがリソースにアクセスするために必要な権限を持っているかどうかを判断します。
NTLMを使用するアプリケーション
NTLMは、Windows 2000で、デフォルトの認証プロトコルとしてKerberosに置き換えられました。ただし、NTLMは、古いクライアントとサーバーの間の互換性を保つために、すべてのWindowsシステムで引き続き維持されています。
例えば、いまだにWindows 95、Windows 98、またはWindows NT 4.0を実行しているコンピューターは、Windows 2000ドメインを使用してネットワーク認証にNTLMプロトコルを使用します。一方、Windows 2000を実行しているコンピューターは、Windows NT 4.0以前でサーバーを認証する場合や、Windows 2000以前のドメインのリソースにアクセスする場合に、NTLMを使用します。NTLMは、非ドメインコントローラーでローカルログインを認証するのにも使用されます。
NTLMの利点と課題
NTLMは古いプロトコルと考えられています。そのため、Kerberosなどのより最新のソリューションと比較すると、その利点は限られています。しかし、NTLMの当初の約束事は今もなお有効です。つまり、クライアントはパスワードのハッシュ化を使用し、保護されていないパスワードをネットワーク経由で送信しないようにします。
現時点で、NTLM認証に依存することにはいくつかの明確な欠点があります。
- 単一認証。NTLMは単一認証方式です。これは、チャレンジレスポンスプロトコルに依存して、ユーザーを確立します。多要素認証 (MFA) はサポートしていません。これは、ユーザーのアイデンティティを確認するために2つ以上の情報を使用するプロセスです。
- セキュリティの脆弱性。比較的単純な形式のパスワードのハッシュ化により、NTLMシステムは、Pass The Hashやブルートフォース攻撃などのいくつかの攻撃モードに対して脆弱になっています。
- 古い暗号化。NTLMは、パスワードの安全性を高めるために、アルゴリズムの考え方や暗号化における最新の進歩を活用していません。
NTLMを使用してネットワークを保護する方法
NTLMに関連する既知のセキュリティリスクを考慮して、クラウドストライクでは、ネットワークでのNTLMの使用をできるだけ減らすことを組織に推奨しています。
互換性の理由からまだNTLMに依存している組織に対して、クラウドストライクでは、セキュリティを強化してリスクを最小限に抑えるために次の推奨事項を提示しています。
- NTLM軽減策の適用。NTLMリレー攻撃から完全に保護するには、関連するすべてのサーバーでサーバー署名とEPAを有効にする必要があります。
- パッチの適用。システムがMicrosoftの最新のセキュリティ更新プログラムで完全に保護されていることを確認します。
- 高度なテクニックの使用。Preempt(CrowdStrikeにより買収)がBlack Hat 2019の講演で明らかにしたものと同様の高度なNTLMリレー検知および防御技術を適用します。
- 脆弱なバリエーションの特定。一部のNTLMクライアントでは、脆弱なNTLMバリエーションを使用しています(MICを送信しないなど)。これにより、ネットワークがNTLMリレーに対して脆弱になるリスクが高くなります。
- ネットワーク内のNTLMトラフィックの監視。安全でないNTLMトラフィックの制限を試行します。
LM応答を送信するクライアントを削除し、グループポリシーオブジェクト (GPO) の「ネットワークセキュリティ:LAN Manager認証レベル」を、LM応答を拒否するように設定します。
アイデンティティ保護戦略策定の完全ガイド
レジリエンスの高いアイデンティティセキュリティポスチャに向けた第一歩を踏み出し、アイデンティティ保護戦略策定の完全ガイドをダウンロードして、組織のデジタルアイデンティティ環境を今すぐ保護しましょう。
今すぐダウンロード