Hydra の詳細モードの使い方

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

はじめに

この実験では、Hydra の詳細モードを使用してパスワードクラッキングプロセスについてより深く理解する方法を学びます。この実験は、FTP 攻撃を実行する際のさまざまな詳細レベルを示すことに焦点を当てています。

まず、~/project ディレクトリ(users.txt と passwords.txt)に作成したユーザー名とパスワードリストを使用して、ダミーターゲット(127.0.0.1)に対して基本的な FTP ログイン攻撃を実行します。詳細出力は表示されません。次に、各試行の詳細情報を表示するために -v オプションを使用して攻撃を再実行し、最後に、各試行をリアルタイムで表示するために -V オプションを使用します。これらの異なる詳細レベルの出力結果を比較することで、Hydra の詳細オプションを効果的に使用して、監視とトラブルシューティングを改善する方法を理解できます。

詳細モードなしで FTP 攻撃を実行する

このステップでは、Hydra を使用して詳細モードなしで基本的な FTP ログイン攻撃を実行します。これは、Hydra が FTP パスワードを解読しようとしますが、各ログイン試行の詳細な情報を画面に表示しないことを意味します。バックグラウンドで攻撃を実行する場合や、ターミナルを煩雑にしない場合に便利です。

始める前に、Hydra の基本的な構文を理解しましょう。

hydra [options] [service://server[:port]] [OPT]
  • hydra: Hydra ツールを実行するコマンド。
  • [options]: ユーザー名リスト、パスワードリスト、接続設定など、攻撃をカスタマイズするためのさまざまなオプション。
  • [service://server[:port]]: 攻撃対象のサービス(例:ftp、ssh、http)、ターゲットサーバーのアドレス、およびオプションでポート番号を指定します。
  • [OPT]: 攻撃対象のサービスに固有の追加オプション。

次に、この実験環境のデフォルト作業ディレクトリである ~/project ディレクトリに移動します。

cd ~/project

次に、攻撃用のシンプルなユーザー名リストとパスワードリストを作成します。

  1. ユーザー名リストを作成する:

    ~/project ディレクトリに users.txt という名前のファイルを作成します。このファイルには、各行に 1 つのユーザー名が入力されます。nano テキストエディタを使用してファイルを作成および編集します。

    nano users.txt
    

    ファイルに次のユーザー名を追加します。

    user1
    user2
    user3
    

    nano でファイルを保存するには:

    1. Ctrl + X を押して終了します。
    2. Y を押して保存を確定します。
    3. Enter を押してファイル名を確定します。
  2. パスワードリストを作成する:

    同様に、~/project ディレクトリに passwords.txt という名前のファイルを作成します。このファイルには、各行に 1 つのパスワードが入力されます。nano を使用してファイルを作成および編集します。

    nano passwords.txt
    

    ファイルに次のパスワードを追加します。

    password123
    password
    123456
    

    ファイルを保存し、nano を終了します (Ctrl+X, Y, Enter)。

  3. 詳細モードなしで FTP 攻撃を実行する:

    次に、ターゲット FTP サーバーに対して Hydra 攻撃を実行します。デモのために、ダミーのターゲット 127.0.0.1 を使用します。重要: 明示的な許可なしでシステムを攻撃しようとしないでください。

    ターミナルで次のコマンドを実行します。

    hydra -L users.txt -P passwords.txt ftp://127.0.0.1
    

    このコマンドを分解してみましょう。

    • -L users.txt: ユーザー名リストファイルの指定。~/project ディレクトリにいるため、相対パス users.txt を使用できます。
    • -P passwords.txt: パスワードリストファイルの指定。同様に、相対パス passwords.txt を使用できます。
    • ftp://127.0.0.1: FTP サービスとターゲットサーバーのアドレスの指定。

    注意: 127.0.0.1 に FTP サーバーが実行されていないため、攻撃は失敗します。ただし、このコマンドは、詳細モードなしで FTP 攻撃を実行するための基本的な構文を示しています。Hydra は各ユーザー名とパスワードの組み合わせを試しますが、成功したログインが見つかった場合にのみ結果を表示します。成功したログインが見つからない場合は、パスワードが解読されなかったことを示すメッセージが表示されます。

    出力は次のようになります。

    Hydra v9.2 (c) 2021 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-30 09:45:40
    [DATA] max 9 tasks per 1 server, overall 9 tasks, 9 login tries (l:3/p:3), ~1 try per task
    [DATA] attacking ftp://127.0.0.1:21/
    1 of 1 target completed, 0 valid password found
    Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-30 09:45:52
    

    ご覧のとおり、詳細モードなしでは、Hydra は攻撃の設定、攻撃対象のターゲット、および最終結果に関する基本的な情報のみを出力します。個々のログイン試行は表示されません。

-v オプションで詳細を確認する

このステップでは、前のステップで実行した FTP 攻撃を再実行しますが、今回は -v オプションを使用して詳細出力を有効にします。詳細出力は、各ログイン試行の詳細な情報を提供するため、トラブルシューティングや攻撃の進行状況の理解に役立ちます。

Hydra の -v オプションは、「詳細」を意味します。使用すると、攻撃中に画面に表示される情報量が増加します。これには、各接続試行の詳細、試行中のユーザー名とパスワード、発生したエラーなどが含まれます。

前のステップで作成した同じユーザー名とパスワードリスト (users.txtpasswords.txt) を引き続き使用します。~/project ディレクトリにいることを確認してください。

  1. 詳細出力で FTP 攻撃を再実行する:

    ターミナルで次のコマンドを実行します。

    hydra -L users.txt -P passwords.txt -v ftp://127.0.0.1
    

    このコマンドを分解してみましょう。

    • -L users.txt: ユーザー名リストファイルの指定。
    • -P passwords.txt: パスワードリストファイルの指定。
    • -v: 詳細出力を有効にします。これが追加する新しいオプションです。
    • ftp://127.0.0.1: FTP サービスとターゲットサーバーのアドレスの指定。

    注意: 前のステップと同様に、127.0.0.1 に FTP サーバーが実行されていないため、攻撃は失敗します。ただし、このコマンドは -v オプションの使用を示しています。

    出力は、前のステップよりも詳細になります。試行中のユーザー名とパスワード、発生したエラーなど、各接続試行に関する情報が表示されます。出力は次のようになります。

    Hydra v9.2 (c) 2021 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-30 09:45:54
    [DATA] max 9 tasks per 1 server, overall 9 tasks, 9 login tries (l:3/p:3), ~1 try per task
    [DATA] attacking ftp://127.0.0.1:21/
    [VERBOSE] Resolving addresses ... [VERBOSE] resolving done
    Process 1216: Can not connect [unreachable], retrying (1 of 1 retries)
    Process 1218: Can not connect [unreachable], retrying (1 of 1 retries)
    Process 1217: Can not connect [unreachable], retrying (1 of 1 retries)
    ...
    [ERROR] Child with pid 1220 terminating, can not connect
    [ERROR] Child with pid 1224 terminating, can not connect
    [ERROR] Child with pid 1219 terminating, can not connect
    ...
    [VERBOSE] Disabled child 7 because of too many errors
    [VERBOSE] Disabled child 8 because of too many errors
    ...
    1 of 1 target completed, 0 valid password found
    Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-30 09:46:07
    

    詳細モードでは、接続プロセスに関するより詳細な情報、たとえば、

    • DNS 解決の詳細
    • 個々のプロセス接続試行と再試行
    • 各失敗接続の具体的なエラーメッセージ
    • エラーのために子プロセスが無効化された情報

    などが提供されます。このレベルの詳細情報は、接続問題のトラブルシューティングや、攻撃が失敗する理由の理解に特に役立ちます。

-V オプションで試行回数を確認する

このステップでは、FTP 攻撃を再び実行しますが、今回は -V オプションを使用します。-V オプションは、-v とは異なる詳細レベルを提供します。攻撃の進行状況を追跡しやすくするために、各ログイン試行を簡潔な形式で表示することに重点を置いています。

Hydra の -V オプションは -v と似ていますが、よりコンパクトな出力を提供します。各試行の接続情報詳細を表示する代わりに、試行中のユーザー名とパスワードのみを表示します。過剰な情報に圧倒されることなく、攻撃の進行状況を監視したい場合に便利です。

前のステップで作成した同じユーザー名とパスワードリスト (users.txtpasswords.txt) を引き続き使用します。~/project ディレクトリにいることを確認してください。

  1. -V オプションで FTP 攻撃を再実行する:

    ターミナルで次のコマンドを実行します。

    hydra -L users.txt -P passwords.txt -V ftp://127.0.0.1
    

    このコマンドを分解してみましょう。

    • -L users.txt: ユーザー名リストファイルの指定。
    • -P passwords.txt: パスワードリストファイルの指定。
    • -V: 試行に焦点を当てた出力を有効にします。これが追加する新しいオプションです。
    • ftp://127.0.0.1: FTP サービスとターゲットサーバーのアドレスの指定。

    注意: 前と同様に、127.0.0.1 に FTP サーバーが実行されていないため、攻撃は失敗します。ただし、このコマンドは -V オプションの使用を示しています。

    出力は -v オプションよりも簡潔になります。各ログイン試行は、試行中のユーザー名とパスワードを示すシンプルな形式で表示されます。出力は次のようになります。

    Hydra v9.2 (c) 2021 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-30 09:46:09
    [DATA] max 9 tasks per 1 server, overall 9 tasks, 9 login tries (l:3/p:3), ~1 try per task
    [DATA] attacking ftp://127.0.0.1:21/
    [ATTEMPT] target 127.0.0.1 - login "user1" - pass "password123" - 1 of 9 [child 0] (0/0)
    [ATTEMPT] target 127.0.0.1 - login "user1" - pass "password" - 2 of 9 [child 1] (0/0)
    [ATTEMPT] target 127.0.0.1 - login "user1" - pass "123456" - 3 of 9 [child 2] (0/0)
    [ATTEMPT] target 127.0.0.1 - login "user2" - pass "password123" - 4 of 9 [child 3] (0/0)
    ...
    1 of 1 target completed, 0 valid password found
    Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-30 09:46:21
    

    この出力は、各ログイン試行を明確で構造化された形式で示します。

    • ターゲット IP アドレス
    • 試行中のユーザー名とパスワード(引用符で囲まれたもの)
    • 試行番号と総試行回数
    • 試行を処理する子プロセスの ID
    • 接続が失敗した場合の再試行(REDO-ATTEMPT として表示)

    この形式は、詳細な接続デバッグ情報なしで、攻撃の進行状況を良好に把握できます。

詳細レベルを比較する

このステップでは、前のステップで使用したさまざまな詳細レベル(詳細出力なし、-v(詳細)、-V(試行表示))を比較します。これらのレベルの違いを理解することで、Hydra を使用する場合に、具体的なニーズに最適な詳細レベルを選択できます。

各詳細レベルの特徴をまとめます。

  • 詳細出力なし: これはデフォルトの動作です。Hydra は、基本的な攻撃情報、設定詳細、最終結果のみを表示します。情報は最小限で、攻撃をバックグラウンドで実行する場合や、成功したログインと全体的な結果のみを気にする場合に適しています。

  • -v (詳細): このオプションは、DNS 解決、個々のプロセス接続試行、再試行メカニズム、詳細なエラーメッセージなど、接続プロセスの詳細な技術情報を提供します。接続問題のトラブルシューティングや、攻撃がネットワークレベルで失敗する理由を理解するのに特に役立ちます。

  • -V (試行表示): このオプションは、試行中の具体的なユーザー名とパスワードの組み合わせ、試行カウンター、子プロセス情報などを示す構造化された形式で各ログイン試行を表示します。ネットワーク接続に関する技術的な詳細に圧倒されることなく、攻撃の進行状況を良好に把握できます。

違いをさらに明確にするために、Hydra が FTP サーバーを攻撃しようとした場合を考えてみましょう。

  • 詳細出力なし: 基本的な設定と最終結果のみが表示されます。

    [DATA] max 9 tasks per 1 server, overall 9 tasks, 9 login tries (l:3/p:3), ~1 try per task
    [DATA] attacking ftp://127.0.0.1:21/
    1 of 1 target completed, 0 valid password found
    
  • -v (詳細): 詳細な接続情報とエラー処理が表示されます。

    [VERBOSE] Resolving addresses ... [VERBOSE] resolving done
    Process 1216: Can not connect [unreachable], retrying (1 of 1 retries)
    [ERROR] Child with pid 1220 terminating, can not connect
    [VERBOSE] Disabled child 7 because of too many errors
    
  • -V (試行表示): 各ログイン試行に、資格情報とともに表示されます。

    [ATTEMPT] target 127.0.0.1 - login "user1" - pass "password123" - 1 of 9 [child 0] (0/0)
    [ATTEMPT] target 127.0.0.1 - login "user2" - pass "password" - 5 of 9 [child 4] (0/0)
    [REDO-ATTEMPT] target 127.0.0.1 - login "user1" - pass "password123" - 10 of 18 [child 0] (1/9)
    

適切な詳細レベルを選択する

詳細レベルの選択は、具体的なニーズと好みによって異なります。

  • 攻撃をバックグラウンドで実行し、成功したログインと基本的な結果のみを気にする場合、詳細出力は使用しません。
  • 接続問題、ネットワーク問題のトラブルシューティング、またはプロトコルレベルでの攻撃失敗の原因を理解するために詳細な技術情報が必要な場合は、-v オプションを使用します。
  • 試行中の具体的なユーザー名とパスワードの組み合わせを監視し、単語リストを通じて攻撃の進行状況を追跡したい場合は、-V オプションを使用します。

要約すると、さまざまな詳細レベルを試すことで、Hydra の動作をより深く理解し、具体的なニーズに最適な詳細レベルを選択できます。-V オプションは攻撃の進行状況を監視するのに特に役立ち、-v オプションは接続問題のデバッグに適しています。

まとめ

この実験では、Hydra の詳細モードを FTP ログイン攻撃を実行することで探求しました。~/project ディレクトリに作成したユーザー名とパスワードのリストを使用して、ダミーの FTP サーバー (127.0.0.1) に対する基本的な攻撃を、詳細出力なしで実行しました。これは、Hydra のデフォルト動作を示しており、詳細なログイン試行情報は抑制されています。

次に、実験では -v-V オプションを使用して Hydra の出力の詳細レベルを高め、各ログイン試行の詳細を観察する方法を案内しました。さまざまな詳細レベルでの攻撃出力の比較を通して、Hydra の詳細オプションを使用して攻撃を監視およびトラブルシューティングする方法をより深く理解しました。