Nseclog

ペネトレーションテスターがセキュリティ検証内容を発信するブログ

Windows 11で新しくなったLAPSを使ってみた

Active Directory環境におけるローカル管理者アカウント管理ツールとして、LAPS(Local Administrator Password Solution)というものが存在します。 これは、Microsoftが公式に提供している無償ツールであるものの、Windows標準機能ではなくあくまで外部ツールであるため、すべての管理対象端末にインストールする必要があり、導入に一定のハードルがありました。

しかし、このLAPSがWindows標準機能としてOSに組み込まれる予定であり、すでにWindows 11 Insider Preview Buildによって新しいWindows LAPSを使用することができます。 検証環境を用いて、実際に新しいWindows LAPSを触ってみたので、その使い方や従来のLAPSとの違いを紹介します。

※注意
本記事の内容はWindows 11 Insider Preview Buildに含まれる機能を検証したものであり、正式リリース版は内容が異なる可能性があります。

LAPS(Local Administrator Password Solution)とは

LAPS(Local Administrator Password Solution)とは、Active Directoryに参加しているコンピュータのローカル管理者アカウントのパスワードを一括管理するためのツールです。

大量に存在するドメインコンピュータのローカル管理者アカウントすべてに、複雑かつ異なるパスワードを設定し人の手で管理することは容易ではなく、パスワードを使い回している環境は少なくありません。

Active Directory環境を狙う攻撃者は、そういったパスワードの使い回しを悪用し、侵入範囲の拡大を行います1

そこで活躍するのがLAPSです。LAPSを導入することによって以下のことが可能となります。

  • ドメインコンピュータのローカル管理者アカウントごとに異なるパスワードを自動で設定
  • 設定されたパスワードはドメインコントローラに保存
  • 設定されたパスワードはLAPS管理者のみ閲覧可能
  • 設定されるパスワードのルール(長さや文字種など)指定や定期的なパスワードの自動変更も可能

従来のLAPSアーキテクチャMicrosoft LAPS導入ガイドより引用2

具体的なLAPSの導入方法については、Microsoftによるこちらの記事(日本語)が参考になりますが、大まかな流れとしては以下のとおりです。

  1. LAPSツールのインストール
  2. Active Directoryの構成変更
  3. Active Directoryグループポリシーの設定

上記手順のとおり、従来のLAPSを利用するためには以下の端末それぞれにツールのインストールが必須であることから、導入に一定のハードルがありました。

  • ドメインコントローラ:GPO Editor templates
  • LAPS管理用端末:Management Tools(PowerShell module and Fat client UI)
  • すべての管理対象端末:AdmPwd GPO Extension

そんなLAPSですが、2022年6月22日よりリリースされたWindows 11 Insider Preview Build 25145以降のバージョンではWindows LAPSとして生まれ変わり、OSに組み込まれています。

forest.watch.impress.co.jp

Windows LAPSについて

従来のLAPSと比較したWindow LAPSの最も大きな変更点としては、LAPSクライアントツールとLAPS管理ツールのいずれもWindows標準機能としてOSに組み込まれているため、端末にツールをインストールする必要がないという点です。

そのため、導入の際にいくつかの作業を行う必要がなくなりました。

  • 必要のなくなった作業
    • すべての管理対象端末に対するLAPSクライアントツール(AdmPwd GPO Extension)のインストール
    • LAPS管理用端末へのLAPS管理ツールのインストール
  • 現在も必要な作業

その他にも、機能の強化を中心とした変更点がいくつか存在します。

  • 保存されるパスワードの暗号化に対応
  • DSRMアカウントパスワードのバックアップに対応
  • 複数のグループポリシーを追加
  • LAPSコマンドレットの変更
  • LAPS UI(LAPSを管理するGUIツール)が削除され、PowerShellモジュールに統合

Windows LAPSを実際に使ってみた

検証環境を用意し、Windows 11のWindows LAPSを実際に使ってみました。

用意した検証環境は以下のとおりで、新旧いずれのLAPSも未導入のActive DirectoryにInsider Preview BuildのWindows 11を参加させた状態です。

  • 検証環境
    • ドメインコントローラ:
      • Windows Server 2019 Version 1809(OS Build 17763.3113)
    • LAPS管理端末兼パスワード管理対象端末(ドメイン参加済み):
      • Windows 11 Version 22H2(OS Build 25262.1000)

Active Directoryスキーマの拡張

従来のLAPSであれば、LAPS管理ツールをインストールした端末上でPowerShellモジュールをインポートしActive Directoryスキーマの拡張を行いますが、Insider Preview BuildのWindows 11にはすでにPowerShellモジュールが入っています。

PS C:\> Get-Command -Module LAPS

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Get-LapsAADPassword                                1.0.0.0    LAPS
Function        Get-LapsDiagnostics                                1.0.0.0    LAPS
Cmdlet          Find-LapsADExtendedRights                          1.0.0.0    LAPS
Cmdlet          Get-LapsADPassword                                 1.0.0.0    LAPS
Cmdlet          Invoke-LapsPolicyProcessing                        1.0.0.0    LAPS
Cmdlet          Reset-LapsPassword                                 1.0.0.0    LAPS
Cmdlet          Set-LapsADAuditing                                 1.0.0.0    LAPS
Cmdlet          Set-LapsADComputerSelfPermission                   1.0.0.0    LAPS
Cmdlet          Set-LapsADPasswordExpirationTime                   1.0.0.0    LAPS
Cmdlet          Set-LapsADReadPasswordPermission                   1.0.0.0    LAPS
Cmdlet          Set-LapsADResetPasswordPermission                  1.0.0.0    LAPS
Cmdlet          Update-LapsADSchema                                1.0.0.0    LAPS

ちなみに、従来のLAPS PowerShellモジュールのコマンドレットは以下のとおりです。

PS C:\> Get-Command -Module AdmPwd.PS

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Find-AdmPwdExtendedRights                          5.0.0.0    AdmPwd.PS
Cmdlet          Get-AdmPwdPassword                                 5.0.0.0    AdmPwd.PS
Cmdlet          Reset-AdmPwdPassword                               5.0.0.0    AdmPwd.PS
Cmdlet          Set-AdmPwdAuditing                                 5.0.0.0    AdmPwd.PS
Cmdlet          Set-AdmPwdComputerSelfPermission                   5.0.0.0    AdmPwd.PS
Cmdlet          Set-AdmPwdReadPasswordPermission                   5.0.0.0    AdmPwd.PS
Cmdlet          Set-AdmPwdResetPasswordPermission                  5.0.0.0    AdmPwd.PS
Cmdlet          Update-AdmPwdADSchema                              5.0.0.0    AdmPwd.PS

新旧のコマンドレットを比較してみると、コマンドレット名が若干変わり、数も増えていることが分かります。

Update-LapsADSchemaを使用してActive Directoryスキーマの拡張を行います。このとき、「Schema Admins」または「Enterprise Admins」に所属するドメインアカウントを使用します。

PS C:\> Import-Module LAPS
PS C:\> Update-LapsADSchema

The 'ms-LAPS-Password' schema attribute needs to be added to the AD schema.
Do you want to proceed?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): A

これにより、コンピュータオブジェクトに「msLAPS-Password」や「msLAPS-PasswordExpirationTime」など6つの属性が追加されます。

なお、従来のLAPSで追加される属性は「ms-McsAdmPwd」と「ms-Mcs-AdmPwdExpirationTime」の2つだったので、Windows LAPSでは属性の数も増えていることが分かります。

管理対象端末のコンピュータオブジェクトに対するアクセス権の設定

ドメインコントローラ上で新しくOU(Organization Unit)を作成し、LAPSによるローカル管理者アカウントのパスワード管理の対象となる端末を追加します。ここでは、「LAPS」というOUを作成し「WIN11-WS03」という端末を追加しています。

次に、作成したOUに所属する端末のコンピュータオブジェクトに対するアクセス権を設定します。この作業はドメインコントローラではなく、先ほどActive Directoryスキーマの拡張を行ったPowerShell上で行います。

PS C:\> Set-LapsADComputerSelfPermission -Identity LAPS

Name DistinguishedName
---- -----------------
LAPS OU=LAPS,DC=ad,DC=example,DC=local

ローカルグループポリシーの編集

管理対象端末のローカルグループポリシーからLAPSによるパスワード管理を有効化します。

実運用ではグループポリシーによって一括でLAPSを有効化することになると思いますが、現状ドメインコントローラ側にLAPSのGPOテンプレートがないため、ここではローカルグループポリシーを用いています。


(2023.01.24 追記)
ADMXを使用することによってドメインコントローラ側でも設定可能であることを教えていただきました。

learn.microsoft.com


ローカルグループポリシーにおけるLAPSのパスは、Computer Configuration -> Administrative Templates -> System -> LAPSです。設定値は以下の2つの項目を明示的に指定し、残りの項目はデフォルトのままにしています。

  • Configure password backup directory:Enabled(Active Directory
  • Enable password encryption:Enabled

なお、各項目の詳細はMicrosoft公式のドキュメントに記載されています。

ちなみに、従来のLAPSのGPOテンプレートは以下の4項目であり、ここでもパスワードの暗号化やDSRMアカウントに関する項目が増えていることを確認できます。

パスワードの確認

Windows 11から一度サインアウトし、ローカル管理者アカウント(Built-in Administrator)によるログオンを試みると、すでにパスワードが変わっているためログオンできないことを確認できます。

ここで、ドメインコントローラから対象コンピュータオブジェクトの「msLAPS-EncryptedPassword」属性を確認してみると、暗号化されたパスワードが保存されていることが分かります。

平文パスワードはGet-LapsADPasswordコマンドで確認が可能です。

PS C:\> Import-Module LAPS
PS C:\> Get-LapsADPassword -Identity WIN11-WS03 -AsPlainText

ComputerName        : WIN11-WS03
DistinguishedName   : CN=WIN11-WS03,OU=LAPS,DC=ad,DC=example,DC=local
Account             : Administrator
Password            : +4m[25)+DKRfa+
PasswordUpdateTime  : 12/26/2022 8:39:50 PM
ExpirationTimestamp : 1/25/2023 8:39:50 PM
Source              : EncryptedPassword
DecryptionStatus    : Success
AuthorizedDecryptor : AD\Domain Admins

なお、デフォルトの設定では暗号化されたパスワードを復号できるのはドメイン管理者アカウント(Domain Admins)のみですが、ローカルグループポリシーの「Configure authorized password decryptors」によって変更することも可能です。

おわりに

本記事では、Windows 11で新しくなったLAPSを実際に使用し、従来のLAPSとの相違点を紹介しました。

Active Directory環境において、マルウェアの感染範囲拡大につながる設定・運用不備はいくつかありますが、ローカル管理者アカウントのパスワードの使い回しもその1つです。

新しくなったWindows LAPSも(現状は)Active Directoryの構成変更が必要であるため、運用中のActive Directoryに気軽に適用とはいかないと思いますが、従来よりもハードルが下がり始めていることは確かです。本記事のような情報が情シス担当者やセキュリティ担当者の方に届き、セキュアな環境が少しでも増えれば嬉しいです。

参考文献


  1. 実際にパスワードの使い回しを悪用する場合、パスワードの使い回しだけでなく他にもいくつかの条件を満たす必要がありますが、Built-in Administratorのパスワードが使い回されているかつ管理共有が有効(デフォルトの設定)であれば容易に悪用が可能です。パスワードの使い回しを悪用した横展開の条件については、こちらの記事が非常に参考になります。
  2. Microsoft LAPS導入ガイド(引用した画像は一部を修正しています)