Hydra 攻撃を早期に阻止する

HydraHydraBeginner
今すぐ練習

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

はじめに

この実験では、Hydra のオプションを活用して試行回数を制限することで、Hydra 攻撃を早期に停止する方法を探ります。まず、vsftpd を使用して FTP サーバーをセットアップし、複数のユーザーアカウント testuser1testuser2 を設定し、それぞれに独自のパスワードを割り当てます。このセットアップにより、Hydra が複数のアカウントを同時に攻撃しようとするシナリオをシミュレートできます。

次に、この実験では、最初のログインに成功した後に Hydra を停止する -f オプションの使用方法と、マルチホストリストでの -F オプションの使用方法を案内します。最後に、-f-F の動作を比較し、これらをどのように活用して Hydra 攻撃を軽減できるかを理解します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/ftp_attack("FTP Brute Force") hydra/HydraGroup -.-> hydra/multiple_targets("Multiple Targets Attack") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") subgraph Lab Skills hydra/installation -.-> lab-550774{{"Hydra 攻撃を早期に阻止する"}} hydra/single_username -.-> lab-550774{{"Hydra 攻撃を早期に阻止する"}} hydra/single_password -.-> lab-550774{{"Hydra 攻撃を早期に阻止する"}} hydra/ftp_attack -.-> lab-550774{{"Hydra 攻撃を早期に阻止する"}} hydra/multiple_targets -.-> lab-550774{{"Hydra 攻撃を早期に阻止する"}} hydra/success_detection -.-> lab-550774{{"Hydra 攻撃を早期に阻止する"}} end

複数の資格情報で FTP をセットアップする

このステップでは、FTP サーバーをセットアップし、複数のユーザー資格情報を設定します。これにより、Hydra が複数のアカウントを同時に攻撃する能力をテストできます。FTP サーバーとして vsftpd (Very Secure FTP Daemon) を使用します。

まず、vsftpd をインストールしましょう。

sudo apt update
sudo apt install vsftpd -y

次に、vsftpd を設定する必要があります。まず、元の設定ファイルのバックアップを作成します。

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

では、nano を使用して設定ファイルを編集しましょう。

sudo nano /etc/vsftpd.conf

/etc/vsftpd.conf ファイルに以下の行を追加または変更します。

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
listen=YES
listen_ipv6=NO

ファイルを保存し、nano を終了します (Ctrl+X を押し、次に Y を押し、最後に Enter を押します)。

では、複数のユーザーアカウントを作成しましょう。testuser1testuser2 の 2 つのユーザーを作成し、パスワードを設定します。

sudo adduser testuser1
sudo adduser testuser2

各ユーザーのパスワードを入力するように求められます。テスト目的で、testuser1 には password123testuser2 には password456 のような簡単なパスワードを選択します。これらのパスワードを覚えておいてください。後で使用します。

次に、変更を適用するために vsftpd サービスを再起動します。

sudo systemctl restart vsftpd

では、FTP サーバーをテストしましょう。ftp コマンドラインクライアントを使用してサーバーに接続できます。サーバーをローカルで実行しているので、localhost に接続できます。

ftp localhost

ユーザー名を入力するように求められます。testuser1 を入力し、その後に設定したパスワードを入力します。すべて正しく設定されていれば、FTP サーバーにログインできるはずです。bye と入力すると、FTP クライアントを終了できます。

では、Hydra が使用するユーザー名とパスワードを保存するためのファイルを作成しましょう。~/project ディレクトリに users.txt という名前のファイルを作成し、ユーザー名を追加します。

nano ~/project/users.txt

users.txt に以下の行を追加します。

testuser1
testuser2

ファイルを保存し、nano を終了します。

次に、passwords.txt という名前のファイルを作成し、いくつかの一般的なパスワードを追加します。これには、ユーザーに設定したパスワードも含めます。

nano ~/project/passwords.txt

passwords.txt に以下の行を追加します。

password123
password456
password
123456
qwerty

ファイルを保存し、nano を終了します。

これで、複数のユーザーアカウントが設定された FTP サーバーと、Hydra がアカウントを攻撃するために使用できるユーザー名とパスワードのリストが用意できました。

-f オプションを使用して最初のペアを見つけた後に停止する

このステップでは、Hydra で -f オプションを使用します。-f オプションは、Hydra に最初の有効なユーザー名/パスワードのペアを見つけた後に停止するよう指示します。これは、1 つの有効なアカウントを見つけるだけで、ログインに成功した後に他の組み合わせを試す必要がない場合に便利です。

前のステップで作成したユーザー名とパスワードのリストを使用して、FTP サーバーに対して Hydra を実行しましょう。今回は -f オプションを使用します。

hydra -L ~/project/users.txt -P ~/project/passwords.txt localhost ftp -f

このコマンドでは:

  • -L ~/project/users.txt:ユーザー名のリストが含まれるファイルを指定します。
  • -P ~/project/passwords.txt:パスワードのリストが含まれるファイルを指定します。
  • localhost:攻撃対象の FTP サーバーです。
  • ftp:攻撃するサービス(この場合は FTP)です。
  • -f:Hydra に最初のログインに成功した後に停止するよう指示します。

出力を観察しましょう。Hydra はリスト内のユーザー名とパスワードを使用してログインを試みます。有効な組み合わせ(例:testuser1:password123)を見つけるとすぐに、成功したログインを表示してから停止します。

出力は次のようになるはずです。

Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - Please use caution!

Hydra starting at 2024-10-27 10:00:00
[DATA] 1 task/thread started, overall 1 task to process
[DATA] attacking ftp://localhost:21
[21][ftp] host: localhost   login: testuser1   password: password123
1 of 1 target successfully completed, 0 valid password found
Hydra finished.

Hydra は最初の有効な組み合わせ(testuser1:password123)を見つけた後に停止したことに注意してください。-f オプションを使用しない場合、Hydra は有効なログインを見つけた後も他の組み合わせを試し続けます。

このオプションは、大量のアカウントをテストし、少なくとも 1 つのアカウントが脆弱であることを確認するだけで済む場合に特に便利です。

複数ホストリストで -F オプションをテストする

このステップでは、Hydra の -F オプションを試してみます。単一のホストに対して最初の有効な資格情報のペアを見つけた後に停止する -f オプションとは異なり、-F オプションは、リスト内のすべてのホストにわたって最初の有効な資格情報のペアを見つけた後に停止します。これを実証するために、複数ホストのシナリオをシミュレートします。VM が 1 つしかないため、ホストリストで localhost を複数回使用します。

まず、~/project ディレクトリに hosts.txt という名前のファイルを作成しましょう。このファイルには、攻撃対象のホストのリストが含まれます。

nano ~/project/hosts.txt

hosts.txt に以下の行を追加します。

localhost
localhost

ファイルを保存し、nano を終了します。これは、同じマシン上で 2 つの同一の FTP サーバーが実行されている状況をシミュレートしています。

では、-F オプションを使用して Hydra を実行し、hosts.txt 内のホストリストを攻撃対象とします。

hydra -L ~/project/users.txt -P ~/project/passwords.txt -M ~/project/hosts.txt ftp -F

このコマンドでは:

  • -L ~/project/users.txt:ユーザー名のリストが含まれるファイルを指定します。
  • -P ~/project/passwords.txt:パスワードのリストが含まれるファイルを指定します。
  • -M ~/project/hosts.txt:攻撃対象のホストのリストが含まれるファイルを指定します。
  • ftp:攻撃するサービス(この場合は FTP)です。
  • -F:Hydra にすべてのホストにわたって最初のログインに成功した後に停止するよう指示します。

出力を観察しましょう。Hydra は、リスト内のユーザー名とパスワードを使用して、hosts.txt ファイル内の各ホストにログインを試みます。いずれかのホストで有効な組み合わせを見つけるとすぐに、成功したログインを表示してから、すべてのホストへの攻撃を停止します。

出力は次のようになるはずです。

Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - Please use caution!

Hydra starting at 2024-10-27 10:05:00
[DATA] 2 tasks/threads started, overall 2 tasks to process
[DATA] attacking ftp://localhost:21
[21][ftp] host: localhost   login: testuser1   password: password123
1 of 2 target successfully completed, 0 valid password found
Hydra finished.

hosts.txt に 2 つの localhost エントリがあるにもかかわらず、Hydra は最初の localhost インスタンスで最初のログインに成功した後に停止します。2 つ目の localhost エントリの資格情報を探す試みは行われません。

-F オプションは、複数のホストを攻撃対象とし、1 つの脆弱なシステムを見つけるだけで済む場合に便利です。脆弱性が見つかったらすぐに攻撃を停止することで、時間とリソースを節約できます。

-f と -F の動作を比較する

このステップでは、-f-F オプションの動作を直接比較し、それらの違いを理解を深めます。前のステップと同じ設定を使用します。つまり、localhost で実行されている FTP サーバー、users.txtpasswords.txt ファイル、および localhost のエントリが 2 つ含まれる hosts.txt ファイルを使用します。

まず、-f オプションを思い出しましょう。次のコマンドを再度実行します。

hydra -L ~/project/users.txt -P ~/project/passwords.txt localhost ftp -f

前に見たように、Hydra は localhost の最初の有効なユーザー名/パスワードのペアを見つけた後に停止します。

では、-F オプションを使用して Hydra を再度実行し、hosts.txt ファイルを攻撃対象とします。

hydra -L ~/project/users.txt -P ~/project/passwords.txt -M ~/project/hosts.txt ftp -F

再び、Hydra は hosts.txt ファイル内のすべてのホストにわたって最初の有効なユーザー名/パスワードのペアを見つけた後に停止します。

主な違いは、Hydra が攻撃対象をどのように解釈するかにあります。

  • -f(単一の攻撃対象): Hydra は、指定された単一の攻撃対象に対して最初の有効な資格情報のペアを見つけた後に停止します。この場合、単一の攻撃対象は localhost です。

  • -F(複数ホストリスト): Hydra は、ホストリスト内のすべての攻撃対象にわたって最初の有効な資格情報のペアを見つけた後に停止します。この場合、ホストリストには localhost のエントリが 2 つ含まれていますが、Hydra はどちらかのホストで最初のログインに成功した後に停止します。

この違いをさらに説明するために、2 つの異なる FTP サーバー ftp.example.comftp.example.net があり、ftp.example.com のみに脆弱なアカウントがあるシナリオを考えてみましょう。

  • -f を使用して ftp.example.com を攻撃対象とした場合、Hydra は脆弱なアカウントを見つけて停止します。その後、-f を使用して ftp.example.net を攻撃対象とすると、Hydra はそのサーバーのパスワードを解読しようと続けます。

  • -F を使用し、hosts.txt ファイルに ftp.example.comftp.example.net の両方を含めた場合、Hydra は ftp.example.com の脆弱なアカウントを見つけてすぐに停止し、ftp.example.net のパスワードを解読する試みすら行いません。

まとめると:

  • 特定の攻撃対象に対して少なくとも 1 つの有効な資格情報を見つけたい場合は、-f を使用します。
  • 攻撃対象のリスト全体で少なくとも 1 つの有効な資格情報を見つけたい場合で、1 つの攻撃対象が既に侵害されている場合は他の攻撃対象をチェックする必要がない場合は、-F を使用します。

これで実験は終了です。あなたは FTP サーバーのセットアップ、複数のユーザーアカウントの設定、および Hydra を使用したアカウントの解読を成功させ、-f-F オプションを試しました。

まとめ

この実験では、vsftpd を使用して FTP サーバーをセットアップし、認証を必要とするように設定しました。テスト用に、testuser1testuser2 という 2 つのユーザーアカウントを作成し、簡単なパスワードを設定しました。セキュリティを強化するために、vsftpd.conf ファイルを変更して、ローカルユーザーの使用、書き込みアクセス、および chroot を有効にしました。最後に、設定の変更を適用するために vsftpd サービスを再起動し、ftp コマンドラインクライアントを使用して FTP サーバーの機能を検証しました。

また、ユーザー名を保存する users.txt ファイルを作成しました。このファイルは、後続のステップで Hydra を使用してその解読機能をテストする際に使用されます。このセットアップにより、Hydra の機能を実験し、複数のユーザー資格情報を扱う際の動作を理解するためのコントロールされた環境が提供されます。