# 23 - Pentesting Telnet {{#include ../banners/hacktricks-training.md}} ## **基本情報** Telnetは、ユーザーがネットワークを介してコンピュータにアクセスするための安全でない方法を提供するネットワークプロトコルです。 **デフォルトポート:** 23 ``` 23/tcp open telnet ``` ## **列挙** ### **バナーグラブ** ```bash nc -vn 23 ``` すべての興味深い列挙は**nmap**によって実行できます: ```bash nmap -n -sV -Pn --script "*telnet* and safe" -p 23 ``` スクリプト `telnet-ntlm-info.nse` は NTLM 情報 (Windows バージョン) を取得します。 [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854) より: TELNET プロトコルには、ユーザーとサーバーが TELNET 接続のためにより複雑な(または単に異なる)一連の規約を使用することに合意できるようにするために、"**DO, DON'T, WILL, WON'T**" 構造で使用されるさまざまな "**options**" が含まれています。これらのオプションには、文字セットの変更、エコーモードの変更などが含まれる可能性があります。 **このオプションを列挙することが可能であることは知っていますが、方法がわからないので、知っている場合は教えてください。** ### [ブルートフォース](../generic-hacking/brute-force.md#telnet) ## 設定ファイル ```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:// # Ncrack (drop to interactive session on success) ncrack -p 23 --user admin -P common-pass.txt --connection-limit 4 # 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](/generic-hacking/reverse-shells/full-ttys.md)を使用してください。 ### ハードニングと検出(ブルーチームコーナー) 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。 {{#include ../banners/hacktricks-training.md}}