はじめに
Hashcat は強力で汎用性の高いパスワードリカバリツールです。効果的に使用するには、まずそのコマンドライン構造を理解する必要があります。単一の Hashcat コマンドは、プログラムに何をクラックし、どのように行うかを正確に伝えるいくつかの主要なコンポーネントで構成されています。
この実験 (lab) では、Hashcat コマンドの基本的な構造を学びます。実行可能ファイル、ハッシュタイプ、攻撃モード、入力ハッシュファイル、入力単語リストの 5 つの必須コンポーネントをカバーしながら、完全で機能的なコマンドを少しずつ構築していきます。最終的には、辞書ベースの攻撃のための基本的な Hashcat コマンドを構築できるようになります。
Hashcat コマンドのコアコンポーネントを特定する
このステップでは、Hashcat コマンドの基本的な構文を特定します。この構造を理解することが、ツールの使用に向けた最初のステップです。
典型的な Hashcat コマンドは、次のパターンに従います。
hashcat [options] hashfile [wordlist/mask]
これらのコンポーネントを分解してみましょう。
hashcat: これは実行可能プログラム自体の名前です。[options]: これらはプログラムの動作を変更するフラグです。最も重要なオプションは、ハッシュタイプ用の-mと攻撃モード用の-aです。これらは次のステップで説明します。hashfile: これは、クラックしたいハッシュまたはハッシュが含まれるファイルへのパスです。[wordlist/mask]: これは、辞書攻撃用の単語リストや、総当たり攻撃用のマスクパターンなどの入力ファイルへのパスです。
まず、組み込みのヘルプメニューを表示して、ツールの感触をつかみましょう。このコマンドは、利用可能なすべてのオプションと情報を一覧表示します。
ターミナルで次のコマンドを実行します。
hashcat --help
Hashcat のすべての機能の詳細な長い出力が表示されます。今後のステップでこの情報に戻ります。
hashcat (v6.2.6) starting in help mode
Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...
...
-a, --attack-mode | Num | Attack-mode, see references below.
-m, --hash-type | Num | Hash-type, see references below.
...
これで基本的な構造を理解したので、コマンドの構築を開始できます。
-m フラグでハッシュタイプを指定する
このステップでは、ターゲットのハッシュタイプを指定する方法を学びます。Hashcat は数百種類のハッシュアルゴリズムをサポートしており、どのアルゴリズムをクラックしようとしているのかを伝える必要があります。これは、-m フラグの後に数値コードを指定することで行います。
私たちの実験 (lab) 環境では、hashes.txt という名前のファイルが用意されており、MD5 ハッシュが含まれています。MD5 の正しいコードを見つけるには、hashcat --help の出力から検索できます。
grep コマンドを使用して、ヘルプテキストから "MD5" をフィルタリングします。
hashcat --help | grep MD5
出力には、MD5 に関連するすべてのハッシュタイプと、それに対応するコードが表示されます。
0 | MD5 | Raw Hash, Salted and/or Iterated
10 | md5($pass.$salt) | Raw Hash, Salted and/or Iterated
20 | md5($salt.$pass) | Raw Hash, Salted and/or Iterated
...
ご覧のとおり、標準的な MD5 ハッシュのコードは 0 です。これでコマンドに追加できます。現在のコマンドは次のようになります。
hashcat -m 0 ...
次のステップでは、攻撃モードを指定します。
-a フラグで攻撃モードを指定する
このステップでは、-a フラグを使用して攻撃モードを設定する方法を学びます。攻撃モードは、Hashcat にパスワードクラッキングに使用するメソッドを伝えます。
Hashcat はいくつかの攻撃モードを提供していますが、最も一般的なものは次のとおりです。
0: Straight (辞書攻撃) - ハッシュを単語リストと比較します。1: Combination - 2 つの異なる辞書から単語を組み合わせます。3: Brute-force (マスク攻撃) - 定義されたパターン (マスク) に基づいて、可能なすべての文字の組み合わせを試行します。
この実験 (lab) では、Straight (辞書) 攻撃を実行するため、攻撃モード 0 を使用します。すべての攻撃モードのリストは、ヘルプメニューで見つけることができます。
再度 grep を使用して、「Attack-Modes」セクションを見つけます。
hashcat --help | grep "Attack-Modes" -A 10
-A 10 フラグは、grep に一致した行の後ろ 10 行を表示するように指示し、完全なリストを提供します。
- [ Attack-Modes ] -
## | Mode
===+======
0 | Straight
1 | Combination
3 | Brute-force
6 | Hybrid dict + mask
7 | Hybrid mask + dict
これで攻撃モードを特定しました。コマンドに追加しましょう。コマンドは次のようになります。
hashcat -m 0 -a 0 ...
次に、クラックしたいハッシュを含むファイルを提供します。
入力ハッシュファイルを指定する
このステップでは、クラック対象のハッシュを含む入力ファイルを指定します。この引数はオプションの後ろに来ます。
この実験 (lab) のセットアップスクリプトは、現在のディレクトリ (~/project) に hashes.txt という名前のファイルを作成しました。このファイルには、1 つの MD5 ハッシュが含まれています。
cat コマンドを使用して、このファイルの内容を表示してみましょう。
cat hashes.txt
以下の出力が表示されるはずです。
5f4dcc3b5aa765d61d8327deb882cf99
これが、私たちがクラックするハッシュです。これをコマンドに追加するには、オプションの後にファイル名を指定するだけです。コマンドは次のようになります。
hashcat -m 0 -a 0 hashes.txt ...
最後のピースは、辞書攻撃に使用する単語リストを提供することです。
入力単語リストまたはマスクを指定する
この最終ステップでは、辞書攻撃に必要な最後のコンポーネントである単語リストを提供します。単語リストは、各行が潜在的なパスワードであるプレーンテキストファイルです。
実験 (lab) 環境には、wordlist.txt という名前のシンプルな単語リストが含まれています。その内容を確認してみましょう。
cat wordlist.txt
出力は次のようになります。
test
hello
password
123456
この単語リストは、Hashcat がハッシュに対してテストするために使用されます。単語リストファイルは、コマンドの最後の引数です。
それでは、完全なコマンドを組み立てて実行しましょう。
hashcat -m 0 -a 0 hashes.txt wordlist.txt
Hashcat が開始されます。ハッシュと単語リストは非常にシンプルなので、ほぼ瞬時に終了します。出力には、クラッキングセッションのステータスが表示されます。
...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 5f4dcc3b5aa765d61d8327deb882cf99
Time.Started.....: ...
Time.Estimated...: 0 secs (0.00ms)
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 496.9 kH/s (0.00ms) @ Accel:128 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 4/4 (100.00%)
Rejected.........: 0/4 (0.00%)
Restore.Point....: 4/4 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: test -> 123456
Hardware.Mon.#1..: Util: 99%
...
Status...........: Cracked の行は、成功を確認します。クラックされたパスワードを表示するには、--show フラグを付けて同じコマンドを再度実行します。
hashcat -m 0 -a 0 hashes.txt wordlist.txt --show
出力には、ハッシュとその対応するプレーンテキストパスワードが明確に表示されます。
5f4dcc3b5aa765d61d8327deb882cf99:password
おめでとうございます。これで、完全な Hashcat コマンドを構築して実行することができました!
まとめ
この実験 (lab) では、Hashcat の基本的なコマンド構造をゼロから構築することで学びました。辞書攻撃を使用して MD5 ハッシュをクラックすることに成功しました。
基本的な Hashcat コマンドの 5 つのコアコンポーネントを理解しました。
- 実行可能ファイル:
hashcat - ハッシュタイプ:
-mで指定します (例:MD5 の場合は-m 0)。 - 攻撃モード:
-aで指定します (例:辞書攻撃の場合は-a 0)。 - ハッシュファイル: ターゲットハッシュを含むファイル (例:
hashes.txt)。 - 単語リスト/マスク: 攻撃の入力 (例:
wordlist.txt)。
学んだ最終的なコマンド構造は次のとおりです:hashcat -m <ハッシュタイプ> -a <攻撃モード> <ハッシュファイル> <単語リスト>。この知識は、より高度な Hashcat 機能を探求するための強固な基盤となります。


