cloudflareSpawn TTY

Introducción al TTY (Teletype Terminal)

Cuando se obtiene acceso a un sistema remoto mediante una Reverse Shell o una WebShell, el atacante suele encontrarse con una shell básica, limitada en funcionalidad y sin acceso a características comunes de las terminales interactivas completas, como la ejecución de comandos con características avanzadas (uso de atajos, edición de comandos, etc.). Este tipo de shell "limitada" es conocida como una no-interactive shell.

Para superar estas limitaciones y obtener una shell interactiva más robusta, los pentesters o atacantes utilizan una técnica conocida como Spawn TTY, que les permite emular un entorno de terminal completo.

¿Qué es TTY?

TTY (Teletype) es un tipo de terminal que interactúa directamente con el sistema operativo, ofreciendo una sesión completa con todas las funcionalidades de una terminal interactiva. Los programas y procesos del sistema pueden necesitar un TTY para funcionar correctamente. En una shell no interactiva, los comandos pueden no comportarse de manera adecuada, y ciertas características, como atajos de teclado, no estarán disponibles.

¿Qué es Spawn TTY?

Spawn TTY es una técnica utilizada para transformar una shell básica obtenida mediante una Reverse Shell o WebShell en una shell interactiva más completa. Esto se logra invocando una terminal interactiva dentro del entorno limitado utilizando el módulo pty de Python o ejecutando comandos especiales que le indican al sistema que inicie un TTY.

Este proceso es crucial para los pentesters, ya que les permite aprovechar al máximo las capacidades del sistema comprometido, incluyendo la ejecución adecuada de comandos como sudo, el uso de combinaciones de teclas como Ctrl+C, y la ejecución de scripts interactivos.

Comando para Ejecutar una Shell Interactiva (Spawn TTY)

Un método popular para obtener un TTY es utilizando Python. Si el sistema tiene Python instalado, se puede ejecutar el siguiente comando para emular una shell interactiva:

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

Este comando realiza las siguientes acciones:

  1. import pty: Importa el módulo pty, que es parte de la biblioteca estándar de Python y permite la emulación de terminales.

  2. pty.spawn("/bin/bash"): Llama a la función spawn del módulo pty, que crea una nueva terminal interactiva, ejecutando el shell de Bash (/bin/bash) dentro de la sesión actual.

Al ejecutar este comando en una shell limitada, se transformará en una shell interactiva con todas las funcionalidades, lo que facilita la interacción con el sistema.

www-data@spartan:/$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 0e:66:73:14:08:37 brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.6/24 brd 172.16.1.255 scope global dynamic eth0
       valid_lft 3425sec preferred_lft 3425sec
    inet6 fe80::c66:73ff:fe14:837/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:21:19:6c:2b brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:21ff:fe19:6c2b/64 scope link 
       valid_lft forever preferred_lft forever
5: veth16a95cc@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether a2:9d:1b:24:e7:c1 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::a09d:1bff:fe24:e7c1/64 scope link 
       valid_lft forever preferred_lft forever

www-data@spartan:/$ hostname
spartan.store

www-data@spartan:/$ whoami
www-data

Last updated