ブルートフォース攻撃から守るために
- Hydraの使い方から学ぶセキュリティ対策 -
この記事では、Hydraの基本的な使い方やよく使うコマンド・オプションを解説し、SSHサービスへのブルートフォース攻撃をケーススタディとして、具体的な活用例を紹介しています。
ブルートフォース攻撃への対策についても触れているため、攻撃手法を知るとともに防御策まで理解できるようになります。
ペネトレーションテストや脆弱性診断に役立つ実践的ノウハウを身に付けたい方は必見です!
THC Hydraとは
THC Hydra(通称:Hydra)とは、ログイン認証の脆弱性を調査・検証するために広く使われているパスワードクラックツールです。主にブルートフォース攻撃や辞書攻撃を通じて、ログイン認証の強度を評価する目的で使用されます。セキュリティエンジニアやペネトレーションテスターにとっては、攻撃者の視点からシステムの脆弱性を模擬的に評価するための実践的なツールとして広く認知されています。
Hydraは「The Hacker's Choice(THC)」というセキュリティ研究グループによって開発されており、オープンソース(GNU Affero General Public License)で提供されています。
Hydraが対応するプロトコル数は50を超え、企業内で運用されている主要なネットワークサービスはほぼ網羅しています。そのため、誤設定されたSSHアカウントや初期パスワードのまま運用されているFTPサービスなど、企業ネットワークに存在する多様なサービスのセキュリティ診断に対応することができます。
Hydra公式サイト:https://github.com/vanhauser-thc/thc-hydra
Hydraの特徴
Hydraは、ネットワークサービスに対するパスワードクラックを自動化するツールであり、特に高速かつ多機能である点が大きな特徴です。セキュリティ診断の現場では、ログインID・パスワードの認証強度を評価するための定番ツールとして広く利用されています。
- パスワードクラックに特化
- ペネトレーションテストに最適
- コマンドの使い方がシンプル
- 多様なプロトコルに対応
- オプション指定が豊富
- オープンソース・無料
パスワードクラックに特化
Hydraは、ネットワークサービスに対するログイン試行を高速かつ効率的に実施できることから、パスワードクラックに特化したツールとして広く知られています。特にブルートフォース攻撃(総当たり攻撃)や辞書攻撃、リスト型攻撃に対応しており、パスワード強度の検証を行う場面で非常に有効です。
パスワードリストやユーザーリストを柔軟に指定できる点もHydraの強みです。例えば、-L
や-P
オプションを使用して、実際の組織で使用されているログインIDや過去に漏洩したパスワードリストを活用することで、より実践的なセキュリティ検証が行えます。
ペネトレーションテストに最適
Hydraは、企業ネットワークやWebサービスに対するパスワード強度の検証において、非常に実用的なツールです。特に、認証システムの耐性を確認するためのペネトレーションテスト(疑似攻撃)において、その効果が顕著に現れます。例えば、SSHやFTP、HTTP、SMTPなど、認証機構を備えた多様なサービスに対応しており、現場で使用される主要なプロトコルに対してテストを実施できます。
コマンドの使い方がシンプル
Hydraは多機能でありながら、複雑なオプションや設定ファイルを事前に用意する必要はなく、基本的なパラメータを入力するだけで動作します。例えば、SSHサービスに対してブルートフォースを試みる場合、最小限の記述で以下のように実行できます。
$ hydra -l root -P passwords.txt 192.168.1.100 ssh
この一行で、root
というユーザーに対して、passwords.txt
に書いてあるパスワードを用いて、ターゲットのIPアドレス192.168.1.100
にSSH認証(ブルートフォース攻撃)を行います。
多様なプロトコルに対応
2025年5月時点で、Hydraは50種類以上のネットワークサービスやアプリケーションプロトコルに対応しており、企業の実運用環境における多様な認証経路を網羅的にテストすることが可能です。
具体的には、SSHやFTP、HTTP(S)、MySQL、PostgreSQL、Telnet、RDP、IMAP、POP3、VNCなど、一般的なプロトコルはほぼ全てサポートされています。また、SIPやRedis、Rexec、Cisco AAAなど、比較的特殊なプロトコルにも対応しており、金融、医療、製造業など、業界特有の環境にも柔軟に対応できます。
Currently this tool supports the following protocols:
Asterisk, AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP,
HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-POST, HTTP-PROXY,
HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTPS-POST,
HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MEMCACHED, MONGODB, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener,
Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, Radmin, RDP, Rexec, Rlogin,
Rsh, RTSP, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP v1+v2+v3, SOCKS5,
SSH (v1 and v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth,
VNC and XMPP.Hydra公式サイト(https://github.com/vanhauser-thc/thc-hydra)より引用
これにより、特定のプロトコルに依存する企業ネットワークでも、Hydraを用いたペネトレーションテストを網羅的に実施することが可能になります。
オプション指定が豊富
ユーザーが求めるさまざまなシナリオに対応できるよう、多数のコマンドラインオプションが用意されています。これにより、ターゲット環境やペネトレーションテストの目的に応じたカスタマイズが可能になります。
オープンソース・無料
Hydraは、AGPL(GNU AFFERO GENERAL PUBLIC LICENSE)に基づいて提供されているオープンソースソフトウェアであり、無料で利用できます。セキュリティツールとしては非常に高機能でありながら、商用ツールのような高額なライセンス費用が不要である点が、多くのセキュリティエンジニアやペネトレーションテスターに支持されている理由の一つです。
Hydraを使ってセキュリティ診断する理由
Hydraを用いてセキュリティ診断を行う最大の理由は、「不正ログイン」の脅威が依然として深刻であり、しかも現実に頻発しているためです。
IPA(情報処理推進機構)が毎年発表している情報セキュリティ10大脅威において、「インターネット上のサービスへの不正ログイン」は、2025年時点で10年連続10回目のランクインを果たしており、その脅威の継続性と影響の大きさが浮き彫りになっています。
この脅威の背景には、使い回しのパスワードや推測しやすい文字列の利用、アカウントロック機構の未実装など、複数の要因が存在します。攻撃者はこれらの弱点を突くために、IDとパスワードの組み合わせを自動的に試行する「ブルートフォース攻撃」や「リスト型攻撃」を行います。Hydraは、こうした攻撃手法を模倣し、実環境で脆弱な認証機構が存在しないかを検証できる数少ないツールの一つです。
仮に、診断の結果として「短時間に複数の試行が成功する」「初期パスワードのままのアカウントが存在する」などの事象が確認されれば、それは実際に攻撃を受けた場合にも容易に突破される可能性があるということを意味します。
このように、Hydraを使ったセキュリティ診断は、単なる理論的な対策ではなく、「現実に起きている脅威に対して、自社がどの程度耐性を持っているか」を実証的に評価するための手段として非常に有効です。
Hydraのインストール方法
Hydraは、UbuntuなどのLinux環境での使用を前提としており、GitHubから入手することができます。ダウンロード、およびインストールについては、GitHubのHydra公式サイトをご確認ください。
なお、HydraはWindowsに対応していないため、Windows OSにそのままインストールすることはできません。そのため、Windowsマシンで使用するには、以下のいずれかの手段でLinux環境を用意する必要があります。
- VirtualBoxやVMwareなどの仮想化ソフトウェアを使う
- Windows Subsystem for Linux(WSL)を利用する
- Dockerを使ってコンテナ環境を構築する
- CygwinでUnix互換環境を整える
この記事では、Windows上のVirtualBoxに導入したKali LinuxにプリインストールされているHydraを使用しています。※詳細は後述しています。
また下記の記事では、初めてKali Linuxを利用する方向けに、Kali Linuxの特徴やインストール方法について解説しています。ぜひご覧ください。
hydraコマンド・オプションの使い方
Hydraは、コマンドラインインターフェース(CLI)ベースのパスワードクラックツールです。このセクションでは、hydraコマンドの使い方について、具体的なコマンド事例を挙げて解説します。
起動方法
Hydraはコマンドラインインターフェース(CLI)を採用しているため、基本的にはターミナルからhydra
コマンドを実行するだけです。Hydraが正しくインストールされていれば、オプションなしでhydra
と入力するだけで、バージョン情報および使用可能なオプションの一覧が表示されます。

また、Kali Linuxの場合、パネル(メニュー)から起動することもできます。

05-Password Attacks
-Online Attacks
-hydra
を選択すると、自動的にターミナルが起動し、対話形式でHydraを実行することができます。

基本コマンド
Hydraの基本的なコマンド構文は、以下のようにシンプルです。
$ hydra [オプション] [ターゲット] [サービス]
例)
$ hydra -l root -p password123 192.168.1.100 ssh
$ hydra -l root -p password123 ssh://192.168.1.100
-h
オプションを指定するより、ヘルプを確認することができます。
$ hydra -h
オプションの使い方
hydraコマンドは多機能であり、目的に応じて柔軟なオプション指定が可能です。ここでは、実務でよく使用されるオプションについて、具体的なコマンド事例をもとに解説します。
よく使う主なオプション一覧
オプション | 内容 | 使用例 |
---|---|---|
-l | 単一のログインIDを指定 | -l root |
-L | ログインIDのリストファイルを指定 | -L users.txt |
-p | 単一のパスワードを指定 | -p password123 |
-P | パスワードのリストファイルを指定 | -P passwords.txt |
-s | ポート番号を明示的に指定(デフォルト以外を使用する場合) | -s 2022 |
-V | 試行するログインIDとパスワードを標準出力に表示 | -V |
-t | 同時接続スレッド数を指定(デフォルト:16) | -t 4 |
-o | 成功したログインIDとパスワードをファイルに保存 | -o result.txt |
SSHサービスに対してユーザーrootでブルートフォースを行う
$ hydra -l root -P passwords.txt 192.168.1.100 ssh
または
$ hydra -l root -P passwords.txt ssh://192.168.1.100
このコマンドは、指定したpasswords.txt
に記載された各パスワードを順に試行し、SSHサービスへのログインが成功するかを検証します。オプションの-l
は単一ログインIDの指定、-P
はパスワードリストのファイルパス、192.168.1.100
は攻撃対象ホストのIPアドレス、そしてssh
は対象プロトコルです。
複数のログインIDを対象にしたい場合は、-l
の代わりに-L
オプションを使用し、ログインIDを列挙したファイルを指定します。
$ hydra -L users.txt -P passwords.txt 192.168.1.100 ssh
2022番ポートに対して、SSHブルートフォースを行う
$ hydra -l root -P passwords.txt -s 2022 192.168.1.100 ssh
セキュリティ対策の一環として、ポート番号を変更している場合、-s
オプションにてポート番号を指定することができます。
複数のターゲットマシンに対して、SSHブルートフォースを行う
$ hydra -l root -P passwords.txt -M hosts.txt ssh
診断対象のマシンが複数ある場合には、IPアドレスの代わりに-M
オプションを用いてファイルを指定することも可能です
試行中のログインIDとパスワードを表示する
$ hydra -l root -P passwords.txt -V 192.168.1.100 ssh
〜 省略 〜
[ATTEMPT] target 192.168.1.100 - login "root" - pass "password" - 1 of 6 [child 0] (0/0)
[ATTEMPT] target 192.168.1.100 - login "root" - pass "12345678" - 2 of 6 [child 1] (0/0)
[ATTEMPT] target 192.168.1.100 - login "root" - pass "123456789" - 3 of 6 [child 1] (0/0)
[ATTEMPT] target 192.168.1.100 - login "root" - pass "1qaz2wsx" - 4 of 6 [child 0] (0/0)
[ATTEMPT] target 192.168.1.100 - login "root" - pass "asdfghjk" - 5 of 6 [child 1] (0/0)
〜 省略 〜
-V
オプションを指定することにより、解析中のログインIDとパスワードをリアルタイムでログ出力できます。
ブルートフォースの速度を調整する
$ hydra -l root -P password.list -t 4 192.168.1.100 ssh
Hydraはパラレル処理にも対応しており、-t
オプションで同時に実行するスレッド数を指定できます。(デフォルトは16)※SSHの場合、スレッド数の上限は4に制限されています。
ログインに成功したID・パスワードをファイルに出力する
$ hydra -l root -P password.list -o output.txt 192.168.1.100 ssh
Hydraの出力はターミナルに表示されるだけで、ターミナルを閉じると内容が消えてしまいます。-o
オプションを使えば、成功したログイン情報(ログインIDとパスワードの組み合わせ)をテキストファイルに保存することができます。
Hydraを使って、SSHブルートフォースを検証
本検証では、Hydraを用いたSSHブルートフォース攻撃の再現を目的とし、ローカル環境に構築した仮想ネットワーク内で検証を実施しています。
検証環境
VirtualBoxを用いて、Windowsマシン上に仮想環境を構築しています。
物理マシンのシステム構成
OS | Windows 10 Pro 22H2(64bit) |
仮想化ソフト | VirtualBox 7.1.8 |
仮想マシンにはKali Linux、Ubuntu Serverを採用し、詳細は下記のとおりです。
VirtualBox上に構築した仮想マシン
Hydra実行マシン | Kali Linux 2025.1 Hydra v9.5 |
ターゲットマシン (SSHサーバー) | Ubuntu Server 24.04.2 LTS OpenSSH_9.6p1 192.168.10.102 |
パスワードリストを準備
パスワードリストは、自ら作成することも可能ですが、一般的には信頼性の高い既存のリストを使用する方が効率的です。例えば、RockYou.txt
は世界中のセキュリティエンジニアやペネトレーションテスターが使用している代表的なリストであり、過去に漏洩した実パスワードを収録しています。
同ファイルは、Kali Linuxに標準搭載されており、/usr/share/wordlists/rockyou.txt.gz
にあります。14,344,392件のパスワードが含まれていますが、検証を簡略化するため、先頭の100件のみを使用します。
-- 解凍 --
$ gzip -d rockyou.txt.gz
-- 先頭100件を抽出 --
$ head -100 rockyou.txt > pass100.txt
ブルートフォース攻撃を実行
準備が整ったので、ターゲットマシンに対して、ブルートフォース(リスト型攻撃)を行います。ログインIDは固定(demo
)、パスワードは前述のリスト(pass100.txt
)を使用します。
$ hydra -l demo -P pass100.txt -V -t 4 192.168.10.102 ssh
Hydra v9.5 (c) 2023 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-05-19 17:11:47
[DATA] max 4 tasks per 1 server, overall 4 tasks, 100 login tries (l:1/p:100), ~25 tries per task
[DATA] attacking ssh://192.168.10.102:22/
[ATTEMPT] target 192.168.10.102 - login "demo" - pass "123456" - 1 of 100 [child 0] (0/0)
[ATTEMPT] target 192.168.10.102 - login "demo" - pass "12345" - 2 of 100 [child 1] (0/0)
[ATTEMPT] target 192.168.10.102 - login "demo" - pass "123456789" - 3 of 100 [child 2] (0/0)
[ATTEMPT] target 192.168.10.102 - login "demo" - pass "password" - 4 of 100 [child 3] (0/0)
[ATTEMPT] target 192.168.10.102 - login "demo" - pass "iloveyou" - 5 of 100 [child 0] (0/0)
〜 省略 〜
[ATTEMPT] target 192.168.10.102 - login "demo" - pass "jonathan" - 81 of 100 [child 0] (0/0)
[ATTEMPT] target 192.168.10.102 - login "demo" - pass "987654321" - 82 of 100 [child 3] (0/0)
[ATTEMPT] target 192.168.10.102 - login "demo" - pass "computer" - 83 of 100 [child 2] (0/0)
[ATTEMPT] target 192.168.10.102 - login "demo" - pass "whatever" - 84 of 100 [child 1] (0/0)
[ATTEMPT] target 192.168.10.102 - login "demo" - pass "dragon" - 85 of 100 [child 0] (0/0)
[ATTEMPT] target 192.168.10.102 - login "demo" - pass "vanessa" - 86 of 100 [child 3] (0/0)
[ATTEMPT] target 192.168.10.102 - login "demo" - pass "cookie" - 87 of 100 [child 2] (0/0)
[ATTEMPT] target 192.168.10.102 - login "demo" - pass "naruto" - 88 of 100 [child 1] (0/0)
[22][ssh] host: 192.168.10.102 login: demo password: naruto
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-19 17:13:00
検証結果
〜 省略 〜
[ATTEMPT] target 192.168.10.102 - login "demo" - pass "naruto" - 88 of 100 [child 1] (0/0)
[22][ssh] host: 192.168.10.102 login: demo password: naruto
1 of 1 target successfully completed, 1 valid password found
〜 省略 〜
検証環境においてSSHブルートフォース攻撃を実施した結果、正しいパスワード(88番目)に到達するまでに要した時間は1分13秒でした。
この結果から分かる通り、リストに正しい認証情報が含まれていれば、HydraはSSH認証を突破可能です。つまり、企業システムや公開サーバで、弱いパスワードを用いたアカウントが存在する場合、同様の手法で容易に侵入されるリスクがあると言えます。
ブルートフォース攻撃の対策
ブルートフォース攻撃は、攻撃者が総当たりでIDやパスワードを試行し、正しい認証情報を見つけ出す手法です。Hydraのようなツールは、こうした攻撃を自動化し、非常に短時間で膨大な組み合わせを試行することが可能です。したがって、企業システムやサービスを安全に保つためには、ブルートフォース攻撃を想定した多層的な防御策を講じる必要があります。
ブルートフォース攻撃に有効な対策
アカウントロック機能の導入 | 一定回数以上のログイン失敗が発生した場合に、該当アカウントを一時的にロックすることで、攻撃者がそれ以上の試行を続けられないようにします。 |
ログイン試行のインターバル制限 | 1秒間に何十件もリクエストが来る場合、それは通常のユーザー操作ではなく自動化ツールによる攻撃の可能性が高いため、リクエストに一定の間隔を強制することで攻撃効率を低下させます。 |
二段階認証(2FA)や多要素認証(MFA)の導入 | 仮に攻撃者がパスワード認証を突破したとしても、ワンタイムパスワードや生体認証などの追加要素がなければログインできないようにします。 |
CAPTCHAの実装 | ログインフォームにCAPTCHAを導入することで、自動化されたログイン試行(=Hydraなど)を効果的に阻止できます。 |
パスワードポリシーの強化 | パスワードには、最低でも12文字以上で大文字・小文字・数字・記号を組み合わせた複雑なものを採用するべきです。また、辞書的な単語(例:「password」「123456」)の使用を禁止する辞書ベースフィルタも有効です。 |
このような対策を実施する手段としては、侵入検知システム(IDS)や侵入防止システム(IPS)などのセキュリティソリューションの導入が有効とされています。また、WordPressサイトの場合、ログイン試行回数の制限やCAPTCHAなどの機能を備えたプラグインの活用が推奨されます。
下記の記事では、ログ監視型の侵入防止システム(IPS)であるFail2Banを用いたブルートフォース攻撃の対策を解説しています。あわせてご覧ください。