Si alguna vez has logrado una reverse shell durante un laboratorio de hacking o una auditoría, te habrás encontrado con el primer gran obstáculo: una terminal que no se comporta como tal. No hay colores, el comando clear no funciona y presionar Tab para autocompletar es un sueño lejano.
En este artículo, vamos a desglosar el proceso técnico para realizar un tratamiento de la TTY, permitiéndonos trabajar con total comodidad en el sistema objetivo.
¿Por qué necesitamos "tratar" la TTY?
Cuando recibimos una conexión a través de herramientas como netcat, obtenemos un flujo de entrada y salida estándar, pero no una Pseudo-Terminal (PTY) completa. Sin este tratamiento:
- No podemos usar editores de texto interactivos como
nanoovi. - No tenemos historial de comandos.
- Los atajos de teclado (como Ctrl + C) cierran la conexión en lugar de cancelar un proceso en la máquina remota.
El Paso a Paso Técnico
Sigue este flujo una vez que hayas establecido tu conexión inicial:
1. Generar la PTY con Script
El primer paso es engañar al sistema para que crea que hay una terminal interactiva.
script /dev/null -c bash
¿Qué sucede aquí?: El comandoscriptse usa normalmente para grabar sesiones de terminal. Al enviarlo a/dev/null(el pozo sin fondo de Linux) e indicarle que ejecutebash, forzamos al sistema a crear una estructura de pseudo-terminal.
2. Suspender y Configurar el Entorno Local
Ahora necesitamos "preparar" nuestra propia terminal (la de nuestra máquina atacante) para que deje de interpretar las teclas y las pase directamente a la remota.
- Presiona Ctrl + Z. Esto enviará tu shell remota al fondo (background).
- En tu terminal local, escribe:
stty raw -echo; fg - Presiona Enter (notarás que no se ve lo que escribes, es normal). Luego escribe
reset xtermy pulsa Enter de nuevo.
La magia detrás de esto:
- stty raw: Desactiva el procesamiento de entrada en tu máquina. Ahora, cada tecla (incluyendo Ctrl + C) se envía "cruda" a la máquina remota.
- -echo: Evita que los caracteres se dupliquen en tu pantalla.
- fg: Trae la shell remota al primer plano.
- reset xterm: Limpia la pantalla y reconfigura el tipo de terminal para que sea funcional.
3. Variables de Entorno Esenciales
Una vez recuperada la shell, debemos definir un par de variables que los programas de Linux consultan para saber cómo mostrarse:
export SHELL=bash
export TERM=xterm
- SHELL=bash: Le dice al sistema que nuestro intérprete preferido es Bash.
- TERM=xterm: Permite que herramientas como
clear,topo editores de texto sepan cómo renderizar los colores y posiciones en pantalla.
Un toque extra: El tamaño de la pantalla
Incluso después de esto, podrías notar que si escribes un comando muy largo, se corta o se encima. Esto es porque la shell remota no sabe cuántas filas y columnas tiene tu ventana de terminal actual.
Pro Tip: En tu máquina local (antes de entrar a la remota o en otra pestaña), ejecuta:
stty size
Supongamos que te devuelve 44 184. En la máquina remota, ajusta el tamaño con:
stty rows 44 columns 184
Conclusión
Realizar este procedimiento apenas obtienes acceso no es solo por comodidad; es por eficiencia y estabilidad. Una TTY bien tratada evita desconexiones accidentales y te permite moverte por el sistema de archivos con la misma fluidez que si estuvieras sentado frente al teclado físico de la víctima.
¡Y listo! Ya tienes una terminal 100% funcional.