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 nano o vi.
  • 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 comando script se usa normalmente para grabar sesiones de terminal. Al enviarlo a /dev/null (el pozo sin fondo de Linux) e indicarle que ejecute bash, 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.

  1. Presiona Ctrl + Z. Esto enviará tu shell remota al fondo (background).
  2. En tu terminal local, escribe:
    stty raw -echo; fg
  3. Presiona Enter (notarás que no se ve lo que escribes, es normal). Luego escribe reset xterm y 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, top o 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.