Skip to content
reverseshell

Mejorar un reverse shell va de controlar el terminal, no de presumir trucos

Los upgrades de reverse shell arreglan PTY, señales, edición de línea y job control en pruebas autorizadas.

Publicado el 2 min de lectura

El primer reverse shell que vuelve suele ser tosco. Los comandos ejecutan, pero el terminal se siente mal. Ctrl-C mata lo que no debe. Las flechas imprimen basura. sudo pide contraseña y se queda colgado. vim, top o less parecen rotos.

No siempre es fallo del payload. Normalmente es un problema de terminal.

PTY cambia la experiencia

Un socket bruto conectado a /bin/sh no se comporta como una sesión interactiva. Falta pseudo-terminal, job control, tamaño de terminal y manejo correcto de señales. En un laboratorio autorizado, mejorar la shell sirve para hacer la sesión lo bastante estable como para recoger evidencia sin ensuciar el resultado.

El camino clásico en Linux usa Python si existe:

python3 -c 'import pty; pty.spawn("/bin/bash")'

Después toca ajustar el modo local y el tamaño del terminal desde tu lado. La secuencia concreta depende del listener y de la shell. Por eso las recetas copiadas sin mirar fallan tanto.

Mira el entorno antes de mejorar nada

Comprueba lo que hay:

which python3 python script socat bash sh
echo $TERM
stty -a

Los contenedores mínimos pueden no tener Python, Bash ni stty. BusyBox requiere otras expectativas. Algunos entornos bloquean la asignación de PTY. En esos casos, insistir con un upgrade elegante es perder tiempo. Una shell limitada puede bastar para demostrar el hallazgo.

Estabilidad antes que estilo

Algunos operadores tratan el upgrade como una ceremonia. Mala idea. En una prueba real, el objetivo no es conseguir el terminal más bonito. Es demostrar impacto, evitar daño innecesario y producir una traza que el cliente pueda entender.

Si la sesión es inestable, documéntalo. Si algunos comandos son arriesgados por ese canal, para y usa un método aceptado en el alcance. Si el listener maneja mal el estado del terminal, cambia de herramienta.

Generación y upgrade son pasos distintos

Un generador no debería añadir lógica de upgrade en silencio a cada payload. Validar el callback y estabilizar la sesión son fases diferentes. Separarlas ayuda a auditar y explicar el test.

Genera el callback mínimo que pruebe la ruta. Mejora la shell solo cuando exista conexión y el contexto lo justifique.

Artículos relacionados

Flujo práctico para generar reverse shells en entornos autorizados, preparar el listener y diagnosticar fallos reales.
Cómo depurar callbacks que no llegan por problemas de rutas, egreso, listeners, runtimes ausentes y comandos mal escapados.
La detección de reverse shells necesita contexto de procesos, red y workload. Las firmas aisladas generan ruido y pierden casos reales.