9.6 KiB
AD CS ドメイン永続性
AWSハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert)をご覧ください!
HackTricksをサポートする他の方法:
- HackTricksにあなたの会社を広告掲載したい、またはHackTricksをPDFでダウンロードしたい場合は、サブスクリプションプランをチェックしてください!
- 公式PEASS & HackTricksグッズを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションをチェックする
- 💬 Discordグループに参加するか、テレグラムグループに参加するか、Twitter 🐦 @carlospolopmでフォローする。
- HackTricksとHackTricks CloudのgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する。
盗まれたCA証明書での証明書偽造 - DPERSIST1
証明書がCA証明書であることをどうやって判断できますか?
- CA証明書はCAサーバー自体に存在し、その秘密鍵はマシンDPAPIによって保護されています(OSがTPM/HSM/その他のハードウェアを保護に使用していない限り)。
- 証明書のIssuerとSubjectは、両方とも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-flag
を1に設定してENROLLEE_SUPPLIES_SUBJECT
を有効にします(つまり、ユーザーがリクエストにSubject Alternative Nameを指定できるようにします)。その後、攻撃者はテンプレートに登録し、代替名としてドメイン管理者**の名前を指定し、DAとして認証に使用するための証明書を使用することができます。
参考文献
- このページの情報はすべてhttps://www.specterops.io/assets/resources/Certified_Pre-Owned.pdfから取得しました
AWSのハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert)をご覧ください!
HackTricksをサポートする他の方法:
- HackTricksに広告を掲載したい、またはHackTricksをPDFでダウンロードしたい場合は、サブスクリプションプランをチェックしてください!
- 公式PEASS & HackTricksグッズを入手してください
- The PEASS Familyを発見してください。私たちの独占的なNFTsのコレクションです
- 💬 Discordグループに参加するか、テレグラムグループに参加するか、Twitter 🐦 @carlospolopmをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出して、あなたのハッキングのコツを共有してください。