LAPS
~すべての PC のローカル管理者 PW をリモート設定する無償ツール~
LAPS (Local Administrator Password Solution)は、マイクロソフトの Windows 10/11、Windows Server 2022 以降に標準装備された、Built-In Administrators 組み込み管理者グループに所属する “指定したローカル管理者アカウント” のパスワードを、リモートから設定・更新する仕組みです。
Built-in Administrator 以外のローカル管理者アカウントも対象にでき、Active Directory (AD)で設定した特定のPC、OU、ADグループ、ユーザーだけが、LAPSで設定された “指定したローカル管理者アカウント” のパスワードを閲覧できます。
なぜ、LAPSがランサムウェア対策に有効なのか?
Built-In Administrator や組み込み管理者(ローカル管理者とも言います)のパスワードを全社共通にすることで、PCのトラブル対応が迅速に行える、という理由から、多くの組織では管理者パスワードの使いまわしが容認されていました。また、一台一台の PC の Built-In Administrator を個別ユニークに設定するのは、膨大な作業となり、また、台帳に記録するのも保管も大変です。
ランサムウェアの攻撃犯は、こうした運用上の弱点を悪用し、Built-In Administrator のパスワードを Mimikatz などのパスワード解析ツールを使って解析し、RDP や PSEXEC などのリモート接続ツールを使い水平展開を行います。最終的には、AD サーバーを乗っ取り、グループポリシーを悪用してランサムウェアを展開したり、Cドライブの管理共有を攻撃元PCのリモートドライブとして接続し、暗号化を行います。
Legacy LAPS と Modern LAPS
そこで、この手間を削減するために2015年に開発されたのが LAPS (これ以降、「Legacy LAPS」といいます。)です。Legacy LAPS はドメインに参加している PC の “ローカル Administrator(SID=500)” のパスワード自動的に作成し、PC と Active Directory に保存し、さらに、指定した期間ごとにパスワードを自動更新するというものです。Legacy LAPS は、MSI 形式で配布され、Server にインストールする必要があり、パスワードを保存するための領域として Active Directory の属性を拡張する必要があり、一般的な管理者にとっては、ハードルが高く感じられました。また、“ローカル Administrator(SID=500)” に固定されるため、現在は既定で無効化されている “ローカル Administrator(SID=500)“ をあえて有効化して利用することとなり、セキュリティ上の課題が指摘されていました。
そこで、LAPS は 2023年4月にバージョンアップ(April 2023 Update)され、このアップデートを実行した Windows 10 や Windows 11 では、Modern LAPS と呼ばれる最新の LAPS が標準で組み込まれるようになりました。Windows Server 2022 OS Build 25398(2023 H1)以降、もしくは、または 2023 年以降の「Cumulative Update」を適用したドメインコントローラも、Modern LAPS が適用されています。
Modern LAPS は “任意のローカルアカウント” を指定でき、 AD の属性が再拡張され、それまで、平文で AD 属性に保存されていたパスワードも AES で暗号化され保存され、安全性が高まっています。
| 項目 | Legacy LAPS(MSI版) | Modern LAPS(OS標準) |
| 提供形式 | MSI インストール | Windows Update でOSに組込 |
| パスワード保存 | AD属性:ms-Mcs-AdmPwd | AD属性:msLAPS-*(暗号化対応) |
| 対応OS | Win7〜10(古いOS含む) | Win10(2023.4以降)、11、Server |
| 暗号化 | 平文のみ | AES256 で暗号化格納 |
| パスワード履歴 | 無し | あり |
| パスワード変更トリガー | 期限切れ時のみ | 期限切れ、OS 起動、ログオン失敗回数が一定数に達したとき(ブルートフォース対策)、管理者が強制リセット、Intune/Entra ID ポリシーによる指示 |
| Legacy と Modern の競合 | Legacy と Modern は競合可能(注意) | 設定次第で併存可能 |
Modern LAPS か Legacy LAPS か
Modern LAPS か Legacy LAPS の選択については、Windows Server 2022 以降であれば、Modern LAPS 一択といえます。既に、Windows の標準機能となっており、暗号化保存や、総当たり攻撃や辞書攻撃での自動ローテーションなど、セキュリティ面が圧倒的に強化されています。また、管理対象アカウントが自由に選べるという面で、Administrator アカウントを攻撃するランサムウェア対策として、極めて有効な仕組みといえます。
但し、Windows Server 2016、Windows Server 2019 は、Modern LAPS に未対応ですので、Legacy LAPS を使用してください。Legacy LAPS と Modern LAPS は共存可能です。
Modern LAPS 導入の検討事項
Modern LAPS では、自動モードがあり “ローカル Administrator” のパスワードを定期的に変更できます。一方で、プログラムが “ローカル Administrator” アカウントを使用し、プログラムの中にパスワードをハードコードしている場合などは、プログラムが停止するなどの影響が出ます。
典型的には:
- インストーラセットアップが「Administrator」を前提にしている製品
- 古いオンプレアプリ・ミドルウェア
- パッチ管理ツール
- レガシーな自動バックアップツール
- サービスアカウントが Administrator で動いているシステム
- vbscript / bat / powershell に直接 PW を書いているスクリプトなど
“ローカル Administrator” アカウントは、そのコンピューターで最高の権限を有することから、プログラム的には大変便利なアカウントですが、一方で、セキュリティ的には侵害された場合に、そのまま特権を攻撃者に渡すこととなります。また、VB.Net や C# などで開発されたプログラムはリバースエンジニアリングが容易で、プログラムに埋め込まれたパスワードを解析される可能性が高く、Windows のプログラムとしては、極めて脆弱かつ危険で、本来、IPA に届けるべき脆弱性を有する状態といえます。
もし、プログラムの動作条件として、管理者権限が必要となっている場合は、プログラムの開発元に “ローカル Administrator” アカウントの使用の有無を確認する必要があります。
Modern LAPS の前提条件
AD 属性に Modern LAPS 属性があることが必須です。以下の PowerShell コマンド(管理者権限)は、ms-LAPS で始まる属性があるかを検索します。
Get-ADObject -SearchBase (Get-ADRootDSE).SchemaNamingContext -Filter 'Name -like "ms-LAPS*"' -Properties lDAPDisplayName | Select-Object Name, lDAPDisplayName
Name lDAPDisplayName
---- ---------------
ms-LAPS-EncryptedDSRMPassword msLAPS-EncryptedDSRMPassword
ms-LAPS-EncryptedDSRMPasswordHistory msLAPS-EncryptedDSRMPasswordHistory
ms-LAPS-EncryptedPassword msLAPS-EncryptedPassword
ms-LAPS-EncryptedPasswordHistory msLAPS-EncryptedPasswordHistory
ms-LAPS-Password msLAPS-Password
ms-LAPS-PasswordExpirationTime msLAPS-PasswordExpirationTimeModern LAPS の属性(ms-LAPS-*)が表示されれば、スキーマの拡張は不要です。何も、出力されない場合は、 以下の PowerShell コマンド(管理者権限)で、Active Directory のスキーマを拡張します。なお、スキーマ拡張によってアプリケーションに影響が出ることはありません。
Update-LapsADSchema拡張後は、Get-ADObject で拡張されたスキーマを確認します。
| スキーマ | 役割 |
|---|---|
| msLAPS-EncryptedPassword | 「暗号化されたローカル管理者パスワード(最新)」を保存する領域。 クライアントが生成したパスワードを AES256 + コンピュータの公開鍵 で暗号化して保存する。 |
| msLAPS-EncryptedPasswordHistory | 過去のパスワードの暗号化された履歴を保存する。 |
| msLAPS-Password | 暗号化 “しない” パスワードを保存する属性(互換用途)。Modern LAPS では通常使用しない、レガシー製品や一部の管理ツールとの互換性のためのもの。 |
| msLAPS-PasswordExpirationTime | 次回パスワード変更日時を保存する。 |
| msLAPS-EncryptedDSRMPassword | ドメインコントローラー(DC)専用、DC の DSRM(Directory Services Restore Mode)パスワードを安全に管理する。 |
| msLAPS-EncryptedDSRMPasswordHistory | DSRM パスワードの履歴を保存する。 |
Modern LAPS の適用方法
パスワードの読み出し権限設定
LAPS はパスワードを AD のコンピュータオブジェクト属性に保存するため、Group Policy の構成前に、管理者(Helpdesk メンバー等)にアクセス権限を付与する必要があります。
例えば、メンバーサーバーが “Servers” という OU ( OU=Servers,OU=Tokyo,DC=softwareisac,DC=local)に所属しており、LAPS でパスワードを読み出せる HELPDESK メンバーが、”LAPS-helpdesk” というセキュリティグループに所属している場合は、以下のコマンドを実行します。
Set-LapsADPasswordPermission -Identity "OU=Servers,OU=Tokyo,DC=softwareisac,DC=locall" -AllowedPrincipals "LAPS-helpdesk"Set-LapsADPasswordPermission のパラメーター
| -Identity | LAPS の管理対象となるコンピュータが所属する OU を指定する |
| -AllowedPrincipals | 設定されたパスワードを閲覧できるユーザー、セキュリティグループを指定する |
Modern LAPS の Group Policy 設定
LAPS の動作制御やパスワード品質等の設定は AD の Group Policy の管理用テンプレートを使用します。LAPS の GPO は、2023 年 4 月(April 2023 Update)以降、標準機能として組み込まれているので、Windows Update を実行してさえいれば、特別な操作は不要です。
LAPS の GPO は、ドメインコントローラーでグループポリシーエディターを起動し、[コンピューターの構成]>[管理用テンプレート]>[システム]>[LAPS] にあります。

DSRM アカウントのパスワード バックアップを有効にする:有効
- このポリシーを有効にすることで、DC の「Directory Services Restore Mode(DSRM)」パスワードも LAPS 管理に統合できるようになります。特に、ランサムウェア攻撃後の DR(Bare metal restore)で必須になります。
- パスワード盗難対策にも強力(AES-256 暗号化保存)
- “ドメインコントローラーのみ” に適用されるため、OU を分けるか、WMI フィルタで DC のみに適用します。

パスワード バックアップ ディレクトリの構成:有効
- 保存先として、“Active Directory” もしくは、“Azure Active Directory (Azure AD )” を選択できます。
- 一般的なオンプレの AD 配下のコンピューターを管理する場合は、“Active Directory” を選択します。
- AD に参加していないコンピューターで、かつ、Azure AD Join デバイス、Hybrid Azure AD Join デバイス(クラウド側の属性)、Intune 管理デバイスのパスワードを管理したい場合は “Azure AD” を選択します。

パスワードの暗号化をオンにする:有効(必須)
- 平文保存(
msLAPS-Password)は危険なため、必ず、有効にします。 - これによって、PC がローカル管理者パスワードを生成し、PC 自身のTPMに保存された デバイスキー(DPAPI-NG / CNG) を使用して AES-256 で暗号化します。
- 暗号化されたパスワードは Active Directory に送信され、AD の PC オブジェクト属性
LAPS-EncryptedPasswordに保存されます。 - 復号は DC で実行され、DC がAllowedPrincipals(必要権限) を検査し、DC 内部で デバイス固有の復号キーを取得し、DC のメモリ内で AES-256 を復号して、管理者に平文パスワードを返します。
- これによって、攻撃者が DC の AD 属性を盗んでも 暗号化された情報だけとなり、パスワードを取得することはできません。

パスワードの設定:有効
- このポリシーでは、パスワードの “複雑さ” と “長さ” を設定します。
- 攻撃の難易度を上げるために、“複雑さ” は、 “大文字 + 小文字 + 数字 + 特殊文字” を選択し、“長さ” は “16桁” 以上を選択します。
- 16桁とした場合、総組み合わせ数は 6.0957×1031 通りとなり、1秒間に1億回の総当たり攻撃を行ったとしても、1.93×1016 年かかり、その半分で成功したとしても、9.6 × 10¹⁵ 年(9600兆年)かかります。宇宙の始まりから現在までで約138億年と推定されていますので、その数十倍の時間がかかることとなります。なお、量子計算機が登場しても、量子ビットが 数百万〜数千万 qubit 必要となるため、実現には最低でも20年以上は解読困難と考えられます。
- パスワードの有効期間は、短めに “1~7日” 程度を設定します。

ポリシーで必要な時間よりも長いパスワードの有効期限を許可しない:有効
- この設定によって、管理者が手動でパスワードを変更した場合でも、必ずポリシーの期間内でパスワードがローテーションされるため、パスワードが長期間固定されるリスクを防止できます。

暗号化されたパスワード履歴のサイズを構成する:有効
- この設定を有効にすることで、インシデント調査、DR 復旧、誤設定時のロールバックが可能となります。
- “履歴も暗号化” されるため、セキュリティリスクはありません。
- あくまで、インシデント調査や復旧時の参照用のため、履歴サイズは “必要最小限” にします。

管理する管理者アカウントの名前:未構成、もしくは有効
- 過去に、“Built-In Administrator” を使用した環境の場合は、“未構成” にすることで、“Built-in Administrator(SID=500)” が自動的に選択されます。また、Built-In Administrator の名前を変更していても、Modern LAPS が SID=500 を選択するため、ポリシーで指定する必要はありません。
- “Built-In Administrator” を使用しておらず、CompanyAdmin 等のユーザーを使用している場合は、“有効” にして、そのアカウントを入力します。

自動アカウント管理を構成する:有効
- このポリシーは、LAPS がローカル管理者アカウントを “自動で作成/有効化/無効化/保護し、必要に応じてローテーションする” 機能をONにします。つまり、LAPS がアカウントの存在・有効状態・PW更新を全面的に制御します。
- 管理するターゲット アカウントを指定する
“組み込みの管理者アカウント” の場合
SID = 500 の Administrator アカウントであり、OS 回復・セーフモードで必ず使えます。
“カスタム監理者アカウント” の場合
“LocalAdmin”等、任意の名前のローカル管理者を LAPS に管理させたい場合、LAPS がそのアカウントを自動作成します。 - 自動アカウント名(または名前のプレフィックス)
ここに文字列を入れると “カスタムアカウント” を作成します。その名前で Windows がアカウントを管理するか、または、「プレフィックス+乱数」のアカウント名を LAPS が作成します。 - 管理アカウントを有効にする
このチェックを入れると、“LAPS 管理対象アカウントを Windows が強制的に 有効化” します(無効化されていても OS が有効に戻す)。これにより、どんな状況でも必ずログオン可能(復旧性向上)となり、LAPS がパスワードローテーションを実施します。
但し、セキュリティ方針で “Administrator を無効化したい” 組織では検討が必要です。 - 管理アカウント名をランダム化する
この設定を有効化すると “Administrator” のような固定名が使われなくなります。
すべてのコンピューターで、“異なるランダム名”(例:LAPSAdmin-84321)が設定されます。さらに時間経過で “ランダム名が変更” されます。
LAPS でアカウント名は取得可能であり、“セキュリティは上がるが、運用負荷が非常に高く” なり危険です。
- 通常、Built-In Administrator を使用した環境であれば、以下の設定を選択するとよいでしょう。
“組み込み感謝アカウントを管理する” を選択。
“自動アカウント名(または名前のプレフィックス)” は空白のまま。 Adinistrator で運用する。
“管理者アカウントを有効にする” にチェックを入れる。
“監理者アカウントの名前をランダム化する” にチェックを入れない。

承認されたパスワード復号化機能の構成:有効
- このポリシーは、暗号化されたパスワードの復号化機能を許可するものです。
Set-LapsADPasswordPermissionで設定した LAPS でパスワードを読み出せるユーザー、セキュリティグループを指定します。- 攻撃によって登録したユーザー、セキュリティグループのメンバーが乗っ取られると、壊滅的な被害を招くことから、このユーザー、セキュリティグループメンバーは2要素認証の使用を義務付ける、メンバーを運用上差し支えない範囲で少なくする等の保護措置を検討してください。
- なお、誰がパスワードを復号したかをログで特定できるようにするため、共有アカウントの使用は絶対に避けて下さい。

認証後アクション:有効
- このポリシーは、マネージドアカウントの認証の検出後に実行される認証後アクションを構成します。
“猶予時間” の設定と、以下の “操作” の選択が可能です。 - “猶予時間” とは、認証後に “操作” で選択したアクションを実施するまでの猶予時間です。
- “操作” とは、”猶予時間” が経過後に実行するアクションで、以下の選択が可能です。
- パスワードをリセットし、マネージドアカウントをログオフする
- パスワードをリセットし、マネージドアカウントからログオフし、残りのプロセスをすべて終了する
- パスワードをリセットし、デバイスを再起動する
- パスワードをリセットするのみ
- 無効 – 何もしない
- 最も推奨される選択肢としては、“猶予時間” を 24時間 とし、“操作” は、“パスワードをリセットし、マネージドアカウントをログオフする” です。
- ローカル管理者がログオンして作業した後、その管理者のすべてのトークン/セッション/ハッシュ/TGT は破棄されるため、Pass-the-Hash / Token Stealing を防止されます。
- パスワードもローテーションされるため、再利用不可(横展開不可)となります。
- ログオフだけなので、作業者が他のユーザを巻き込まず、運用上のリスクが少ないといえます。
