AD CS Domain Persistence
これは、https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf で共有されているドメイン永続性技術の要約です。詳細については、そちらをご確認ください。
盗まれたCA証明書を使用した証明書の偽造 - DPERSIST1
証明書がCA証明書であるかどうかをどのように判断できますか?
証明書がCA証明書であることが確認される条件は次のとおりです:
証明書はCAサーバーに保存されており、そのプライベートキーはマシンのDPAPIによって保護されているか、オペレーティングシステムがサポートしている場合はTPM/HSMなどのハードウェアによって保護されています。
証明書の発行者とサブジェクトのフィールドがCAの識別名と一致しています。
"CA Version" 拡張子がCA証明書にのみ存在します。
証明書には拡張キー使用法(EKU)フィールドがありません。
この証明書のプライベートキーを抽出するには、CAサーバー上の certsrv.msc
ツールが組み込みGUIを介してサポートされています。ただし、この証明書はシステム内に保存されている他の証明書と変わりません。そのため、THEFT2 技術 のような手法を抽出に適用することができます。
次のコマンドを使用して、Certipyを使用して証明書とプライベートキーを取得することもできます:
CA証明書とその秘密鍵を.pfx
形式で取得した後、ForgeCertのようなツールを使用して有効な証明書を生成できます:
証明書偽造の対象ユーザーは、プロセスが成功するためにアクティブであり、Active Directoryで認証できる必要があります。 krbtgtなどの特別なアカウントのための証明書を偽造することは効果がありません。
この偽造された証明書は、指定された終了日まで有効であり、ルートCA証明書が有効である限り(通常、5年から10年以上)、マシンにも有効です。これにS4U2Selfを組み合わせることで、攻撃者はCA証明書が有効である限り、任意のドメインマシンで持続性を維持できます。 さらに、この方法で生成された証明書は、CAがそれらを認識していないため、取り消すことはできません。
ローグCA証明書を信頼する - DPERSIST2
NTAuthCertificates
オブジェクトは、そのcacertificate
属性内に1つ以上のCA証明書を含むように定義されており、Active Directory(AD)が利用しています。ドメインコントローラーによる検証プロセスは、認証中の証明書の発行者フィールドに指定されたCAに一致するエントリをNTAuthCertificates
オブジェクトで確認します。一致が見つかった場合、認証が進行します。
攻撃者は、自己署名のCA証明書をNTAuthCertificates
オブジェクトに追加できますが、このADオブジェクトを制御している必要があります。通常、Enterprise Adminグループのメンバーと、フォレストルートのドメインのDomain AdminsまたはAdministratorsにのみ、このオブジェクトを変更する権限が与えられます。彼らはcertutil.exe
を使用してcertutil.exe -dspublish -f C:\Temp\CERT.crt NTAuthCA126
というコマンドを使用するか、PKI Health Toolを使用してNTAuthCertificates
オブジェクトを編集できます。
この機能は、以前にForgeCertを使用して証明書を動的に生成する方法と組み合わせて使用される場合に特に関連があります。
悪意のある構成ミス - DPERSIST3
AD CSコンポーネントのセキュリティ記述子の変更を通じて持続性を確保する機会は豊富です。"Domain Escalation"セクションで説明されている変更は、昇格アクセス権を持つ攻撃者によって悪用される可能性があります。これには、以下のような重要なコンポーネントに「制御権限」(例:WriteOwner/WriteDACLなど)を追加することが含まれます:
CAサーバーのADコンピューターオブジェクト
CAサーバーのRPC/DCOMサーバー
CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>
内の子孫ADオブジェクトまたはコンテナ(たとえば、証明書テンプレートコンテナ、認証局コンテナ、NTAuthCertificatesオブジェクトなど)デフォルトでまたは組織によって(たとえば、組み込みのCert Publishersグループとそのメンバーなど)ADグループにAD CSの制御権限が委任されている
悪用の例として、ドメイン内で昇格権限を持つ攻撃者が、デフォルトの**User
証明書テンプレートにWriteOwner
権限を追加し、その権限の主体として自分自身を設定することが挙げられます。これを悪用するために、攻撃者はまずUser
テンプレートの所有権を自分自身に変更します。その後、mspki-certificate-name-flag
をテンプレートでENROLLEE_SUPPLIES_SUBJECT
を有効にするために1に設定し、ユーザーがリクエストでサブジェクト代替名を提供できるようにします。その後、攻撃者はテンプレートを使用して登録し、代替名としてドメイン管理者**名を選択し、取得した証明書をDAとして認証に使用できます。
Last updated