Hydra を使用したパスワードクラック

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

はじめに

この実験では、パスワードの脆弱性と、パスワードの強度をテストするための有名なセキュリティツールである Hydra の使い方について学びます。練習用の Web サイトに対してブルートフォース攻撃(総当たり攻撃)をシミュレートすることで、脆弱なパスワードがいかに簡単に破られてしまうかを理解します。

この実践的な体験を通じて、サイバーセキュリティにおいて強力なパスワードがなぜ不可欠であるかを実感できるでしょう。また、Hydra の設定、攻撃結果の分析、パスワードセキュリティ対策の評価に関する実用的なスキルを習得します。

ターゲット Web サイトの探索

このステップでは、テスト対象となる Web サイトを確認し、ブルートフォース攻撃の概念について説明します。自動化ツールを使い始める前に、基本的な認証システムがどのように機能し、何を達成しようとしているのかを理解することが重要です。

実験環境の Web 8080 タブを開いてください。ブラウザのインターフェースが表示され、ユーザー名とパスワードを入力するフィールドがあるシンプルなログインページが表示されます。これは、日常的に多くの Web サイトで見かけるログインページと同じようなものです。

ログインページのスクリーンショット

システムがどのように反応するかを確認するために、いくつか基本的なログインを試してみましょう。

  1. 1 回目の試行:

    • ユーザー名:test
    • パスワード:password123
  2. 2 回目の試行:

    • ユーザー名:admin
    • パスワード:admin

試行するたびに、「Invalid username or password(ユーザー名またはパスワードが無効です)」というメッセージが表示されます。この汎用的なレスポンスは意図的なものです。ユーザー名が存在するのか、それともパスワードだけが間違っているのかを教えないようにしています。これは「隠蔽によるセキュリティ(security through obscurity)」と呼ばれ、攻撃者が有効なアカウントに関する情報を収集するのを防ぐのに役立ちます。

また、何の制限もなく異なる組み合わせを試し続けられることに注目してください。実際の運用システムでは、自動攻撃を防ぐために、数回失敗した後にアカウントロックアウトや CAPTCHA などのセキュリティ対策が実施されるのが一般的です。この実験環境ではこれらの保護機能がないため、ブルートフォース手法のデモンストレーションに適しています。

今手動で行ったこと、つまり異なるユーザー名とパスワードの組み合わせを試すことは、本質的にブルートフォース攻撃の手動版です。実際の攻撃では、ハッカーは自動化ツールを使用して、1 秒間に数千もの組み合わせを試します。この演習は、なぜ「password123」や「admin」のような単純なパスワードが極めて脆弱であるか、そしてなぜシステムに適切なセキュリティ対策が必要であるかを示しています。

パスワードリストの確認

ブルートフォース攻撃の基本概念を理解したところで、攻撃者が使用する可能性のある一般的なパスワードのリストを確認してみましょう。先に進む前に、ブルートフォース攻撃は、正しい組み合わせが見つかるまで、考えられるすべてのパスワードの組み合わせを体系的に試すことで機能することを知っておく必要があります。あらかじめ作成されたパスワードリストを使用することで、このプロセスを大幅に高速化できます。

実験環境の Desktop タブ に戻ってください。ここでは、すべてのコマンドを実行し、結果を確認します。

デスクトップ上の Xfce Terminal アイコンをダブルクリックして開きます。ターミナルは、この実験でコマンドを実行するための主要なツールです。

デスクトップ上の Xfce Terminal

現実のシナリオでは、攻撃者は過去のデータ漏洩から得られた膨大なパスワードリストを使用することがよくあります。これらのリストには、セキュリティインシデントで流出した数百万ものパスワードが含まれています。この実験では、概念を実証するために、インターネットで見つかる一般的な脆弱なパスワードをまとめた小さなリストを使用します。このリストはあらかじめ用意されており、/home/labex/project/500-worst-passwords.txt に配置されています。

ファイルの最初の数行を表示する head コマンドを使用して、ファイルの内容を確認してみましょう。

head -n 10 500-worst-passwords.txt

このコマンドは、リストの最初の 10 個のパスワードを表示します。-n 10 オプションは、正確に 10 行表示するように指定しています。

123456
password
12345678
1234
12345
dragon
qwerty
567sjej
mustang
letmein

これらのパスワードは、残念ながら今でも多くの人が使用している一般的なものです。数字の羅列や一般的な単語など、いかに単純で予測しやすいものであるかに注目してください。これこそが、攻撃者が不正アクセスを試みる際に、まずこれらを試す理由です。

このようなリストを使用することで、攻撃者はブルートフォース攻撃を大幅にスピードアップできます。文字のあらゆる組み合わせを試す(これには何年もかかる可能性があります)代わりに、可能性の高いパスワードから始めることで、短時間で成功する確率を大幅に高めます。サイバーセキュリティでは、これを「辞書攻撃(dictionary attack)」と呼びます。これは、ランダムな推測ではなく、既知のパスワードを使用する、よりスマートなブルートフォース攻撃の一種です。

Hydra のセットアップ

パスワードリストの準備ができたので、ブルートフォース攻撃のシミュレーションを自動化するために使用するツール、Hydra をセットアップしましょう。Hydra は、さまざまな組み合わせを体系的に試すことで、セキュリティ専門家がパスワードの強度をテストするのに役立つ強力なパスワードクラックツールです。

まず、テストしたい一般的なユーザー名を含むシンプルなテキストファイルを作成します。多くのシステムでは、攻撃者が最初に試すような予測可能なデフォルトのユーザー名が使用されているため、これは重要です。以下のコマンドを実行してください。

cd ~/project
echo -e "admin\nuser\nroot" > ~/project/usernames.txt
cat ~/project/usernames.txt

最初のコマンド (cd ~/project) は、正しい作業ディレクトリにいることを確認します。2 番目のコマンドは、3 つの一般的なユーザー名(admin、user、root)をそれぞれ新しい行に記述した usernames.txt というファイルを作成します。3 番目のコマンドは、ファイルの内容を表示して、正しく作成されたことを確認します。

次に、Hydra がインストールされていることを確認しましょう。現実のシナリオでは通常、自分でインストールしますが、この実験環境では以下の通りです。

注意:無料ユーザーはインターネットに接続できないため、Hydra は実験環境にあらかじめインストールされています。このコマンドはスキップして構いません。Pro ユーザーにアップグレードすると、自分で Hydra をインストールする練習ができます。

Pro ユーザーのみ
sudo apt-get update
sudo apt-get install hydra -y

Hydra は、候補となるユーザー名とパスワードのリストを受け取り、ターゲットとなるサービスに対して各組み合わせで認証を試行することで機能します。HTTP、FTP、SSH など、多くのプロトコルをサポートしています。このツールは、ペネトレーションテスター(侵入テスト担当者)がシステムの脆弱なパスワードを特定するのに特に役立ちます。

Hydra が正しく動作していることを確認するために、バージョンと利用可能なオプションをチェックできます。

hydra -h

このコマンドは Hydra のヘルプメニューを表示し、利用可能なすべてのコマンドとオプションを示します。さまざまな攻撃モード、サポートされているプロトコル、パスワードクラックの試行をカスタマイズする方法についての情報が表示されます。これは、Hydra を使い始める前に何ができるかを理解するのに役立ちます。

Hydra を使用したパスワードクラック

Hydra がインストールされ、パスワードリストの準備が整ったので、これを使用して練習用 Web サイトへのブルートフォース攻撃をシミュレートしてみましょう。始める前に、Hydra はログインページに対して異なるユーザー名とパスワードの組み合わせを体系的に試行する自動化ツールであることを理解しておいてください。これをブルートフォース攻撃と呼びます。

次の Hydra コマンドを実行します。

hydra -L ~/project/usernames.txt -P ~/project/500-worst-passwords.txt localhost -s 8080 http-post-form "/:username=^USER^&password=^PASS^:Invalid username or password" -o ~/project/hydra_results.txt

このコマンドの各部分が何をしているのか、詳しく見ていきましょう。

  • hydra: Hydra ツールを起動するコマンドです。
  • -L ~/project/usernames.txt: 試行するユーザー名の候補が含まれているファイルを指定します。
  • -P ~/project/500-worst-passwords.txt: 各ユーザー名に対してテストする一般的なパスワードのファイルを指定します。
  • localhost -s 8080: テスト対象の Web サーバーのアドレス (localhost) とポート (8080) です。
  • "/:username=^USER^&password=^PASS^:Invalid username or password": これは Hydra に以下の情報を伝えます。
    • ログインページの URL (/)
    • ログインフォームのフィールド名 (username と password)
    • ログイン失敗時に表示されるエラーメッセージの内容
  • -o ~/project/hydra_results.txt: 成功したすべての試行をこの出力ファイルに保存します。

Hydra が実行を開始し、各ユーザー名とパスワードの組み合わせを試行する際に出力が表示されます。Hydra が提供されたファイル内のすべての可能な組み合わせを体系的に処理するため、このプロセスには数分かかる場合があります。

Hydra コマンドの実行出力

Hydra が終了したら、結果を確認して、機能した組み合わせがあるかどうかを確認できます。

cat ~/project/hydra_results.txt
Hydra の結果出力

ログインに成功すると、"login: [username] password: [password] found" のような行が表示されます。これらは、システムへのアクセスを許可する認証情報を表しています。

この演習では、いくつかの重要なセキュリティ概念を実証しました。

  • Hydra は数分間で数百のパスワードの組み合わせをテストしました。これは自動化ツールがいかに迅速に動作するかを示しています。
  • ログインの成功は、脆弱なパスワードや一般的なパスワードがいかに簡単に破られるかを証明しています。
  • 現実のシナリオでは、攻撃者は数百万のパスワードを含む辞書を使用できるため、強力でユニークなパスワードが不可欠です。
  • 手動での試行(ステップ 1)と自動化ツールの違いは、なぜパスワードポリシーが重要であるかを浮き彫りにしています。

ツールの効率性により、脆弱な認証情報がいかに危険にさらされやすいかに注目してください。これが、セキュリティの専門家が複雑なパスワードの使用とアカウントロックアウトポリシーの導入を強調する理由です。

まとめ

この実験では、強力なパスワードクラックツールである Hydra を使用した実践的な経験を通じて、パスワードセキュリティの基礎を学びました。ブルートフォース攻撃がどのように機能し、なぜ脆弱なパスワードが危険にさらされるのかを探索すると同時に、サイバーセキュリティにおける強力なパスワード設定の重要性を理解しました。

この演習は、なぜサイバーセキュリティの専門家が複雑でユニークなパスワードの使用を推奨するのかを実証しました。学習を続ける中で、セキュリティツールやテクニックを探索する際は、これらのスキルを倫理的に適用することを忘れないでください。