はじめに
Hashcat は強力で人気のあるパスワードリカバリツールです。クラッキングセッションを実行する際、特に時間がかかる可能性のあるセッションでは、その進捗状況とパフォーマンスを監視することが非常に重要です。Hashcat は詳細なリアルタイムステータス画面を提供し、攻撃の速度、完了までの推定時間、ハードウェアパフォーマンスなどの洞察を与えてくれます。
この実験 (Lab) では、基本的な Hashcat セッションを開始し、そのリアルタイム統計を解釈する方法を学びます。これにより、パスワードクラッキングタスクが最適に実行されていることを確認するために、効果的に監視できるようになります。
Hashcat セッションの開始
このステップでは、Hashcat を使用してパスワードクラッキングセッションを開始します。~/project ディレクトリにある、事前に設定されたハッシュファイルと単語リストを使用します。
まず、使用するファイルを確認しましょう。hashes.txt ファイルには単一の MD5 ハッシュが含まれており、wordlist.txt ファイルには短いパスワード候補のリストが含まれています。
Hashcat で辞書攻撃を開始するための基本的なコマンドは hashcat -m <hash_type> -a <attack_mode> <hash_file> <wordlist_file> です。
-m 0はハッシュタイプが MD5 であることを指定します。-a 0は攻撃モードが「ストレート」または辞書攻撃であることを指定します。
次に、ターミナルを開き、以下のコマンドを実行してセッションを開始します。Hashcat が初期化され、ハッシュのクラッキングを試み始めます。
hashcat -m 0 -a 0 hashes.txt wordlist.txt
Hashcat の起動時に、以下のような出力が表示されます。現時点では詳細を気にする必要はありません。そのまま実行させておいてください。
hashcat (v6.2.x) starting...
...
OpenCL Platform #1: The pocl project
====================================
* Device #1: pthread-skylake-avx512, 2047/4095 MB (1023 MB allocatable), 2MCU
...
Session..........: hashcat
Status...........: Running
Hash.Name........: MD5
Hash.Target......: hashes.txt
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: XX.X kH/s (X.XXms) @ Accel:X Loops:X Thr:X Vec:X
Recovered........: 0/1 (0.00%) Digests
Progress.........: 0/5 (0.00%)
Rejected.........: 0/0 (0.00%)
Restore.Point....: 0/1 (0.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: password -> hashcat
Hardware.Mon.#1..: Temp: N/A Util: N/A Core: N/A Mem: N/A Bus: N/A
[s]tatus [p]ause [b]ypass [c]heckpoint [q]uit =>
セッションを実行させたまま、次のステップに進んでください。
「s」キーを押してステータス画面を表示する
このステップでは、実行中の Hashcat セッションから手動でステータスアップデートをリクエストする方法を学びます。
Hashcat は実行中に、セッションを制御するためのキーボード入力を待ち受けます。出力の一番下には、[s]tatus [p]ause [b]ypass [c]heckpoint [q]uit => のようなプロンプトが表示されます。これは利用可能なコマンドを示しています。
最新の統計情報を取得するには、キーボードの s キーを押してから Enter キーを押すだけです。Hashcat はすぐに更新されたステータス画面をターミナルに出力します。
今すぐ s キーを押してみてください。
s
初期のステータスレポートと非常によく似た新しいテキストブロックが表示されます。これがリアルタイム統計画面であり、次のステップで詳しく見ていきます。
Session..........: hashcat
Status...........: Running
Hash.Name........: MD5
Hash.Target......: hashes.txt
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: XX.X kH/s (X.XXms) @ Accel:X Loops:X Thr:X Vec:X
Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.........: 4/5 (80.00%)
Rejected.........: 0/4 (0.00%)
Restore.Point....: 4/5 (80.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: labex -> labex
Hardware.Mon.#1..: Temp: N/A Util: N/A Core: N/A Mem: N/A Bus: N/A
Recovered や Progress のような値が変化していることに注意してください。
Speed、Progress、ETA フィールドの解釈
このステップでは、ステータス画面の最も重要な 3 つのメトリック、Speed、Progress、および ETA に焦点を当てます。これらのフィールドを理解することで、クラッキングセッションのパフォーマンスと期間を把握することができます。
各フィールドのサンプルステータス行を見てみましょう。
Speed.Dev.#1.........: XX.X kH/s (X.XXms)- Speed: この行は、各処理デバイス(CPU、GPU など)のクラッキング速度を示しており、
#1、#2のように識別されます。速度は 1 秒あたりのハッシュ数(H/s、kH/s、MH/s)で測定されます。数値が高いほど優れています。この例では、VM は CPU を使用しています。
- Speed: この行は、各処理デバイス(CPU、GPU など)のクラッキング速度を示しており、
Progress.........: 4/5 (80.00%)- Progress: これは、キー空間内の総数に対して、いくつの候補パスワードがテストされたかを示します。この例では、
4/5はwordlist.txtから 5 つの単語のうち 4 つがテストされたことを意味します。
- Progress: これは、キー空間内の総数に対して、いくつの候補パスワードがテストされたかを示します。この例では、
Time.Estimated...: 0 secs- ETA (Estimated Time of Arrival):
Time.Estimatedというラベルが付いたこのフィールドは、現在の攻撃がいつ完了するかを推定した値を提供します。これは、現在の速度とProgressフィールドに残っている作業量に基づいて計算されます。私たちのような非常に短いタスクの場合、すぐに 0 秒になります。
- ETA (Estimated Time of Arrival):
これらの 3 つのメトリックは、クラッキングセッションのパフォーマンスを迅速に把握するための概要を提供します。
Rejected および Restore.Point カウントの理解
このステップでは、ステータス画面の他のいくつかの便利なフィールド、Recovered、Rejected、および Restore.Point を調べます。
サンプル出力を再度見てみましょう。
Recovered........: 1/1 (100.00%) Digests- Recovered: これは結果にとって最も重要なフィールドです。いくつのハッシュが正常にクラックされたかを示します。ここでは、
1/1はターゲットファイル内の 1 つのハッシュが見つかったことを意味します。これが起こると、Hashcat はクラックされたパスワードをターミナルに出力します。
- Recovered: これは結果にとって最も重要なフィールドです。いくつのハッシュが正常にクラックされたかを示します。ここでは、
Rejected.........: 0/4 (0.00%)- Rejected: このカウンターは、単語リストまたはルールセットからいくつのパスワード候補がスキップされたかを追跡します。パスワードは、特定のハッシュタイプの長さまたは文字要件を満たしていない場合、拒否される可能性があります。単純な MD5 および辞書攻撃では、これは通常ゼロです。
Restore.Point....: 4/5 (80.00%)- Restore Point: これは、Hashcat が現在作業している単語リスト(またはキー空間)内の正確な位置を示します。セッションを停止してから再開する場合、Hashcat はこの復元ポイントを使用して、中断したところから続行し、最初からやり直す手間を省きます。
これらのフィールドを監視することで、成功したクラックを追跡し、単語リストに関する潜在的な問題を診断できます。
ハードウェアの温度と使用率の監視
この最後のステップでは、Hashcat ステータス画面のハードウェア監視セクションと、セッションを適切に終了する方法について学びます。
パスワードクラッキングは、ハードウェアを限界までプッシュする非常に集中的なタスクです。Hashcat には、システムの健全性を監視するための組み込み監視機能が含まれています。
ステータス出力の Hardware.Mon 行を見てみましょう。
Hardware.Mon.#1..: Temp: N/A Util: N/A Core: N/A Mem: N/A Bus: N/A- Temp: デバイスの温度を摂氏で表示します。
- Util: デバイスの使用率(ビジー具合)をパーセンテージで表示します。
- Core/Mem: デバイスのコアとメモリのクロック速度を表示します。
注意: 私たちの仮想化された実験環境では、Hashcat はホストのハードウェアセンサーに直接アクセスできないため、これらの値は N/A(適用外)として表示されます。専用 GPU を搭載した物理マシンでは、これらのフィールドにリアルタイムデータが表示され、過熱を防ぎ、安定したパフォーマンスを確保するために重要です。
短いセッションが完了し、ステータス画面を分析したので、Hashcat を終了する時間です。これを行うには、q を押し、次に Enter を押します。
q
Hashcat はセッションを停止し、コマンドプロンプトに戻ります。
まとめ
この実験を完了したことをお祝いします!
Hashcat の実行セッションを効果的に監視する方法を学びました。これで、以下のことができるようになりました。
- Hashcat を使用した基本的な辞書攻撃の開始。
sコマンドを使用してリアルタイムのステータス画面を表示する方法。- Speed、Progress、ETA などの主要なパフォーマンスメトリックの解釈。
- Recovered、Rejected、および Restore Point のカウントの意味の理解。
- ハードウェア監視フィールドとその重要性の認識。
これらのスキルは、あらゆるパスワードクラッキングタスクを管理するための基本であり、進捗状況を追跡し、問題を診断し、ハードウェアが安全かつ効率的に動作していることを確認できます。


