Hydra 攻撃におけるパスワードのループ

HydraHydraBeginner
今すぐ練習

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

はじめに

この実験では、Hydra が SSH 攻撃中にユーザー名とパスワードをどのように繰り返し試行するかを調べます。ユーザー名とパスワードのリストを作成し、デフォルトの SSH 攻撃を実行して、Hydra のデフォルトの動作を観察します。

この実験では、それぞれユーザー名とパスワードのリストが記載された usernames.txtpasswords.txt ファイルを準備します。その後、これらのリストを使用して基本的な Hydra SSH 攻撃を実行し、Hydra が異なる組み合わせを試行する方法を示します。最後に、-u オプションが Hydra がユーザー名とパスワードの組み合わせを試行する順序に与える影響を調べます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/password_creation("Password List Creation") hydra/HydraGroup -.-> hydra/username_creation("Username List Creation") hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/target_ip("Target IP Specification") hydra/HydraGroup -.-> hydra/target_service("Target Service Selection") hydra/HydraGroup -.-> hydra/ssh_attack("SSH Brute Force") subgraph Lab Skills hydra/password_creation -.-> lab-550771{{"Hydra 攻撃におけるパスワードのループ"}} hydra/username_creation -.-> lab-550771{{"Hydra 攻撃におけるパスワードのループ"}} hydra/single_username -.-> lab-550771{{"Hydra 攻撃におけるパスワードのループ"}} hydra/single_password -.-> lab-550771{{"Hydra 攻撃におけるパスワードのループ"}} hydra/target_ip -.-> lab-550771{{"Hydra 攻撃におけるパスワードのループ"}} hydra/target_service -.-> lab-550771{{"Hydra 攻撃におけるパスワードのループ"}} hydra/ssh_attack -.-> lab-550771{{"Hydra 攻撃におけるパスワードのループ"}} end

ユーザー名とパスワードのリストを準備する

このステップでは、2 つの重要なファイル、ユーザー名リストとパスワードリストを作成します。これらのリストは、Hydra が SSH ログインを試行する際に使用されます。これらのリストを作成することで、ターゲットに対して様々なユーザー名とパスワードの組み合わせを体系的にテストすることができます。

まず、ユーザー名リストを作成しましょう。nano テキストエディタを使用して、~/project ディレクトリに usernames.txt という名前のファイルを作成します。

nano ~/project/usernames.txt

次に、以下のユーザー名をファイルに追加します。これらは単なる例であり、必要に応じてカスタマイズすることができます。

root
admin
test
user
ubuntu

Ctrl+O を押してファイルを保存し、Enter を押してファイル名を確認し、最後に Ctrl+X を押して nano を終了します。

次に、パスワードリストを作成します。再び nano を使用して、~/project ディレクトリに passwords.txt という名前のファイルを作成します。

nano ~/project/passwords.txt

以下のパスワードをファイルに追加します。これらも単なる例です。

password
123456
qwerty
secret
ubuntu

Ctrl+O を押してファイルを保存し、Enter を押してファイル名を確認し、最後に Ctrl+X を押して nano を終了します。

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

cat ~/project/usernames.txt

入力したユーザー名のリストが表示されるはずです。

root
admin
test
user
ubuntu

同様に、パスワードリストを確認します。

cat ~/project/passwords.txt

入力したパスワードのリストが表示されるはずです。

password
123456
qwerty
secret
ubuntu

これらのファイル usernames.txtpasswords.txt は、次のステップで Hydra とともに使用する準備ができました。

デフォルトの SSH 攻撃を実行する

このステップでは、前のステップで作成したユーザー名とパスワードのリストを使用して、Hydra を用いた基本的な SSH 攻撃を実行します。これにより、Hydra がユーザー名とパスワードを繰り返し試行するデフォルトの動作を確認できます。

攻撃を実行する前に、Hydra コマンドの基本的な構文を理解することが重要です。

hydra [options] <target> <service> [additional options]
  • hydra: Hydra ツールを起動するコマンドです。
  • [options]: 攻撃をカスタマイズするための様々なオプションで、例えばユーザー名とパスワードのリストを指定することができます。
  • <target>: 攻撃対象の SSH サーバーの IP アドレスまたはホスト名です。この実験では、127.0.0.1(ローカルホスト)を攻撃対象として使用します。注意: 実際のシナリオでは、これをテスト対象のサーバーの実際の IP アドレスに置き換えます。許可なくシステムを攻撃することは違法です。
  • <service>: 攻撃するサービス(例:ssh、ftp、http)です。今回の場合は ssh です。
  • [additional options]: サービス固有のオプションです。

では、デフォルトの SSH 攻撃を実行しましょう。-L オプションを使用してユーザー名リストを指定し、-P オプションを使用してパスワードリストを指定します。

hydra -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh

このコマンドは Hydra に以下のことを指示します。

  • -L ~/project/usernames.txt: ~/project ディレクトリ内の usernames.txt ファイルをユーザー名のリストとして使用します。
  • -P ~/project/passwords.txt: ~/project ディレクトリ内の passwords.txt ファイルをパスワードのリストとして使用します。
  • 127.0.0.1: ローカルホストで実行されている SSH サービスを攻撃対象とします。
  • ssh: SSH サービスを攻撃することを指定します。

コマンドを実行します。Hydra は、usernames.txt 内の各ユーザー名と passwords.txt 内の各パスワードを使用して、127.0.0.1 の SSH サービスにログインを試みます。デフォルトでは、Hydra はまずユーザー名を順番に試し、1 つのユーザー名に対してすべてのパスワードを試してから次のユーザー名に移ります。

出力には試行の状況が表示されます。おそらく多数の「ログイン失敗」メッセージが表示されます。ログインに成功した場合は、ユーザー名とパスワードの組み合わせが表示されます。弱いパスワードを使用し、ローカルホストを攻撃対象としているため、ログインに成功する可能性があります。

重要: このコマンドの実行には、ユーザー名とパスワードのリストのサイズに応じて時間がかかる場合があります。また、繰り返しのログイン失敗試行は、攻撃対象のシステムでセキュリティ対策(アカウントロックアウトや IP アドレスブロックなど)がトリガーされる可能性があることに注意してください。

-u オプションを使用して最初にパスワードをループさせる

このステップでは、Hydra で -u オプションを使用して、ログイン試行の順序を変更します。デフォルトでは、Hydra はまずユーザー名を順番に試し、各ユーザー名に対してすべてのパスワードを試してから次のユーザー名に移ります。-u オプションを使用すると、この動作が逆になり、Hydra はまずパスワードを順番に試し、各パスワードをすべてのユーザー名に対して試してから次のパスワードに移ります。

これは、複数のアカウントで共通のパスワードが使用されていると疑われる場合に役立ちます。

-u オプションを使用するには、Hydra コマンドにこのオプションを追加するだけです。

hydra -u -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh

このコマンドは Hydra に以下のことを指示します。

  • -u: 最初にパスワードをループさせます。
  • -L ~/project/usernames.txt: ~/project ディレクトリ内の usernames.txt ファイルをユーザー名のリストとして使用します。
  • -P ~/project/passwords.txt: ~/project ディレクトリ内の passwords.txt ファイルをパスワードのリストとして使用します。
  • 127.0.0.1: ローカルホストで実行されている SSH サービスを攻撃対象とします。
  • ssh: SSH サービスを攻撃することを指定します。

コマンドを実行します。Hydra は、127.0.0.1 の SSH サービスにログインを試みます。今回は、passwords.txt の最初のパスワードを usernames.txt のすべてのユーザー名に対して試してから、次のパスワードに移ります。

出力を観察してください。試行の順序が前のステップと異なっていることに気づくはずです。Hydra は、同じパスワードを複数のユーザー名に対して順番に試行します。

前と同様に、出力には試行の状況が表示されます。おそらく多数の「ログイン失敗」メッセージが表示されます。ログインに成功した場合は、ユーザー名とパスワードの組み合わせが表示されます。

このコマンドの出力と前のステップのコマンドの出力を比較することで、ログイン試行の順序の違いを確認できます。これは、Hydra の動作を理解し、特定の状況に最適な攻撃戦略を選択するのに役立ちます。

試行順序を比較する

このステップでは、前の 2 つのステップで Hydra が行ったログイン試行の順序を分析し、比較します。これにより、-u オプションが攻撃戦略に与える影響を理解するのに役立ちます。

試行順序を効果的に比較するために、script コマンドを使用して両方の Hydra コマンドの出力をキャプチャし、キャプチャした出力を分析することができます。

まず、デフォルトの Hydra コマンド(-u オプションなし)の出力を ~/project ディレクトリ内の default_attack.log という名前のファイルにキャプチャしましょう。

script -c "hydra -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh" ~/project/default_attack.log

このコマンドは、script を使用して新しいシェルセッションを開始し、そのセッション内で Hydra コマンドを実行し、すべての出力を指定されたログファイルに保存します。Hydra が完了したら、exit と入力して script セッションを終了します。

次に、-u オプション付きの Hydra コマンドの出力を ~/project ディレクトリ内の u_attack.log という名前のファイルにキャプチャしましょう。

script -c "hydra -u -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh" ~/project/u_attack.log

同様に、このコマンドは -u オプション付きの Hydra コマンドの出力を u_attack.log ファイルにキャプチャします。Hydra が完了したら、exit と入力して script セッションを終了します。

これで両方のコマンドの出力をキャプチャしたので、head コマンドを使用して各ログファイルの最初の数行を表示し、試行順序を比較することができます。

head ~/project/default_attack.log

出力を調べてください。ユーザー名が順番に試され、1 つのユーザー名に対してすべてのパスワードが試されてから次のユーザー名に移ることがわかるはずです。

次に、u_attack.log ファイルの最初の数行を表示します。

head ~/project/u_attack.log

この出力を調べてください。パスワードが順番に試され、各パスワードがすべてのユーザー名に対して試されてから次のパスワードに移ることがわかるはずです。

2 つのログファイルを比較することで、ログイン試行の順序の違いを明確に確認できます。デフォルトの攻撃戦略ではユーザー名が順番に試され、-u オプション付きの攻撃ではパスワードが順番に試されます。

この比較は、Hydra で利用可能なさまざまなオプションを理解し、特定の状況に合わせて攻撃戦略を調整するためにそれらをどのように使用できるかを強調しています。

まとめ

この実験では、まず Hydra を使った SSH 攻撃に必要なファイルを準備しました。具体的には、nano テキストエディタを使用して ~/project ディレクトリに usernames.txtpasswords.txt を作成しました。これらのファイルには、Hydra が SSH ログインを試行するために使用する潜在的なユーザー名とパスワードのリストが含まれています。その後、cat コマンドを使用して両方のファイルの内容を確認し、正しく作成され、意図したリストが含まれていることを確認しました。

次のステップでは、作成したユーザー名とパスワードのリストを使用して、Hydra を使ったデフォルトの SSH 攻撃を実行しました。これにより、Hydra が SSH ログインをクラックしようとする際のデフォルトの反復動作を実証しました。