Mimikatz徹底解説:機能、使い方から対策まで 🛡️

セキュリティツール

Windows環境における強力なツールを理解し、セキュリティ対策に活かす

はじめに – Mimikatzとは?

Mimikatz(ミミカッツ)は、フランスのセキュリティ研究者 Benjamin Delpy 氏によって開発された、Windowsのセキュリティを調査・学習するために作成された強力なツールです。元々は、Windowsの認証メカニズムがどのように機能するかを実証し、その脆弱性を理解することを目的としていました。

しかし、その強力な機能が悪用されることも多く、特にWindows環境に侵入した攻撃者が、さらなる権限昇格や内部ネットワークでの活動拡大(ラテラルムーブメント)を行うために頻繁に使用するツールとして知られています。主な機能としては、メモリ上にキャッシュされているユーザーのパスワード(平文またはハッシュ形式)、Kerberosチケットなどを抽出することが挙げられます。

⚠️ 重要:倫理的・法的注意喚起

Mimikatzは非常に強力なツールであり、その使用は許可された環境でのセキュリティテストや教育目的に限定されるべきです。許可なく他者のシステムやネットワークに対してMimikatzを使用することは、不正アクセス行為やその他の法的責任を問われる可能性があります。絶対に悪用しないでください。 この記事は、防御側の視点からMimikatzの脅威を理解し、適切な対策を講じることを目的としています。

この記事では、Mimikatzが持つ機能、基本的な使い方、悪用された場合のシナリオ、そして最も重要な防御策について詳しく解説していきます。

Mimikatzの主な機能

Mimikatzはモジュールベースのアーキテクチャを採用しており、各モジュールが特定の機能を提供します。以下に主要なモジュールとその機能をまとめます。

モジュール名 主な機能 詳細
privilege プロセス権限の操作 Mimikatzが他のプロセス(特にLSASS)にアクセスするために必要なデバッグ権限などを取得します。privilege::debug が代表的なコマンドです。
sekurlsa メモリ上の認証情報抽出 LSASS (Local Security Authority Subsystem Service) プロセスのメモリ空間から、ログオン中のユーザーのパスワード(平文、ハッシュ)、PIN、Kerberosチケットなどを抽出します。sekurlsa::logonpasswords が最もよく使われるコマンドの一つです。🔑
kerberos Kerberosチケット操作 メモリからKerberosチケットを抽出 (kerberos::list)、ファイルとしてエクスポート、または現在のセッションにインジェクト (kerberos::ptt – Pass-the-Ticket) することができます。また、ドメイン管理者権限があれば、Golden Ticket (kerberos::golden) を生成し、任意のユーザーになりすますことも可能です。
lsadump SAMデータベース、LSA Secretsダンプ SAM (Security Account Manager) データベースからローカルアカウントのパスワードハッシュ (NTLMハッシュ) を抽出 (lsadump::sam – 要SYSTEM権限) したり、LSA Secrets (サービスアカウントのパスワード、キャッシュされたドメイン認証情報など) をダンプ (lsadump::lsa) したりします。
crypto 暗号化関連操作 システムにインストールされている証明書や秘密鍵の一覧表示・エクスポート、CNG (Cryptography API: Next Generation) や CryptoAPI 関数の操作などを行います。
vault Windows Vault 操作 Windowsの資格情報マネージャー (Credential Manager / Windows Vault) に保存されている資格情報 (Webサイトのパスワード、ネットワーク資格情報など) を一覧表示・抽出します。vault::list で内容を確認できます。
dpapi DPAPI (Data Protection API) 操作 DPAPIで保護されたデータ (多くのアプリケーションがパスワード保存に利用) を、ユーザーのマスターキーなどを使用して復号します。
misc その他の便利機能 システム権限 (SYSTEM) でコマンドプロンプトを起動 (misc::cmd) したり、様々なシステム情報を取得したりする機能が含まれます。
token トークン操作 プロセスのアクセストークンを操作し、権限昇格や他のユーザーへのなりすまし (token::elevate, token::steal) を行います。
event イベントログ操作 イベントログの消去 (event::clear) など、フォレンジック対策に関連する機能を提供します。

これらの機能は、単独でも強力ですが、組み合わせて使用されることで、攻撃者はシステムやドメイン全体を掌握することが可能になります。

Mimikatzの基本的な使い方

ここでは、Mimikatzの基本的な使い方を解説します。繰り返しますが、これらの操作は必ず許可されたテスト環境で行ってください。

入手方法

Mimikatzはオープンソースであり、通常は開発者である Benjamin Delpy 氏の GitHubリポジトリ から最新版がダウンロードできます。ただし、多くのアンチウイルスソフトウェアはMimikatzを悪意のあるソフトウェア(ハッキングツール)として検知し、ダウンロードや実行をブロックします。テスト環境で利用する場合は、一時的にアンチウイルスを無効にするか、特定の除外設定を行う必要があります。

実行方法

Mimikatzの多くの機能、特に他のプロセスのメモリにアクセスする機能(例: sekurlsa モジュール)を利用するには、管理者権限が必要です。さらに、privilege::debug コマンドを実行してデバッグ権限を有効にする必要があります。

Mimikatzは主に以下の2つの方法で実行できます。

  1. インタラクティブモード: mimikatz.exe を管理者として実行すると、mimikatz # というプロンプトが表示され、コマンドを対話的に入力できます。終了するには exit と入力します。
  2. コマンドライン実行: 実行したいコマンドを引数として渡すことも可能です。複数のコマンドを実行したい場合は、各コマンドを引用符で囲み、最後に exit を指定します。
    .\mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"

権限昇格 (privilege::debug)

多くの強力なコマンドを実行するための前提条件として、デバッグ権限を取得する必要があります。これは privilege::debug コマンドで実行します。

mimikatz # privilege::debug
Privilege '20 SeDebugPrivilege' OK

OK と表示されれば、権限の取得に成功しています。これにより、LSASSプロセスなど、通常はアクセスできないシステムプロセスへのアクセスが可能になります。

認証情報取得 (sekurlsa::logonpasswords)

Mimikatzの最も有名で強力な機能の一つが、LSASSプロセスのメモリから認証情報を抽出する sekurlsa::logonpasswords コマンドです。

mimikatz # sekurlsa::logonpasswords

このコマンドを実行すると、現在システムにログオンしている(または最近ログオンした)ユーザーの認証情報が表示されます。表示される情報には以下のようなものが含まれます(システムのバージョンや設定によります):

  • ユーザー名
  • ドメイン名
  • ログオンサーバー
  • ログオンタイプ (インタラクティブ、ネットワークなど)
  • セキュリティパッケージ (Negotiate, NTLM, Kerberos, WDigest など)
  • 認証情報:
    • 平文パスワード: WDigestが有効な場合や、特定の条件下で見えることがあります。⚠️
    • NTLMハッシュ: Windows認証で広く使われるパスワードハッシュ。Pass-the-Hash攻撃に使われます。
    • SHA1ハッシュ: NTLMハッシングプロセスの一部。
    • Kerberosチケット: TGT (Ticket Granting Ticket) やサービスチケット。Pass-the-Ticket攻撃に使われます。
    • PINなど

例えば、以下のような出力が得られることがあります(一部抜粋、簡略化):

Authentication Id : 0 ; 99999 (00000000:0001869f)
Session           : Interactive from 1
User Name         : alice
Domain            : CONTOSO
Logon Server      : DC01
Logon Time        : 2025/04/01 15:00:00
SID               : S-1-5-21-......
        msv :
         [00000003] Primary
         * Username : alice
         * Domain   : CONTOSO
         * NTLM     : 8846f7eaee8fb117ad06bdd830b7586c
         * SHA1     : 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b
        wdigest :
         * Username : alice
         * Domain   : CONTOSO
         * Password : (null)  <-- ここに平文パスワードが表示されることがある
        kerberos :
         * Username : alice
         * Domain   : CONTOSO
         * Password : (null)  <-- ここに平文パスワードが表示されることがある
         * Tickets :
           krbtgt/CONTOSO.LOCAL @ CONTOSO.LOCAL (0x......) ; ...
           cifs/SERVER01.CONTOSO.LOCAL @ CONTOSO.LOCAL (0x......) ; ...
        tspkg :
         * Username : alice
         * Domain   : CONTOSO
         * Password : (null)

この情報を使えば、攻撃者は他のシステムへアクセスしたり、権限を昇格させたりすることが可能になります。

注意: 近年のWindowsバージョンでは、LSA保護 (PPL) や Credential Guard などのセキュリティ機能により、sekurlsa::logonpasswords によるメモリからの情報窃取が困難または不可能になっています(詳細は対策セクションで後述)。

Kerberosチケット操作

Active Directory環境ではKerberos認証が広く使われており、MimikatzはKerberosチケットを悪用する機能も提供します。

  • kerberos::list: 現在のセッションまたはシステムにキャッシュされているKerberosチケットを一覧表示します。
    mimikatz # kerberos::list
  • kerberos::ptt <ticket_file.kirbi>: Pass-the-Ticket (PtT) 攻撃を行います。他のユーザーやシステムから窃取したKerberosチケット(.kirbiファイル形式でエクスポートされていることが多い)を、現在のセッションにインジェクトします。これにより、チケットの所有者になりすましてリソースにアクセスできます。
    mimikatz # kerberos::ptt c:\path\to\ticket.kirbi
  • kerberos::golden: Golden Ticket 攻撃を行います。これは非常に強力な攻撃で、ドメインのKerberosキー配布センター(KDC)サービスアカウントである krbtgt のパスワードハッシュを知っていれば、任意のユーザーとして、任意の期間有効なTGT(Ticket Granting Ticket)を偽造できます。このチケットを使えば、ドメイン内のほぼすべてのリソースにアクセス可能になります。実行には krbtgt のハッシュ、ドメイン名、ドメインSIDなどが必要です。
    mimikatz # kerberos::golden /user:Administrator /domain:contoso.local /sid:S-1-5-21-... /krbtgt:<krbtgt_hash> /id:500 /ptt
    このコマンドは、AdministratorユーザーになりすますGolden Ticketを生成し、現在のセッションにインジェクト(/ptt オプション)します。

ハッシュ取得

直接パスワードが取得できない場合でも、パスワードハッシュを取得できれば、Pass-the-Hash (PtH) 攻撃やオフラインでのパスワードクラッキングに利用できます。

  • lsadump::sam: ローカルのSAMデータベースからローカルアカウントのLMハッシュおよびNTLMハッシュをダンプします。通常、SYSTEM権限が必要です。このコマンドは、LSASSメモリではなく、レジストリハイブ(SAM、SYSTEM)にアクセスします。
    mimikatz # lsadump::sam
  • lsadump::lsa: LSA Secretsと呼ばれる領域から、キャッシュされたドメイン認証情報やサービスアカウントのパスワードなどをダンプします。これもSYSTEM権限が必要です。
    mimikatz # lsadump::lsa /patch

取得したNTLMハッシュは、他のツール(PsExecなど)と組み合わせてPass-the-Hash攻撃を行い、パスワードを知らなくても他のWindowsマシンに管理者としてログオンするために使われることがあります。

その他の便利なコマンド例

  • misc::cmd: 新しいコマンドプロンプトをSYSTEM権限で起動します。
  • vault::list: Windowsの資格情報マネージャーの内容を表示します。
  • token::elevate: 利用可能な権限の高いトークンを探して権限昇格を試みます(例: UACバイパス)。
  • event::clear: セキュリティイベントログなどを消去し、攻撃の痕跡を隠蔽しようとします。

Mimikatzにはここで紹介した以外にも多くのモジュールとコマンドが存在します。詳細な機能については、公式のドキュメントやWikiを参照することをお勧めします。

Mimikatzが悪用された事例

Mimikatzはその強力さゆえに、サイバー攻撃、特に侵入後の内部活動において頻繁に悪用されています。攻撃者は、初期アクセスに成功した後、Mimikatzを使用して以下のような目的を達成しようとします。

  • 認証情報の窃取: システムメモリから平文パスワードやハッシュ、Kerberosチケットを抜き取り、他のアカウントやシステムへのアクセス権を得る。
  • 権限昇格: より高い権限を持つアカウント(特にドメイン管理者)の認証情報を窃取し、システムやドメイン全体に対する制御を掌握する。
  • ラテラルムーブメント (横展開): 窃取した認証情報やチケットを利用して、ネットワーク内の他のコンピュータへ次々に侵入を拡大する (Pass-the-Hash, Pass-the-Ticket)。
  • 永続性の確保: Golden Ticketなどを利用して、検知されにくいバックドアアクセスを維持する。

具体的な事例としては、以下のようなものがあります。

  • NotPetya (2017年): 2017年に世界中で猛威を振るったランサムウェア(ワイパー)であるNotPetyaは、EternalBlue/EternalRomance脆弱性を利用して初期侵入した後、内部ネットワークでの拡散(ラテラルムーブメント)のために、Mimikatzの機能を組み込んで認証情報を窃取し、PsExecやWMIと組み合わせて他のマシンに感染を広げました。この攻撃により、多くの企業が甚大な被害を受けました。
  • APT (Advanced Persistent Threat) 攻撃: 国家が関与するとされるような高度な攻撃グループ (APT) は、標的組織への侵入後、Mimikatzを標準的なツールキットの一部として利用し、ドメイン管理者権限の奪取や機密情報へのアクセスを試みます。Mimikatzによる認証情報窃取は、彼らが長期間にわたって潜伏し、目的を達成するための重要なステップとなることがよくあります。
  • ランサムウェア攻撃全般: 近年の多くのランサムウェア攻撃グループは、ネットワークに侵入後、Active Directoryのドメインコントローラーを侵害し、組織全体のシステムを暗号化することを目指します。この過程で、Mimikatzはドメイン管理者権限を含む特権アカウントの認証情報を窃取するために広く使われています。

これらの事例は、Mimikatzが単なる実験的なツールではなく、現実世界の深刻なサイバー攻撃において中心的な役割を果たすことがあるということを示しています。

Mimikatzへの対策 🛡️

Mimikatzによる脅威からシステムを保護するためには、多層的な防御アプローチが必要です。単一の対策だけでは不十分であり、複数の対策を組み合わせることが重要です。✅

対策 内容 Mimikatzへの効果
LSA保護 (PPL) の有効化 LSASSプロセスを保護されたプロセス (Protected Process Light) として実行させ、信頼されていないプロセスからのメモリアクセスをブロックします。(Windows 8.1/Server 2012 R2以降) sekurlsa::logonpasswords などによるLSASSメモリからの直接的な認証情報抽出を困難にします。
Credential Guard の有効化 仮想化ベースのセキュリティ (VBS) を利用して、LSASSが保存するNTLMハッシュやKerberos TGTなどの機密情報を隔離します。(Windows 10 Enterprise/Education, Windows Server 2016以降、特定のハードウェア要件あり) LSASSメモリからの認証情報窃取をさらに強力に防ぎます。Pass-the-Hash や Pass-the-Ticket 攻撃のリスクを大幅に低減します。非常に効果的な対策です。
最新のセキュリティパッチ適用 OSやアプリケーションの脆弱性を修正するパッチを迅速に適用します。 Mimikatz自体が脆弱性を利用するわけではありませんが、攻撃者がMimikatzを実行するための初期アクセスや権限昇格に脆弱性が悪用されるのを防ぎます。
強力なパスワードポリシーと多要素認証 (MFA) 推測されにくい複雑なパスワードの使用を強制し、定期的な変更を促します。重要なアカウントやリモートアクセスにはMFAを導入します。 万が一、ハッシュが漏洩しても、元のパスワードの推測を困難にします。MFAは、パスワードやチケットが窃取されても不正アクセスを防ぐための重要な防衛線となります。
最小権限の原則 ユーザーやサービスアカウントには、業務に必要な最小限の権限のみを付与します。管理者権限を持つアカウントの数を制限し、厳格に管理します。 Mimikatzの実行には通常管理者権限が必要です。一般ユーザーが侵害されても、Mimikatzを実行されるリスクを低減できます。ドメイン管理者権限の侵害リスクも低減します。
アプリケーション実行制御 AppLockerやWindows Defender Application Control (WDAC) などを使用し、許可されたアプリケーション以外(Mimikatzを含む)の実行を禁止します。 Mimikatzのバイナリがシステム上で実行されるのを直接的に防ぎます。
エンドポイント検知・対応 (EDR) / セキュリティ監視 EDRソリューションを導入し、Mimikatzの実行や、LSASSプロセスへの不審なアクセス、Pass-the-Hash/Ticket試行などの悪意のある活動を検知し、アラートを発報・対応します。セキュリティ情報イベント管理 (SIEM) でログを監視することも重要です。 Mimikatzの実行や関連する攻撃テクニックを早期に検知し、被害が拡大する前に対処する機会を提供します。
特権アクセス管理 (PAM) 特権アカウントのアクセスを厳格に管理・監視し、パスワードの定期的な自動変更(払い出し)やセッションの監視を行います。 特権アカウントの認証情報がMimikatzによって窃取・悪用されるリスクを低減します。
セキュリティ意識向上トレーニング 従業員に対して、フィッシング詐欺や不審なソフトウェアに関する教育を行い、セキュリティ意識を高めます。 攻撃者がMimikatzを実行するための初期アクセス(例: マルウェア感染)を防ぐ助けとなります。
krbtgtアカウントのパスワード定期変更 Active Directoryのkrbtgtアカウントのパスワードを定期的に(年に1〜2回程度)変更します。 万が一krbtgtのハッシュが漏洩した場合でも、古いハッシュを使ったGolden Ticket攻撃を無効化します。(二重に変更する必要がある点に注意)

これらの対策を組み合わせることで、Mimikatzによる攻撃のリスクを大幅に低減することができます。特に Credential Guard と LSA 保護は、Mimikatzの主要な機能に対する直接的な防御策として非常に有効です。

まとめ

Mimikatzは、Windowsの認証メカニズムの弱点を突く非常に強力なツールであり、攻撃者にとって価値の高い武器となっています。メモリから平文パスワードやハッシュ、Kerberosチケットなどを抽出し、権限昇格やラテラルムーブメントを容易にするその能力は、多くのサイバー攻撃で実証されています。

しかし、その脅威に対抗するための防御策も進化しています。Credential Guard、LSA保護、MFA、最小権限の原則、そして継続的な監視とパッチ適用といった対策を多層的に組み合わせることで、Mimikatzが悪用されるリスクを大幅に減らすことが可能です。

Mimikatzの機能を理解することは、単に攻撃手法を知るだけでなく、自社のシステムを守るためにどのような対策がなぜ必要なのかを深く理解する上で不可欠です。常に最新の脅威情報を把握し、適切なセキュリティ対策を講じ続けることが、安全なIT環境を維持するための鍵となります。🔑🛡️

コメント

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