Hydra の追加パスワードチェックを使用する

HydraHydraBeginner
今すぐ練習

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

はじめに

この実験では、人気のあるパスワードクラッキングツールである Hydra で追加のパスワードチェックを使用する方法を探ります。この実験では、LabEx VM 上に Telnet サービスを設定し、Hydra を -e nsr オプションで使用して、空のパスワード、ユーザー名、および逆順のユーザー名を潜在的なパスワードとして利用したパスワードクラッキングの試行を行う方法を示します。

この実験では、Telnet サービスのインストールと設定、デモンストレーションのために /etc/inetd.conf ファイルを変更して認証を無効にすること、そして -e nsr フラグを付けて Hydra を実行することが含まれます。最後に、出力を確認して成功したチェックを確認し、-e ns オプションとの結果を比較し、パスワードクラッキングの試行において追加のパスワードチェックを組み込むことの有効性を明らかにします。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/verbose_mode("Verbose Mode Usage") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") hydra/HydraGroup -.-> hydra/service_options("Service-Specific Options") subgraph Lab Skills hydra/installation -.-> lab-550776{{"Hydra の追加パスワードチェックを使用する"}} hydra/single_username -.-> lab-550776{{"Hydra の追加パスワードチェックを使用する"}} hydra/single_password -.-> lab-550776{{"Hydra の追加パスワードチェックを使用する"}} hydra/verbose_mode -.-> lab-550776{{"Hydra の追加パスワードチェックを使用する"}} hydra/success_detection -.-> lab-550776{{"Hydra の追加パスワードチェックを使用する"}} hydra/service_options -.-> lab-550776{{"Hydra の追加パスワードチェックを使用する"}} end

Telnet サービスの設定

このステップでは、LabEx VM 上に Telnet サービスを設定します。Telnet は、仮想端末接続を使用して双方向の対話型テキストベースの通信機能を提供するために使用されるネットワークプロトコルです。Telnet は暗号化がないため一般的に安全ではないと考えられていますが、LabEx VM のような制御された環境でのデモンストレーションやテスト目的には有用です。

まず、Telnet サーバーをインストールする必要があります。LabEx VM は Docker コンテナを使用しているため、systemctl を直接使用してサービスを管理することはできません。代わりに、コンテナ内で Telnet サービスを起動するための回避策を使用します。

  1. Telnet サーバーのインストール:

    ~/project ディレクトリでターミナルを開き、以下のコマンドを実行します。

    sudo apt update
    sudo apt install -y telnetd

    このコマンドはパッケージリストを更新し、Telnet サーバー機能を提供する telnetd パッケージをインストールします。インストールプロセスを示す出力が表示されるはずです。

    ...
    Setting up openbsd-inetd (0.20180617-1) ...
    ...
    Processing triggers for systemd (247.3-7ubuntu3.9) ...
    Processing triggers for man-db (2.9.1-1) ...
  2. 認証なしで Telnet を実行するように設定する(デモンストレーション目的のみ - 本番環境では決してこれを行わないでください):

    /etc/inetd.conf ファイルを編集して認証を無効にします。nano を使用してファイルを編集します。

    sudo nano /etc/inetd.conf

    telnet で始まる行を見つけ、行の先頭に # を追加してコメントアウトします。その後、その下に認証を無効にする新しい行を追加します。

    #telnet  stream  tcp nowait telnetd /usr/sbin/tcpd  /usr/sbin/telnetd
    telnet  stream  tcp nowait telnetd /usr/sbin/in.telnetd -i

    Ctrl+S を押して変更を保存し、Ctrl+X を押して nano を終了します。

  3. inetd サービスの再起動:

    systemctl を使用できないため、/etc/init.d スクリプトを使用して Telnet を管理する inetd サービスを再起動します。

    sudo /etc/init.d/openbsd-inetd restart

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

     * Restarting internet superserver inetd

-e nsr チェックで Hydra を実行する

このステップでは、前のステップで設定した Telnet サービスに対して、Hydra を使用してブルートフォース攻撃を行います。-e nsr オプションを使用します。このオプションは、Hydra に空のパスワード、ユーザー名をパスワードとして、および逆順のユーザー名をパスワードとして試すよう指示します。これは、脆弱なまたはデフォルトの資格情報を迅速に特定するための一般的な手法です。

  1. -e nsr オプションで Hydra を実行する:

    ~/project ディレクトリでターミナルを開き、以下のコマンドを実行します。

    hydra -l labex -P /usr/share/wordlists/metasploit/unix_passwords.txt -vV -e nsr telnet://localhost

    このコマンドを分解して説明します。

    • hydra: Hydra ツールを実行するコマンドです。
    • -l labex: 試すユーザー名を指定します。LabEx VM のデフォルトユーザーである labex を使用しています。
    • -P /usr/share/wordlists/metasploit/unix_passwords.txt: パスワードリストファイルを指定します。このファイルには一般的なパスワードのリストが含まれています。
    • -vV: 詳細モードを有効にし、各ログイン試行を表示します。
    • -e nsr: このステップの重要なオプションです。Hydra に以下を試すよう指示します。
      • n: 空のパスワード(空文字列)。
      • s: ユーザー名をパスワードとして。
      • r: 逆順のユーザー名をパスワードとして。
    • telnet://localhost: ターゲットのサービスとアドレスを指定します。telnet は Telnet プロトコルを示し、localhost はローカルマシンを指します。

    Hydra は、指定されたユーザー名とパスワードリスト、および空のパスワード、ユーザー名、逆順のユーザー名を使用して、Telnet サービスにログインを試みます。出力には各ログイン試行とその成否が表示されます。

    出力例(パスワードリストによって異なる場合があります):

    Hydra v9.1 (c) 2020 by van Hauser/THC - use allowed only for legal purposes.
    
    Hydra is starting...
    
    [DATA] 1 task, 1 server, 1337 service(s)
    [DATA] attacking service telnet on port 23
    [DATA] attacking target localhost
    [ATTEMPT] target localhost - login: 'labex' - pass: ''
    [23][telnet] host: localhost   login: labex   password:
    [ATTEMPT] target localhost - login: 'labex' - pass: 'labex'
    [23][telnet] host: localhost   login: labex   password: labex
    [ATTEMPT] target localhost - login: 'labex' - pass: 'xebal'
    [23][telnet] host: localhost   login: labex   password: xebal
    ...

    Telnet を認証なしでログインを許可するように設定したため、Hydra はおそらく空のパスワードでのログインに成功するでしょう。

成功したチェックの出力を確認する

このステップでは、前のステップで実行した Hydra コマンドの出力を分析し、成功したログイン試行を特定します。

  1. Hydra の出力を調べる:

    前のステップのターミナル出力を上にスクロールします。成功したログインを示す行を探します。これらの行には通常、[23][telnet] host: localhost login: labex password: という単語が含まれ、その後に成功したパスワードが続きます。

    Telnet の認証を無効にしたため、次のような行が表示されるはずです。

    [23][telnet] host: localhost   login: labex   password:

    これは、Hydra が空のパスワード(空文字列)で localhost の Telnet サービスに labex ユーザーとしてログインできたことを示しています。

  2. 出力の理解:

    Hydra の出力は、ターゲットサービスのセキュリティに関する貴重な情報を提供します。この場合、空のパスワードでの成功したログインは重大な脆弱性を浮き彫りにしています。攻撃者は資格情報を提供せずにシステムにアクセスする可能性があります。

    ワードリストのパスワードで他の成功したログインが見つかった場合、それはユーザーが容易に推測できる脆弱なパスワードを使用していることを示しています。

    Hydra コマンドの -vV オプションは詳細な出力を提供し、各ログイン試行を表示します。これは、攻撃の進捗を理解し、パターンや問題を特定するのに役立ちます。

-e ns チェックとの比較

このステップでは、再度 Hydra を実行しますが、今回は -e ns オプションを使用します。このオプションは、Hydra に空のパスワードとユーザー名をパスワードとして試すよう指示します。その後、前回の -e nsr を使用した実行結果と比較し、違いを理解します。

  1. -e ns オプションで Hydra を実行する:

    ~/project ディレクトリでターミナルを開き、以下のコマンドを実行します。

    hydra -l labex -P /usr/share/wordlists/metasploit/unix_passwords.txt -vV -e ns telnet://localhost

    前回と同様に、このコマンドを分解して説明します。

    • hydra: Hydra ツールを実行するコマンドです。
    • -l labex: 試すユーザー名を指定します。LabEx VM のデフォルトユーザーである labex を使用しています。
    • -P /usr/share/wordlists/metasploit/unix_passwords.txt: パスワードリストファイルを指定します。このファイルには一般的なパスワードのリストが含まれています。
    • -vV: 詳細モードを有効にし、各ログイン試行を表示します。
    • -e ns: このオプションは、Hydra に以下を試すよう指示します。
      • n: 空のパスワード(空文字列)。
      • s: ユーザー名をパスワードとして。
    • telnet://localhost: ターゲットのサービスとアドレスを指定します。telnet は Telnet プロトコルを示し、localhost はローカルマシンを指します。

    Hydra は、指定されたユーザー名とパスワードリスト、および空のパスワードとユーザー名を使用して、Telnet サービスにログインを試みます。出力には各ログイン試行とその成否が表示されます。

    出力例(パスワードリストによって異なる場合があります):

    Hydra v9.1 (c) 2020 by van Hauser/THC - use allowed only for legal purposes.
    
    Hydra is starting...
    
    [DATA] 1 task, 1 server, 1337 service(s)
    [DATA] attacking service telnet on port 23
    [DATA] attacking target localhost
    [ATTEMPT] target localhost - login: 'labex' - pass: ''
    [23][telnet] host: localhost   login: labex   password:
    [ATTEMPT] target localhost - login: 'labex' - pass: 'labex'
    [23][telnet] host: localhost   login: labex   password: labex
    ...
  2. 結果を比較する:

    このコマンドの出力を前のステップ(-e nsr を使用)の出力と比較します。以下のことがわかるはずです。

    • 両方のコマンドで、空のパスワードでのログインが成功する可能性が高いです。なぜなら、Telnet をこれを許可するように設定したからです。
    • 両方のコマンドで、ユーザー名をパスワードとして試します。
    • -e nsr コマンドでは、逆順のユーザー名をパスワードとして試しますが、-e ns では試しません。

    この比較は、Hydra の異なるオプションが攻撃の範囲と有効性にどのように影響するかを示しています。この場合、-e nsr は追加のチェック(逆順のユーザー名)を含んでおり、特定のシナリオで役立つ可能性があります。

まとめ

この実験では、LabEx VM 上に Telnet サービスをセットアップし、デモンストレーションとテストを行いました。これには、apt を使用して telnetd パッケージをインストールし、認証を無効にするために /etc/inetd.conf ファイルを設定する作業が含まれています。これは、コントロールされた環境で Hydra のパスワードクラッキング機能を展示するために重要です。

LabEx VM は Docker コンテナを使用しているため、標準の systemctl コマンドを回避し、代わりに inetd.conf ファイルを変更し、/etc/init.d スクリプトを使用して inetd サービスを再起動しました。この設定は、本番環境では安全ではありませんが、後続のステップで Hydra のパスワードクラッキング機能を展示するために進めることができます。