127 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 23 - Pentesting Telnet
{{#include ../banners/hacktricks-training.md}}
## **Informações Básicas**
Telnet é um protocolo de rede que oferece aos usuários uma maneira INsegura de acessar um computador através de uma rede.
**Porta padrão:** 23
```
23/tcp open telnet
```
## **Enumeração**
### **Captura de Banner**
```bash
nc -vn <IP> 23
```
Toda a enumeração interessante pode ser realizada pelo **nmap**:
```bash
nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
```
O script `telnet-ntlm-info.nse` obterá informações NTLM (versões do Windows).
Do [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): No Protocolo TELNET existem várias "**opções**" que serão sancionadas e podem ser usadas com a estrutura "**DO, DON'T, WILL, WON'T**" para permitir que um usuário e um servidor concordem em usar um conjunto mais elaborado (ou talvez apenas diferente) de convenções para sua conexão TELNET. Essas opções podem incluir a mudança do conjunto de caracteres, o modo de eco, etc.
**Eu sei que é possível enumerar essas opções, mas não sei como, então me avise se souber como.**
### [Força bruta](../generic-hacking/brute-force.md#telnet)
## Arquivo de configuração
```bash
/etc/inetd.conf
/etc/xinetd.d/telnet
/etc/xinetd.d/stelnet
```
## Comandos Automáticos 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'
```
### Vulnerabilidades Recentes (2022-2025)
* **CVE-2024-45698 Roteadores D-Link Wi-Fi 6 (DIR-X4860)**: O serviço Telnet embutido aceitava credenciais codificadas e falhou em sanitizar a entrada, permitindo RCE remota não autenticada como root via comandos manipulados na porta 23. Corrigido no firmware ≥ 1.04B05.
* **CVE-2023-40478 NETGEAR RAX30**: Um estouro de buffer baseado em pilha no comando `passwd` do Telnet CLI permite que um atacante adjacente contorne a autenticação e execute código arbitrário como root.
* **CVE-2022-39028 GNU inetutils telnetd**: Uma sequência de dois bytes (`0xff 0xf7` / `0xff 0xf8`) aciona uma desreferenciação de ponteiro NULL que pode travar o `telnetd`, resultando em um DoS persistente após várias falhas.
Mantenha esses CVEs em mente durante a triagem de vulnerabilidades—se o alvo estiver executando um firmware não corrigido ou um daemon Telnet inetutils legado, você pode ter um caminho direto para a execução de código ou um DoS disruptivo.
### Capturando Credenciais & Man-in-the-Middle
Telnet transmite tudo, incluindo credenciais, em **texto claro**. Duas maneiras rápidas de capturá-las:
```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)
```
Para MITM ativo, combine o ARP spoofing (por exemplo, `arpspoof`/`ettercap`) com os mesmos filtros de sniffing para coletar senhas em redes comutadas.
### Força bruta automatizada / Spraying de senhas
```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
```
A maioria das botnets IoT (variantes do Mirai) ainda escaneia a porta 23 com pequenos dicionários de credenciais padrão—refletir essa lógica pode identificar rapidamente dispositivos fracos.
### Exploração & Pós-Exploração
O Metasploit possui vários módulos úteis:
* `auxiliary/scanner/telnet/telnet_version` enumeração de banner e opções.
* `auxiliary/scanner/telnet/brute_telnet` bruteforce multithreaded.
* `auxiliary/scanner/telnet/telnet_encrypt_overflow` RCE contra Telnet vulnerável do Solaris 9/10 (manipulação da opção ENCRYPT).
* `exploit/linux/mips/netgear_telnetenable` habilita o serviço telnet com um pacote elaborado em muitos roteadores NETGEAR.
Após obter um shell, lembre-se que **TTYs geralmente são simples**; faça upgrade com `python -c 'import pty;pty.spawn("/bin/bash")'` ou use os [HackTricks TTY tricks](/generic-hacking/reverse-shells/full-ttys.md).
### Fortalecimento & Detecção (canto da equipe azul)
1. Prefira SSH e desative completamente o serviço Telnet.
2. Se o Telnet for necessário, vincule-o apenas a VLANs de gerenciamento, aplique ACLs e envolva o daemon com TCP wrappers (`/etc/hosts.allow`).
3. Substitua implementações legadas de `telnetd` por `ssl-telnet` ou `telnetd-ssl` para adicionar criptografia de transporte, mas **isso apenas protege dados em trânsito—adivinhação de senhas continua trivial**.
4. Monitore o tráfego de saída para a porta 23; compromissos frequentemente geram shells reversos via Telnet para contornar filtros de saída HTTP rigorosos.
## Referências
* D-Link Advisory CVE-2024-45698 RCE crítica do Telnet.
* NVD CVE-2022-39028 inetutils `telnetd` DoS.
{{#include ../banners/hacktricks-training.md}}