はじめに
この実験では、強力なネットワークログインクラッカーである Hydra でスレッド数を調整し、そのパフォーマンスを最適化する方法を学びます。LabEx 仮想マシン上に基本的な SSH サーバーを設定し、Hydra を使用して異なるスレッド数(16、32、および 4)でパスワードクラッキングを試みます。これらの異なる設定による速度の比較と効果を観察することで、利用可能なリソースとターゲットサービスの特性に基づいてスレッド数を調整することで、Hydra 攻撃を最適化する方法を理解できます。
この実験では、強力なネットワークログインクラッカーである Hydra でスレッド数を調整し、そのパフォーマンスを最適化する方法を学びます。LabEx 仮想マシン上に基本的な SSH サーバーを設定し、Hydra を使用して異なるスレッド数(16、32、および 4)でパスワードクラッキングを試みます。これらの異なる設定による速度の比較と効果を観察することで、利用可能なリソースとターゲットサービスの特性に基づいてスレッド数を調整することで、Hydra 攻撃を最適化する方法を理解できます。
このステップでは、LabEx VM 上に基本的な SSH サーバーを設定します。SSH(Secure Shell)は、暗号化されたネットワークプロトコルであり、非安全なネットワーク上でネットワークサービスを安全に運用するために使用されます。リモートコマンドラインログインやリモートコマンド実行によく用いられます。
最初に、OpenSSH サーバーをインストールする必要があります。OpenSSH は、Secure Shell プロトコルに基づくセキュリティ関連のネットワークレベルツールスイートであり、最も一般的な SSH 実装です。
LabEx VM のターミナルを開きます。デフォルトの 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 を使用して、SSH サーバー上のlabexユーザーのパスワードをクラッキングしようとします。最初に、Hydra のデフォルトのスレッド数である 16 を使用します。
パスワードリストは、セットアッププロセス中に既にダウンロードされています。ファイル~/project/password.txtには、Metasploit フレームワークのunix_passwords.txtワードリストが含まれており、数百個の一般的な Unix パスワードが含まれています。このより大きなワードリストは、小さな手動リストと比較して、スレッドのパフォーマンスの違いをより良く示します。
パスワードリストが利用可能であることを確認し、そのサイズを確認できます。
ls -la ~/project/password.txt
wc -l ~/project/password.txt
これにより、ファイルの詳細とワードリスト内のパスワードの数(数百個の項目である必要があります)が表示されます。
次に、Hydra コマンドを実行します。-lオプションは攻撃対象のユーザー名 (labex) を、-Pオプションはパスワードリストのパス (~/project/password.txt) を、-Vオプションは詳細モードを有効にして各試行を表示します。ssh://localhostは、ローカルマシンの SSH サービスを対象としていることを示します。
hydra -V -l labex -P ~/project/password.txt ssh://localhost
Hydra は、password.txtファイル内の各パスワードを使用して、SSH サーバーへのログインを試行し始めます。-tオプションを指定していないため、Hydra はデフォルトの 16 スレッドを使用します。つまり、16 個のパスワード試行を同時に実行します。-Vフラグは、各試行をリアルタイムで表示します。
-Vフラグに関する重要な注意事項:
-V(詳細)パラメータは、攻撃プロセスを観察するために非常に重要です。これを指定しないと、Hydra は概要情報と最終結果のみを表示しますが、各パスワードのテストを示す個々の[ATTEMPT]行は表示されません。この詳細な出力は、スレッドが攻撃速度とパターンにどのように影響するかを理解するのに役立ちます。
Hydra が進行するにつれて、次の出力と同様のものが表示されます。
Hydra vX.Y (c) YYYY by van Hauser/THC - Use freely but only for legal purposes.
Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] max 16 tasks per 1 server, overall 16 tasks, XXX login tries (l:1/p:XXX), ~XX tries per task
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost login: labex password: labex
1 of 1 target successfully completed, 1 valid password found
Hydra finished at YYYY-MM-DD HH:MM:SS
より大きなワードリストを使用すると、Hydra が正しいパスワードを見つけるまでに時間がかかることに気づき、スレッド数の違いがより明確になります。Hydra が完了したときに Hydra が提供する時間情報を観察してください。
このステップでは、Hydra が使用するスレッド数を 32 に増やし、クラッキング速度への影響を観察します。スレッド数を増やすことで、同時試行数を増やし、プロセスを高速化できる可能性がありますが、その有効性は、システムのリソースとターゲットサービスの制限によって異なります。
ターミナルで以下のコマンドを実行し、Hydra を 32 スレッドで実行します。
hydra -V -t 32 -l labex -P ~/project/password.txt ssh://localhost
このコマンドは前のコマンドと同一ですが、-t 32を追加した点が異なります。これは、Hydra に 32 スレッドを使用するように明示的に指示します。-Vフラグは、各パスワード試行を表示できるようにします。
出力を観察してください。Hydra が 32 個のタスク/スレッドを開始したことを報告するはずです。
Hydra vX.Y (c) YYYY by van Hauser/THC - Use freely but only for legal purposes.
Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] max 32 tasks per 1 server, overall 32 tasks, XXX login tries (l:1/p:XXX), ~XX tries per task
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost login: labex password: labex
1 of 1 target successfully completed, 1 valid password found
Hydra finished at YYYY-MM-DD HH:MM:SS
速度の比較:
より大きなワードリストを使用すると、16 スレッド実行と 32 スレッド実行の間でより顕著な時間差を観察できるはずです。以下の点に注意してください。
32 スレッドを使用すると、特にターゲットパスワードがワードリストの後の方にある場合、完了時間が速くなる可能性があります。ただし、システムリソースの使用が増加し、同時に実行される接続試行数が増加する可能性もあります。
このステップでは、Hydra が使用するスレッド数を 4 に減らし、パフォーマンスへの影響を観察します。このシナリオは、システムリソースが限られている場合、またはターゲットサービスが過剰なレート制限を設けており、過剰な同時接続試行をブロックする可能性がある場合に役立ちます。
ターミナルで以下のコマンドを実行し、Hydra を 4 スレッドで実行します。
hydra -V -t 4 -l labex -P ~/project/password.txt ssh://localhost
このコマンドは、前のコマンドと似ていますが、-t 4を使用してスレッド数を 4 に明示的に設定しています。-Vフラグは、各パスワード試行の詳細を表示します。
出力を観察してください。Hydra が 4 つのタスク/スレッドのみを開始していることがわかるはずです。
Hydra vX.Y (c) YYYY by van Hauser/THC - Use freely but only for legal purposes.
Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] max 4 tasks per 1 server, overall 4 tasks, XXX login tries (l:1/p:XXX), ~XX tries per task
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost login: labex password: labex
1 of 1 target successfully completed, 1 valid password found
Hydra finished at YYYY-MM-DD HH:MM:SS
影響を観察する:
4 つのスレッドとより大きなワードリストを使用すると、パフォーマンスに大きな違いがあることに気付くはずです。
この実験は、スレッド数を減らすと一般的にパフォーマンスが低下しますが、ターゲットシステムのセキュリティ対策による検出を回避する場合や、リソースが限られたマシンで動作する場合など、特定の状況では必要な調整であることを示しています。
このステップでは、これまでのステップで得られた観察結果に基づき、スレッド数のパフォーマンスへの影響を Hydra で分析します。Metasploit フレームワークから取得した大規模なワードリストを使用して、4、16(デフォルト)、32 スレッドを試行しました。
スレッド数に関する重要な考慮事項:
unix_passwords.txtワードリストには数百のエントリが含まれており、異なるスレッド数のパフォーマンスへの影響をより明確に観察できます。観察結果と一般的なガイドライン:
考慮すべきパフォーマンス指標:
スレッドのパフォーマンスを評価する際には、以下の点を考慮してください。
結論:
Hydra にとって最適なスレッド数は一概に言えません。最適な設定は、攻撃マシンとターゲットサービスの特定の要因によって異なります。速度とリソース使用量の最も効率的なバランスを見つけるために、さまざまな設定を試行し、システムのパフォーマンスとターゲットの応答を監視することが重要です。これらのダイナミクスを理解することで、さまざまなシナリオで Hydra 攻撃を最適化できます。
この実験では、大規模なパスワードワードリストを使用して Hydra のスレッド数を調整し、パフォーマンスへの影響を学びました。まず、LabEx 仮想マシン上に基本的な SSH サーバーを設定しました。次に、Metasploit フレームワークのunix_passwords.txtワードリストを使用して、この SSH サーバーに対して、デフォルトの 16 スレッド、増加させた 32 スレッド、そして減少させた 4 スレッドのそれぞれでパスワードクラッキングを試行しました。現実的なサイズのワードリストを用いた各シナリオの速度と完了時間から、スレッド数が Hydra の効率性にどのように影響するかを実践的に理解しました。この実験は、パスワードクラッキング操作で最適なパフォーマンスを得るために、利用可能なシステムリソースとターゲットサービスの特性に基づいてスレッド数を最適化することの重要性を示しました。