Payloads
En Metasploit, una Payload (carga útil) se refiere a un módulo que ayuda al módulo de exploit, generalmente devolviendo un shell al atacante. Las cargas útiles se envían junto con el exploit para eludir los procedimientos de funcionamiento estándar del servicio vulnerable (función del exploit) y luego se ejecutan en el sistema operativo objetivo para, normalmente, devolver una conexión inversa al atacante y establecer un punto de apoyo (función de la carga útil).
Existen tres tipos diferentes de módulos de carga útil en el marco de Metasploit: Singles, Stagers y Stages. Usar estas tres tipologías de interacción de cargas útiles puede ser beneficioso para el pentester, ya que ofrece la flexibilidad necesaria para realizar ciertas tareas. Si una carga útil está o no en etapas (staged) se representa con una barra (/) en el nombre de la carga útil.
Por ejemplo:
windows/shell_bind_tcp
es una carga útil simple (Single) sin etapas.windows/shell/bind_tcp
consiste en un stager (bind_tcp
) y una etapa (shell
).
Singles (Cargas Útiles Simples)
Una carga útil Single contiene el exploit y el shellcode completo para la tarea seleccionada. Estas cargas útiles son más estables por diseño ya que contienen todo en uno. Sin embargo, algunos exploits no soportan el tamaño resultante de estas cargas útiles, ya que pueden volverse bastante grandes. Las cargas útiles simples son autónomas, se envían y ejecutan en el sistema objetivo, brindando un resultado inmediatamente después de su ejecución. Un ejemplo podría ser añadir un usuario al sistema objetivo o iniciar un proceso.
Stagers (Gestores)
Las cargas útiles Stager trabajan con las cargas útiles Stage para realizar una tarea específica. Un Stager espera en la máquina del atacante, listo para establecer una conexión con el host víctima una vez que la etapa (Stage) completa su ejecución. Los stagers se utilizan para configurar una conexión de red entre el atacante y la víctima y están diseñados para ser pequeños y confiables. Metasploit selecciona el más adecuado y, si es necesario, utiliza uno menos preferido.
Stagers en Windows: NX vs NO-NX
NX (No-eXecute) aborda problemas de compatibilidad con DEP (Data Execution Prevention).
Los stagers NX son más grandes debido a la asignación de memoria con
VirtualAlloc
.La opción predeterminada es ahora compatible con NX y Windows 7.
Stages (Etapas)
Las Stages son componentes de carga útil que se descargan a través de los módulos Stager. Estas etapas proporcionan funciones avanzadas sin límites de tamaño, como Meterpreter, inyección VNC, entre otras. Las stages automáticamente usan middle stagers para realizar una descarga completa:
Un solo
recv()
fallará con cargas útiles grandes.El stager recibe el middle stager.
El middle stager realiza la descarga completa.
Cargas Útiles con Etapas (Staged Payloads)
Una carga útil en etapas es un proceso de explotación modularizado y funcionalmente separado. Cada parte completa su objetivo individual, pero todas funcionan juntas para encadenar el ataque. Esto finalmente concede acceso remoto a la máquina objetivo si todas las etapas funcionan correctamente.
El objetivo de estas cargas útiles es, además de conceder acceso shell, ser lo más compactas e inconspicuas posible para evadir antivirus (AV) o sistemas de prevención de intrusiones (IPS). La Stage0 es la primera parte de la carga útil que se envía, cuyo único propósito es iniciar una conexión inversa al atacante. Los nombres comunes para estas conexiones incluyen reverse_tcp
, reverse_https
y bind_tcp
.
Ejemplo de Comando show payloads
show payloads
Cargas Útiles Meterpreter
La carga útil Meterpreter es un tipo específico de carga útil multifacética que utiliza inyección DLL para asegurar una conexión estable y persistente en el host víctima. Meterpreter reside completamente en la memoria del host remoto, lo que lo hace difícil de detectar con técnicas forenses convencionales. Una vez ejecutada, se crea una nueva sesión que genera una interfaz de Meterpreter. Esta interfaz es similar a msfconsole
, pero todos los comandos están dirigidos al sistema objetivo.
Meterpreter ofrece una variedad de comandos útiles, como captura de pulsaciones de teclas, recolección de hashes de contraseñas, acceso al micrófono, captura de pantalla, entre otros. Además, se pueden cargar y descargar dinámicamente plugins para asistir en la evaluación.
En secciones posteriores se explorarán más detalles sobre Meterpreter y los diferentes plugins disponibles.
Búsqueda de Cargas Útiles (Payloads)
Para seleccionar nuestra primera carga útil (payload), es importante saber qué queremos hacer en la máquina objetivo. Por ejemplo, si buscamos persistencia de acceso, probablemente querremos seleccionar una carga útil de Meterpreter.
Como se mencionó antes, las cargas útiles de Meterpreter nos ofrecen una gran flexibilidad. Su funcionalidad base ya es vasta y poderosa. Al combinarse con complementos como Mimikatz de GentilKiwi, podemos automatizar y entregar partes de la prueba de penetración mientras mantenemos una evaluación organizada y eficiente en cuanto al tiempo. Para ver todas las cargas útiles disponibles, podemos usar el comando show payloads
en msfconsole.
Lista de Payloads en Metasploit
Selección de Payload para Windows 7 (x64)
En lugar de usar el payload predeterminado, que es un simple reverse_tcp_shell
, utilizaremos un payload de Meterpreter para Windows 7 (x64). Navegamos en la lista de payloads y encontramos la sección que contiene payloads para Windows (x64).
Filtrando Cargas Útiles con grep
Puede ser un proceso largo buscar el payload adecuado entre una lista tan extensa. Para acelerar la búsqueda, podemos utilizar el comando grep
en msfconsole y filtrar términos específicos.
Por ejemplo, si queremos una reverse shell basada en TCP manejada por Meterpreter, podemos buscar todos los resultados que contengan la palabra Meterpreter.
Esto nos devuelve 14 resultados. Ahora podemos añadir otro comando grep
para buscar solo aquellos que contengan reverse_tcp
.
Selección del Payload
Para seleccionar el payload deseado, utilizamos el comando set payload <número>
.
Después de seleccionar el payload, aparecerán más opciones disponibles para configurar, como LHOST
y LPORT
, que son la dirección y puerto de escucha para inicializar la conexión reversa.
Uso de Payloads (Cargas Útiles)
Es momento de configurar los parámetros tanto del módulo de explotación como del módulo de payload. Para la parte de explotación, debemos configurar los siguientes parámetros:
Parámetros del Exploit:
Parámetro
Descripción
RHOSTS
La dirección IP del host remoto, es decir, la máquina objetivo.
RPORT
No requiere cambio, solo confirmar que estamos en el puerto 445, donde corre SMB.
Parámetros del Payload:
Parámetro
Descripción
LHOST
La dirección IP del host, es decir, la máquina atacante.
LPORT
No requiere cambio, solo confirmar que el puerto no esté en uso.
Si queremos verificar rápidamente nuestra dirección IP (LHOST), siempre podemos usar el comando ifconfig
directamente desde el menú de msfconsole.
Ahora establecemos el LHOST y RHOSTS:
Luego, podemos ejecutar el exploit y revisar los resultados:
Después de abrir la sesión de Meterpreter:
El comando whoami
, común en Windows, no funciona aquí, ya que el prompt es de Meterpreter. Podemos usar el comando equivalente en Linux: getuid
.
Comandos de Meterpreter
Explorar el menú de ayuda nos permite ver todas las capacidades del payload de Meterpreter.
Comandos Básicos:
Comando
Descripción
?
Menú de ayuda
background
Envía la sesión actual al fondo
exit
Termina la sesión de Meterpreter
run
Ejecuta un script de Meterpreter o un módulo Post
sessions
Cambia rápidamente a otra sesión
Comandos del Sistema de Archivos:
Comando
Descripción
cd
Cambia de directorio
ls
Lista archivos
download
Descarga un archivo o directorio
upload
Sube un archivo o directorio
rm
Elimina el archivo especificado
Comandos de Redes:
Comando
Descripción
arp
Muestra la caché ARP del host
ifconfig
Muestra las interfaces
netstat
Muestra las conexiones de red
portfwd
Redirige un puerto local a un servicio remoto
Comandos del Sistema:
Comando
Descripción
getuid
Muestra el usuario actual
ps
Lista los procesos en ejecución
shutdown
Apaga el sistema remoto
reboot
Reinicia el sistema remoto
sysinfo
Obtiene información del sistema remoto
Comandos de Interfaz de Usuario:
Comando
Descripción
screenshot
Toma una captura de pantalla del escritorio
keyscan_start
Inicia la captura de teclas
keyscan_dump
Muestra el buffer de teclas capturadas
Comandos de Cámara Web:
Comando
Descripción
webcam_snap
Toma una captura desde la cámara web
webcam_stream
Transmite un video desde la cámara web
Comandos de Elevación de Privilegios:
Comando
Descripción
getsystem
Intenta elevar los privilegios a SYSTEM
hashdump
Extrae los hashes del SAM
Navegación en Meterpreter:
Al usar shell
, podemos acceder a la CLI de Windows en la máquina objetivo.
Tipos de Payload (Cargas Útiles)
La siguiente tabla contiene los payloads más comunes usados en máquinas Windows y sus respectivas descripciones.
Payload
Descripción
generic/custom
Listener genérico, de uso múltiple
generic/shell_bind_tcp
Listener genérico, de uso múltiple, shell normal, conexión TCP vinculada
generic/shell_reverse_tcp
Listener genérico, de uso múltiple, shell normal, conexión TCP inversa
windows/x64/exec
Ejecuta un comando arbitrario (Windows x64)
windows/x64/loadlibrary
Carga una biblioteca arbitraria x64
windows/x64/messagebox
Genera un cuadro de diálogo con un título, texto e ícono personalizables
windows/x64/shell_reverse_tcp
Shell normal, payload único, conexión TCP inversa
windows/x64/shell/reverse_tcp
Shell normal, stager + stage, conexión TCP inversa
windows/x64/shell/bind_ipv6_tcp
Shell normal, stager + stage, stager TCP vinculado a IPv6
windows/x64/meterpreter/$
Payload de Meterpreter + variedades anteriores
windows/x64/powershell/$
Sesiones interactivas de PowerShell + variedades anteriores
windows/x64/vncinject/$
Servidor VNC (inyección reflexiva) + variedades anteriores
Otros payloads críticos que son ampliamente utilizados por los evaluadores de seguridad durante las pruebas de penetración incluyen los payloads de Empire y Cobalt Strike. Aunque no están dentro del alcance de este curso, te sugerimos investigarlos en tu tiempo libre, ya que pueden proporcionar una gran cantidad de información sobre cómo los profesionales realizan evaluaciones en objetivos de alto valor.
Además de estos, por supuesto, hay una gran variedad de otros payloads. Algunos están destinados a dispositivos específicos, como Cisco, Apple o PLC. Algunos podemos generarlos nosotros mismos utilizando msfvenom. Sin embargo, a continuación, veremos encoders y cómo pueden influir en el resultado de un ataque.
Last updated