Kali Linuxで学ぶ「THC Hydra」入門(コマンドの使い方からSSHブルートフォースまで徹底解説!)

THC Hydra(通称: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
  • -l root:ログインID
  • -P passwords.txt:パスワードファイル
  • 192.168.1.100:ログイン先
  • ssh:サービス

この1行で、passwords.txtに記載されているパスワードを用いて、ターゲットのIPアドレス192.168.1.100に対して、SSHログイン試行を行います。

多様なプロトコルに対応

2026年3月時点で、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大脅威において、「インターネット上のサービスへの不正ログイン」は11年連続11回目(※)のランクインを果たしており、その脅威の継続性と影響の大きさが浮き彫りになっています。(※2026年3月時点)

この脅威の背景には、使い回しのパスワードや推測しやすい文字列の利用、アカウントロック機構の未実装など、複数の要因が存在します。攻撃者はこれらの弱点を突くために、IDとパスワードの組み合わせを自動的に試行する「ブルートフォース攻撃」や「リスト型攻撃」を行います。Hydraは、こうした手法を模倣し、脆弱な認証機構が存在しないかを検証できる数少ないツールの一つです。

セキュリティ診断の結果、「初期パスワードのままのアカウントが存在する」「短時間に複数回のログイン試行が行える」などの事象が確認されれば、それは実際に攻撃を受けた場合にも容易に突破される可能性があるということを意味します。

このように、Hydraを使ったセキュリティ診断は、単なる理論的な対策ではなく、「現実に起きている脅威に対して、自社がどの程度耐性を持っているか」を実証的に評価するための手段として非常に有効です。

Hydraのインストール

Kali Linuxの場合、Hydraはプリインストールされているため、別途インストールは必要ありません。他のLinuxディスクリプションの場合、GitHubのHydra公式サイトからダウンロードすることができます。

HydraはWindowsに対応していないため、Windows OSに直接インストールすることはできません。そのため、Windowsマシンで使用するには、以下のいずれかの手段でLinux環境を用意する必要があります。

  • VirtualBoxやVMwareなどの仮想化ソフトウェアを使う【おすすめ】
  • Windows Subsystem for Linux(WSL)を利用する
  • Dockerを使ってコンテナ環境を構築する
  • CygwinでUnix互換環境を整える

この記事では、VirtualBox上に構築したKali Linuxを使用しています。

初めて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

ポート番号を指定して、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とパスワードの組み合わせ)をテキストファイルに保存することができます。

【実演解説】SSHパスワード診断

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

このセクションでは、Hydraを用いたセキュリティ診断の検証を目的として、ローカル環境に構築した仮想ネットワーク内で実施した内容について解説します。

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

OSWindows 10 Pro 22H2(64bit)
仮想化ソフトVirtualBox 7.1.8

VirtualBoxを用いて、Windowsマシン上に仮想環境を構築しています。仮想マシンには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
STEP

パスワードリストを準備

まず、パスワード診断で使用するパスワードリストを準備します。パスワードリストは、自ら作成することも可能ですが、一般的には信頼性の高い既存のリストを使用する方が効率的です。例えば、RockYou.txtは世界中のセキュリティエンジニアやペネトレーションテスターが使用している代表的なリストであり、過去に漏洩した実パスワードを収録しています。

同ファイルは、Kali Linuxに標準搭載されているWordlistsに含まれていて、/usr/share/wordlists/rockyou.txt.gzにあります。14,344,392件のパスワードが含まれていますが、今回の検証では先頭の100件のみを使用します。

-- 解凍 --
$ gzip -d rockyou.txt.gz

-- 先頭100件を抽出 --
$ head -100 rockyou.txt > pass100.txt

Ubuntuなど他のディストリビューションを使用している場合は、SecListsをインストールします。SecListsには6,000以上のワードリストが収録されており、RockYou.txtも含まれています。

STEP

パスワード診断を実行

準備が整ったので、ターゲットマシンに対して、パスワード診断を行います。ログイン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系)に認証ログが出力されます。検証時はこれらを併せて確認することで、ログイン試行を可視化することができます。

STEP

検証結果

〜 省略 〜
[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認証を突破可能です。つまり、企業システムや公開サーバで、弱いパスワードを用いたアカウントが存在する場合、同様の手法で容易に侵入されるリスクがあると言えます。

外部からのブルートフォース攻撃を防ぐ

本記事では、自社システムのパスワード強度の診断を目的として、Hydraの使い方を解説してきましたが、最後に第三者からのブルートフォース攻撃を想定した防御策について解説します。

ブルートフォース攻撃に有効な対策

アカウントロック機能の導入一定回数以上のログイン失敗が発生した場合に、該当アカウントを一時的にロックすることで、攻撃者がそれ以上の試行を続けられないようにします。
ログイン試行のインターバル制限1秒間に何十件もリクエストが来る場合、それは通常のユーザー操作ではなく自動化ツールによる攻撃の可能性が高いため、リクエストに一定の間隔を強制することで攻撃効率を低下させます。
二段階認証(2FA)や多要素認証(MFA)の導入仮に攻撃者がパスワード認証を突破したとしても、ワンタイムパスワードや生体認証などの追加要素がなければログインできないようにします。
CAPTCHAの実装ログインフォームにCAPTCHAを導入することで、自動化されたログイン試行(=Hydraなど)を効果的に阻止できます。
パスワードポリシーの強化パスワードには、最低でも12文字以上で大文字・小文字・数字・記号を組み合わせた複雑なものを採用するべきです。また、辞書的な単語(例:「password」「123456」)の使用を禁止する辞書ベースフィルタも有効です。

このような対策を実施する手段としては、侵入検知システム(IDS)侵入防止システム(IPS)などのセキュリティソリューションの導入が有効とされています。また、WordPressサイトの場合、ログイン試行回数の制限やCAPTCHAなどの機能を備えたプラグインの活用が推奨されます。

下記の記事では、ログ監視型の侵入防止システム(IPS)であるFail2Banを用いたブルートフォース攻撃の対策を解説しています。あわせてご覧ください。

デフォラボ

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

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