AD CS Domain Persistence
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
これは、https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdfで共有されたドメイン持続性技術の概要です。詳細については、こちらを確認してください。
証明書がCA証明書であることはどうやって判断できますか?
いくつかの条件が満たされている場合、証明書がCA証明書であることが判断できます:
証明書はCAサーバーに保存されており、その秘密鍵はマシンのDPAPIまたは、オペレーティングシステムがサポートしている場合はTPM/HSMなどのハードウェアによって保護されています。
証明書の発行者および対象フィールドがCAの識別名と一致します。
"CA Version"拡張がCA証明書にのみ存在します。
証明書にはExtended Key Usage (EKU)フィールドがありません。
この証明書の秘密鍵を抽出するには、CAサーバー上のcertsrv.msc
ツールがサポートされている方法です。ただし、この証明書はシステム内に保存されている他の証明書とは異ならないため、THEFT2技術などの方法を使用して抽出できます。
証明書と秘密鍵は、次のコマンドを使用してCertipyでも取得できます:
CA証明書とそのプライベートキーを.pfx
形式で取得した後、ForgeCertのようなツールを使用して、有効な証明書を生成できます:
証明書の偽造の対象となるユーザーは、プロセスが成功するためにアクティブであり、Active Directoryで認証できる必要があります。krbtgtのような特別なアカウントのために証明書を偽造することは効果がありません。
この偽造された証明書は、指定された終了日まで有効であり、ルートCA証明書が有効である限り(通常は5年から10年以上)有効です。また、マシンにも有効であるため、S4U2Selfと組み合わせることで、攻撃者はCA証明書が有効である限り、任意のドメインマシンで持続性を維持できます。 さらに、この方法で生成された証明書は、CAがそれらを認識していないため、取り消すことができません。
NTAuthCertificates
オブジェクトは、そのcacertificate
属性内に1つ以上のCA証明書を含むように定義されており、Active Directory(AD)が利用します。ドメインコントローラーによる検証プロセスは、認証される証明書の発行者フィールドに指定されたCAに一致するエントリをNTAuthCertificates
オブジェクトで確認することを含みます。一致が見つかれば、認証が進行します。
自己署名のCA証明書は、攻撃者がこのADオブジェクトを制御している場合、NTAuthCertificates
オブジェクトに追加できます。通常、Enterprise Adminグループのメンバーと、フォレストルートのドメイン内のDomain AdminsまたはAdministratorsのみが、このオブジェクトを変更する権限を与えられます。彼らは、certutil.exe
を使用してNTAuthCertificates
オブジェクトを編集することができ、コマンドcertutil.exe -dspublish -f C:\Temp\CERT.crt NTAuthCA126
を使用するか、PKI Health Toolを使用します。
この機能は、ForgeCertを使用して動的に証明書を生成する以前に説明された方法と組み合わせて使用される場合に特に関連性があります。
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-flag
が1に設定され、ENROLLEE_SUPPLIES_SUBJECT
が有効になり、ユーザーがリクエストにおいて代替名を提供できるようになります。続いて、攻撃者はテンプレートを使用して登録し、代替名としてドメイン管理者**の名前を選択し、取得した証明書をDAとして認証に利用します。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)