Hydra で複数のターゲットを攻撃する

HydraHydraBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Hydra を使用して複数のターゲットを同時に攻撃する方法を学びます。この実験では、Hydra の機能を活用して、ターゲットホストのリストに対してパスワードクラッキングを試みることに焦点を当てています。

この実験では、IP アドレスまたはホスト名を含むターゲットリストファイルを作成し、-M オプションを使用してこのファイルを Hydra に読み込み、ターゲットに対して並列 SSH 攻撃を実行し、最後に出力を確認して複数のホストで成功したログインを特定する手順を案内します。この実践的な経験を通じて、侵入テストやセキュリティ監査のシナリオで Hydra を使用する実用的なスキルを身につけることができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/target_ip("Target IP Specification") hydra/HydraGroup -.-> hydra/target_service("Target Service Selection") hydra/HydraGroup -.-> hydra/ssh_attack("SSH Brute Force") hydra/HydraGroup -.-> hydra/task_limit("Task Limit Configuration") hydra/HydraGroup -.-> hydra/multiple_targets("Multiple Targets Attack") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") subgraph Lab Skills hydra/target_ip -.-> lab-550760{{"Hydra で複数のターゲットを攻撃する"}} hydra/target_service -.-> lab-550760{{"Hydra で複数のターゲットを攻撃する"}} hydra/ssh_attack -.-> lab-550760{{"Hydra で複数のターゲットを攻撃する"}} hydra/task_limit -.-> lab-550760{{"Hydra で複数のターゲットを攻撃する"}} hydra/multiple_targets -.-> lab-550760{{"Hydra で複数のターゲットを攻撃する"}} hydra/success_detection -.-> lab-550760{{"Hydra で複数のターゲットを攻撃する"}} end

ターゲットリストファイルの作成

このステップでは、ターゲットリストファイルを作成します。このファイルには、Hydra が接続してパスワードをクラッキングしようとする IP アドレスまたはホスト名のリストが含まれます。これは、侵入テストやセキュリティ監査のシナリオにおいて重要なステップです。

まず、ターゲットリストファイルが何であるかを理解しましょう。これは単純なテキストファイルで、各行がターゲットホストを表します。ターゲットホストは、IP アドレス(例:192.168.1.100)またはホスト名(例:example.com)です。

では、ターゲットリストファイルを作成しましょう。LabEx 仮想マシンにすでにインストールされている nano テキストエディタを使用します。

  1. nano エディタを開きます。

    nano ~/project/targets.txt

    このコマンドは、~/project ディレクトリに targets.txt という名前の新しいファイルを開きます。ファイルが存在しない場合、nano はそれを作成します。

  2. 以下の IP アドレスを targets.txt ファイルに追加します。各 IP アドレスは新しい行に記載する必要があります。

    192.168.1.100
    192.168.1.101
    192.168.1.102

    好きな IP アドレスを自由に使用して構いません。これらは単なる例です。実際のシナリオでは、これらをテストする許可を得たシステムの実際の IP アドレスに置き換えます。

  3. ファイルを保存して nano を終了します。これを行うには、Ctrl+X を押し、次に Y を押して保存を確認し、最後に Enter を押してファイル名を受け入れます。

  4. ファイルが作成され、正しい内容が含まれていることを確認します。cat コマンドを使用してファイルの内容を表示できます。

    cat ~/project/targets.txt

    入力した IP アドレスのリストが表示されるはずです。

    192.168.1.100
    192.168.1.101
    192.168.1.102

これで、~/project ディレクトリに targets.txt という名前のターゲットリストファイルが正常に作成されました。このファイルは、次のステップでターゲットを Hydra に読み込むために使用されます。

-M オプションでターゲットを読み込む

このステップでは、前のステップで作成したターゲットリストファイルを -M オプションを使用して Hydra に読み込む方法を学びます。-M オプションは、Hydra にターゲットホストのリストをファイルから読み取るよう指示します。これは、テストするターゲットが多数ある場合に特に便利です。

進む前に、-M オプションを使用した Hydra コマンドの構文について簡単に説明しましょう。基本的な構文は次の通りです。

hydra -M <target_file> <service> <options>

ここで:

  • <target_file> は、ターゲットホストのリストが含まれるファイルのパスです。
  • <service> は、攻撃したいサービス(例:ssh、ftp、http)です。
  • <options> は、ユーザー名、パスワードリストなど、使用したいその他のオプションです。

では、先ほど作成した targets.txt ファイルからターゲットを読み込む基本的な Hydra コマンドを構築しましょう。この例では、ssh サービスを使用します。また、ユーザー名とパスワードリストも指定します(デモンストレーション目的でダミーのパスワードリストを作成します)。

  1. ダミーのパスワードリストファイルを作成します。

    echo "password" > ~/project/passwords.txt

    このコマンドは、~/project ディレクトリに passwords.txt という名前のファイルを作成し、そこに "password" という単語を追加します。実際のシナリオでは、より包括的なパスワードリストを使用します。

  2. 次に、targets.txt ファイルからターゲットを読み込み、passwords.txt ファイルを使用してユーザー root の SSH パスワードをクラッキングしようとする Hydra コマンドを実行します。

    hydra -L ~/project/users.txt -P ~/project/passwords.txt -M ~/project/targets.txt ssh

    注意: このコマンドはおそらく失敗します。targets.txt ファイル内の IP アドレスで SSH サーバーが実行されていない可能性が高く、仮に実行されていたとしても、正しい資格情報を持っていない可能性があります。このステップは主に、ファイルからターゲットを読み込む方法を示すためのものです。

    エラーを回避するために、ほとんどのシステムに存在する可能性の高いユーザー名を含む users.txt ファイルを作成しましょう。

    echo "root" > ~/project/users.txt

    次に、Hydra コマンドを再実行します。

    hydra -L ~/project/users.txt -P ~/project/passwords.txt -M ~/project/targets.txt ssh

    接続拒否または資格情報が正しくないという関連エラーが表示される可能性が高いです。これは予想されることです。重要なのは、Hydra が targets.txt ファイルにリストされたターゲットに接続しようとしていることです。

    出力には、Hydra が targets.txt ファイル内の各 IP アドレスに接続しようとする様子が表示されます。各ターゲットに対してユーザー名 "root" とパスワード "password" を試します。これらはおそらく正しくないため、試行は失敗します。

このステップでは、Hydra の -M オプションを使用してファイルからターゲットを読み込む方法を成功裏に学びました。これは、大規模なパスワードクラッキング攻撃を行うための基本的なスキルです。

並列 SSH 攻撃の実行

このステップでは、Hydra を使用して並列 SSH 攻撃を実行する方法を学びます。攻撃を並列で実行することで、特に複数のターゲットを扱う場合、クラッキングプロセスが大幅に高速化されます。Hydra では、-t オプションを使用して実行する並列タスクの数を指定できます。

-t オプションは、Hydra が行う並列接続の数を制御します。スレッド数を増やすと攻撃が高速化されますが、ターゲットシステムと自システムにも負荷がかかります。特定の状況に適したバランスを見つけることが重要です。

前の Hydra コマンドを変更して、指定したスレッド数で SSH 攻撃を実行しましょう。

  1. 以下の Hydra コマンドを実行して、4 つのスレッドで SSH 攻撃を実行します。

    hydra -L ~/project/users.txt -P ~/project/passwords.txt -t 4 -M ~/project/targets.txt ssh

    このコマンドでは、-t 4 オプションが Hydra に 4 つの並列スレッドを使用するよう指示しています。これは、Hydra が同時に 4 つの異なるターゲットに接続しようとすることを意味します。

    再び、接続拒否または資格情報が正しくないという関連エラーが表示される可能性が高いです。これは予想されることです。このステップの目的は、-t オプションを使用して攻撃を並列で実行する方法を示すことです。

    出力には、Hydra が targets.txt ファイル内の IP アドレスに接続しようとする様子が表示されますが、今回は 4 つの同時接続で行われます。

  2. -t オプションの値を変えて実験してみましょう。スレッド数を増やして、攻撃速度にどのような影響があるかを確認してください。自システムとターゲットシステムのリソースに注意してください。適切な開始点として、スレッド数を 2 倍にすることができます。

    hydra -L ~/project/users.txt -P ~/project/passwords.txt -t 8 -M ~/project/targets.txt ssh

    出力を観察し、パフォーマンスの変化を記録してください。

重要な注意事項:

  • リソース使用量: スレッド数を増やすと、自システムの CPU とネットワーク使用量が増加します。システムのリソースを監視し、過負荷にならないようにしてください。
  • ターゲットシステムの負荷: スレッド数を過度に増やすと、ターゲットシステムが圧倒され、クラッシュまたは応答しなくなる可能性があります。ターゲットシステムを尊重し、過度のスレッドを使用しないようにしてください。
  • 検知: 多数のスレッドで攻撃を実行すると、侵入検知システム (IDS) によって検知されやすくなります。

このステップでは、-t オプションを使用して Hydra で並列 SSH 攻撃を実行する方法を成功裏に学びました。これは、パスワードクラッキング攻撃を高速化するための重要な技術です。

複数ホストの出力を確認する

このステップでは、複数のホストを攻撃する際に Hydra からの出力を解釈する方法を学びます。Hydra の出力は、攻撃試行の成否に関する貴重な情報を提供します。

Hydra がパスワードを正常にクラッキングすると、以下の形式で資格情報が表示されます。

[<service>] host: <host>  login: <username>   password: <password>

例えば:

[ssh] 192.168.1.100:22 login: root   password: password

これは、Hydra がホスト 192.168.1.100 上のユーザー root の SSH パスワードを正常にクラッキングし、パスワードが password であることを示しています。

Hydra がパスワードをクラッキングできない場合、通常は「Login failed」(ログイン失敗)や「Invalid credentials」(無効な資格情報)などのエラーメッセージが表示されます。

前のステップからの出力を分析してみましょう。

  1. 前のステップの Hydra コマンドを再実行します。

    hydra -L ~/project/users.txt -P ~/project/passwords.txt -t 4 -M ~/project/targets.txt ssh
  2. 出力を調べます。おそらく、各ターゲットホストに対して「Login failed」または「Invalid credentials」のメッセージが連続して表示されるでしょう。これは、使用しているユーザー名とパスワードがおそらく正しくないためです。

    出力は次のようになるかもしれません。

    Hydra v9.6 (c) 2024 by van Hauser/THC - use freely but only for legal purposes.
    Hydra starting at 2024-10-27 10:00:00
    [DATA] 1 task, 3 servers, 1 userfiles, 1 passfiles -> max 1 task per 1 server, overall 1 task per attack
    [DATA] attacking ssh://192.168.1.100:22
    [STATUS][ssh] 192.168.1.100:22 - Login failed for user 'root'
    [DATA] attacking ssh://192.168.1.101:22
    [STATUS][ssh] 192.168.1.101:22 - Login failed for user 'root'
    [DATA] attacking ssh://192.168.1.102:22
    [STATUS][ssh] 192.168.1.102:22 - Login failed for user 'root'
    Hydra finished.

    Hydra がパスワードを正常にクラッキングした場合、上記の例と同様の行が表示され、成功した資格情報が示されます。

  3. 正常なログインをよりよく説明するために、Hydra が成功する可能性が高いシナリオを作成しましょう。これには脆弱な SSH サーバーが必要です。手元にそのようなサーバーがないため、targets.txt ファイルを変更して localhost を指すようにし、現在のユーザーとしてログインを試みます。これでもおそらく失敗しますが、専用の脆弱なターゲットがなくても「成功」シナリオに最も近い状況を再現できます。

    まず、127.0.0.1targets.txt ファイルに追加します。

    echo "127.0.0.1" >> ~/project/targets.txt

    次に、localhost 上の現在のユーザー(labex)の SSH パスワードをクラッキングしてみます。labex ユーザーのパスワードを知っている必要があります。パスワードを設定していない場合は、パスワードリストを空にしてみることができます。これにより、空のパスワードでのログインが試行されます。

    hydra -l labex -P ~/project/passwords.txt -t 4 -M ~/project/targets.txt ssh

    注意: これは、labex ユーザーのパスワードが非常に単純であるか、パスワードなしでの SSH ログインが許可されていない限り、おそらく依然として失敗します。

攻撃が失敗した場合でも、重要なのは Hydra の出力を解釈する方法を理解することです。正常なログインを示す行を探し、攻撃が失敗する原因を理解するためにエラーメッセージに注意を払ってください。

このステップでは、複数のホストを攻撃する際に Hydra からの出力を確認し、結果を解釈する方法を学びました。これは、パスワードクラッキング試行の成否を理解するための重要なスキルです。

まとめ

この実験では、侵入テストやセキュリティ監査に不可欠な、IP アドレスまたはホスト名を含むターゲットリストファイルを作成する方法を学びました。nano テキストエディタを使用して、~/project ディレクトリに targets.txt ファイルを作成し、複数のターゲット IP アドレスを 1 行に 1 つずつ追加しました。その後、cat コマンドを使用してファイルの内容を確認しました。

また、この実験では、-M オプションを使用して作成したターゲットリストファイルを Hydra に読み込む方法も学びました。これにより、Hydra は複数のホストを同時に効率的にターゲットにでき、パスワードクラッキングプロセスを合理化することができます。