Hydra 攻撃のデバッグ

HydraHydraBeginner
今すぐ練習

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

はじめに

この実験では、Telnet サーバーをセットアップし、Hydra のデバッグ出力を分析することで、Hydra 攻撃のデバッグ方法を学びます。この実験では、詳細なデバッグ情報を通じて、攻撃中の Hydra の動作を理解することに焦点を当てています。

まず、xinetd を使用して LabEx VM 上に Telnet サーバーをセットアップし、Telnet サービスを管理します。これには、telnetdxinetd のインストール、Telnet 接続を管理するための xinetd の設定、および xinetd サービスの再起動が含まれます。次に、-d フラグを使用して Hydra をデバッグモードで実行し、詳細な出力を生成します。最後に、このデバッグ出力を分析して、攻撃プロセスを理解し、潜在的な問題を特定します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/verbose_mode("Verbose Mode Usage") hydra/HydraGroup -.-> hydra/troubleshooting("Basic Troubleshooting") subgraph Lab Skills hydra/installation -.-> lab-550766{{"Hydra 攻撃のデバッグ"}} hydra/verbose_mode -.-> lab-550766{{"Hydra 攻撃のデバッグ"}} hydra/troubleshooting -.-> lab-550766{{"Hydra 攻撃のデバッグ"}} end

Telnet サーバーのセットアップ

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

LabEx VM は Docker コンテナを使用しているため、systemctl を直接使用してサービスを管理することはできません。代わりに、xinetd を使用して Telnet サービスを管理します。xinetd (拡張 Internet デーモン) は、着信ネットワーク接続を待ち受け、適切なサービスを起動するスーパーサーバーデーモンです。

まず、telnetdxinetd パッケージをインストールしましょう。LabEx VM のターミナルを開き、以下のコマンドを実行します。

sudo apt update
sudo apt install telnetd xinetd -y

このコマンドは、パッケージリストを更新し、telnetd (Telnet サーバーデーモン) と xinetd パッケージをインストールします。-y フラグは、インストール中のすべてのプロンプトに自動的に「はい」と答えます。

次に、xinetd を構成して Telnet サービスを管理する必要があります。/etc/xinetd.d/ ディレクトリに Telnet 用の構成ファイルを作成します。nano を使用してファイルを作成し、編集します。

sudo nano /etc/xinetd.d/telnet

以下の構成を nano エディターに貼り付けます。

service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = no
}

この構成は、xinetd に Telnet 接続を待ち受け、/usr/sbin/in.telnetd サーバーを root として実行し、接続失敗をログに記録するように指示します。disable = no は、サービスが有効になっていることを保証します。

Ctrl+X を押し、次に Y を押し、最後に Enter を押して、ファイルを保存して nano を終了します。

これで、変更を適用するために xinetd サービスを再起動します。systemctl を使用できないため、xinetd プロセスに HUP シグナルを送信する回避策を使用します。まず、xinetd のプロセス ID を見つけます。

ps -ef | grep xinetd

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

root       1234  1     0 10:00 ?        00:00:00 /usr/sbin/xinetd -stayalive -pidfile /run/xinetd.pid
labex      5678  5600  0 10:01 pts/0    00:00:00 grep --color=auto xinetd

xinetd のプロセス ID (この例では 1234) をメモします。以下のコマンドで、出力から得た実際のプロセス ID で 1234 を置き換えます。

sudo kill -HUP 1234

このコマンドは、xinetd プロセスに HUP シグナルを送信し、構成を再読み込みさせます。

最後に、Telnet サーバーが実行されていることを確認しましょう。telnet コマンドを使用して、同じマシンから接続を試みることができます。telnet クライアントがデフォルトでインストールされていない場合があるため、接続をテストするために netcat を使用します。

nc localhost 23

Telnet サーバーが実行されている場合、空白の画面または Telnet プロンプトが表示されるはずです。その後、Ctrl+] を入力してから quit を入力することで、接続を閉じることができます。「Connection refused」が表示された場合は、上記の手順を再確認してください。

-d オプションでデバッグモードで実行

このステップでは、xinetd を設定して、Telnet サーバーをデバッグモードで実行します。デバッグモードで実行することで、サーバーの動作に関する貴重な情報を得ることができ、トラブルシューティングや動作原理の理解に役立ちます。

デバッグモードを有効にするには、前のステップで作成した Telnet 用の xinetd 構成ファイルを変更する必要があります。nano を使用して /etc/xinetd.d/telnet ファイルを開きます。

sudo nano /etc/xinetd.d/telnet

server 行を変更して、デバッグモード用の -d オプションを追加します。この行は以下のようになります。

        server          = /usr/sbin/in.telnetd -d

-d オプションは、in.telnetd にデバッグモードで実行するよう指示し、より詳細な出力を提供します。

Ctrl+X を押し、次に Y を押し、最後に Enter を押して、ファイルを保存して nano を終了します。

これで、変更を適用するために xinetd サービスを再起動します。前と同様に、kill -HUP コマンドを使用します。まず、xinetd のプロセス ID を見つけます。

ps -ef | grep xinetd

xinetd のプロセス ID (例:1234) をメモします。以下のコマンドで、出力から得た実際のプロセス ID で 1234 を置き換えます。

sudo kill -HUP 1234

このコマンドは、xinetd プロセスに HUP シグナルを送信し、構成を再読み込みさせます。これで、Telnet サーバーはデバッグモードで実行されます。

デバッグ出力を確認するには、xinetd の標準出力をファイルにリダイレクトする必要があります。ただし、xinetd 自体は直接ファイルに出力しません。in.telnetd -d からのデバッグ出力はシステムログに送信されます。tail -f を使用してこれらのログを監視することができます。

新しいターミナルウィンドウまたはタブを開きます。この新しいターミナルで、以下のコマンドを実行してシステムログを監視します。

sudo tail -f /var/log/syslog

これで、元のターミナルに戻り、netcat を使用して Telnet サーバーに接続を試みます。

nc localhost 23

接続した後 (そして Ctrl+] を入力してから quit を入力して切断した後)、tail -f /var/log/syslog を実行しているターミナルに戻ります。接続に関連する in.telnetd からのデバッグ出力が表示されるはずです。この出力は、接続の確立や終了など、Telnet サーバーの活動に関する情報を提供します。

デバッグ出力の分析

このステップでは、デバッグモードで実行されている Telnet サーバーが生成するデバッグ出力を分析します。この出力を理解することで、問題の診断、Telnet プロトコルの理解、潜在的な脆弱性の特定に役立ちます。

前のステップで見たように、デバッグ出力はシステムログ (/var/log/syslog) に書き込まれます。典型的なデバッグ出力とその意味を見てみましょう。

まず、別のターミナルウィンドウでシステムログを監視していることを確認します。

sudo tail -f /var/log/syslog

次に、元のターミナルで netcat を使用して Telnet サーバーに接続します。

nc localhost 23

いくつかの文字を入力し、Ctrl+] を入力してから quit を入力して切断します。

これで、syslog ターミナルの出力を確認します。以下のような行が表示されるはずです (正確な出力は異なる場合があります)。

Oct 26 14:30:00 labex in.telnetd[1234]: connect from ::1
Oct 26 14:30:00 labex in.telnetd[1234]: telnetd: sock_host_addr: ::1
Oct 26 14:30:05 labex in.telnetd[1234]: ttloop: client wrote 5 bytes
Oct 26 14:30:05 labex in.telnetd[1234]: recv: got IAC
Oct 26 14:30:05 labex in.telnetd[1234]: recv: IAC SB
Oct 26 14:30:05 labex in.telnetd[1234]: recv: got IAC SE
Oct 26 14:30:10 labex in.telnetd[1234]: ttloop: client wrote 6 bytes
Oct 26 14:30:10 labex in.telnetd[1234]: recv: got IAC
Oct 26 14:30:10 labex in.telnetd[1234]: recv: IAC SB
Oct 26 14:30:10 labex in.telnetd[1234]: recv: got IAC SE
Oct 26 14:30:15 labex in.telnetd[1234]: Exit on signal 15

これらの行の一部を分解してみましょう。

  • connect from ::1: これは、IPv6 のループバックアドレス (::1) からの接続が確立されたことを示しています。これは IPv4 の 127.0.0.1 と同等です。
  • telnetd: sock_host_addr: ::1: これは、接続のソースアドレスを確認しています。
  • ttloop: client wrote 5 bytes: これは、クライアント (netcat セッション) がサーバーに 5 バイトのデータを送信したことを示しています。
  • recv: got IAC: IAC は "Interpret As Command" の略です。Telnet は特殊な制御コードを使用し、IAC はこれらのコードの接頭辞です。
  • recv: IAC SBrecv: got IAC SE: SB は "Subnegotiation Begin" の略で、SE は "Subnegotiation End" の略です。これらの行は、クライアントとサーバーがオプションを交渉していることを示しています。
  • Exit on signal 15: これは、telnetd プロセスがシグナル 15 を受信して終了したことを示しています。これは、シグナル番号を指定せずに kill が送信するデフォルトのシグナルです。これは、netcat 接続を閉じたときに発生します。

このデバッグ出力を分析することで、Telnet プロトコルとサーバーが接続とデータを処理する方法についての洞察を得ることができます。この情報は、セキュリティ分析、トラブルシューティング、ネットワーク通信の理解に役立ちます。

たとえば、Telnet サーバーの脆弱性を悪用しようとしている場合、このデバッグ出力を使用して、攻撃がどのように処理されているかを理解し、潜在的な弱点を特定することができます。

まとめ

この実験では、まず LabEx の仮想マシン (VM) 上に xinetd を使用して Telnet サーバーをセットアップし、telnetd サービスを管理しました。これには、必要なパッケージ (telnetdxinetd) のインストールと、xinetd を設定して Telnet 接続を待ち受け、Telnet サーバーデーモンを実行する作業が含まれていました。

/etc/xinetd.d/telnet という構成ファイルを作成し、Telnet サービスを有効にする設定、サーバーの実行ファイルを指定する設定、および接続ログの処理設定を記述しました。最後に、xinetd サービスを再起動して構成の変更を適用し、Telnet サーバーをテスト可能な状態にしました。