Hashcat完全ガイド:仕組み・攻撃モード・実践コマンドと最適化(深堀解説)

概要:Hashcatとは何か

Hashcat(ハッシュキャット)は、ハッシュ化されたパスワードや認証情報を復元(クラック)するための高性能なツール群です。主にGPUを利用した並列処理で高速に候補文字列をハッシュ化して照合することで、パスワード解析を行います。セキュリティ監査、フォレンジック、パスワードリカバリ、研究用途で広く利用されていますが、倫理的・法的な制約内でのみ使用すべきツールでもあります。

基本概念と主要コンポーネント

  • ハッシュモード(-m):解析対象のハッシュ形式(MD5・NTLM・bcrypt・WPAなど)を指定する数値コード。正しいモードを指定しないと解析できません。
  • 攻撃モード(-a):辞書攻撃、マスク(ブルートフォース)攻撃、ハイブリッドなど、候補生成方法を選びます。
  • ルールエンジン:辞書ベースの候補に対して変形ルール(大文字化、数字付加など)を適用することで候補空間を拡張します。
  • GPUアクセラレーション:OpenCL(および環境によりCUDA)を活用し、GPUの並列性を使って高速にハッシュ計算を行います。
  • potfile:既にクラックしたパスワードを保存するファイル。再解析時の重複作業を避けるために用います。

攻撃モードの詳細と用途

  • 辞書攻撃(-a 0):ワードリストをそのまま試す。簡単で実務で最もよく使われる。
  • 組み合わせ攻撃(-a 1):複数のリストを組み合わせて生成する。例えば姓+数字など。
  • マスク攻撃(-a 3):文字種と桁数を指定して総当たり的に試す。パスワードポリシーが分かっている場合に有効。
  • ハイブリッド攻撃(-a 6 / -a 7):辞書+マスクやマスク+辞書を組み合わせる。辞書の末尾に数字列を付加するような場合に適す。
  • ルールベース:辞書の各エントリに対してルール群を適用して変形した候補を生成。柔軟性が高く効率的。

代表的なコマンド例と解説

基本構文は「hashcat -m ハッシュ種別 -a 攻撃モード ハッシュファイル 候補源 オプション」です。実例:

  • 辞書攻撃(NTLMを例):
    hashcat -m 1000 -a 0 hashes.txt wordlist.txt -o cracked.txt --potfile-path=hashcat.pot

  • ルール適用:
    hashcat -m 0 -a 0 hashes.txt wordlist.txt -r rules/best64.rule

  • マスク攻撃(8桁数字):
    hashcat -m 0 -a 3 hashes.txt ?d?d?d?d?d?d?d?d

  • WPA/WPA2(キャプチャファイルを22000形式で):
    hashcat -m 22000 capture.22000 wordlist.txt

  • ベンチマークと性能確認:
    hashcat --benchmark

注:上記の「-m」の数値はハッシュ種類を示します。使用前に環境のhashcatバージョンで対応するモード番号を確認してください。

ルール、マスク、カスタム文字セットの使い方

  • ルール(rules/*.rule):文字列変形ルールを記述したファイル。最速で効果の高いルールセット(best64、rockyou-30000など)がよく使われます。
  • マスクシンタックス:?l(小文字)、?u(大文字)、?d(数字)、?s(記号)、?a(全て)、?1〜?4(ユーザー定義文字セット)。例:-1 ?l?d ?1?1?1?1 は英小文字と数字の4文字。
  • 組み合わせ:辞書+ルール、辞書+マスクなどを用い、現実的なパスワード生成を優先して探索します。

パフォーマンス最適化と運用上の工夫

  • ワークロードプロファイル(-w):1〜4でGPUの使用率を調整。高負荷になるほど速度は上がるが他プロセスに影響。
  • 最適化カーネル(-O):高速化されたカーネルを使う。高速だがパスワード長などに制限がある場合がある。
  • セッション管理(--session / --restore):長時間のジョブを途中保存・再開するために必須。
  • potfile管理:既知のクラック結果をpotfileに蓄積しておくと重複検査を省ける。ただし共有環境では機密漏洩に注意。
  • ベンチマークとチューニング:--benchmarkでGPUごとの性能を確認し、カーネルやワークサイズを調整する。

実務での利用ケースと注意点

  • 使用目的:セキュリティ監査(パスワード強度評価)、フォレンジックでのパスワード回復、脆弱性研究。
  • 法的・倫理的制約:対象の明確な許可がない環境での使用は違法です。企業内で利用する場合でもポリシーと同意が必要です。
  • データ管理:ハッシュやクラック結果は機密情報となるため、安全に保管・廃棄すること。

トラブルシューティングのヒント

  • デバイス検出エラー:GPUドライバやOpenCLランタイムの非互換が原因。ドライバを最新版に更新し、hashcatの互換性情報を確認する。
  • 低速なハッシュレート:ワークロード(-w)、最適化(-O)、カーネル選択、PCIe帯域幅などを見直す。
  • 正しいハッシュ形式の識別:ハッシュが変形(塩付き、丸められている等)しているとマッチしない。フォーマットを正確に判定する。

Hashcatの周辺ツールとエコシステム

  • hashcat-utils(変換ツール群)やルール集(例:rockyouベースのルール)など、エコシステムが成熟しています。
  • フォーマット変換ツール(例:PCAP→22000)やマスク生成ツール(maskprocessor 等)と組み合わせて運用することが多いです。

まとめと推奨プラクティス

Hashcatは強力かつ柔軟なパスワード解析ツールであり、正しい使い方と最適化を行えば非常に効果的です。一方で、法的・倫理的責任を伴うため、必ず許可された範囲で運用し、結果データの保護に努めてください。日常的には以下を推奨します:

  • 解析前に必ず許可を得ること(書面が望ましい)。
  • 公式ドキュメントと最新のリリースノートを確認してモード番号や機能差異に対応すること。
  • ベンチマークと小規模テストで最適な設定を見つけ、長時間ジョブはセッション管理で安全に実行すること。

参考文献