Hashcat で PMKID ハッシュを解析する

Beginner
オンラインで実践に進む

はじめに

この実験では、強力で汎用性の高いパスワード解析ツールである Hashcat を使用して、WPA/WPA2 PMKID(Pairwise Master Key Identifier)ハッシュを解析する基本を学びます。PMKID は WPA/WPA2 認証プロセスの一部であり、クライアントが存在しなくてもアクセスポイントからキャプチャできる場合があります。PMKID の解析は、完全な 4 ウェイハンドシェイクを解析するよりも効率的なことが多いです。

ハッシュファイルの準備から Hashcat を使用した辞書攻撃の実行まで、プロセス全体を順を追って説明します。この実践的な経験により、管理された教育的な環境でパスワード解析がどのように機能するかを実践的に理解できます。この実験のすべての活動は、教育目的のみを目的としています。

PMKID キャプチャを Hashcat 互換フォーマットに変換する

このステップでは、Hashcat が PMKID ハッシュを解析するために必要なフォーマットについて学びます。通常、PMKID は生のネットワークキャプチャファイル(例:.pcapngファイル)から抽出されます。hcxpcapngtoolのようなツールを使用して、キャプチャを Hashcat が処理できるプレーンテキストハッシュフォーマットに変換します。

これを行うためのコマンドは次のようになります。 hcxpcapngtool -o <output_hash_file> <input_capture_file.pcapng>

この実験では、スムーズなプロセスを確保するために、この変換はすでに完了しています。結果のハッシュは、現在のディレクトリ(~/project)にあるpmkid.hashという名前のファイルに保存されています。

このファイルの構造を理解するために、その内容を確認しましょう。catコマンドを使用してファイルの内容を表示します。

cat pmkid.hash

PMKID ハッシュを表す単一行である以下の出力が表示されます。

d5b6c18645897310626525389ebb3461*a0b1c2d3e4f5*f9e8d7c6b5a4*4d795377656574486f6d65

このフォーマットは PMKID*MAC_AP*MAC_STA*SSID_HEX です。各部分はアスタリスクで区切られており、Hashcat に攻撃を実行するために必要なすべての情報を提供します。

WPA-PMKID 用の正しい Hashcat モード(-m 16800)を選択する

このステップでは、Hashcat で PMKID ハッシュを解析するための正しいモードを特定します。Hashcat は数百種類のハッシュアルゴリズムをサポートしており、それぞれに固有のモード番号が割り当てられています。正しいモードを指定することは、Hashcat が正しく機能するために不可欠です。

サポートされているすべてのハッシュタイプとその対応するモードのリストは、hashcatコマンドの--helpオプションを使用して見つけることができます。リストを絞り込むには、出力をgrepにパイプし、「PMKID」のような特定のキーワードで検索できます。

WPA-PMKIDのモードを見つけるには、次のコマンドを実行します。

hashcat --help | grep "WPA-PMKID"

出力には関連するハッシュモードが表示されます。

16800 | WPA-PMKID-PBKDF2                                     | Network Protocols

出力からわかるように、WPA-PMKID-PBKDF2のモード番号は16800です。このモード番号を Hashcat コマンドの-mオプションと共に使用します。

ハッシュファイルと共に Hashcat コマンドを構築する

このステップでは、hashcatコマンドの構築を開始します。辞書攻撃の基本的な構文は hashcat [options] <hash_file> <wordlist_file> です。

これまでに、2 つの重要なコンポーネントを特定しました。

  1. ハッシュモード:-m 16800
  2. ハッシュファイル:pmkid.hash

これらを組み合わせましょう。-aオプションを使用して攻撃モードを指定する必要もあります。辞書攻撃はモード0なので、-a 0を使用します。これはデフォルトの攻撃モードですが、明示的に指定するのが良い習慣です。

ハッシュモードとハッシュファイルのみでコマンドを実行してみましょう。これは失敗しますが、構文を確認し、Hashcat が次に何を期待しているかを確認するのに良い方法です。

hashcat -m 16800 pmkid.hash

Hashcat は起動し、その後、この攻撃タイプに必要な引数が不足しているため、使用法メッセージが表示されて終了します。

hashcat (v6.2.6) starting...

* Device #1: WARNING! Kernel exec timeout is not disabled.
...
Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...

Try --help for more help.

エラーは、デフォルトの攻撃モード(辞書)では、単語リストまたはディレクトリが必要であることを示しています。これは、これまでのコマンド構造が正しいことを確認し、次のステップに直接進みます。単語リストの提供です。

辞書攻撃用の単語リストを指定する

このステップでは、単語リストを追加して Hashcat コマンドを完成させます。辞書攻撃は、指定されたファイル(「単語リスト」または「辞書」)から各単語を取得し、それをハッシュに対する潜在的なパスワードとしてテストすることで機能します。

この実験では、~/projectディレクトリにwordlist.txtという名前の小さな単語リストファイルが用意されています。その内容を確認しましょう。

cat wordlist.txt

短い潜在的なパスワードのリストが表示されます。

secret
123456
password123
qwertyuiop
labex

これらの単語のいずれかが、私たちのハッシュの正しいパスワードです。これで、前のステップのコマンドに単語リストファイル名を追加することで、完全なコマンドを構築できます。

完全なコマンドは次のとおりです。hashcat -m 16800 -a 0 pmkid.hash wordlist.txt

  • -m 16800: WPA-PMKID ハッシュタイプを指定します。
  • -a 0: 辞書攻撃モードを指定します。
  • pmkid.hash: 解析するハッシュを含むファイルです。
  • wordlist.txt: パスワード候補を含む辞書ファイルです。

最終ステップでは、このコマンドを実行してハッシュを解析します。

Hashcat を実行し、解析結果を確認する

このステップでは、完全な Hashcat コマンドを実行し、出力を解析して解析されたパスワードを見つけます。すべてをまとめて解析プロセスを開始する時です。

ターミナルで完全なコマンドを実行します。

hashcat -m 16800 -a 0 pmkid.hash wordlist.txt

Hashcat は初期化され、セッション情報が表示され、wordlist.txtからパスワードのテストが開始されます。単語リストは非常に小さいため、プロセスはほぼ瞬時に完了します。正しいパスワードが見つかると、Hashcat はそれを表示し、ステータスを「Cracked」と報告します。

出力は次のようになります。

...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: WPA-PMKID-PBKDF2
Hash.Target......: d5b6c18645897310626525389ebb3461*a0b1c2d3e4f5*...
Time.Started.....: ...
Time.Estimated...: 0 secs
Guess.Base.......: File (wordlist.txt)
...
Recovered........: 1/1 (100.00%) Digests
...

d5b6c18645897310626525389ebb3461*a0b1c2d3e4f5*f9e8d7c6b5a4*4d795377656574486f6d65:password123

All hashes have been recovered.
...

最も重要な行は d5b6c18645897310626525389ebb3461*...:password123 で、元のハッシュの後にコロンと解析されたパスワード password123 が表示されます。

Hashcat は解析されたパスワードを自動的に保存します。攻撃を再度実行せずに以前に解析されたハッシュを表示するには、--showオプションを使用できます。

hashcat -m 16800 pmkid.hash --show

このコマンドは、解析されたハッシュとパスワードのペアを即座に表示します。

d5b6c18645897310626525389ebb3461*a0b1c2d3e4f5*f9e8d7c6b5a4*4d795377656574486f6d65:password123

まとめ

PMKID ハッシュの解析に成功したこと、おめでとうございます!この実験では、Hashcat の実践的な経験を積み、辞書攻撃に関わる重要なステップを学びました。

以下の方法を習得しました。

  • PMKID ハッシュの Hashcat 互換フォーマットを認識する。
  • 特定のハッシュタイプに適した Hashcat モードを特定する(WPA-PMKID の場合は-m 16800)。
  • 辞書攻撃用の完全な Hashcat コマンドを構築する(-a 0)。
  • ハッシュファイルと単語リストを使用して攻撃を実行する。
  • 出力を解析し、--showオプションを使用して解析されたパスワードを表示する。

この実験では小さく単純な例を使用しましたが、同じ原則は実際のシナリオにも適用され、そこでははるかに大きな単語リストとより強力なハードウェアが使用されます。ここで学んだスキルは、パスワードセキュリティと倫理的ハッキングの実践を理解するための強固な基盤を提供します。