Hydra 基本コマンドを学ぶ

HydraBeginner
オンラインで実践に進む

はじめに

この実験(Lab)では、多用途のパスワードクラッキングツールである Hydra の基本的なコマンドとテクニックを学びます。ユーザー名 (-l/-L)、パスワード (-p/-P)、ポート (-s) の指定など、主要なオプションを使用した基本的なコマンド構造を調べ、テストサーバーに対する簡単な SSH 攻撃を練習します。

この演習では、ターゲットの設定、攻撃の実行、および出力の解釈について説明します。この実験を完了することで、ネットワークサービスに対する基本的なブルートフォース試行における Hydra のコア機能に関する実践的な経験を積むことができます。

重要:この実験はデスクトップインターフェース用に設計されています。シングルターミナルインターフェースではコマンドを実行しないでください。

Hydra コマンド構造の理解

このステップでは、ブルートフォース攻撃を通じてパスワードセキュリティをテストするための強力なツールである Hydra の基本的なコマンド構造を調べます。開始する前に、Hydra が弱い資格情報を特定するために、ネットワークサービスに対してさまざまなユーザー名とパスワードの組み合わせを体系的に試すことを理解しておくことが重要です。

基本的な Hydra コマンドは、次のパターンに従います。

hydra [[[-l LOGIN | -L FILE] [-p PASS | -P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-SuvV46] [service://server[:PORT][/OPT]]

各部分が何をするのかを理解するために、最も一般的に使用されるオプションを分解してみましょう。

  • -l または -L: これらを使用すると、テスト用の単一のユーザー名 (-l) または複数のユーザー名を含むファイル (-L) を指定できます。
  • -p または -P: ユーザー名と同様に、これらを使用すると、単一のパスワード (-p) またはファイルからの複数のパスワード (-P) をテストできます。
  • -t: Hydra が同時に実行する試行回数(並列スレッド)を制御します。
  • -s: テスト対象のサービスが標準のポート番号を使用しない場合に重要です。
  • -vV: 攻撃中に詳細な進捗情報を表示します。
  • -o: 後で確認するために、結果を指定されたファイルに保存します。

Hydra が正しく動作していることを確認し、利用可能なすべてのオプションを確認するために、ヘルプメニューを表示する簡単なコマンドから始めます。

hydra -h
hydra help menu

これを実行すると、Hydra のオプションとコマンドの完全なリストが表示されます。この出力は、ツールが正しくインストールされ、セキュリティテスト演習の準備ができていることを確認します。ヘルプメニューは、作業中に特定のコマンド構文を確認する必要がある場合にも役立つリファレンスです。

ターゲットホストとポートの指定

このステップでは、Hydra を使用する際にターゲットホストとポートを指定する方法を学びます。これは、攻撃を正しいサービスに向けるために不可欠です。封筒に宛名を書くようなものだと考えてください。メッセージを届けるには、正しい宛先 (IP/ホスト名) と特定のメールボックス (ポート) が必要です。

Hydra でターゲット情報を指定するための基本的な形式は次のとおりです。

hydra [options] < service > :// < target > [:port]

各コンポーネントを分解してみましょう。

  • <service>: 攻撃対象のプロトコルまたはサービス (例:ssh、ftp、http)。これは、Hydra にどのような種類の認証を試みるかを指示します。
  • <target>: ターゲットサーバーの IP アドレスまたはホスト名。これは、アクセスしようとしている建物の住所のようなものです。
  • [:port]: オプションのポート番号。サービスは通常、標準ポート (SSH の場合は 22 など) で実行されますが、セキュリティのために別のポートに移動されることもあります。

練習として、ポート 22 で localhost (127.0.0.1) で実行されているテスト SSH サーバーを使用します。つまり、自分のマシンを攻撃していることになり、学習には安全です。ターゲット指定を確認するには、次のコマンドを試してください。

hydra -vV -l testuser -p testpass ssh://127.0.0.1:22
hydra test command

このテストコマンドで何が起こっているかを見てみましょう。

  • -vV は、Hydra に詳細な出力を表示させ、何が起こっているかを確認できるようにします。
  • -l testuser は、テストユーザー名を指定します。
  • -p testpass は、テストパスワードを提供します。
  • ssh://127.0.0.1:22 は、Hydra にローカルマシンで SSH 認証を試みるように指示します。

注:これは、構文を説明するためのテストコマンドにすぎません。各部分がどのように組み合わさるかを理解したら、後のステップで実際の資格情報を使用します。

ユーザー名とパスワードオプションの使用

このステップでは、Hydra がブルートフォース攻撃の認証資格情報をどのように処理するかを調べます。Hydra は、ターゲットシステムへのログインを試みる際に、どのような組み合わせを試す必要があるかを知る必要があるため、これらのオプションを理解することが重要です。

Hydra は、資格情報を指定するための 3 つの主要な方法を提供しており、それぞれがさまざまなシナリオに適しています。

  1. 単一資格情報テスト (迅速な検証に役立ちます):
hydra -l username -p password ssh://127.0.0.1

このコマンドは、SSH サービスに対して正確に 1 つのユーザー名/パスワードの組み合わせを試します。

  1. リストベースのテスト (辞書攻撃に一般的です):
hydra -L usernames.txt -P passwords.txt ssh://127.0.0.1

ここで、Hydra は usernames.txt のユーザー名と passwords.txt のパスワードのすべての可能な組み合わせを試します。

  1. ペアの資格情報ファイル (ユーザー名とパスワードが直接リンクされている場合):
hydra -C creds.txt ssh://127.0.0.1

これは、各行にコロン (username:password) で区切られたユーザー名とパスワードが含まれるファイルを使用します。

これらのオプションを練習するために、テストファイルを作成しましょう。まず、一般的な管理アカウントを含む単純なユーザー名リストを作成します。

echo -e "admin\nroot\ntestuser" > usernames.txt

次に、実際のシステムでよく見られるいくつかの弱いパスワードを含むパスワードリストを作成します。

echo -e "password\n123456\nadmin123" > passwords.txt

これで、詳細な出力 (-vV) を使用してテストコマンドを実行し、Hydra がこれらのファイルをどのように処理するかを確認できます。

hydra -vV -L usernames.txt -P passwords.txt ssh://127.0.0.1
hydra test command

-vV フラグは、Hydra に詳細な出力を表示させ、攻撃の進行状況を観察し、各ステップで何が起こっているかを理解できるようにします。

シンプルな SSH 攻撃コマンドの実行

このステップでは、これまでのすべての学習を組み合わせて、Hydra を使用して完全な SSH ブルートフォース攻撃を実行します。以前に準備した資格情報を使用して、localhost (127.0.0.1) で実行されているテスト SSH サーバーを使用します。この実践的な演習は、Hydra が SSH サービスに対してさまざまなユーザー名とパスワードの組み合わせをどのように体系的に試すかを理解するのに役立ちます。

攻撃を開始する前に、ターゲットのセットアップが正常に機能していることを確認しましょう。手動 SSH 接続を試みて、サービスが実行されていることを確認します。

ssh testuser@127.0.0.1

(パスワードの入力を求められたら、「Ctrl+C」を入力してセッションに戻ります)

この手動テストは、SSH サービスがアクティブであり、接続試行に応答していることを確認するのに役立ちます。Hydra が実行されると、同様の接続試行が行われますが、複数の試行でプロセスが自動化されます。

LabEx VM は、環境変数 PASSWORDlabex のパスワードを提供します。テスト用にパスワードファイルに追加しましょう。

重要:以下のコマンドはデスクトップインターフェースで実行してください。そうしないと、PASSWORD 環境変数が取得できません。

echo "labex" > usernames.txt
echo -e "$PASSWORD" >> passwords.txt
environment variable

次に、実際の Hydra 攻撃コマンドを実行しましょう。これは、ユーザー名リスト、パスワードリスト、およびターゲット情報など、準備したすべてのコンポーネントをまとめる場所です。

hydra -vV -L usernames.txt -P passwords.txt -t 4 ssh://127.0.0.1
hydra test command

各パラメーターが何をするかを分解してみましょう。

  • -vV: 詳細出力を有効にして、Hydra の進行状況をリアルタイムで確認できるようにします。
  • -L usernames.txt: 試行する可能性のあるユーザー名を含むファイルを指定します。
  • -P passwords.txt: テストする可能性のあるパスワードを含むファイルを指定します。
  • -t 4: 使用する並列接続 (スレッド) の数を設定します。
  • ssh://127.0.0.1: ターゲットを localhost の SSH サービスとして識別します。

このコマンドは、ユーザー名とパスワードのリストからすべての組み合わせを体系的にテストします。制御されたテスト環境では、これは意図的に有効な資格情報を見つけることに失敗しますが、Hydra が組み合わせをどのように処理するかを正確に確認できます。詳細な出力には、Hydra が行う各試行が表示され、ブルートフォースプロセスを理解するのに役立ちます。

Hydra が失敗した試行を自動的に処理し、次の組み合わせを続行することに注目してください。これは、手動テストと比較した自動化ツールの力を示しています。Hydra がテストファイル内のすべての可能な組み合わせを処理するため、このプロセスにはしばらく時間がかかる場合があります。

コマンド出力の確認

このステップでは、SSH 攻撃を実行した後に Hydra の出力を読み取り、理解する方法を調べます。出力は攻撃が成功したかどうかを示し、貴重なデバッグ情報を提供するので、これは重要です。初心者として、結果の主要な成功指標を特定することを学びます。

ステップ 4 で SSH 攻撃コマンドを実行したとき、Hydra は次のような出力を生成しました。

[DATA] attacking ssh://127.0.0.1:22/
[VERBOSE] Resolving addresses ... done
[STATUS] 80.00 tries/min, 80 tries in 00:01h, 19 to do in 00:01h
[22][ssh] host: 127.0.0.1   login: testuser   password: testpass
1 of 1 target successfully completed, 1 valid password found

各部分の意味を分解してみましょう。

  1. [DATA] 行は、攻撃対象のサービスとアドレスを示しています。
  2. [STATUS] は、攻撃の進行状況に関するリアルタイムの統計を提供します。
  3. 最も重要な行は、次のような形式で見つかった資格情報を表示します:[port][service] host: IP login: username password: password
  4. 最後の行は、攻撃結果を要約しています。

ドキュメント化と後の分析のために、-o オプションを使用して Hydra の出力をファイルに保存できます。これにより、テスト結果の永続的な記録が作成されます。

hydra -vV -L usernames.txt -P passwords.txt -t 4 -o results.txt ssh://127.0.0.1

コマンドが完了したら、保存された結果を次のように表示できます。

cat results.txt
hydra test command

このファイルには、ターミナルで表示されたのと同じ出力が含まれており、後で調査結果を確認したり、チームメンバーと共有したりできます。

まとめ

この実験では、Hydra を使用してパスワードクラッキング攻撃を実行するための基本的なコマンドとテクニックを学習しました。この演習では、-l/-L および -p/-P フラグを使用したユーザー名/パスワードの指定、-s を使用したポート構成、および基本的な Hydra インストールの検証を含む、コアコマンド構文を扱いました。

また、実践的な SSH 攻撃の例を通じて、<service>://<target>[:port] 形式を使用したターゲット指定も練習しました。これらの基本的なスキルにより、適切なコマンド構造とターゲット定義を理解しながら、基本的な Hydra 操作を実行できます。