🛡️はじめに
第9回は、侵入した攻撃者が「一般ユーザー」から「全権掌握(ドメイン管理者)」へと上り詰めるための核心的ステップ、権限昇格(Privilege Escalation) を解説します。
攻撃者がどのような技術的トリックを使って、セキュリティの「階段」を駆け上がるのか、その具体的なエクスプロイト手法を解剖します。
🎯 なぜ権限昇格が必要なのか
初期侵入に成功した際、攻撃者が手にしているのは、多くの場合「権限の限られた一般ユーザー」の権限です。しかし、ランサムウェアを全端末に展開し、バックアップを破壊するにはドメイン管理者(Domain Admin)、あるいは各端末のSYSTEM権限が必要です。
攻撃者がこの「権限の壁」を突破するために用いる、主要なテクニックを見ていきましょう。
🪜 1. ローカル権限昇格(LPE):端末内の王になる
まずは、侵入したその端末自体で管理者権限を奪取します。
① OSやドライバの脆弱性悪用
Windowsカーネルや、プリンタードライバ、グラフィックドライバなどの脆弱性を突き、一般ユーザー権限で実行したコードを「SYSTEM権限」に昇格させます。
代表的な脆弱性の例:
-
PrintNightmare(CVE-2021-34527): Windowsの印刷スプーラーサービスの脆弱性 - Win32kカーネルドライバの脆弱性群
- 古いバージョンのサードパーティ製ドライバ
② 設定ミス(Misconfiguration)の探索
システム上の不備を突く「技術を必要としない」昇格手法です。実はこちらの方が現実の攻撃では頻繁に使われます。
Unquoted Service Path(引用符なしサービスパス)
サービスの実行パスにスペースが含まれ、かつ引用符(")で囲まれていない場合、Windowsはパスを解釈する際に複数の場所を探索します。
例: C:\Program Files\My Service\service.exe(引用符なし)
Windowsが探索する順序:
1. C:\Program.exe
2. C:\Program Files\My.exe
3. C:\Program Files\My Service\service.exe
攻撃者は、書き込み権限のあるC:\Program Files\にMy.exeを配置すれば、サービス起動時(SYSTEM権限)でそれが実行されます。
クリアテキストのパスワード
共有フォルダや設定ファイルの中に、管理者のパスワードが平文で残されているケースを徹底的にスキャンします。
よく見つかる場所:
-
unattend.xml(Windowsの自動インストール設定) - グループポリシーの
cpassword属性(既に廃止されたが、古い環境に残存) - スクリプトファイル(
.bat,.ps1)内のハードコーディング - 共有フォルダ内のドキュメント
その他の設定ミス
- 過剰な権限を持つスケジュールタスク
- 書き込み可能なサービスバイナリのパス
- DLLハイジャック可能な脆弱な実行ファイル
🏰 2. ドメイン権限昇格:ADの「仕様」を突く攻撃
ローカル管理者権限を手に入れた後は、Active Directory(AD)全体の支配を目指します。ここではADの認証プロトコルの「仕様」が牙を剥きます。
③ Kerberoasting(ケルバロースティング)
これは脆弱性ではなく、Kerberos認証の正規の仕組みを悪用した攻撃です。
攻撃の流れ:
- 一般ユーザー権限で、特定のサービスアカウント(SQL Server、IISなど)の「サービスチケット(TGS)」をドメインコントローラに要求
- 取得したチケットには、そのサービスアカウントのパスワードで暗号化されたデータ(PAC)が含まれている
- このチケットをオフラインに持ち出し、総当たり攻撃(ブルートフォース)やパスワード辞書攻撃でパスワードを解析
- パスワード解読に成功すれば、そのサービスアカウントとして認証可能に
なぜ脅威なのか:
- ADに対する異常なパケットや認証失敗を発生させないため、検知が極めて困難
- 一般ユーザーでも実行可能(特別な権限は不要)
- サービスアカウントは人間が管理するため、弱いパスワードが設定されがち
対策:
- サービスアカウントには25文字以上の複雑なパスワードを設定
- gMSA(Group Managed Service Account)の利用
- Kerberos暗号化アルゴリズムをAES256に限定
④ AS-REP Roasting
「Kerberos事前認証を必要としない」設定がされているユーザーアカウントを狙います。
攻撃の流れ:
- 事前認証が無効なユーザーアカウントを列挙
- そのユーザーの暗号化されたAS-REP応答をドメインコントローラから取得
- オフラインでパスワードをクラック
なぜこの設定が存在するのか:
一部の古いアプリケーションや特殊な環境では、互換性のために事前認証を無効にする必要があります。しかし、現代ではほとんど不要な設定です。
対策:
- 全ユーザーでKerberos事前認証を有効化(デフォルト設定を維持)
- どうしても無効化が必要な場合は、強力なパスワードポリシーを適用
⑤ 認証情報の窃取(Credential Dumping)
管理者権限を持った端末で、メモリ(LSASSプロセス)から認証情報を抽出します。
Mimikatz: 最も有名な認証情報窃取ツール
Windows のLocal Security Authority Subsystem Service(LSASS)プロセスのメモリには、ログイン中のユーザーの認証情報が保存されています。Mimikatzはこれを可視化します。
抽出できる情報:
- 平文パスワード(古いWindowsバージョンやWDigest有効時)
- NTLMハッシュ(Pass-the-Hash攻撃に利用可能)
- Kerberosチケット(Pass-the-Ticket攻撃に利用可能)
- 証明書の秘密鍵
対策:
- Credential Guard の有効化(Windows 10 Enterprise/Windows Server 2016以降)
- LSASSプロセスの保護モード有効化
- WDigestの無効化(Windows Server 2012 R2以降はデフォルトで無効)
- EDRによるLSASSプロセスへの不審なアクセス検知
⚠️ 3. 2024-2026年の注目手口:ADCS(証明書サービス)の悪用
近年、非常に多くの環境で悪用されているのが Active Directory Certificate Services (ADCS) の設定不備です。
ADCSとは:
企業内でデジタル証明書を発行・管理するためのWindows Serverの役割サービスです。証明書は認証、暗号化、署名などに使用されます。
攻撃の仕組み(ESC1〜ESC8など、複数のパターンが存在):
代表的な「ESC1」パターン:
- 一般ユーザーが要求可能で、かつ「Subject Alternative Name(SAN)」を任意に指定できる証明書テンプレートを発見
- 攻撃者は「ドメイン管理者」として証明書を要求
- 発行された証明書を使って、ドメイン管理者として認証
- 一気にドメイン全体を掌握
なぜ危険なのか:
- 証明書による認証は長期間有効(デフォルトで1年以上)
- パスワード変更後も有効なまま
- 通常のログ監視では見逃されやすい
対策:
- 証明書テンプレートの設定を厳格に監査(Certifyなどのツールで診断)
- 「Manager approval」を必須にする
- SANの指定を制限
- 証明書発行ログの監視強化
🛡️ 4. エンジニアが実施すべき「昇格阻止」のガードレール
権限昇格を防ぐには、「一箇所突破されても次で止める」多層防御が不可欠です。
| 対策カテゴリー | 具体的な対策内容 |
|---|---|
| パッチ適用 | OSのカーネル脆弱性(LPE)を塞ぐため、月例パッチを徹底する。特にサーバーとドメインコントローラを優先。 |
| 最小権限の原則 | サービスアカウントに必要以上の権限を与えない。ADの管理者アカウントを日常業務(メール確認等)に使用しない(Day 8のTierモデル参照)。 |
| 設定の堅牢化 | Unquoted Service Pathの一括修正。ADCSのテンプレート設定の監査。事前認証無効アカウントの排除。 |
| 検知の強化 | LSASSプロセスへの不審なアクセス(Mimikatzの挙動)をEDRでブロック。Kerberoastingの兆候(大量のTGS要求)を監視。 |
| パスワードポリシー | サービスアカウントには25文字以上の複雑なパスワード。可能であればgMSAやマネージドIDを利用。 |
| 監査ログ | 特権昇格の試行(イベントID 4672)、新規サービスの登録(イベントID 7045)を監視。 |
🔍 権限昇格を検知するためのログとイベントID
| イベントID | 内容 | 重要度 |
|---|---|---|
| 4672 | 特権ログオン(管理者権限での操作) | 高 |
| 4673 | 特権サービスの呼び出し | 中 |
| 4674 | 特権オブジェクトへの操作試行 | 中 |
| 4688 | 新しいプロセスの作成(コマンドライン引数の記録を有効化) | 高 |
| 7045 | 新しいサービスのインストール | 高 |
| 4738 | ユーザーアカウントの変更 | 中 |
📝 まとめ:攻撃者は「低い場所」から「高い場所」を見る
攻撃者は、私たちが「これくらい大丈夫だろう」と放置した設定ミスや、古いプロトコルの仕様を巧みに組み合わせて階段を作ります。
重要ポイント:
- 権限昇格は「技術的な脆弱性」と「設定ミス」の両輪で行われる
- Kerberoastingなど、「正規の挙動」を悪用する攻撃への対策が特に重要
- 管理者の認証情報は、絶対に一般端末のメモリに残さない(Day 8のTierモデルが重要)
- ADCS環境がある場合は、証明書テンプレートの設定を必ず監査する
- 多層防御: 一つの対策が破られても、次の防御層で阻止できる体制を
次回予告:
【Day 10】データの持ち出し(Exfiltration):検知を回避して情報を外部送信する手法
いよいよ「二重脅迫」の準備段階です。数TBものデータを、セキュリティ製品の目を盗んでどうやって外へ運び出すのか、その裏側を解説します。
チェックリスト: あなたの環境は大丈夫?
- 月例パッチは全サーバー・全端末に適用されているか
- Unquoted Service Pathは存在しないか(PowerShellスクリプトで一括チェック可能)
- サービスアカウントのパスワードは25文字以上か
- ドメイン管理者を日常業務の端末で使用していないか
- ADCSの証明書テンプレートを監査したか(Certifyツールの利用を推奨)
- Kerberos事前認証が無効なアカウントは存在しないか
- LSASSプロセス保護またはCredential Guardは有効化されているか