23 - Pentesting Telnet

Reading time: 9 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

基本情報

Telnetは、ユーザーがネットワークを介してコンピュータにアクセスするための安全でない方法を提供するネットワークプロトコルです。

デフォルトポート: 23

23/tcp open  telnet

列挙

バナーグラブ

bash
nc -vn <IP> 23

すべての興味深い列挙はnmapによって実行できます:

bash
nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>

スクリプト telnet-ntlm-info.nse は NTLM 情報 (Windows バージョン) を取得します。

telnet RFC より: TELNET プロトコルには、ユーザーとサーバーが TELNET 接続のためにより複雑な(または単に異なる)一連の規約を使用することに合意できるようにするために、"DO, DON'T, WILL, WON'T" 構造で使用されるさまざまな "options" が含まれています。これらのオプションには、文字セットの変更、エコーモードの変更などが含まれる可能性があります。

このオプションを列挙することが可能であることは知っていますが、方法がわからないので、知っている場合は教えてください。

ブルートフォース

設定ファイル

bash
/etc/inetd.conf
/etc/xinetd.d/telnet
/etc/xinetd.d/stelnet

HackTricks 自動コマンド

Protocol_Name: Telnet    #Protocol Abbreviation if there is one.
Port_Number:  23     #Comma separated if there is more than one.
Protocol_Description: Telnet          #Protocol Abbreviation Spelled out

Entry_1:
Name: Notes
Description: Notes for t=Telnet
Note: |
wireshark to hear creds being passed
tcp.port == 23 and ip.addr != myip

https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-telnet.html

Entry_2:
Name: Banner Grab
Description: Grab Telnet Banner
Command: nc -vn {IP} 23

Entry_3:
Name: Nmap with scripts
Description: Run nmap scripts for telnet
Command: nmap -n -sV -Pn --script "*telnet*" -p 23 {IP}

Entry_4:
Name: consoleless mfs enumeration
Description: Telnet enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/brocade_enable_login; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_encrypt_overflow; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_ruggedcom; set RHOSTS {IP}; set RPORT 23; run; exit'

最近の脆弱性 (2022-2025)

  • CVE-2024-45698 – D-Link Wi-Fi 6 ルーター (DIR-X4860): 内蔵の Telnet サービスはハードコーディングされた認証情報を受け入れ、入力のサニタイズに失敗し、ポート 23 で作成されたコマンドを介してルートとして認証されていないリモート RCE を可能にしました。ファームウェア ≥ 1.04B05 で修正済み。
  • CVE-2023-40478 – NETGEAR RAX30: Telnet CLI の passwd コマンドにおけるスタックベースのバッファオーバーフローにより、隣接する攻撃者が認証をバイパスし、ルートとして任意のコードを実行できるようになります。
  • CVE-2022-39028 – GNU inetutils telnetd: 2 バイトのシーケンス (0xff 0xf7 / 0xff 0xf8) が NULL ポインタのデリファレンスを引き起こし、telnetd をクラッシュさせ、いくつかのクラッシュの後に持続的な DoS を引き起こします。

脆弱性のトリアージ中にこれらの CVE を念頭に置いてください。ターゲットがパッチ未適用のファームウェアまたはレガシー inetutils Telnet デーモンを実行している場合、コード実行や破壊的な DoS への直接的な道があるかもしれません。

認証情報のスニッフィングと中間者攻撃

Telnet はすべての情報、認証情報を含む、を 平文 で送信します。これをキャプチャするための2つの迅速な方法:

bash
# Live capture with tcpdump (print ASCII)
sudo tcpdump -i eth0 -A 'tcp port 23 and not src host $(hostname -I | cut -d" " -f1)'

# Wireshark display filter
tcp.port == 23 && (telnet.data || telnet.option)

アクティブMITMの場合、ARPスプーフィング(例:arpspoof/ettercap)を同じスニッフィングフィルターと組み合わせて、スイッチネットワーク上でパスワードを収集します。

自動ブルートフォース / パスワードスプレー

bash
# Hydra (stop at first valid login)
hydra -L users.txt -P rockyou.txt -t 4 -f telnet://<IP>

# Ncrack (drop to interactive session on success)
ncrack -p 23 --user admin -P common-pass.txt --connection-limit 4 <IP>

# Medusa (parallel hosts)
medusa -M telnet -h targets.txt -U users.txt -P passwords.txt -t 6 -f

ほとんどのIoTボットネット(Miraiバリアント)は、デフォルトの資格情報辞書を使用してポート23をスキャンします。このロジックを反映させることで、脆弱なデバイスを迅速に特定できます。

攻撃とポストエクスプロイト

Metasploitにはいくつかの便利なモジュールがあります:

  • auxiliary/scanner/telnet/telnet_version – バナーとオプションの列挙。
  • auxiliary/scanner/telnet/brute_telnet – マルチスレッドブルートフォース。
  • auxiliary/scanner/telnet/telnet_encrypt_overflow – 脆弱なSolaris 9/10 Telnetに対するRCE(オプションENCRYPTの処理)。
  • exploit/linux/mips/netgear_telnetenable – 多くのNETGEARルーターで作成したパケットを使用してTelnetサービスを有効にします。

シェルを取得した後は、TTYは通常ダムであることを忘れないでくださいpython -c 'import pty;pty.spawn("/bin/bash")'でアップグレードするか、HackTricks TTY tricksを使用してください。

ハードニングと検出(ブルーチームコーナー)

  1. SSHを優先し、Telnetサービスを完全に無効にします。
  2. Telnetが必要な場合は、管理VLANにのみバインドし、ACLを強制し、デーモンをTCPラッパーでラップします(/etc/hosts.allow)。
  3. レガシーtelnetdの実装をssl-telnetまたはtelnetd-sslに置き換えてトランスポート暗号化を追加しますが、これはデータの移動中のみを保護します—パスワード推測は依然として簡単です
  4. ポート23へのアウトバウンドトラフィックを監視します;侵害はしばしばTelnetを介してリバースシェルを生成し、厳格なHTTP出口フィルターを回避します。

参考文献

  • D-Link Advisory – CVE-2024-45698 クリティカルTelnet RCE。
  • NVD – CVE-2022-39028 inetutils telnetd DoS。

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする