はじめに
この実験では、Hydra パスワードクラッキングツールのコネクション間隔を制御する方法を学びます。この実験は、接続試行間の間隔を調整することで攻撃ペースを管理し、検出を回避する方法を示します。
この実験は、OpenSSH を使用して LabEx 仮想マシン上に基本的な SSH サーバーを設定することから始まります。サーバーをインストールし、そのステータスを確認し、ポート 22 でリスニングしていることを確認します。その後、Hydra をデフォルトのタイミングで実行し、コマンドに-W 5オプションを含めることで、接続試行間隔を 5 秒に調整します。最後に、このタイミング調整が全体的な攻撃ペースに与える影響を観察します。
SSH サーバーの設定
このステップでは、LabEx 仮想マシン上に基本的な SSH サーバーを設定します。SSH(Secure Shell)は、暗号化されたネットワークプロトコルであり、非安全なネットワーク上でネットワークサービスを安全に運用するために使用されます。リモートコマンドラインログインやリモートコマンド実行によく用いられます。
最初に、OpenSSH サーバーをインストールする必要があります。OpenSSH は、Secure Shell プロトコルに基づくセキュリティ関連のネットワークレベルツールスイートであり、最も一般的な SSH 実装です。
LabEx 仮想マシンのターミナルを開きます。デフォルトの Xfce ターミナルを使用できます。
パッケージリストを更新するために、以下のコマンドを実行します。
sudo apt update
このコマンドは、ソースからのパッケージインデックスファイルを同期します。新しいソフトウェアをインストールする前に実行することは良い習慣です。パスワードの入力を求められる場合がありますが、labexユーザーはパスワードなしでsudo権限を持っています。
次に、OpenSSH サーバーをインストールします。
sudo apt install openssh-server -y
-yフラグは、インストール中のプロンプトに自動的に「yes」と回答し、非対話的なプロセスにします。
インストールが完了すると、SSH サーバーは自動的に起動するはずです。以下のコマンドを使用して、そのステータスを確認できます。
sudo service ssh status
SSH サーバーが動作していることを確認するために、SSH ポート(ポート 22)がリスニングしているかどうかを確認できます。netstatコマンドを使用します。
netstat -tulnp | grep 22
出力は次のようになります。
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
これは、SSH サーバーが IPv4 および IPv6 接続の両方に対してポート 22 でリスニングしていることを示しています。
SSH サーバーの設定が完了したので、別のマシンから SSH クライアントを使用して接続できます。ただし、この実験では、Hydra を使用して SSH パスワードをクラッキングすることに焦点を当てます。
デフォルトのタイミングで Hydra を実行する
このステップでは、Hydra を使用して SSH パスワードをクラッキングを試みます。シンプルなユーザー名とパスワードリストを使用し、デフォルトのタイミング設定での攻撃ペースを観察します。
最初に、~/projectディレクトリにusers.txtという名前のユーザー名リストファイルを作成します。このファイルには、単一のユーザー名labexが含まれます。
ターミナルで、以下のコマンドを実行してusers.txtファイルを作成します。
echo "labex" > ~/project/users.txt
次に、~/projectディレクトリにpasswords.txtという名前のパスワードリストファイルを作成します。このファイルには、labexユーザーの正しいパスワードを含む、いくつかの一般的なパスワードが含まれます。
重要:以下のコマンドは、PASSWORD 環境変数がデスクトップ環境でのみ利用可能であるため、デスクトップターミナルで実行する必要があります。

デスクトップターミナルで、以下のコマンドを実行してpasswords.txtファイルを作成します。
echo "password" > ~/project/passwords.txt
echo "123456" >> ~/project/passwords.txt
echo "$PASSWORD" >> ~/project/passwords.txt
$PASSWORD環境変数には、この環境でのlabexユーザーの実際のパスワードが含まれています。
これで、デフォルトのタイミング設定で Hydra を実行できます。Hydra の基本的な構文は次のとおりです。
hydra [options] <target> <service> [MODULE-OPTIONS]
私たちのケースでは、ターゲットはlocalhost(LabEx VM 自体)、サービスはsshであり、作成したユーザー名とパスワードリストを使用します。
ターミナルで以下のコマンドを実行します。
hydra -L ~/project/users.txt -P ~/project/passwords.txt localhost ssh
このコマンドを分解します。
hydra: Hydra ツールを実行するコマンド。-L ~/project/users.txt:~/project/users.txtにあるユーザー名リストファイル。-P ~/project/passwords.txt:~/project/passwords.txtにあるパスワードリストファイル。localhost: ターゲットホスト(この場合はローカルマシン)。ssh: 攻撃対象のサービス(SSH)。
Hydra は、リストのユーザー名とパスワードを使用して SSH サーバーへのログインを試行し始めます。攻撃の進行状況を示す出力が表示されます。各ユーザー名とパスワードの組み合わせを試します。$PASSWORD環境変数から取得した正しいパスワードがpasswords.txtファイルにあるため、Hydra は比較的迅速にそれを発見するはずです。

出力は次のようになります。
Hydra vX.X (c) XXXX by van Hauser/THC - use help for legal stuff
Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] 1 task/1 service to scan
[DATA] attacking ssh://localhost:22
[STATUS] X.XX tries/min
[STATUS] X of X passwords tested (X.XX%)
[22][ssh] host: localhost login: labex password: [実際のパスワード]
Hydra finished.
重要な行は[22][ssh] host: localhost login: labex password: [実際のパスワード]です。これは、Hydra がlabexユーザーのパスワードを見つけたことを示しています。
Hydra がパスワードを試行している速度に注意してください。これがデフォルトのタイミングです。次のステップでは、タイミングを変更して攻撃ペースにどのような影響を与えるかを確認します。
5 秒間隔 (-W 5) を設定する
このステップでは、Hydra コマンドに -W 5 オプションを追加します。このオプションは、各ログイン試行間に 5 秒の遅延を導入します。これは、アカウントロックアウトや侵入検知システムによる検出を回避するのに役立ちます。
Hydra の -W オプションは、ターゲットサービスからの応答を待機するタイムアウトを指定します。デフォルトでは、Hydra は非常に短いタイムアウトを使用します。このタイムアウトを増やすことで、ターゲットサービスの応答が遅い場合やネットワークのレイテンシの問題がある場合に役立ちます。
ターミナルで以下のコマンドを実行します。
hydra -L ~/project/users.txt -P ~/project/passwords.txt -W 5 localhost ssh
このコマンドと前のコマンドの違いは、-W 5 オプションの追加だけです。
これで、Hydra は SSH サーバーへのログインを試みますが、失敗したログイン試行後、次のパスワードを試す前に 5 秒間待機します。
出力を観察してください。攻撃ペースが前のステップよりも大幅に遅くなっていることに気付くでしょう。Hydra は正しいパスワード ("labex") を見つけることができますが、それまでに時間がかかります。
出力は次のようになります。
Hydra vX.X (c) XXXX by van Hauser/THC - use help for legal stuff
Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] 1 task/1 service to scan
[DATA] attacking ssh://localhost:22
[STATUS] X.XX tries/min
[STATUS] X of X passwords tested (X.XX%)
[22][ssh] host: localhost login: labex password: labex
Hydra finished.
ただし、重要な違いは Hydra finished. メッセージが表示されるまでの時間です。-W 5 オプションを使用すると、Hydra が正しいパスワードを見つけるまでに少なくとも 10 秒(2 回の失敗した試行 × 5 秒/試行)かかります。
次のステップでは、この変更が攻撃ペースに与える影響と、セキュリティテストへの影響について説明します。
攻撃速度への影響を観察する
このステップでは、Hydra の攻撃ペースに -W 5 オプションが及ぼす影響を分析します。
前のステップで確認したように、-W 5 を追加すると攻撃は大幅に遅くなります。-W 5 オプションなしでは、Hydra はネットワークのレイテンシとサーバーの応答時間によってのみ制限され、可能な限り迅速にログインを試みます。-W 5 を使用すると、Hydra は失敗したログイン試行後、5 秒間停止します。
この攻撃ペースの違いには、いくつかの重要な意味があります。
アカウントロックアウト: 多くのシステムは、一定数の失敗したログイン試行後、アカウントを無効にするアカウントロックアウトポリシーを持っています。
-W 5で攻撃ペースを遅くすることで、これらのロックアウトポリシーのトリガーリスクを減らし、ターゲットアカウントのロックアウトを回避できます。侵入検知システム (IDS): IDS は、ブルートフォース攻撃のような疑わしいアクティビティを監視するためにネットワークトラフィックを監視します。一連の急速な失敗したログイン試行は、ブルートフォース攻撃の強い兆候であり、アラートをトリガーする可能性があります。攻撃ペースを遅くすることで、IDS が攻撃を検出するのをより困難にすることができます。
リソース消費: 急速な攻撃ペースは、攻撃マシンとターゲットサーバーの両方でかなりのリソースを消費する可能性があります。攻撃ペースを遅くすることで、リソース消費を減らし、攻撃が目立たなくすることができます。
完了までの時間: 最も明白な影響は、攻撃を完了するのにかかる時間の増加です。パスワードリストが大きい場合、試行間に遅延を追加すると、パスワードを解読するのに必要な総時間が大幅に増加する可能性があります。
要約すると、Hydra の -W オプションを使用すると、攻撃ペースを制御し、速度の必要性と検出およびアカウントロックアウトのリスクをバランスさせることができます。-W の適切な値を選択することは、特定のターゲットと攻撃の目標によって異なります。侵入テストでは、攻撃にかかる時間が長くなっても、ステルス性を保ち、検出を回避することがしばしばより良い方法です。
この実験では、Hydra を使用して SSH パスワードを解読する基本的な例を示しました。現実世界のシナリオでは、攻撃者は通常、はるかに大きなユーザー名とパスワードリスト、およびセキュリティ対策を回避するためのより洗練されたテクニックを使用します。強力で一意のパスワードを使用し、適切なセキュリティ対策を実施して、ブルートフォース攻撃から保護することが不可欠です。
まとめ
この実験では、Hydra の接続間隔を制御して攻撃ペースを管理し、検出を回避する方法を学びました。
完了した主な手順:
- OpenSSH を使用して SSH サーバーを設定し、ポート 22 でリスニングしていることを確認しました。
- Hydra テスト用のユーザー名とパスワードリストを作成しました。
- デフォルトのタイミングで Hydra を実行して、迅速な攻撃ペースを観察しました。
- 接続試行間隔に 5 秒の遅延を導入するために
-W 5オプションを追加しました。 - タイミング制御が攻撃速度にどのように影響し、アカウントロックアウトや検知システムを回避するのに役立つのかを観察しました。
-W オプションを使用すると、攻撃速度とステルス性をバランスさせることができます。これは、セキュリティ対策のトリガーリスクを最小限に抑えながら、効果的な侵入テストに不可欠なパラメーターです。


