はじめに
Hashcat は、パスワードハッシュのクラッキングに広く使用されている、有名で強力なパスワードリカバリツールです。その最も柔軟な機能の 1 つは、ハイブリッドアタックです。これは、単語リストアタックの速度と、ブルートフォース(またはマスク)アタックの網羅性を組み合わせたものです。この方法は、一般的な単語に基づいているが、数字や記号などの文字が追加または前置されて変更されたパスワードに対して特に効果的です。
この実験では、Hashcat のハイブリッドアタック機能の使用方法を学びます。ここでは、wordlist+mask と mask+wordlist の 2 つの主要なハイブリッドモードを探求します。この実験の終わりまでに、サンプルパスワードハッシュをクラッキングするために、これらのアタックを設定および実行する実践的な経験を積むことができます。
ハイブリッド Wordlist+Mask と Mask+Wordlist の違いを理解する
このステップでは、Hashcat の 2 つの主要なハイブリッドアタックモードの理論的な違いを学びます。この区別を理解することは、特定のパスワードパターンに対して正しい戦略を選択するために不可欠です。
ハイブリッド Wordlist+Mask (アタックモード 6)
-a 6 フラグで指定されるこのモードは、単語リストから各単語を取得し、定義されたマスクに基づいて文字を付加します。これは、ユーザーが基本単語の末尾に年や特殊文字を追加するような、パスワードに最適です。
- 例: 単語リストに
passwordが含まれており、マスクが?d?dの場合、Hashcat はpassword00、password01、password02など、password99までを試行します。
ハイブリッド Mask+Wordlist (アタックモード 7)
-a 7 フラグで指定されるこのモードは、その逆を行います。マスクで定義された文字を、単語リストの各単語の先頭に付加します。これは、ユーザーが基本単語の先頭に文字を追加する場合に役立ちます。
- 例: 単語リストに
passwordが含まれており、マスクが?d?dの場合、Hashcat は00password、01password、02passwordなど、99passwordまでを試行します。
このステップではコマンドは必要ありません。目標は、次のステップで適用する前に、これらの 2 つの基本的な概念を理解することです。
サンプルハッシュとベース単語リストの作成
このステップでは、アタックに必要なファイル、つまりサンプルパスワードハッシュとシンプルな単語リストを作成します。すべての操作は ~/project ディレクトリで行われます。
まず、クラッキング対象のハッシュが必要です。この実験では、MD5 ハッシュを使用します。パスワードは labex2024 であると仮定します。この文字列の MD5 ハッシュは 2d3c839a453c68206911871584a5f70f です。
hash.txt という名前のファイルを作成し、ハッシュを保存します。
echo "2d3c839a453c68206911871584a5f70f" > ~/project/hash.txt
cat コマンドを使用してファイルの内容を確認できます。
cat ~/project/hash.txt
以下の出力が表示されるはずです。
2d3c839a453c68206911871584a5f70f
次に、ターゲットパスワードのベース単語を含む単語リストが必要です。パスワードは labex2024 なので、ベース単語は labex です。この単語のみを含む wordlist.txt という名前の単語リストファイルを作成しましょう。
echo "labex" > ~/project/wordlist.txt
新しい単語リストの内容を確認します。
cat ~/project/wordlist.txt
出力は次のようになります。
labex
これで、ターゲットハッシュとベース単語リストが用意され、アタックの準備が整いました。
単語に数字を付加するハイブリッドアタックの実行
このステップでは、作成したハッシュをクラックするために、単語リスト + マスクモード (-a 6) を使用したハイブリッドアタックを実行します。パスワードは単語 labex の後に 4 桁の数字が続くという仮説に基づきます。
以下のコンポーネントを使用して hashcat コマンドを構築します。
-m 0: ハッシュタイプを指定します。これは MD5 です。-a 6: ハイブリッド単語リスト + マスクアタックモードを選択します。~/project/hash.txt: ターゲットハッシュを含むファイルです。~/project/wordlist.txt: ベースとなる単語リストです。?d?d?d?d: 付加するマスクです。?dは 1 桁の数字を表します。
ターミナルで以下のコマンドを実行します。
hashcat -m 0 -a 6 ~/project/hash.txt ~/project/wordlist.txt ?d?d?d?d
Hashcat が初期化され、クラッキングプロセスが開始されます。仮想化環境でのパフォーマンスに関する警告が表示されることがありますが、これは正常です。しばらくすると、Hashcat はパスワードを見つけます。
出力は以下のようになります(一部の詳細が異なる場合があります)。
...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 2d3c839a453c68206911871584a5f70f
Time.Started.....: ...
Time.Estimated...: 0 secs (0.00ms)
Guess.Base.......: File (~/project/wordlist.txt)
Guess.Mod........: Mask (?d?d?d?d)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: ... H/s (...)
Recovered........: 1/1 (100.00%) Digests
Progress.........: 10000/10000 (100.00%)
Rejected.........: 0/10000 (0.00%)
Restore.Point....: 1/1 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: labex1000 -> labex9999
Hardware.Mon.#1..: Temp: ...
2d3c839a453c68206911871584a5f70f:labex2024
Started: ...
Stopped: ...
Hashcat はハッシュを正常にクラックし、パスワード labex2024 を見つけました。
--show オプションを使用して、いつでもクラックされたパスワードを表示できます。
hashcat -m 0 --show ~/project/hash.txt
これにより、クラックされたハッシュとパスワードのペアが直接表示されます。
2d3c839a453c68206911871584a5f70f:labex2024
単語の前に数字を付加するハイブリッドアタックの実行
次に、別のハイブリッドモードであるマスク + 単語リスト (-a 7) を試してみましょう。このステップでは、パターンが前に付加された新しいハッシュをクラックしようとします。
新しいターゲットパスワードは 2024labex であると仮定します。この文字列の MD5 ハッシュは b68137c355d785422120884212515e86 です。
まず、この新しいハッシュで hash2.txt という名前の新しいハッシュファイルを作成します。
echo "b68137c355d785422120884212515e86" > ~/project/hash2.txt
このシナリオでは、ベース単語に 4 桁のマスクを前に付加するために、アタックモード -a 7 を使用する必要があります。コマンド構造は似ていますが、アタックモードが異なります。
以下のコマンドを実行します。
hashcat -m 0 -a 7 ~/project/hash2.txt ~/project/wordlist.txt ?d?d?d?d
Hashcat が再び開始されます。このパスワード構造に対して正しいアタックモードを選択したため、すぐにパスワードが見つかるはずです。
出力にはクラックされたパスワードが表示されます。
...
Session..........: hashcat
Status...........: Cracked
...
b68137c355d785422120884212515e86:2024labex
...
マスク + 単語リストモードを使用して、2 番目のハッシュを正常にクラックしました。
以前と同様に、--show オプションを使用して結果を表示できます。
hashcat -m 0 --show ~/project/hash2.txt
出力:
b68137c355d785422120884212515e86:2024labex
両方のハイブリッドモードの効果を比較する
この最後の実践ステップでは、特定のパスワードパターンに対して間違ったハイブリッドモードを使用した場合に何が起こるかを確認します。これにより、正しいアタック戦略を選択することの重要性が強調されます。
まず、マスク + 単語リスト (-a 7) モードを使用して、元のハッシュ (hash.txt、labex2024 用) をクラックしてみましょう。このモードは数字を前に付加しますが、このパスワードには正しくありません。
hashcat -m 0 -a 7 ~/project/hash.txt ~/project/wordlist.txt ?d?d?d?d
Hashcat は実行されますが、0000labex、0001labex などの候補を試します。正しいパスワードは labex2024 であるため、このアタックは失敗します。10,000 の可能性すべてを確認した後、プロセスは Exhausted ステータスで終了します。これは、成功せずにすべての組み合わせを試したことを意味します。終了を待つか、q を押して終了することができます。
次に、単語リスト + マスク (-a 6) モードを使用して、2 番目のハッシュ (hash2.txt、2024labex 用) をクラックしてみましょう。このモードは数字を後に付加しますが、このパスワードにも正しくありません。
hashcat -m 0 -a 6 ~/project/hash2.txt ~/project/wordlist.txt ?d?d?d?d
同様に、このアタックは labex0000、labex0001 などの候補を試み、これも失敗して Exhausted ステータスで終了します。
この実験は重要な点を実証しています。ハイブリッドアタックの成功は、パスワードの構造を正しく特定することに完全に依存します。間違ったモードを使用すると、正しいパスワードが得られずに時間とリソースが無駄になります。
まとめ
この実験では、Hashcat の強力なハイブリッドアタック機能に関する実践的な経験を積みました。予測可能なパターンに従うパスワードを効率的にクラックするために、単語リストとマスクを組み合わせる方法を学びました。
具体的には、以下のことを学びました。
- 2 つのハイブリッドアタックモードの基本的な違い:パターンを後方に付加するための単語リスト + マスク (
-a 6) と、パターンを前方に付加するためのマスク + 単語リスト (-a 7)。 - ターゲットハッシュファイルとベース単語リストを作成してアタックの準備をする方法。
- 両方のタイプのハイブリッドアタックを実行してパスワードを正常にクラックする方法。
- 推測されるパスワード構造に基づいて正しいアタックモードを選択することの重要な重要性。間違ったモードを使用すると失敗につながります。
ハイブリッドアタックは、あらゆるパスワード監査者のツールキットにおいて不可欠なテクニックであり、ターゲットを絞った方法と総当たり方法の間のスマートなバランスを提供します。


