はじめに
この実験(Lab)では、多種多様なプロトコルにわたるネットワークログインをブルートフォース攻撃するための汎用的なパスワードクラッキングツールである Hydra のインストールと検証について学びます。演習では、パッケージのインストール、バージョン検証、および適切な機能を保証するための基本的なコマンドテストについて説明します。
Hydra のバージョン確認、実行可能ファイルの場所の特定、コマンドオプションの調査など、Hydra の基本的な操作を練習します。これらの実践的な手順は、重要なセキュリティツールである Hydra のインストールが成功したことを確認し、Hydra に慣れるのに役立ちます。
システムへの Hydra のインストール
このステップでは、ネットワークセキュリティのテストに使用される強力なパスワードクラッキングツールである Hydra をインストールします。Hydra はログインシステムに対してブルートフォース攻撃を実行し、HTTP、FTP、SSH など、30 以上のプロトコルをサポートしています。ここでは、学習のための安全な環境を提供する LabEx の VM(仮想マシン)に Hydra をインストールします。
注:無料ユーザーはインターネットに接続できないため、Hydra はすでに実験(Lab)環境にプリインストールされています。リストの項目 4(Hydra がインストールされているかどうかの確認)にスキップできます。Pro にアップグレードして、Hydra のインストールをご自身で練習してください。
- まず、パッケージリストを更新する必要があります。これにより、利用可能な最新バージョンの Hydra とその依存関係がインストールされます。
sudo apt update
sudoコマンドは管理者権限を付与し、apt updateはシステムで利用可能なパッケージのリストを更新します。
- 次に、apt パッケージマネージャーを使用して Hydra をインストールします。
-yフラグは、インストール中のプロンプトを自動的に確認します。
sudo apt install -y hydra
インストールプロセスは、必要なすべての依存関係を自動的に処理します。これらは、Hydra が適切に機能するために必要な追加のソフトウェアコンポーネントです。プロセスが完了するまで待ちます。完了するとメッセージが表示されます。
インストール後、Hydra が正しくインストールされ、アクセス可能であることを確認しましょう。
whichコマンドは、システムが Hydra の実行可能ファイルをどこで見つけるかを示します。
which hydra

期待される出力:
/usr/bin/hydra
この出力は、Hydra が正しくインストールされていることを確認します。/usr/bin/の場所は、ツールがシステム全体で利用可能であることを意味するため、ターミナルの任意のディレクトリから実行できます。次のステップでは、Hydra の強力な機能の使用方法について説明します。
バージョンチェックによる Hydra のインストール検証
このステップでは、Hydra のバージョン番号を確認して、Hydra が正しくインストールされていることを検証します。これは、ソフトウェアが正しくインストールされていること、システムが(PATH を通じて)それを見つけることができること、および使用する準備ができていることの 3 つの重要な事項を確認するため、不可欠な最初のチェックです。
Hydra のようなコマンドラインツールを使用する場合、バージョンチェックは常に良い出発点です。正しいツールを使用していることを確認し、インストールに関する基本的な情報を提供します。
- まず、基本的なバージョンチェックから始めましょう。ターミナルに次のコマンドを入力します。
hydra -v
- これを実行すると、次のような出力が表示されます。
Hydra v9.2 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes.
これは、バージョン番号(この例では v9.2)と著作権情報を示しています。バージョン番号は、チュートリアルやドキュメントに従う場合に特に重要です。異なるバージョンでは、機能がわずかに異なる可能性があるためです。
- コンパイル方法など、Hydra のインストールに関するより技術的な詳細については、大文字の
-Vオプションを使用します。
hydra -V
- このコマンドは、トラブルシューティングや問題の報告に役立つ可能性のある追加のビルド情報を表示します。
これらの簡単なチェックは、いくつかの重要なことを実現します。
- Hydra がインストールされ、動作していることを確認します
- システムが Hydra コマンドを見つけることができることを確認します(つまり、PATH に存在します)
- 使用しているバージョンに関する情報を提供します
- インストールに関する即時の問題を特定するのに役立ちます
これらのコマンドのいずれかが失敗するか、エラーが発生した場合、Hydra が正しくインストールされていないか、システムの PATH にない可能性が高く、インストールのトラブルシューティングが必要になります。
Hydra 実行可能ファイルのパスを特定する
このステップでは、システムに Hydra がどこにインストールされているかを見つける方法を学びます。Hydra のようなソフトウェアをインストールすると、システムはその実行可能ファイルを特定のディレクトリに配置します。このパスを知ることは、次の理由から不可欠です。
- インストールが成功したことを確認するのに役立ちます
- スクリプトまたはエイリアスを作成するときにこのパスが必要になります
- システム管理者は、セキュリティ監査のために実行可能ファイルの場所を確認する必要があることがよくあります
Hydra の場所を特定するための基本的なコマンドから始めましょう。
whichコマンドを使用して、Hydra の実行可能ファイルを特定します。このコマンドは、システムの PATH(パス)環境変数を検索して、Hydra がどこにインストールされているかを見つけます。
which hydra
- 出力には、Hydra のメイン実行可能ファイルが存在するフルパスが表示されます。一般的な Linux システムでは、次のようなものが表示されます。
/usr/bin/hydra
- 次に、この実行可能ファイルに関する詳細情報を取得しましょう。次のコマンドは、
ls -l(ファイルの詳細を表示)とwhich hydra(パスを取得)を組み合わせたものです。
ls -l $(which hydra)
- これにより、次の重要な情報が得られます。
- ファイルの権限(誰が読み取り/書き込み/実行できるか)
- ファイルの所有者(通常、システムにインストールされたプログラムの場合は root)
- ファイルサイズと変更日
- 実際のパス
出力例:
-rwxr-xr-x 1 root root 123456 Jan 1 00:00 /usr/bin/hydra
- さらに深く掘り下げるために、Hydra の実行可能ファイルがどのような種類のファイルであるかを確認できます。これは、それがスクリプトやシンボリックリンクではなく、本物のバイナリであることを確認する必要がある場合に特に役立ちます。
file $(which hydra)
- 出力は、それがコンパイルされたバイナリ(スクリプトではない)であることを示し、そのアーキテクチャとリンクに関する技術的な詳細を示します。
/usr/bin/hydra: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=abcdef1234567890, for GNU/Linux 3.2.0, stripped
これらのコマンドは、Hydra がどこにインストールされているか、およびそれがどのような種類の実行可能ファイルであるかについての完全な全体像を提供します。これは、コマンドラインツールを操作するための基本的な知識です。
ヘルプコマンドで Hydra を実行する
このステップでは、Hydra の基本的な使用法とコマンド構文を理解するために、Hydra に組み込まれているヘルプドキュメントにアクセスする方法を学びます。Hydra のヘルプシステムは、このツールを使用する際の最初の参照点です。利用可能なすべてのコマンドとオプションが詳細に説明されているためです。
- 一般的なコマンド構造と一般的なオプションを示す基本的なヘルプメニューを表示するには、ターミナルで次の簡単なコマンドを実行します。
hydra -h
- 出力には、Hydra のバージョン情報とそれに続く基本的なコマンド構文が表示されます。これには以下が含まれます。
- 必須パラメータの形式
- 一般的なオプションフラグ
- 基本的な使用例 通常、次のようなものが表示されます。
Hydra v9.2 (c) 2022 by van Hauser/THC & David Maciejak
Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-SuvV46] [service://server[:PORT][/OPT]]
Options:
-l LOGIN or -L FILE login with LOGIN name, or load several logins from FILE
-p PASS or -P FILE try password PASS, or load several passwords from FILE
...
- 特定のサービス(HTTP や FTP など)の高度なオプションを示すプロトコル固有のヘルプについては、次のコマンド形式を使用します。
hydra -U SERVICE
SERVICEを、http、ftp、sshなど、使用している実際のプロトコル名に置き換えます。これにより、その特定のサービスの特殊なオプションが表示されます。
- Hydra が連携できる利用可能なすべてのサービスモジュールを検出するには、次のコマンドを実行します(「foo」と「bar」は単なるプレースホルダーであることに注意してください)。
hydra -l foo -p bar -U
- 包括的なヘルプ出力は、次の重要な情報を提供します。
- 各モジュールの必須パラメータとオプションパラメータ
- 実用的な使用例
- サポートされているプロトコルの完全なリスト
- テストを調整するためのパフォーマンス関連の設定
Hydra のヘルプシステムはコンテキスト依存であることに注意してください。表示される情報は、-hまたは-Uフラグと組み合わせるオプションに基づいて変化します。
ダミーコマンドで Hydra をテストする
このステップでは、実際のシステムを攻撃することなく、Hydra の基本的な機能を検証するために、Hydra で安全なテストコマンドを実行します。これは、実際のシナリオで使用する前に、Hydra の動作を理解するための重要な最初のステップです。
- まず、テストパスワードリストを作成します。このファイルには、Hydra がテスト中に試行するサンプルパスワードが含まれます。
echo -e "password\n123456\nqwerty" > ~/project/test_passwords.txt
- テストユーザー名リストを作成します。同様に、このファイルには、Hydra が使用を試みるサンプルユーザー名が含まれます。
echo -e "admin\ntest\nroot" > ~/project/test_usernames.txt
- 次に、localhost(自分のマシン)に対してテストモードで Hydra を実行します。これは、自分自身をターゲットにしており、実際には機能しないテストクレデンシャル(credential)を使用しているため、完全に安全です。
hydra -L ~/project/test_usernames.txt -P ~/project/test_passwords.txt 127.0.0.1 ssh -t 1 -vV
- テスト試行を示す出力が表示されるはずです。この出力は、Hydra がパスワードの組み合わせをどのように処理するかを示していますが、実際にはログインに成功しません。
[DATA] attacking ssh://127.0.0.1:22/
[VERBOSE] Resolving addresses ... [VERBOSE] resolving done
[INFO] Testing if password authentication is supported by ssh://127.0.0.1:22
[22][ssh] host: 127.0.0.1 login: admin password: password
[22][ssh] host: 127.0.0.1 login: admin password: 123456
[22][ssh] host: 127.0.0.1 login: admin password: qwerty
...
[STATUS] attack finished for 127.0.0.1 (waiting for children to complete tests)
- コマンドは、理解しておくべき次の安全なパラメータ(parameter)を使用します。
-L: 作成したユーザー名リストファイルへのパス(path)を指定します-P: 作成したパスワードリストファイルへのパスを指定します-t 1: Hydra を 1 つの並列接続(parallel connection)に制限します(テストは遅くなりますが、より安全です)-vV: 詳細な出力(verbose output)を有効にして、Hydra が何をしているかを確認できるようにしますssh: SSH プロトコル(protocol)に対してテストしていることを指定します(ただし、このテストは成功しません)
このテストは、リスクなしに Hydra の基本的な操作を示し、さまざまなユーザー名/パスワードの組み合わせを体系的に試行する方法を示しています。出力には試行が表示されますが、ローカルマシン(local machine)に対して成功するものはありません。
まとめ
この実験(Lab)では、LabEx VM システムに Hydra パスワードクラッキングツールをインストールして検証する方法を学びました。このプロセスには、パッケージの更新、aptによる Hydra のインストール、および/usr/bin/hydraでのインストールパスの確認が含まれていました。また、hydra -vコマンドとhydra -Vコマンドの両方を使用して Hydra のバージョンを確認することにより、インストールを検証しました。
さらに、which hydraを使用して実行可能パスを特定し、hydra -hのようなコマンドをテストすることにより、Hydra の基本的な機能を調査しました。これらのステップにより、Hydra が適切にインストールされ、セキュリティテストシナリオでの実用的な使用の準備が整っていることが確認されました。


