Hydra を使用した SSH ブルートフォース攻撃

Beginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、サイバーセキュリティにおいて人気のあるパスワードクラッキングツールである Hydra を使用して、SSH サービスに対するブルートフォース攻撃を行う方法を学びます。この演習では、Hydra のインストール、脆弱な資格情報を持つターゲットサーバーのセットアップ、および用意されたワードリストを使用した攻撃の実行について説明します。

SSH テスト環境の構成と Hydra のブルートフォース機能の分析に関する実践的な経験を積むことができます。この実験は、制御された環境でエシカルハッキングの原則を強化しながら、実際の攻撃シナリオを示します。


Skills Graph

Hydra のインストール

このステップでは、様々なネットワークサービスに対するブルートフォース攻撃に使用される強力なパスワードクラッキングツールである Hydra をインストールします。Hydra は、セキュリティ保護されたシステムにアクセスするために、ユーザー名とパスワードの異なる組み合わせを体系的に試すことができるため、ペネトレーションテストに特に有用です。SSH(この実験で使用します)、FTP、HTTP など、複数のプロトコルをサポートしています。

  1. まず、LabEx の仮想マシン(VM)環境でターミナルを開きます。ターミナルは、Linux でコマンドを実行するための主要なインターフェイスです。すべての実験作業を行うデフォルトの作業ディレクトリにいることを確認してください。

    cd ~/project
  2. 新しいソフトウェアをインストールする前に、パッケージリストを更新することが良い習慣です。これにより、Hydra とそのすべての依存関係の最新バージョンを取得できます。

    sudo apt update
  3. 次に、Ubuntu のような Debian ベースのシステムでソフトウェアのインストールを処理する apt パッケージマネージャーを使用して、Hydra をインストールします。-y フラグは、インストールを自動的に確認します。

    sudo apt install -y hydra
  4. インストール後、Hydra のバージョンを確認することで、正しくインストールされたことを検証しましょう。head -n 1 コマンドは、バージョン情報が含まれる出力の最初の行のみを表示します。

    hydra -h | head -n 1

    次のような出力が表示されるはずです。

    Hydra v9.3 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes.
  5. Hydra は、GUI ツールを好む人にはグラフィカルインターフェイス版も提供しています。この実験ではコマンドライン版を使用しますが、必要に応じて GTK+ GUI 版を次のコマンドでインストールできます。

    sudo apt install -y hydra-gtk

ターゲット SSH サーバーのセットアップ

このステップでは、後続のステップでパスワードクラッキングのターゲットとなるローカル SSH サーバーを構成します。これにより、制御された環境でペネトレーションテスト技術を練習することができます。SSH(Secure Shell)は、コンピュータ間で安全なリモートログインを行うためのプロトコルであり、学習目的で脆弱なバージョンをセットアップします。

  1. まず、デフォルトの作業ディレクトリにいることを確認してください。すべての実験ファイルを一箇所に整理するため、これは重要です。

    cd ~/project
  2. OpenSSH サーバーパッケージをインストールします。このソフトウェアにより、マシンがリモート接続を受け付ける SSH サーバーになります。

    sudo apt install -y openssh-server
  3. 脆弱なパスワードを持つ専用のテストユーザーアカウントを作成します(これはデモンストレーション目的のみです)。実際のシナリオでは、攻撃者が探しているのはこのような脆弱なパスワードです。

    sudo useradd -m testuser
    echo "testuser:password123" | sudo chpasswd
  4. SSH がパスワード認証を許可するように構成します(この実験では一時的に)。デフォルトでは、多くのシステムはセキュリティ上の理由からパスワード認証を無効にしていますが、ここではブルートフォース攻撃の仕組みを示すために有効にしています。

    sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
  5. 変更を適用するために SSH サービスを再起動します。設定変更を反映するには、サービスを再起動する必要があることがよくあります。

    sudo service ssh restart
  6. SSH サーバーが実行中であることを確認します。このコマンドは、SSH サーバーが適切にアクティブで接続を待機しているかを確認します。

    sudo service ssh status

    サービスがアクティブ(実行中)であることを示す出力が表示されるはずです。表示されない場合は、前のステップでエラーが発生している可能性があり、トラブルシューティングが必要です。

  7. ローカルで SSH 接続をテストします。この最後のチェックは、攻撃フェーズに進む前にすべてが正常に動作していることを確認します。

    ssh testuser@localhost -o StrictHostKeyChecking=no

    パスワードを求められたら、password123 を入力します。ログインに成功したら、exit と入力してメインセッションに戻ります。-o StrictHostKeyChecking=no オプションは、SSH がサーバーのフィンガープリントを確認するように求めないようにします。これはこの実験環境では許容されます。

ユーザー名とパスワードのリストを準備する

このステップでは、Hydra が SSH 認証を試行するために使用する潜在的なユーザー名とパスワードを含むテキストファイルを作成します。これらのファイルは、辞書ベースのブルートフォース攻撃に不可欠です。辞書攻撃は、事前定義されたリストからユーザー名とパスワードのすべての可能な組み合わせを体系的に試すことで機能するため、良いリストを準備することが重要です。

  1. まず、デフォルトの作業ディレクトリにいることを確認してください。これにより、プロジェクトファイルが整理され、後で参照しやすくなります。

    cd ~/project
  2. nano テキストエディタを使用してユーザー名リストファイルを作成します。多くのシステムがデフォルトまたは予測可能なユーザー名を使用しているため、一般的なユーザー名はブルートフォース攻撃で最初に試されることが多いです。

    nano usernames.txt

    以下の一般的なユーザー名を追加します(Ctrl+O で保存し、Ctrl+X で終了します)。

    admin
    root
    testuser
    user
    guest
  3. パスワードリストファイルを作成します。このような脆弱なパスワードは頻繁に使用され、セキュリティテストで最初のターゲットになることが多いです。

    nano passwords.txt

    以下の一般的なパスワードを追加します。

    password
    password123
    123456
    qwerty
    letmein
  4. ファイルの内容を表示することで、ファイルが正しく作成されたことを確認します。この確認ステップにより、リストにタイポや書式設定の問題がないことが保証されます。

    cat usernames.txt
    cat passwords.txt

    作成したリストがターミナルに表示されるはずです。

  5. (オプション) crunch を使用して追加のパスワードバリエーションを生成します。このツールは、指定されたパターンに基づいて自動的に組み合わせを生成することで、より包括的なパスワードリストを作成するのに役立ちます。

    sudo apt install -y crunch
    crunch 4 6 0123456789 -o num_passwords.txt

    これにより、4 ~ 6 文字の数字のパスワードが作成されます。コマンドでは、最小長 (4)、最大長 (6)、および文字セット (数字 0 ~ 9) が指定されています。

Hydra を使って SSH 攻撃を実行する

このステップでは、Hydra を使用してローカルの SSH サーバーに対してブルートフォース攻撃を行います。ブルートフォース攻撃は、正しいユーザー名とパスワードの組み合わせが見つかるまで、多数の組み合わせを試す方法です。先ほど準備したワードリストを使ってこのプロセスを自動化します。

  1. まず、ワードリストが含まれるプロジェクトディレクトリに移動します。これにより、Hydra が作成したファイルを見つけることができます。

    cd ~/project
  2. 次に、特定のパラメータで Hydra を実行します。コマンド構造は、Hydra に何を攻撃するかとどのように攻撃するかを指示します。以下に分解して説明します。

    hydra -L usernames.txt -P passwords.txt ssh://localhost -t 4 -vV

    パラメータの説明:

    • -L usernames.txt: 考えられるユーザー名のリストを指定します。
    • -P passwords.txt: パスワード辞書ファイルを指定します。
    • ssh://localhost: このマシン上の SSH サービスをターゲットにします。
    • -t 4: 同時試行回数を 4 回に制限することで速度をコントロールします。
    • -vV: ターミナルに詳細な進捗状況を表示します。
  3. Hydra が実行されると、各試行がリアルタイムで表示されます。有効な資格情報が見つかると、出力に次のように明確に表示されます。

    [22][ssh] host: localhost   login: testuser   password: password123
  4. (オプション) 結果の永続的な記録を残すために、ファイルに保存することができます。これはドキュメント化やさらなる分析に役立ちます。

    hydra -L usernames.txt -P passwords.txt ssh://localhost -t 4 -o results.txt
  5. スキャンが完了した後、保存された結果を次のコマンドで表示できます。

    cat results.txt

攻撃結果をレビューする

このステップでは、Hydra の出力を注意深く調べて、SSH ブルートフォース攻撃で成功したユーザー名とパスワードの組み合わせを特定します。これらの結果を理解することで、脆弱な資格情報がどのように簡単に悪用されるかを示すことができます。

  1. まず、Hydra が出力ファイルを保存した作業ディレクトリに移動しましょう。

    cd ~/project

    これにより、結果にアクセスするための正しい場所にいることが保証されます。

  2. 攻撃中に生成された Hydra の生の出力ファイルを表示します。

    cat results.txt

    成功した資格情報のペアを示す、次のような出力が表示されるはずです。

    [22][ssh] host: localhost   login: testuser   password: password123

    各行は、対応する資格情報での成功したログイン試行を表しています。

  3. 攻撃の有効性の概要を把握するために、要約統計情報を確認します。

    grep "successfully completed" results.txt

    このコマンドは、総試行回数と攻撃にかかった時間を示す要約行のみを抽出します。

  4. これらの資格情報が実際に機能することを、SSH ログインを試行することで確認しましょう。

    ssh testuser@localhost -o StrictHostKeyChecking=no

    パスワードを求められたら、password123 を入力します。ログインに成功した後、exit と入力してメインのターミナルに戻ります。この実践的なテストにより、資格情報が有効であることが確認されます。

  5. 調査結果を文書化した簡単なセキュリティレポートを作成します。

    echo "Security Test Report" > report.txt
    date >> report.txt
    echo "Compromised Credentials:" >> report.txt
    grep -A 2 "successfully completed" results.txt >> report.txt

    これにより、脆弱な資格情報と攻撃統計を含むタイムスタンプ付きのドキュメントが作成されます。

  6. 最後に、完成したセキュリティレポートを表示します。

    cat report.txt

    これにより、テスト中に発見されたセキュリティ脆弱性のクリーンで整理されたビューが得られます。

まとめ

この実験では、強力なパスワードクラッキングツールである Hydra を使用して SSH に対するブルートフォース攻撃を行う方法を学びました。この演習では、Hydra のインストール、テスト用の SSH サーバーの設定、ターゲットとなるユーザー名/パスワードリストの作成をカバーしています。

辞書ベースの攻撃の実行と結果の分析を練習し、脆弱な資格情報がどのように悪用されるかを示しました。この実践的な経験は、サイバーセキュリティにおいて強力なパスワードと安全な認証方法の重要性を強調しています。