基本的な Hydra コマンドを学ぶ

HydraHydraBeginner
今すぐ練習

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

はじめに

この実験(Lab)では、多用途なパスワードクラッキングツールである Hydra を使用するための必須コマンドとテクニックを学びます。ユーザー名 (-l/-L)、パスワード (-p/-P)、ポート (-s) の指定などの主要なオプションを使用した基本的なコマンド構造を検証し、テストサーバーに対する簡単な SSH 攻撃を練習します。

演習では、ターゲット構成、攻撃実行、および出力の解釈について説明します。この実験(Lab)を完了することで、ネットワークサービスに対する基本的なブルートフォース攻撃のための Hydra のコア機能に関する実践的な経験を得ることができます。

重要:この実験(Lab)は、デスクトップインターフェース用に設計されています。シングルターミナルインターフェースでコマンドを実行しないでください。

Hydra のコマンド構造を理解する

このステップでは、ブルートフォース攻撃を通じてパスワードのセキュリティをテストするための強力なツールである Hydra の基本的なコマンド構造を検証します。開始する前に、Hydra が脆弱な認証情報を特定するために、ネットワークサービスに対してさまざまなユーザー名とパスワードの組み合わせを体系的に試行することを理解しておくことが重要です。

基本的な Hydra コマンドは、次のパターンに従います。

hydra [[[-l LOGIN | -L FILE] [-p PASS | -P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-SuvV46] [service://server[:PORT][/OPT]]

各部分の機能を理解するために、最も一般的に使用されるオプションを分解してみましょう。

  • -l または -L: これらを使用すると、テストする単一のユーザー名 (-l)、または複数のユーザー名を含むファイル (-L) を指定できます。
  • -p または -P: ユーザー名と同様に、これらを使用すると、単一のパスワード (-p)、またはファイルからの複数のパスワード (-P) をテストできます。
  • -t: Hydra が同時に行う試行回数 (並列スレッド) を制御します。
  • -s: テストしているサービスが標準ポート番号を使用していない場合に重要です。
  • -vV: 攻撃中に詳細な進行状況情報を表示します。
  • -o: 結果を後で確認するために、指定されたファイルに保存します。

Hydra が正しく動作していることを確認し、利用可能なすべてのオプションを表示するために、ヘルプメニューを表示する簡単なコマンドから始めます。

hydra -h
hydra help menu

これを実行すると、Hydra のオプションとコマンドの完全なリストが表示されるはずです。この出力は、ツールが適切にインストールされ、セキュリティテスト演習の準備ができていることを確認します。ヘルプメニューは、作業中に特定のコマンド構文を確認する必要がある場合にも役立つリファレンスです。

ターゲットホストとポートの指定

このステップでは、Hydra を使用する際にターゲットホストとポートを指定する方法を学びます。これは、攻撃を正しいサービスに向けるために不可欠です。封筒に宛先を記入するのと同じように考えてください。メッセージを配信するには、正しい宛先 (IP/ホスト名) と特定のメールボックス (ポート) が必要です。

Hydra でターゲット情報を指定するための基本的な形式は次のとおりです。

hydra [options] < service > :// < target > [:port]

各コンポーネントを分解してみましょう。

  • <service>: 攻撃するプロトコルまたはサービス (例:ssh, ftp, http)。これは、Hydra にどのような認証を試行するかを指示します。
  • <target>: ターゲットサーバーの IP アドレスまたはホスト名。これは、アクセスしようとしている建物の住所のようなものです。
  • [:port]: オプションのポート番号。サービスは通常、標準ポート (SSH の場合は 22 など) で実行されますが、セキュリティのために別のポートに移動される場合があります。

練習として、ポート 22 で localhost (127.0.0.1) 上で実行されているテスト SSH サーバーを使用します。これは、学習のために安全な自分のマシンを攻撃することを意味します。次のコマンドを試して、ターゲットの指定を確認してください。

hydra -vV -l testuser -p testpass ssh://127.0.0.1:22
hydra test command

このテストコマンドで何が起こっているかを以下に示します。

  • -vV は、Hydra に詳細な出力を表示させて、何が起こっているかを確認できるようにします。
  • -l testuser は、テストユーザー名を指定します。
  • -p testpass は、テストパスワードを提供します。
  • ssh://127.0.0.1:22 は、Hydra にローカルマシンで SSH 認証を試行するように指示します。

注:これは構文を示すための単なるテストコマンドです。各部分がどのように組み合わされるかを理解したら、後のステップで実際の認証情報を使用します。

ユーザー名とパスワードのオプションを使用する

このステップでは、Hydra がブルートフォース攻撃のための認証情報をどのように処理するかを検証します。これらのオプションを理解することは、Hydra がターゲットシステムにログインを試みる際に、どのような組み合わせを試す必要があるかを知る必要があるため、非常に重要です。

Hydra は、認証情報を指定するための 3 つの主要な方法を提供しており、それぞれが異なるシナリオに適しています。

  1. 単一の認証情報のテスト (迅速な検証に役立ちます):
hydra -l username -p password ssh://127.0.0.1

このコマンドは、SSH サービスに対して正確に 1 つのユーザー名/パスワードの組み合わせを試行します。

  1. リストベースのテスト (辞書攻撃で一般的です):
hydra -L usernames.txt -P passwords.txt ssh://127.0.0.1

ここでは、Hydra は usernames.txt のユーザー名と passwords.txt のパスワードの間で可能なすべての組み合わせを試行します。

  1. ペアの認証情報ファイル (ユーザー名とパスワードが直接リンクされている場合):
hydra -C creds.txt ssh://127.0.0.1

これは、各行にコロン (username:password) で区切られたユーザー名とパスワードが含まれるファイルを使用します。

これらのオプションを練習するために、テストファイルを作成しましょう。まず、一般的な管理アカウントを含む単純なユーザー名リストを作成します。

echo -e "admin\nroot\ntestuser" > usernames.txt

次に、実際のシステムでよく見られる脆弱なパスワードを含むパスワードリストを作成します。

echo -e "password\n123456\nadmin123" > passwords.txt

ここで、詳細出力 (-vV) を使用してテストコマンドを実行し、Hydra がこれらのファイルをどのように処理するかを確認できます。

hydra -vV -L usernames.txt -P passwords.txt ssh://127.0.0.1
hydra test command

-vV フラグを使用すると、Hydra は詳細な出力を表示するため、攻撃の進行状況を観察し、各ステップで何が起こっているかを理解できます。

簡単な SSH 攻撃コマンドを実行する

このステップでは、これまでの学習内容をすべて組み合わせて、Hydra を使用して完全な SSH ブルートフォース攻撃を実行します。以前に準備した認証情報を使用して、localhost (127.0.0.1) で実行されているテスト SSH サーバーを使用します。この実践的な演習は、Hydra が SSH サービスに対してさまざまなユーザー名とパスワードの組み合わせを体系的に試す方法を理解するのに役立ちます。

攻撃を開始する前に、ターゲットのセットアップが正しく機能していることを確認しましょう。手動で SSH 接続を試行して、サービスが実行されていることを確認します。

ssh [email protected]

(パスワードの入力を求められたら "Ctrl+C" を入力してセッションに戻ります)

この手動テストは、SSH サービスがアクティブであり、接続試行に応答していることを確認するのに役立ちます。Hydra が実行されると、同様の接続試行が行われますが、複数の試行でプロセスが自動化されます。

LabEx VM は、環境変数 PASSWORDlabex のパスワードを提供します。テストのためにパスワードファイルに追加しましょう。

重要:次のコマンドはデスクトップインターフェースで実行してください。そうしないと、PASSWORD 環境変数が取得されません。

echo "labex" > usernames.txt
echo -e "$PASSWORD" >> passwords.txt
environment variable

それでは、実際の Hydra 攻撃コマンドを実行しましょう。ここでは、準備したすべてのコンポーネント (ユーザー名リスト、パスワードリスト、ターゲット情報) をまとめます。

hydra -vV -L usernames.txt -P passwords.txt -t 4 ssh://127.0.0.1
hydra test command

各パラメータの機能を分解してみましょう。

  • -vV: 詳細出力を有効にして、Hydra の進行状況をリアルタイムで確認できるようにします。
  • -L usernames.txt: 試行する可能性のあるユーザー名を含むファイルを指定します。
  • -P passwords.txt: テストする可能性のあるパスワードを含むファイルを指定します。
  • -t 4: 使用する並列接続 (スレッド) の数を設定します。
  • ssh://127.0.0.1: ターゲットを localhost 上の SSH サービスとして識別します。

このコマンドは、ユーザー名とパスワードのリストからすべての組み合わせを体系的にテストします。制御されたテスト環境では、これは意図的に有効な認証情報を見つけることができませんが、Hydra が組み合わせをどのように処理するかを正確に確認できます。詳細出力には、Hydra が行う各試行が表示され、ブルートフォースプロセスを理解するのに役立ちます。

Hydra が失敗した試行を自動的に処理し、次の組み合わせに進む方法に注目してください。これは、手動テストと比較して、自動化ツールの威力を示しています。Hydra がテストファイル内の可能なすべての組み合わせを処理するため、プロセスにはしばらく時間がかかる場合があります。

コマンド出力を確認する

このステップでは、SSH 攻撃の実行後に Hydra の出力を読み取り、理解する方法を検証します。出力は攻撃が成功したかどうかを示し、貴重なデバッグ情報を提供するため、これは重要です。初心者として、結果の主要な成功指標を特定する方法を学びます。

ステップ 4 で SSH 攻撃コマンドを実行すると、Hydra は次のような出力を生成しました。

[DATA] attacking ssh://127.0.0.1:22/
[VERBOSE] Resolving addresses ... done
[STATUS] 80.00 tries/min, 80 tries in 00:01h, 19 to do in 00:01h
[22][ssh] host: 127.0.0.1   login: testuser   password: testpass
1 of 1 target successfully completed, 1 valid password found

各部分の意味を分解してみましょう。

  1. [DATA] 行は、攻撃されているターゲットサービスとアドレスを示します。
  2. [STATUS] は、攻撃の進行状況に関するリアルタイムの統計を提供します。
  3. 最も重要な行は、[port][service] host: IP login: username password: password の形式で検出された認証情報を示します。
  4. 最後の行は、攻撃の結果を要約します。

ドキュメント化と後での分析のために、-o オプションを使用して Hydra の出力をファイルに保存できます。これにより、テスト結果の永続的な記録が作成されます。

hydra -vV -L usernames.txt -P passwords.txt -t 4 -o results.txt ssh://127.0.0.1

コマンドが完了したら、次のコマンドで保存された結果を表示できます。

cat results.txt
hydra test command

このファイルには、ターミナルに表示されたものと同じ出力が含まれており、後で調査結果を確認したり、チームメンバーと共有したりできます。

まとめ

この実験(Lab)では、Hydra を使用してパスワードクラッキング攻撃を実行するための重要なコマンドとテクニックを学びました。演習では、-l/-L および -p/-P フラグを使用したユーザー名/パスワードの指定、-s を使用したポート構成、基本的な Hydra のインストール検証など、コアとなるコマンド構文を取り上げました。

また、実践的な SSH 攻撃の例を通して、<service>://<target>[:port] 形式を使用したターゲットの指定も練習しました。これらの基礎的なスキルにより、適切なコマンド構造とターゲット定義を理解しながら、基本的な Hydra 操作を実行できます。