はじめに
この実験では、さまざまなプロトコルに対するネットワークログインの総当たり攻撃に利用できる、柔軟なパスワードクラッキングツールHydraのインストールと動作確認を行います。パッケージのインストール、バージョンの確認、基本的なコマンドテストを通じて、正常に利用できる状態であることを確認します。
Hydraのバージョン確認、実行ファイルの場所の特定、コマンドオプションの確認といった基本操作を実際に練習します。これらの手順により、インストールが正常に完了したことを確認しながら、この重要なセキュリティツールの使い方に慣れることができます。
システムにHydraをインストールする
このステップでは、ネットワークセキュリティのテストに使用される強力なパスワードクラッキングツールHydraをインストールします。Hydraはログインシステムに対して総当たり攻撃を実行でき、HTTP、FTP、SSHなど30種類以上のプロトコルに対応しています。安全に学習できるLabEx VMへインストールします。
注: 無料ユーザーはインターネットに接続できないため、実験環境にはHydraがあらかじめインストールされています。リストの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には、バージョン番号だけを表示する専用オプションはありません。ヘルプ出力の冒頭に表示されるバナーに、バージョン番号が含まれています。
Hydraのヘルプコマンドを実行し、最初の1行だけを表示します。
hydra -h 2>&1 | head -n 1
次のような出力が表示されます。
Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak ...
正確なバージョンや著作権年は異なる場合があります。Hydra v...というバナーが表示されれば、シェルがインストール済みの実行ファイルを見つけ、起動できたことを確認できます。
バージョン確認にhydra -vやhydra -Vを使用しないでください。Hydraでは、-vは詳細表示モードを有効にし、-Vは試行したログイン情報とパスワードを逐一表示します。どちらも実際の対象と組み合わせて使用するオプションです。単独で実行するとバナーは表示されますが、対象が指定されていないため、その後エラーになります。
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)
- 出力から、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 -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が試行するサンプルパスワードを記述します。
echo -e "password\n123456\nqwerty" > ~/project/test_passwords.txt
- テスト用のユーザー名リストを作成します。同様に、このファイルにはHydraが試行するサンプルユーザー名を記述します。
echo -e "admin\ntest\nroot" > ~/project/test_usernames.txt
- 次に、ローカルホスト(自分自身のマシン)を対象としてHydraをテストモードで実行します。自分のマシンだけを対象にし、実際には有効でないテスト用認証情報を使用するため、安全に実行できます。
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)
- このコマンドでは、安全な次のパラメータを使用しています。
-L: 作成したユーザー名リストファイルのパスを指定-P: 作成したパスワードリストファイルのパスを指定-t 1: Hydraの並列接続数を1に制限(テストは遅くなりますが、より安全です)-vV: 詳細な出力を有効にし、Hydraの処理内容を表示ssh: SSHプロトコルを対象にテストすることを指定(ただし、このテストは成功しません)
このテストでは、危険を伴わずにHydraの基本的な動作を確認できます。Hydraが異なるユーザー名とパスワードの組み合わせを体系的に試行する様子が表示されますが、ローカルマシンに対してログインが成功することはありません。
まとめ
この実験では、LabEx VMシステムにパスワードクラッキングツールHydraをインストールし、動作を確認する方法を学びました。パッケージの更新、aptを使用したHydraのインストール、/usr/bin/hydraにあるインストール先の確認を行いました。また、hydra -vおよびhydra -Vコマンドを使ってHydraのバージョンを確認しました。
さらに、which hydraで実行ファイルのパスを特定し、hydra -hなどのコマンドをテストすることで、Hydraの基本機能を確認しました。これらの手順により、Hydraが正しくインストールされ、セキュリティテストの実践に利用できる状態であることを確認できました。


