Skip to content

Shells y TTY: tener una terminal en condiciones ​

Antes de escalar privilegios necesito una shell estable. Una reverse shell recogida con nc -lvnp 4444 es frágil: no tiene autocompletado ni historial, Ctrl+C la mata, sudo y su se quejan de que no hay TTY y los editores como vim no funcionan. Por eso recomiendo no usar netcat a pelo y recibir la shell con un shell handler que la sanea sola.

Penelope (la que uso) ​

Penelope es un shell handler pensado para sustituir a netcat cuando explotas un RCE. Al recibir la conexión sube la shell a PTY automáticamente, así que desde el primer segundo tengo una terminal completa.

bash
# Instalar (cualquiera de las dos)
sudo apt install penelope
pipx install penelope-shell-handler

# Escuchar
penelope                 # 0.0.0.0:4444
penelope -p 5555         # otro puerto
penelope -a              # además muestra payloads de reverse shell listos para copiar

Lo que me aporta frente a netcat:

FunciónPara qué me sirve
PTY automáticaAutocompletado, historial, Ctrl+C sin perder la shell, sudo/su/vim funcionan
Varias sesionesRecibo varias shells y cambio entre ellas desde un menú (F12 vuelve al menú)
Subir y bajar archivosupload / download sin montar un servidor aparte
MódulosPor ejemplo, subir scripts de enumeración como linpeas con un comando
LogsGuarda todo lo que hago en cada sesión, útil para el informe
Compartir archivospenelope -s <carpeta> sirve una carpeta por HTTP

Flujo típico

  1. penelope -a en mi máquina.
  2. Lanzo en la víctima uno de los payloads que me muestra (bash, python, php…).
  3. Llega la sesión ya con PTY: directamente sudo -l, linpeas, etc.

pwncat-cs (alternativa) ​

pwncat-cs hace algo parecido: recibe la shell, la estabiliza y añade módulos de post-explotación para Linux. El repositorio está archivado (ya no se actualiza), así que hoy prefiero Penelope.

bash
pipx install pwncat-cs
pwncat-cs -lp 4444

Si solo tengo netcat: sanear la TTY a mano ​

Es bueno saber hacerlo por si no puedo usar otra herramienta.

bash
# 1. En la shell recibida: crear una PTY
python3 -c 'import pty; pty.spawn("/bin/bash")'   # o: script /dev/null -c bash

# 2. Ctrl+Z para dejarla en segundo plano y, en MI terminal:
stty raw -echo; fg

# 3. De vuelta en la shell: tipo de terminal y tamaño
reset xterm
export TERM=xterm SHELL=bash
stty rows 40 columns 160      # los valores de 'stty size' en mi terminal

Con rlwrap nc -lvnp 4444 se consigue al menos historial y flechas, útil en Windows donde el truco de la PTY no aplica.

Windows ​

En Windows la shell de netcat tampoco es interactiva. Penelope también acepta shells de Windows y, si tengo credenciales y WinRM (puerto 5985) abierto, evil-winrm da directamente una PowerShell cómoda.

Contenido propio con fines educativos. Sin flags ni material de exámenes.