Spawn 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