はじめに
この実験では、ターゲットシステム上のFTPポート番号をカスタマイズし、そのカスタムポートで動作するFTPサービスに対してHydraを使用してブルートフォース攻撃を実行する方法を学びます。これは、標準外のFTPポートで構成されたシステムのセキュリティを評価する必要があるペネトレーションテスターやセキュリティ専門家にとって、非常に重要なスキルです。
この実験では、LabEx VM上の vsftpd.conf ファイルを編集してFTPサーバーを標準外のポートでリッスンするように構成し、FTPサービスを再起動します。その後、netstat コマンドを使用して、FTPサーバーが新しいポートでリッスンしていることを確認します。最後に、Hydraの -s オプションを使用してカスタムポートを指定し、FTP攻撃を実行することで、Hydraが構成されたポート上のFTPサービスに正常に接続できることを検証します。
FTPを標準外のポートで構成する
このステップでは、LabEx VM上のFTPサーバーが標準外のポートでリッスンするように構成します。デフォルトでは、FTPはポート21を使用します。FTPポートを変更することで、デフォルトポートを標的とした自動攻撃のリスクを軽減できます。
まず、FTP設定ファイルを編集します。LabEx VMにプリインストールされている nano エディタを使用します。
sudo nano /etc/vsftpd.conf
このコマンドで vsftpd.conf ファイルが nano エディタで開かれます。
ファイルに以下の行を追加してください:
listen_port=2121

listen_port 行が存在しない場合は、ファイルに追加してください。ファイルの上部付近に追加するのが一般的です。
変更後、Ctrl+X を押し、Y で確定し、Enter を押して同じファイル名で保存します。
次に、変更を反映させるためにFTPサービスを再起動する必要があります。
sudo service vsftpd restart
このコマンドでFTPサービスが再起動されます。サービスが再起動されたことを示す出力が表示されるはずです。
最後に、FTPサーバーが新しいポートでリッスンしていることを確認しましょう。netstat コマンドを使用して、リッスン中のポートを確認できます。
sudo netstat -tulnp | grep vsftpd
このコマンドは、すべてのTCP、UDP、リッスン中のポート、およびプロセス情報を表示し、その中から "vsftpd" を含む行のみをフィルタリングします。vsftpd がポート 2121(または選択したポート)でリッスンしていることを示す行が表示されるはずです。
出力例:
tcp6 0 0 :::2121 :::* LISTEN 1027/vsftpd

出力に新しいポート番号が表示されていれば、FTPサーバーは新しいポートでリッスンしています。
-sオプションによるポート指定
このステップでは、ftp コマンドを使用する際に標準外のポートを指定する方法を学びます。前のステップでFTPサーバーのリッスンポートをデフォルトの21からカスタムポート(例:2121)に変更したため、サーバーに接続する際にどのポートを使用するかを ftp クライアントに伝える必要があるため、これは非常に重要です。
ftp コマンドの場合、ftp localhost 2121 のように HOST PORT を指定することで標準外のポートを指定できます。しかし、Hydraではポート指定に -s オプションを使用します。次のステップでHydra攻撃を行う準備として、この違いを理解しておくことが重要です。
接続を検証するために、ホストとポートを指定する形式の ftp コマンドを使用してFTPサーバーへの接続を試してみましょう。localhost をLabEx VMのIPアドレスに置き換えてください。同じVM上でこの実験を行っている場合は、localhost または 127.0.0.1 を使用できます。
ftp localhost 2121
ユーザー名とパスワードの入力を求められます。Ctrl+C で終了してください。
次に、Hydraがどのようにポートを指定するかをシミュレートします。まだ実際にHydraを使用するわけではありませんが、このステップは構文を理解するために重要です。Hydraはポートを指定するために -s オプションを使用します。
Hydraのポート指定構文は、標準の ftp コマンドとは異なります。Hydraは -s の後にポート番号を続けます。例えば、ポート2121でFTPサービスを攻撃するためにHydraを使用する場合、Hydraコマンドに -s 2121 を含めます。
これを実演するために、ダミーのHydraコマンドを作成してみましょう。実行はしませんが、正しい構文を示します。
hydra -l ftpuser -P ~/project/password.txt localhost ftp -s 2121

ここでの重要なポイントは -s 2121 の部分です。これはHydraに対し、ポート2121でFTPサービスに接続するように指示しています。
要約すると、標準の ftp コマンドは HOST PORT を使用してターゲットポートを指定できますが、Hydraは -s を使用します。この違いを理解することは、次のステップでHydraを使用してFTP攻撃を実行する際に不可欠です。
カスタムポートでのFTP攻撃の実行
このステップでは、最初のステップで構成した標準外のポートで実行されているFTPサービスに対して、Hydraを使用してブルートフォース攻撃を実行します。セットアップフェーズで作成されたパスワードリストを使用します。
それでは、Hydra攻撃を開始する準備が整いました。localhost をLabEx VMのIPアドレスに置き換えてください。同じVM上でこの実験を行っている場合は、localhost または 127.0.0.1 を使用できます。
hydra -l ftpuser -P ~/project/password.txt localhost ftp -s 2121 -vV
このコマンドの内訳は以下の通りです:
hydra: Hydraツールを実行するコマンド。-l ftpuser: 攻撃対象のユーザー名を指定。-P ~/project/password.txt: セットアップ中に作成されたパスワードリストファイルへのパスを指定。localhost: ターゲットのIPアドレスを指定。localhostを実際のIPアドレスに置き換えてください。ftp: 攻撃対象のサービスを指定(今回はFTP)。-s 2121: ポート番号を指定。最初のステップでFTPポートを2121に変更したため、これは非常に重要です。-vV: 詳細モード(verbose mode)を有効にし、ログイン試行をリアルタイムで表示。
コマンドを実行してください。Hydraは ~/project/password.txt ファイル内の異なるパスワードを使用して、指定されたポート上のFTPサービスに対して試行を開始します。
Hydraが正しいパスワードを見つけると、ログイン成功情報が表示されます。例:
[ATTACKER] attacking ftp://localhost:2121/
[2121][ftp] host: localhost login: ftpuser password: password123
Hydraが正しいパスワードを見つけられない場合、リスト内のすべてのパスワードを試行した後、ログイン成功を表示せずに終了します。
重要なセキュリティ上の注意: この実験は教育目的のみのものです。明示的な許可なしにHydraを使用してシステムを攻撃しないでください。コンピュータシステムへの不正アクセスは違法であり、非倫理的です。
正しいポートへの接続検証
最後のステップでは、Hydra攻撃の試行後もカスタムポートでFTPサーバーに接続できることを検証します。これにより、FTPサービスが期待通りに動作しており、指定したポートを使用してアクセスできることが確認されます。
ホストとポートを指定する ftp コマンドを使用して、カスタムポートでFTPサーバーに接続します。localhost をLabEx VMのIPアドレスに置き換えてください。同じVM上でこの実験を行っている場合は、localhost または 127.0.0.1 を使用できます。
ftp localhost 2121
ユーザー名とパスワードの入力を求められます。セットアップで作成した資格情報を使用してください:
- ユーザー名:
ftpuser - パスワード:
password123
接続が成功すると、FTPサーバーにログインできます。

接続できない場合は、以下を確認してください:
- FTPサービスがまだ実行されていることを確認します。最初のステップで行ったように
netstat -tulnp | grep vsftpdコマンドを使用して確認できます。 /etc/vsftpd.confファイルでFTPポートがまだ2121(または選択したポート)に設定されていることを確認します。- カスタムポートへの接続をブロックしているファイアウォールルールがないことを確認します。(注:LabEx VM環境では通常、デフォルトでファイアウォールは有効になっていませんが、現実のシナリオでは留意しておくべきです。)
- 正しいユーザー名とパスワードを使用していることを確認します。
接続が成功すれば、FTPサーバーがカスタムポートで実行されており、ftp localhost 2121 で接続できることが確認されます。これは、Hydra攻撃が失敗したとしても、FTPサービスを中断させなかったことも証明しています。
これで実験は完了です。FTPを標準外のポートで構成し、Hydraで -s オプションを使用してポートを指定する方法を学び、基本的なHydra攻撃を実行し、正しいポートへの接続を検証することができました。
まとめ
この実験では、LabEx VM上のFTPサーバーがデフォルトのポート21ではなく、標準外のポート2121でリッスンするように構成しました。これには、nano を使用して /etc/vsftpd.conf ファイルを編集し、listen_port ディレクティブを変更または追加し、その後 sudo service vsftpd restart を使用してFTPサービスを再起動する作業が含まれました。
最後に、netstat -tulnp | grep vsftpd コマンドを使用してリッスン中のポートを確認し、vsftpd がポート2121に関連付けられていることを確認することで、FTPサーバーが新しいポートでリッスンしていることを検証しました。


