Buffer overflows en windows xp
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 queno es lo suficientemente grande para contenerlos.
char buffer[64]; // Buffer strcpy(buffer, argv[1]);
de 64 bytes //Aqui es donde esta el fallo.
¿Ajá y qué ? Explícamelo con palitos y bolitas
•El Procesador tiene varios registros (eax, ecx, edx, esi, edi, eip, esp, ebp) • Introducir datos mayores al buffer causa que sobre escribas memoria continua • Al sobre escribir memoria continua,causas un error de segmento • EIP Open -> Busquen el archivo vulnerable que acabamos de compilar • Debug -> Arguments • Introducimos AAAAAAAAAAAAAA (todas las que podamos) • Debug -> Restart • ApretamosF9
¿Qué pasó? Memory Exception EIP = 0x414141
Buffer Overflow!
¿Qué podemos hacer con un stack overflow?
• Nada. • Manipular el flujo del programa
– Ejecutar el código que se nos de lagana. – 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 unashellcode?
• 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
• • • • Abran su editor favorito (notepad++ p.e). Preparen su TASM (instalenlo si no lo está) Creen un archivollamado compilar.bat en C: Abran compilar.bat
c:\TASM\bin\tasm32 -ml -m5 -q -zn shellcode.asm c:\TASM\bin\tlink32 -v -Tpe -c -x -aa shellcode,,, import32
Práctica Presentación de código de la...
Regístrate para leer el documento completo.