23 - Pentesting Telnet

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 프로토콜에는 사용자가 더 정교한 (또는 아마도 단순히 다른) 규칙 집합을 사용하기로 동의할 수 있도록 "DO, DON'T, WILL, WON'T" 구조와 함께 사용될 수 있는 다양한 "옵션"이 있습니다. 이러한 옵션에는 문자 집합 변경, 에코 모드 변경 등이 포함될 수 있습니다.

이 옵션을 열거하는 것이 가능하다는 것을 알고 있지만, 방법을 모르니 아는 분은 알려주세요.

무작위 대입

구성 파일

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'

Recent Vulnerabilities (2022-2025)

  • CVE-2024-45698 – D-Link Wi-Fi 6 routers (DIR-X4860): 내장된 Telnet 서비스는 하드코딩된 자격 증명을 수용하고 입력을 정리하지 않아, 포트 23에서 조작된 명령을 통해 루트로서 인증되지 않은 원격 RCE를 허용합니다. 펌웨어 ≥ 1.04B05에서 수정됨.
  • CVE-2023-40478 – NETGEAR RAX30: Telnet CLI passwd 명령에서 스택 기반 버퍼 오버플로우가 발생하여 인접한 공격자가 인증을 우회하고 루트로서 임의 코드를 실행할 수 있게 합니다.
  • CVE-2022-39028 – GNU inetutils telnetd: 두 바이트 시퀀스(0xff 0xf7 / 0xff 0xf8)가 NULL 포인터 역참조를 유발하여 telnetd를 충돌시킬 수 있으며, 여러 번의 충돌 후 지속적인 DoS를 초래합니다.

취약점 분류 중 이러한 CVE를 염두에 두십시오—대상이 패치되지 않은 펌웨어 또는 레거시 inetutils Telnet 데몬을 실행 중이라면 코드 실행 또는 방해가 되는 DoS로의 직선 경로가 있을 수 있습니다.

Sniffing Credentials & Man-in-the-Middle

Telnet은 자격 증명을 포함한 모든 것을 명확한 텍스트로 전송합니다. 자격 증명을 캡처하는 두 가지 빠른 방법:

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을 스캔합니다. 이러한 논리를 반영하면 약한 장치를 빠르게 식별할 수 있습니다.

Exploitation & Post-Exploitation

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를 사용하세요.

Hardening & Detection (Blue team corner)

  1. SSH를 선호하고 Telnet 서비스를 완전히 비활성화하세요.
  2. Telnet이 필요한 경우 관리 VLAN에만 바인딩하고 ACL을 적용하며 데몬을 TCP 래퍼로 감싸세요 (/etc/hosts.allow).
  3. 레거시 telnetd 구현을 ssl-telnet 또는 telnetd-ssl로 교체하여 전송 암호화를 추가하되, 이는 데이터 전송 중 보호만 제공하며 비밀번호 추측은 여전히 간단합니다.
  4. 포트 23으로의 아웃바운드 트래픽을 모니터링하세요; 타협은 종종 엄격한 HTTP 이gress 필터를 우회하기 위해 Telnet을 통해 리버스 쉘을 생성합니다.

References

  • D-Link Advisory – CVE-2024-45698 Critical 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 지원하기