0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

第5回:認証プロトコル1 —— NTLMの仕組みと潜むリスク

0
Posted at

はじめに

Windowsのネットワーク認証を代表するプロトコルが NTLM(NT LAN Manager) です。Kerberosが推奨される現代においても、互換性維持のためにあちこちで生き残っています。

Linuxエンジニアにとっての「認証」といえば、古くは単純なハッシュ比較、現代ではKerberosや公開鍵認証が主流です。Windowsにも「パスワードをそのままネットワークに流さない」仕組みがあり、それが チャレンジ/レスポンス方式 です。

今回のポイント: 「パスワードを送っていないから安全」は誤りです。NTLMにはハッシュそのものが認証資格情報として機能してしまう、という構造的な弱点があります。


1. NTLM認証の3ステップ(チャレンジ/レスポンス)

NTLM認証は、クライアントとサーバーの間で以下の3往復で完結します。

ステップ1:Negotiate(交渉)

クライアントが「NTLMで認証したいです」とサーバーに通知します。サポートするNTLMのバージョンや機能フラグも合わせて送信されます。

ステップ2:Challenge(挑戦)

サーバーが ランダムな8バイトの値(チャレンジ) を生成してクライアントに送り返します。

ステップ3:Authenticate(認証)

クライアントが自身のパスワードハッシュを使ってチャレンジを加工し、その結果(レスポンス)を送信します。サーバー側で同じ計算を行い、値が一致すればログイン成功です。

クライアント                            サーバー
   |                                      |
   |--- [1] Negotiate ------------------>  |
   |                                      |
   |<-- [2] Challenge (8バイトのランダム値) --  |
   |                                      |
   |--- [3] Authenticate (レスポンス) ---->  |
   |                                      |
   |<-- 成功 or 失敗 --------------------  |

Linuxエンジニアの視点:
この仕組みはHTTPのDigest認証や、チャレンジ/レスポンス型PAMモジュールに近い挙動です。パスワードの生データはネットワークを流れません。


2. 決定的な弱点:「ソルト(Salt)」の欠如

Windowsの内部(SAMデータベースやActive Directory)に保存されているNTLMハッシュにはソルトがありません。これがNTLMの脆弱性の根源です。

Linux (/etc/shadow) Windows(NTLMハッシュ)
ハッシュの生成 パスワード + ランダムなソルト パスワードのみ(ソルトなし)
同じパスワードなら マシンごとに異なるハッシュ 全マシンで同一のハッシュ
レインボーテーブル耐性 高い 低い

ソルトがないということは、「Password123」というパスワードは、世界中のどのWindowsマシンでも全く同じハッシュ値になります。これが以下の攻撃を可能にします。


3. 主な攻撃手法

リスク1:Pass-the-Hash (PtH)

攻撃者はパスワードを解読する必要すらありません。SAMデータベースやメモリ(LSASS)からNTLMハッシュを盗み出し、それをそのままステップ3のレスポンスとして送りつけることで、正規ユーザーとしてログインできてしまいます。

通常のログイン:  パスワード → ハッシュ生成 → レスポンス計算 → 送信
PtH攻撃:        盗んだハッシュ ──────────→ レスポンス計算 → 送信

リスク2:NTLMリレー攻撃

攻撃者がクライアントとサーバーの中間に割り込み(Man-in-the-Middle)、クライアントから正規に送られてきたレスポンスを別のサーバーに横流しすることで、攻撃対象のサーバーに不正ログインする手法です。

クライアント → [レスポンス] → 攻撃者 → [そのまま転送] → 別のサーバー(不正ログイン成功)

SMB署名(後述)が設定されていない環境では、この攻撃が成立しやすくなります。


4. 「NTLMハッシュ」と「Net-NTLMレスポンス」の混同に注意

ここが最も混乱しやすいポイントです。セキュリティツールのドキュメントでも混用されることがあるため、正確に区別してください。

名称 保存場所 用途
NTLMハッシュ(NT Hash) SAM / AD(ディスク上) Pass-the-Hashに直接利用可能
Net-NTLM v1/v2 レスポンス ネットワーク上を流れる そのままではPtHに使えないが、クラック(逆算)のリスクあり

攻撃者がネットワークを盗聴して得られるのは Net-NTLMレスポンス です。これはNTLMハッシュとチャレンジを組み合わせたデータであり、Pass-the-Hashにはそのまま使えません。しかし、HashcatやJohn the Ripperなどのツールで総当たりクラックを試みられるリスクがあります。

Net-NTLM v1 vs v2:

  • v1(古い): アルゴリズムが弱く、クラックが容易。現在は使用禁止が推奨されます。
  • v2(現行): クライアント側のチャレンジも加わり、クラック耐性が向上しています。それでも強力なGPUによる総当たり攻撃には注意が必要です。

5. 実践:自マシンのNTLM設定を確認する

現在のWindowsでは、セキュリティ向上のために古いNTLM(v1やLM)を禁止し、NTLMv2のみを許可するのが原則です。

PowerShellで設定を確認する

# NTLMの認証レベル(LMCompatibilityLevel)を確認
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "LMCompatibilityLevel"

LMCompatibilityLevel の値と意味:

意味
0 LM / NTLM を送信(最も危険・非推奨)
1 チャレンジ交渉があればNTLMv2を使用
2 NTLMv2 のみ送信
3 NTLMv2 のみ送信(ドメイン参加時)
4 LM 応答を拒否
5 NTLMv2 のみ送信、LM と NTLMv1 を拒否(推奨)

補足: グループポリシーで設定する場合は コンピューターの構成 > Windowsの設定 > セキュリティの設定 > ローカルポリシー > セキュリティオプション > ネットワーク セキュリティ: LAN Manager 認証レベル から変更できます。

SMB署名の確認(NTLMリレー対策)

NTLMリレー攻撃への対策として、SMB署名の強制も重要です。

# SMB署名の設定を確認
Get-SmbServerConfiguration | Select-Object RequireSecuritySignature, EnableSecuritySignature

RequireSecuritySignatureTrue であれば、署名のないSMB接続を拒否します(リレー攻撃防止に有効)。


おわりに

NTLMの弱点を整理すると、以下の通りです。

  • ソルトなしのハッシュ → Pass-the-Hash攻撃が成立する
  • 中間者攻撃への脆弱性 → NTLMリレー攻撃が成立する
  • Net-NTLMレスポンスの盗聴 → オフラインクラックのリスクがある

これらの根本的な対策は、NTLMへの依存をやめ、Kerberos認証に移行することです。Kerberosはチャレンジ/レスポンスではなくチケット方式を採用しており、上記の攻撃に対してより堅牢な設計になっています。

次回の 第6回「認証プロトコル2 —— Kerberos認証をパケットレベルで理解する」 では、LinuxのKerberosコマンド(kinit/klist)でも馴染みのあるKerberosが、Active Directoryの世界でどのように「主役」を担っているかを解説します。


補足:内部ネットワークでの検証について

内部ネットワークで Responder などのツールを動かすと、Windowsマシンが名前解決失敗時に自動的にNTLM認証を試み、Net-NTLMレスポンスをブロードキャストする様子が観察できます。これを「誘い込み(Poisoning)」として悪用する手法は、実際の侵害事例でも多用されます。

防御策:

  • SMB署名の強制(リレー攻撃対策)
  • LLMNR / NetBIOSの無効化(Poisoning対策)
  • NTLMv1の禁止LMCompatibilityLevel = 5

第5回、完了です。第6回「Kerberos認証」へ続きます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?