Hashcat でカスタムルールを作成する

Kali LinuxBeginner
オンラインで実践に進む

はじめに

Hashcat は強力で汎用性の高いパスワードリカバリツールです。その最も効果的な機能の 1 つは、ルールベースの攻撃であり、これにより単語リストに対して操作を実行して、膨大な数のパスワード候補を作成できます。事前に作成されたルールファイルを使用する代わりに、特定のターゲットに合わせて独自のカスタムルールを作成できます。

この実験では、Hashcat のルール構文の基本を学び、カスタムルールファイルをゼロから作成します。単語の最初の文字を大文字にし、年を追加するルールを記述し、このカスタムルールファイルをサンプルのパスワードクラッキング攻撃で使用します。

Append '$' や Prepend '^' のような基本的なルール構文を学ぶ

このステップでは、Hashcat のルールの基本的な構文について学びます。ルールは、単語リストの単語をどのように操作するかを Hashcat に指示する、単純な単一文字のコマンドです。最も基本的なルールには、文字の先頭に追加する(prepend)および末尾に追加する(append)ためのものがあります。

  • ^x: 単語の先頭に文字 x を追加します。
  • $x: 単語の末尾に文字 x を追加します。

完全な攻撃を実行せずにこれらのルールがどのように機能するかを確認するには、--stdout オプションを使用できます。これにより、ルール操作の出力が直接ターミナルに出力されます。

まず、append ルールをテストしてみましょう。各単語の末尾に数字 1 を追加する一時的なルールファイルを作成します。

echo '$1' > temp_rule.txt

次に、このルールを使用して、wordlist.txt に対して Hashcat を実行します。--force フラグは、VM のようなサポートされていない環境を検出した場合でも Hashcat を実行させるために使用されます。

hashcat --force --stdout wordlist.txt -r temp_rule.txt

リストの単語に 1 が追加されたものが出力されるはずです。

password1

次に、prepend ルールをテストしてみましょう。文字 A を先頭に追加するルールを作成します。

echo '^A' > temp_rule.txt

この新しいルールで Hashcat を再度実行します。

hashcat --force --stdout wordlist.txt -r temp_rule.txt

出力には、単語の先頭に文字 A が表示されるようになります。

Apassword

理解を深めるために、他の文字でも自由に試してみてください。完了したら、一時ファイルを削除できます。

rm temp_rule.txt

新しいカスタムルールファイルの作成

このステップでは、攻撃に使用するすべてのカスタムルールを保持する、新しい空のファイルを作成します。ルールファイルには、わかりやすくするために .rule 拡張子を付けるのが一般的です。

現在の作業ディレクトリである ~/projectlabex.rule という名前のファイルを作成します。touch コマンドを使用すると、簡単に空のファイルを作成できます。

ターミナルで次のコマンドを実行してください。

touch labex.rule

ファイルが正常に作成されたことを確認するには、ls コマンドを使用してディレクトリの内容を一覧表示できます。

ls

出力には、hashes.txt および wordlist.txt ファイルとともに、labex.rule が一覧表示されるはずです。

hashes.txt  labex.rule  wordlist.txt

これで、カスタムルール用の専用ファイルが準備できました。

最初の文字 'c' を大文字にするルールを追加する

このステップでは、labex.rule ファイルに最初のルールを追加します。一般的なパスワードのパターンとして、単語の最初の文字を大文字にすることがあります。Hashcat にはこのための特定のルールがあります。

  • c: 単語の最初の文字を大文字にし、他のすべての文字を小文字にします。

このルールを labex.rule ファイルに追加します。echo コマンドと単一のリダイレクト > を組み合わせることで、ファイルに内容を書き込み、以前の内容を上書きすることができます。

echo 'c' > labex.rule

それでは、新しいルールファイルをテストして、その効果を確認しましょう。プレビューのために、再度 --stdout オプションを使用します。

hashcat --force --stdout wordlist.txt -r labex.rule

出力は、c ルールで指定されたとおり、最初の文字が大文字になった単語 password になるはずです。

Password

これで、最初のカスタムルールを正常に作成し、テストすることができました。

年号 '$2 $0 $2 $4' を追加するルールを追加する

このステップでは、ルールをより複雑にします。複数のルールコマンドを 1 行に組み合わせることで、より具体的なパスワード候補を作成できます。ここでは、最初の文字を大文字にするだけでなく、例として 2024 のような年号を追加するようにルールを変更します。

特定の文字を追加するには、$ コマンドの後に文字を続けます。例えば、$2 は数字の 2 を追加します。文字列 2024 を構築するには、2、次に 0、次に 2、最後に 4 を追加する必要があります。

結合されたルールは次のようになります:c $2 $0 $2 $4。これは、Hashcat に最初に大文字化 (c) を実行し、次に指定された文字を順番に追加するように指示します。

この新しく、より強力なルールで labex.rule ファイルを更新しましょう。

echo 'c $2 $0 $2 $4' > labex.rule

それでは、更新されたルールファイルをテストして、結合されたコマンドの結果を確認しましょう。

hashcat --force --stdout wordlist.txt -r labex.rule

出力は、大文字化された単語の後に年号 2024 が続くはずです。

Password2024

これにより、ルールを連鎖させて、複雑でターゲットを絞ったパスワードパターンを作成する方法を示すことができます。

サンプル攻撃でカスタムルールファイルをテストする

このステップでは、完成したカスタムルールファイル labex.rule を使用して、実際のパスワードクラッキング攻撃を実行します。hashes.txt ファイルで提供されているサンプル MD5 ハッシュをターゲットにします。

攻撃コマンドは、ハッシュタイプ、攻撃モード、ハッシュファイル、単語リスト、そして最後にカスタムルールファイルを指定します。

  • -m 0: ハッシュタイプが MD5 であることを指定します。
  • -a 0: 攻撃モードが「ストレート」または辞書攻撃であることを指定します。
  • hashes.txt: クラックするハッシュが含まれるファイルです。
  • wordlist.txt: ベースとして使用する辞書ファイルです。
  • -r labex.rule: 単語リストに適用するカスタムルールファイルを指定します。

攻撃を開始するには、次のコマンドを実行します。

hashcat --force -m 0 -a 0 hashes.txt wordlist.txt -r labex.rule

Hashcat が起動し、単語 password にルール c $2 $0 $2 $4 を適用して Password2024 を生成し、それをハッシュ化して hashes.txt のハッシュと比較します。一致が見つかり、クラックされたパスワードが報告されます。

攻撃が完了した後(非常に高速なはずです)、--show オプションを使用してクラックされたパスワードを表示できます。

hashcat --force -m 0 --show hashes.txt

出力には、ハッシュとそのクラックされたプレーンテキストパスワードが表示されます。

a915550249347678553a332349443648:Password2024

おめでとうございます。カスタムルールを正常に作成し、それを使用してパスワードをクラックすることができました!

まとめ

この実験では、Hashcat でカスタムルールを作成するための基本的なスキルを習得しました。まず、文字を先頭に追加する (^) および末尾に追加する ($) 基本的な構文を理解しました。次に、独自のルールファイル labex.rule を作成し、徐々に複雑なルールを記述しました。

単語の最初の文字を大文字にする (c) ルールを記述し、次にコマンドを連鎖させて年号 ($2 $0 $2 $4) を追加するように拡張しました。最後に、このカスタムルールを実践的な攻撃シナリオで適用し、MD5 ハッシュを正常にクラックしました。

この知識は、Hashcat の強力なルールエンジンを習得するための足がかりとなり、高度にターゲットを絞った効率的なパスワードクラッキング戦略を作成できるようになります。