インターネット上で CVE-2021-42287/CVE-2021-42278 特権昇格脆弱性の EXP が公開されているのを見て、学習の目的で関連資料を探して研究しました。
この特権昇格脆弱性は、ドメイン内の一般ユーザーをドメイン管理者権限に昇格させることができ、一定の条件が必要ですが、危害は非常に深刻です。
現在、この脆弱性に関する資料があまり体系的でなく、自分の理解もあまり深くないため、以下の分析は必ずしも正確ではないかもしれません。
1. 脆弱性の原理#
この脆弱性の原理を理解する前に、Kerberos プロトコルの原理を理解する必要があります。
簡単に言えば:
Kerberos プロトコルは三つのステップに分かれています。
認証ステップ | 認証プロセス | 認証結果 |
---|---|---|
AS 認証 | ASREQ & ASREP | TGT 認証トークンを取得 |
TGS 認証 | TGSREQ & TGSREP | ST サービスチケットを取得 |
TGS 認証 | AP-REQ & AP-REP | クライアントがサーバーと接続を確立 |
認証フローチャートは以下の通りです:
CVE-2021-42278:
マシンユーザーのアカウント形式はアカウント名の後に
$
を追加することです。DC はマシンユーザーのアカウントの末尾に$
があるかどうかを検証しないため、マシンユーザー名が一般ユーザーとして操作されます。CVE-2021-42287:
一般ユーザーが TGT を取得する際に、別のユーザーを通じて自分の ST を要求し、その後 TGT を KDC に送信します。TGT は別のユーザーの情報を使用して取得されたため、KDC はデータベース内で一致するユーザー情報を見つけることができず、KDC はマシンユーザーの ST を探し、最終的にマシンユーザーの権限を取得します。
1.1 脆弱性のプロセス:#
- ドメインの一般ユーザーがマシンアカウントを新規作成する(ドメインユーザーはデフォルトでマシンアカウントを新規作成できます)
- マシンアカウントの SPN をクリアし、マシン名をドメインコントローラー名に変更し、末尾の
$
を削除します - 新規作成したマシンアカウントを使用してドメインコントローラーに Kerberos 認証を要求し、TGT(チケット授権トークン)を取得します
- マシンアカウントを削除し、取得した TGT を使用して ldap 管理者サービス権限の ST(サーバーチケット)を要求します
- ドメインコントローラーは TGT を復号化して PAC(特権属性証明書)を取得し、要求されているのは ldap 管理者サービス権限であることを確認し、ldap サーバー管理者の HASH を使用して ST を暗号化します
- ldap サーバー管理者は自身の HASH を使用して PAC を復号化します
- PAC を通じて要求ユーザーと被要求ユーザーの情報を取得し、ユーザーがサービスにアクセスする権限があるかどうかを判断します
- この判断プロセスではドメインコントローラーに要求が必要で、ドメインコントローラーはまずデータベース(アクティブディレクトリ)で要求者の関連情報を検索します。
$
が削除されたため、ドメインユーザーとして検索され、情報が見つからない場合はマシンアカウント情報を検索し、末尾に$
を追加します - この時、ドメインコントローラーが得た情報は:ドメインコントローラーが ldap 管理者サービスを要求しようとしていることで、要求することでドメインコントローラーの権限を取得できるようになります
1.2 脆弱性の条件:#
- 低権限のドメインアカウントがマシンアカウントを作成および変更できる
- AP_REP の際(TGS_REP ではなく)ユーザーが見つからない場合にマシンユーザーを検索し、その後
$
を追加した - ドメインコントローラーが委任攻撃を許可している
- DC がパッチ KB5008380 または KB5008602 を適用していない
2. 影響を受けるバージョン#
CVE-2021-42278
○ Windows Server 2012 R2
○ Windows Server 2012 (Server Core installation)
○ Windows Server 2012
○ Windows Server 2008 R2 for x64-based Systems Service Pack 1(Server Core installation)
○ Windows Server 2008 R2 for x64-based Systems Service Pack 1
○ Windows Server 2008 for x64-based Systems Service Pack 2(Server Core installation)
○ Windows Server 2008 for x64-based Systems Service Pack 2
○ Windows Server 2008 for 32-bit Systems Service Pack 2(Server Core installation)
○ Windows Server 2008 for 32-bit Systems Service Pack 2
○ Windows Server 2016 (Server Core installation)
○ Windows Server 2016
○ Windows Server, version 20H2 (Server Core Installation)
○ Windows Server, version 2004 (Server Core installation)
○ Windows Server 2022 (Server Core installation)
○ Windows Server 2019 (Server Core installation)
○ Windows Server 2022
○ Windows Server 2019
○ Windows Server 2012 R2 (Server Core installation)
CVE-2021-42287
○ Windows Server 2012 R2 (Server Core installation)
○ Windows Server 2012 R2
○ Windows Server 2012 (Server Core installation)
○ Windows Server 2008 R2 for x64-based Systems Service Pack 1(Server Core installation)
○ Windows Server 2012
○ Windows Server 2008 R2 for x64-based Systems Service Pack 1
○ Windows Server 2008 for x64-based Systems Service Pack 2(Server Core installation)
○ Windows Server 2008 for x64-based Systems Service Pack 2
○ Windows Server 2008 for 32-bit Systems Service Pack 2(Server Core installation)
○ Windows Server 2008 for 32-bit Systems Service Pack 2
○ Windows Server 2016 (Server Core installation)
○ Windows Server 2016
○ Windows Server, version 20H2 (Server Core Installation)
○ Windows Server, version 2004 (Server Core installation)
○ Windows Server 2022 (Server Core installation)
○ Windows Server 2022
○ Windows Server 2019 (Server Core installation)
○ Windows Server 2019
3. 脆弱性の再現#
ツール:
3.1 スキャン探査#
noPac.exe scan -domain redteam.club -user xfeng -pass 123456
3.2 直接利用(noPac.exe)#
noPac.exe -domain redteam.club -user test -pass pass@123 /dc ad02.redteam.club /mAccount test123 /mPassword feng /service cifs /ptt
dir \\ad01.redteam.club\c$
psexec.exe \\ad01.redteam.club cmd.exe
4. 脆弱性の修正#
マイクロソフトはすでにセキュリティパッチをリリースしており、詳細はリンクを確認してください。
自分の Windows バージョンに対応するセキュリティパッチがインストールされているか確認してください。
5. 参考記事#
Tweet not found
The embedded tweet could not be found…
https://exploit.ph/cve-2021-42287-cve-2021-42278-weaponisation.html
https://www.thehacker.recipes/ad/movement/kerberos/samaccountname-spoofing