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:
import pty: Importa el m贸dulo pty, que es parte de la biblioteca est谩ndar de Python y permite la emulaci贸n de terminales.
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