AD CS Certificate Theft
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
これは、https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdfの素晴らしい研究の盗難章の小さな要約です。
What can I do with a certificate
証明書を盗む方法を確認する前に、証明書が何に役立つかを見つけるための情報があります:
Exporting Certificates Using the Crypto APIs – THEFT1
インタラクティブデスクトップセッションでは、ユーザーまたはマシン証明書をプライベートキーと共に抽出することは簡単に行えます。特にプライベートキーがエクスポート可能な場合はそうです。これは、certmgr.msc
で証明書に移動し、右クリックしてすべてのタスク → エクスポート
を選択することで、パスワード保護された.pfxファイルを生成することで実現できます。
プログラムによるアプローチでは、PowerShellのExportPfxCertificate
コマンドレットや、TheWoverのCertStealer C#プロジェクトのようなツールが利用可能です。これらはMicrosoft CryptoAPI(CAPI)またはCryptography API: Next Generation(CNG)を使用して証明書ストアと対話します。これらのAPIは、証明書の保存と認証に必要なさまざまな暗号サービスを提供します。
ただし、プライベートキーがエクスポート不可に設定されている場合、通常CAPIとCNGはそのような証明書の抽出をブロックします。この制限を回避するために、Mimikatzのようなツールを使用できます。Mimikatzは、プライベートキーのエクスポートを可能にするために、各APIをパッチするcrypto::capi
およびcrypto::cng
コマンドを提供します。具体的には、crypto::capi
は現在のプロセス内のCAPIをパッチし、crypto::cng
はlsass.exeのメモリをターゲットにしてパッチを適用します。
User Certificate Theft via DPAPI – THEFT2
DPAPIに関する詳細情報は以下を参照してください:
DPAPI - Extracting PasswordsWindowsでは、証明書のプライベートキーはDPAPIによって保護されています。ユーザーおよびマシンのプライベートキーの保存場所が異なることを認識することが重要であり、ファイル構造はオペレーティングシステムによって使用される暗号APIに応じて異なります。SharpDPAPIは、DPAPIブロブを復号化する際にこれらの違いを自動的にナビゲートできるツールです。
ユーザー証明書は主にHKEY_CURRENT_USER\SOFTWARE\Microsoft\SystemCertificates
のレジストリに格納されていますが、一部は%APPDATA%\Microsoft\SystemCertificates\My\Certificates
ディレクトリにも見つかります。これらの証明書に対応するプライベートキーは、通常CAPIキーの場合は%APPDATA%\Microsoft\Crypto\RSA\User SID\
に、CNGキーの場合は%APPDATA%\Microsoft\Crypto\Keys\
に保存されています。
証明書とその関連するプライベートキーを抽出するためのプロセスは以下の通りです:
ユーザーのストアからターゲット証明書を選択し、そのキー ストア名を取得します。
対応するプライベートキーを復号化するために必要なDPAPIマスタキーを特定します。
プレーンテキストのDPAPIマスタキーを使用してプライベートキーを復号化します。
プレーンテキストのDPAPIマスタキーを取得するために、以下のアプローチを使用できます:
マスタキーファイルとプライベートキーファイルの復号化を効率化するために、SharpDPAPI の certificates
コマンドが有益です。このコマンドは、プライベートキーと関連する証明書を復号化するために、/pvk
、/mkfile
、/password
、または {GUID}:KEY
を引数として受け取り、その後 .pem
ファイルを生成します。
Machine Certificate Theft via DPAPI – THEFT3
WindowsによってレジストリのHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates
に保存されているマシン証明書と、%ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\RSA\MachineKeys
(CAPI用)および%ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\Keys
(CNG用)にある関連する秘密鍵は、マシンのDPAPIマスタキーを使用して暗号化されています。これらのキーはドメインのDPAPIバックアップキーで復号化することはできず、代わりにDPAPI_SYSTEM LSAシークレットが必要で、これはSYSTEMユーザーのみがアクセスできます。
手動での復号化は、Mimikatzでlsadump::secrets
コマンドを実行してDPAPI_SYSTEM LSAシークレットを抽出し、その後このキーを使用してマシンマスタキーを復号化することで実現できます。あるいは、前述のようにCAPI/CNGをパッチした後にMimikatzのcrypto::certificates /export /systemstore:LOCAL_MACHINE
コマンドを使用することもできます。
SharpDPAPIは、その証明書コマンドを使用してより自動化されたアプローチを提供します。/machine
フラグを昇格した権限で使用すると、SYSTEMに昇格し、DPAPI_SYSTEM LSAシークレットをダンプし、それを使用してマシンDPAPIマスタキーを復号化し、これらの平文キーをルックアップテーブルとして使用して任意のマシン証明書の秘密鍵を復号化します。
Finding Certificate Files – THEFT4
証明書は、ファイル共有やダウンロードフォルダなど、ファイルシステム内に直接見つかることがあります。Windows環境を対象とした最も一般的に遭遇する証明書ファイルの種類は、.pfx
および.p12
ファイルです。頻度は低いですが、.pkcs12
および.pem
拡張子のファイルも現れます。その他の注目すべき証明書関連のファイル拡張子には以下が含まれます:
プライベートキー用の
.key
証明書のみの
.crt
/.cer
証明書やプライベートキーを含まない証明書署名要求用の
.csr
Javaアプリケーションで使用される証明書とプライベートキーを保持する可能性のあるJavaキーストア用の
.jks
/.keystore
/.keys
これらのファイルは、PowerShellやコマンドプロンプトを使用して、前述の拡張子を探すことで検索できます。
PKCS#12証明書ファイルが見つかり、パスワードで保護されている場合、pfx2john.py
を使用してハッシュを抽出することが可能です。このスクリプトはfossies.orgで入手できます。その後、JohnTheRipperを使用してパスワードのクラッキングを試みることができます。
NTLM Credential Theft via PKINIT – THEFT5
与えられた内容は、PKINITを介したNTLM資格情報の盗難の方法、特にTHEFT5とラベル付けされた盗難方法について説明しています。以下は、受動態での再説明であり、内容は匿名化され、適用可能な場合は要約されています。
Kerberos認証をサポートしないアプリケーションのためにNTLM認証[MS-NLMP]を提供するために、KDCはPKCAが利用されるときに、特にPAC_CREDENTIAL_INFO
バッファ内の特権属性証明書(PAC)内にユーザーのNTLM一方向関数(OWF)を返すように設計されています。したがって、アカウントがPKINITを介して認証し、チケット授与チケット(TGT)を取得すると、現在のホストがTGTからNTLMハッシュを抽出してレガシー認証プロトコルを維持するためのメカニズムが本質的に提供されます。このプロセスは、NTLMプレーンテキストのNDRシリアライズされた表現であるPAC_CREDENTIAL_DATA
構造の復号化を含みます。
ユーティリティKekeoは、https://github.com/gentilkiwi/kekeoでアクセス可能であり、この特定のデータを含むTGTを要求できることが言及されており、ユーザーのNTLMの取得を容易にします。この目的のために使用されるコマンドは次のとおりです:
さらに、Kekeoはスマートカード保護された証明書を処理できることが記載されており、PINが取得できる場合に限ります。参考としてhttps://github.com/CCob/PinSwipeが挙げられています。同様の機能は、https://github.com/GhostPack/Rubeusで入手可能なRubeusでもサポートされていると示されています。
この説明は、PKINITを介したNTLM資格情報の窃取に関与するプロセスとツールを要約しており、PKINITを使用して取得したTGTを通じてNTLMハッシュを取得することに焦点を当て、これを容易にするユーティリティについて説明しています。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Last updated