Comprender y usar payloads staged vs stageless en Metasploit

Kali LinuxBeginner
Practicar Ahora

Introducción

En el mundo de las pruebas de penetración con Metasploit Framework, un payload es el código que se ejecuta en el sistema objetivo después de que una vulnerabilidad ha sido explotada con éxito. Comprender los diferentes tipos de payloads es crucial para un compromiso exitoso. Las dos categorías principales de payloads son "staged" (por etapas) y "stageless" (sin etapas).

Un payload staged se envía en dos partes: un pequeño "stager" inicial y una "stage" final más grande. El trabajo del stager es establecer una conexión de vuelta a la máquina del atacante y luego descargar el resto del payload. Un payload stageless, por otro lado, es un paquete único y autocontenido que incluye todo el código necesario para ejecutarse en el objetivo.

En este laboratorio, tendrá experiencia práctica con ambos tipos. Utilizará la consola de Metasploit para seleccionar cada tipo de payload, observar sus diferencias clave, particularmente en tamaño, y aprender sobre las ventajas y desventajas de usar cada uno.

Seleccionar un exploit y un payload staged como windows/meterpreter/reverse_tcp

En este paso, iniciará la consola de Metasploit Framework y seleccionará un manejador de exploit genérico. Luego, lo configurará para usar un payload staged común. Usamos el módulo exploit/multi/handler porque es un listener universal, perfecto para demostrar payloads sin necesidad de un objetivo vulnerable específico.

Primero, abra su terminal e inicie la consola de Metasploit. Usaremos la bandera -q (quiet) para omitir el banner de inicio.

msfconsole -q

Una vez que vea el prompt de Metasploit (msf6 >), deberá seleccionar el manejador de exploit.

use exploit/multi/handler

A continuación, configuremos el payload. El nombre de un payload staged generalmente se formatea como plataforma/stage/stager. Por ejemplo, windows/meterpreter/reverse_tcp significa que la plataforma es Windows, el payload final (stage) es Meterpreter, y el método de conexión inicial (stager) es un shell TCP inverso.

Configure el payload staged con el siguiente comando:

set payload windows/meterpreter/reverse_tcp

Verá un mensaje de confirmación payload => windows/meterpreter/reverse_tcp. Para estar seguro, puede ver la configuración actual.

show options

Verá el payload listado en las opciones. No necesitamos configurar LHOST ni LPORT porque en realidad no estamos ejecutando el exploit; solo estamos examinando las propiedades del payload.

msf6 exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST                      yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target

Observar el pequeño tamaño del payload staged

En este paso, utilizará el comando info para inspeccionar los detalles del payload staged que seleccionó. El detalle más importante a notar es su tamaño.

Mientras aún se encuentra en la consola de Metasploit con el payload windows/meterpreter/reverse_tcp seleccionado, escriba el comando info:

info

Metasploit mostrará información detallada sobre el payload, incluyendo su nombre, plataforma, arquitectura y tamaño. Desplácese por la salida y busque la línea "Payload size".

msf6 exploit(multi/handler) > info

       Name: Windows Meterpreter, Reverse TCP Stager
     Module: payload/windows/meterpreter/reverse_tcp
   Platform: Windows
       Arch: x86
Needs Admin: No
 Total size: 354
       Rank: Normal

Provided by:
  skape <stephen_fewer@harmonysecurity.com>
  sf <stephen_fewer@harmonysecurity.com>

Basic options:
Name      Current Setting  Required  Description
----      ---------------  --------  -----------
EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
LHOST                      yes       The listen address (an interface may be specified)
LPORT     4444             yes       The listen port

Description:
  Connect back to the attacker and spawn a Meterpreter server (staged).
  Listen for a connection from the stager and send the second stage.

Observe que el Total size (Tamaño total) es muy pequeño (por ejemplo, 354 bytes). Esta es la característica clave de un payload staged. Este pequeño fragmento de código, el stager, está diseñado solo para conectarse a su máquina y descargar la etapa de Meterpreter, mucho más grande. Este pequeño tamaño lo hace ideal para encajar en las restricciones de memoria ajustadas de ciertos exploits.

Seleccionar el mismo exploit y un payload stageless como windows/meterpreter_reverse_tcp

Ahora, cambiemos a un payload stageless para ver la diferencia. El nombre de un payload stageless generalmente se formatea como plataforma/tipo_payload, usando un guion bajo _ en lugar de una segunda barra /. Esta convención de nomenclatura le ayuda a identificarlos rápidamente.

En la misma sesión de msfconsole, use el comando set payload nuevamente, pero esta vez para la versión stageless: windows/meterpreter_reverse_tcp.

set payload windows/meterpreter_reverse_tcp

Verá la confirmación payload => windows/meterpreter_reverse_tcp. Observe el guion bajo en el nombre. Este único payload contiene el servidor Meterpreter completo y la lógica de conexión, todo en un solo paquete.

Verifiquemos las opciones nuevamente para confirmar el cambio.

show options

La salida ahora reflejará el payload stageless recién seleccionado.

msf6 exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (windows/meterpreter_reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST                      yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port

...

Ahora ha cambiado con éxito de un payload staged a uno stageless.

Observar el mayor tamaño del payload stageless

En este paso, inspeccionará el payload stageless que acaba de seleccionar y comparará su tamaño con el del payload staged del Paso 2.

Al igual que antes, utilice el comando info para obtener detalles sobre el payload actual.

info

Examine la salida y localice la línea "Payload size".

msf6 exploit(multi/handler) > info

       Name: Windows Meterpreter, Reverse TCP Inline
     Module: payload/windows/meterpreter_reverse_tcp
   Platform: Windows
       Arch: x86
Needs Admin: No
 Total size: 999335
       Rank: Normal

Provided by:
  skape <stephen_fewer@harmonysecurity.com>
  sf <stephen_fewer@harmonysecurity.com>

Basic options:
Name      Current Setting  Required  Description
----      ---------------  --------  -----------
EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
LHOST                      yes       The listen address (an interface may be specified)
LPORT     4444             yes       The listen port

Description:
  Connect back to the attacker and spawn a Meterpreter server (inline).
  This payload is a single executable and does not need to download a
  second stage.

Como puede ver, el Total size (Tamaño total) es drásticamente mayor (por ejemplo, 999335 bytes o casi 1 MB) en comparación con el tamaño de unos pocos cientos de bytes del payload staged. Esto se debe a que el payload stageless contiene toda la funcionalidad de Meterpreter. No necesita descargar nada más después de la ejecución.

Ahora que ha visto la diferencia principal, puede salir de la consola de Metasploit.

exit

Discutir los pros y los contras de cada tipo de payload

En este último paso, resumiremos las ventajas y desventajas de los payloads staged y stageless. Comprender estas compensaciones es clave para elegir la herramienta adecuada para un escenario específico. No hay comandos que ejecutar en este paso; es para la comprensión conceptual.

Payloads Staged (por ejemplo, windows/meterpreter/reverse_tcp)

Pros:

  • Tamaño Pequeño: El stager inicial es muy pequeño. Esta es una ventaja significativa cuando el exploit tiene un tamaño de buffer o espacio de memoria muy limitado para el payload.
  • Sigilo (Etapa Inicial): El stager pequeño tiene menos probabilidades de ser detectado por soluciones antivirus simples basadas en firmas en comparación con un payload grande y rico en funcionalidades.

Contras:

  • Múltiples Conexiones: Requieren una segunda conexión para descargar la etapa principal. Esto genera más tráfico de red y brinda otra oportunidad para que los firewalls, los Sistemas de Detección de Intrusiones (IDS) o los administradores de red detecten y bloqueen el ataque.
  • Menos Estables: La conexión puede ser frágil. Si la conexión se interrumpe mientras se descarga la segunda etapa, el exploit fallará.
  • Problemas de Callback: La máquina objetivo debe poder alcanzar la máquina del atacante a través de la red para descargar la etapa, lo que puede ser un problema en redes altamente restringidas.

Payloads Stageless (por ejemplo, windows/meterpreter_reverse_tcp)

Pros:

  • Fiabilidad y Estabilidad: Dado que todo está en un solo paquete, el payload es más autónomo y estable. Solo necesita establecer una conexión, y una vez que está en funcionamiento, no depende de la descarga de más componentes.
  • Funciona en Entornos Restringidos: Una vez que el payload se entrega al objetivo, puede ejecutarse sin necesidad de descargar nada más, lo que es útil si el objetivo tiene acceso limitado o nulo a Internet saliente.

Contras:

  • Tamaño Grande: Su gran tamaño es su mayor inconveniente. Es posible que no quepan en el espacio de memoria permitido por muchos exploits, lo que los hace inútiles en esos casos.
  • Más Fácil de Detectar: Un ejecutable grande y único es a menudo más fácil de analizar y marcar como malicioso por las soluciones antivirus y de seguridad basándose en su tamaño y firmas.

En resumen, debe elegir un payload staged cuando trabaje con exploits que tengan restricciones de tamaño. Elija un payload stageless cuando la fiabilidad sea primordial y el método de exploit pueda manejar un tamaño de payload mayor.

Resumen

En este laboratorio, ha explorado la diferencia fundamental entre los payloads staged y stageless dentro del Metasploit Framework.

Comenzó iniciando msfconsole y seleccionando un payload staged, windows/meterpreter/reverse_tcp. Observó su tamaño muy pequeño, diseñado para ser un stager ligero. Luego, cambió a su contraparte stageless, windows/meterpreter_reverse_tcp, y notó su tamaño significativamente mayor, ya que contiene todo el payload en un solo paquete.

Finalmente, revisó los pros y los contras de cada tipo, aprendiendo que la elección entre ellos implica una compensación entre tamaño, sigilo y fiabilidad. Los payloads staged son pequeños pero requieren una segunda conexión, mientras que los payloads stageless son grandes pero más estables y autónomos. Este conocimiento es esencial para tomar decisiones efectivas durante las actividades de pruebas de penetración.