Tratamiento TTY en Linux: cómo convertir una reverse shell limitada en una terminal usable
Guía para entender y aplicar el tratamiento TTY en Linux tras obtener una reverse shell: script, Ctrl+Z, stty raw -echo, fg, reset, TERM y alternativas con Python.

Cuando conseguimos una reverse shell en un laboratorio de ciberseguridad, muchas veces la terminal que recibimos no es cómoda de usar. Podemos ejecutar comandos, pero la shell suele estar limitada: no funciona bien Ctrl + C, no tenemos autocompletado, algunas teclas se comportan raro y ciertos programas interactivos pueden fallar.
A este proceso de mejorar la terminal se le suele llamar tratamiento TTY. Dicho de forma simple: consiste en convertir una shell básica en una terminal más estable y parecida a una sesión real de Linux.
Este artículo está pensado para entornos controlados, laboratorios, CTFs y formación en ciberseguridad.
¿Qué problema tiene una reverse shell básica?
Una reverse shell básica nos permite ejecutar comandos en la máquina objetivo, pero normalmente no se comporta como una terminal completa.
Por ejemplo, puede pasar que:
- No funcione correctamente el autocompletado con
Tab. Ctrl + Ccierre la conexión en vez de cancelar un comando.- No podamos usar bien programas interactivos.
- La terminal no reconozca correctamente el tipo de entorno.
- La experiencia sea incómoda para enumerar el sistema.
La idea del tratamiento TTY es mejorar esa shell para poder trabajar mejor durante la fase de post-explotación.
Esquema rápido del proceso
Paso 1: crear una shell interactiva
Una vez tenemos la reverse shell, ejecutamos:
script /dev/null -c bash
Este comando inicia una nueva sesión de Bash usando script. En la práctica, nos ayuda a conseguir una shell más interactiva dentro de la máquina comprometida.
script /dev/null -c bash
En este punto, la terminal mejora, pero todavía no está completamente cómoda. Por eso hacemos algunos ajustes más desde nuestra máquina atacante.
Paso 2: suspender la conexión
Después de ejecutar el comando anterior, pulsamos:
Ctrl + Z
Esto suspende temporalmente la conexión y nos devuelve a nuestra terminal local.
No estamos cerrando la shell. Solo la estamos dejando en segundo plano durante un momento para poder ajustar cómo se comporta nuestra terminal.
Paso 3: ajustar la terminal local
Ahora, en nuestra máquina atacante, ejecutamos:
stty raw -echo; fg
Este comando hace dos cosas:
| Parte | Qué hace |
|---|---|
stty raw -echo | Ajusta la forma en la que nuestra terminal local envía y muestra caracteres |
fg | Recupera la reverse shell que habíamos suspendido |
Después de esto, la shell vuelve al primer plano.
Puede que al recuperar la terminal se vea algo raro o que parezca que no responde igual. Es normal en este paso.
Paso 4: resetear la terminal
Cuando volvemos a la shell, podemos ejecutar:
reset
Este comando ayuda a limpiar el estado de la terminal y a que vuelva a comportarse de forma más normal.
reset
Después de eso, ya podemos configurar algunas variables de entorno.
Paso 5: configurar TERM y SHELL
Por último, ejecutamos:
export TERM=xterm
export SHELL=bash
Estos comandos ayudan a que la terminal sepa qué tipo de entorno está utilizando.
| Comando | Para qué sirve |
|---|---|
export TERM=xterm | Indica el tipo de terminal que se va a usar |
export SHELL=bash | Define Bash como shell de referencia |
Con esto, la shell suele quedar mucho más cómoda para trabajar.
Comandos completos
El flujo completo sería el siguiente:
script /dev/null -c bash
Después pulsamos:
Ctrl + Z
Luego, en nuestra máquina atacante:
stty raw -echo; fg
Y finalmente, dentro de la shell:
reset
export TERM=xterm
export SHELL=bash
¿Qué conseguimos con esto?
Después del tratamiento TTY, la shell suele ser mucho más usable.
Podremos trabajar de forma más cómoda para:
- Enumerar usuarios, permisos y procesos.
- Movernos por el sistema de archivos.
- Ejecutar comandos de Linux con menos problemas.
- Usar una terminal más estable durante la práctica.
- Continuar con la escalada de privilegios en mejores condiciones.
Resumen visual
Antes:
Shell limitada, incómoda y poco interactiva
Después:
Shell más estable, más cómoda y mejor preparada para trabajar
El tratamiento TTY no es una explotación por sí misma. Es una técnica de mejora de la sesión. Sirve para trabajar mejor una vez que ya hemos obtenido una shell en un entorno autorizado.
Conclusión
El tratamiento TTY es uno de esos pasos que al principio puede parecer extraño, pero que se vuelve muy útil cuando practicas laboratorios de ciberseguridad. No hace que la máquina sea más vulnerable, sino que mejora la forma en la que interactuamos con la shell obtenida.
En resumen: si tienes una reverse shell básica y quieres trabajar de forma más cómoda, este pequeño proceso puede marcar bastante la diferencia.
Siempre realiza estas pruebas únicamente en laboratorios propios, CTFs o entornos donde tengas autorización.