Reverse shell y Bind shell: Qué son y cómo funcionan

INDICE

¿Qué es una shell remota?

Una shell remota es una interfaz de línea de comandos que permite controlar un sistema a distancia, como si estuvieras escribiendo directamente en su terminal. Este tipo de acceso se utiliza en muchos contextos, tanto legítimos como maliciosos.

En ciberseguridad, las shells remotas son herramientas fundamentales durante pruebas de penetración o auditorías, ya que permiten interactuar con sistemas comprometidos para ejecutar comandos, explorar archivos, escalar privilegios y más.

Existen distintas formas de obtener una shell remota, pero las dos más comunes son:

  • Reverse Shell
  • Bind Shell

Cada una tiene sus ventajas y limitaciones, y su uso depende del contexto de red, los puertos disponibles y las configuraciones de seguridad del sistema.

Reverse Shell

Una reverse shell es un tipo de conexión remota en la que la máquina víctima (el objetivo) se encarga de iniciar la conexión hacia el atacante. Esto es especialmente útil cuando la víctima está protegida por un firewall o detrás de un router con NAT, que bloquea conexiones entrantes.

En este escenario, el atacante pone su sistema a la escucha (modo listener), esperando que la víctima se conecte. Una vez establecida la conexión, el atacante obtiene acceso remoto al sistema objetivo mediante una shell interactiva.

Ejemplo practico reverse shell

Para este ejemplo, utilizaremos un script en Python que estará «infectado», diseñado para iniciar una conexión hacia la máquina atacante a través del puerto 4444. La idea es que la máquina atacante (Kali Linux) permanezca a la escucha, mientras que la víctima, al ejecutar el script, establezca una conexión inversa que permitirá al atacante acceder de forma remota al sistema comprometido.

Script en Python:

Se trata de un script sencillo que solicita y verifica la edad del usuario. Sin embargo, en la última línea, se ejecuta una conexión maliciosa utilizando os.system(), una función que permite ejecutar comandos directamente en la terminal del sistema.

Al ejecutarlo, automáticamente se conecta al equipo Kali Linux (atacante). Que estará en modo listener con la herramienta netcat

Bind Shell

En el caso de la bind shell, La victima abre un puerto en la maquina a la espera de que el atacante se conecte. Este enfoque es útil cuando el atacante puede acceder a la máquina víctima a través de una red pública y no está limitado por restricciones de NAT o firewall, ya que es la víctima quien abre el puerto de escucha. Sin embargo, si la víctima está detrás de un firewall o en una red que bloquea puertos de entrada, este tipo de shell puede ser más difícil de implementar.

Ejemplo practico bind shell

En este ejemplo vamos a utilizar un pequeño script infectado. Al ejecutarse en la máquina víctima, el script abre el puerto 5555 y se queda esperando a que alguien se conecte. En este caso, ese «alguien» será la máquina del atacante, que podrá establecer una conexión directa con la víctima y controlar el sistema de forma remota. La víctima es quien abre el canal de comunicación.

Tras ejecutar el script… Podemos ver desde el atacante con nmap como el puerto 5555 de la victima esta abierto, y podemos acceder a el desde la herramienta netcat.

0
0

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio