マスク攻撃と辞書攻撃のパフォーマンス比較
この最終ステップでは、先ほど実行したマスクアタックと、従来の辞書アタックを比較し、それぞれの長所を理解します。
辞書アタック(-a 0)は、パスワードがワードリスト内に存在する場合、非常に高速です。前のステップのパスワードを含む dict.txt という小さな辞書ファイルがあります。
pattern_hash.txt に対して辞書アタックを実行してみましょう。
hashcat -a 0 -m 1000 pattern_hash.txt dict.txt
labex が dict.txt に含まれているため、Hashcat はほぼ瞬時にそれを見つけます。
hashcat (v6.2.5) starting
OpenCL API (OpenCL 2.0 pocl 1.8 Linux, None+Asserts, RELOC, LLVM 11.1.0, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
=====================================================================================================================================
* Device #1: pthread-Intel(R) Xeon(R) Platinum 8575C, 6808/13680 MB (2048 MB allocatable), 4MCU
Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256
INFO: All hashes found in potfile! Use --show to display them.
Started: Sat Oct 11 16:05:20 2025
Stopped: Sat Oct 11 16:05:20 2025
Hashcat は、ハッシュが既に見つかり、potfile に保存されたことを通知します。クラックされたパスワードを確認するには、--show オプションを使用できます。
hashcat -a 0 -m 1000 pattern_hash.txt dict.txt --show
出力:
2bf7d33ec706798e0308f5df34bc7d2f:labex
では、マスクアタックが有利になるのはいつでしょうか?辞書アタックは、正確なパスワードがワードリストに存在する場合にのみ成功します。もしパスワードが testx であり、それが辞書になかった場合、アタックは失敗します。
しかし、ステップ 4 のマスクアタック(?l?l?l?l?l)は、辞書に存在するかどうかに関係なく、パターンに適合するすべてのパスワードを体系的に生成・テストするため、成功します。labex、testx、hello などをテストします。
結論:
- 辞書アタック (
-a 0): 一般的なパスワードをクラックする場合、または高品質でターゲットを絞ったワードリストを持っている場合に最適です。高速ですが、辞書の内容によって制限されます。
- マスクアタック (
-a 3): パスワードの構造やパターン(例:既知のパスワードポリシーから)がわかっている場合に最適です。辞書アタックよりもはるかに包括的であり、純粋な総当たり攻撃(brute-force attack)よりも無限に効率的です。