Introducci³n a los Buffer Overflows y ShellCodes

download Introducci³n a los Buffer Overflows y ShellCodes

of 30

  • date post

    07-Apr-2015
  • Category

    Documents

  • view

    172
  • download

    4

Embed Size (px)

Transcript of Introducci³n a los Buffer Overflows y ShellCodes

Introduccin a los Buffer Overflows y ShellCodes en WindowsUn pequeo 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 programacin. Ocasionado por copiar datos a un area de memoria que no 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 ? Explcamelo 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 Apretamos F9

Qu pas? Memory Exception EIP = 0x414141

Buffer Overflow!

Qu podemos hacer con un stack overflow? Nada. Manipular el flujo del programa Ejecutar el cdigo que se nos de la gana. Obtener una shell y acceder al sistema. Elevacin de privilegios. Crear gusanos que se reproduzcan masivamente. Lo que se le ocurra a nuestra imaginacin.

ShellCodes

Qu es una shellcode? Programa normalmente hecho en asm de caractersticas muy pequeas. Al ser pequeo es inyectado a la pila y ejecutado.

Tipos de Shellcodes. Locales. (Escalacin 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 archivo llamado 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

Prctica Presentacin de cdigo de la shellcode

HardCoded Address Al estar en memoria necesitamos conocer las direcciones de las funciones que vamos a llamar. Las direcciones de las funciones varan de equipo, versin, dlls diferentes, parches aplicados. Usaremos HardCoded Addresses unicamente para este propsito. S se pueden buscar las direcciones y obtener las funciones que queramos (GetProcAddress y LoadLibraryA)

BoF + ShellCode Ahora qu sigue?

Sobre escribiendo EIP Es imposible meter nuestra ShellCode en el buffer y que se ejecute. Abramos nuestro Ollydebug o si est abierto observemos los registros sobre todo ESP Necesitamos sobre escribir EIP con un jmp esp o un call esp Haremos que brinque hacia nuestra ShellCode (desviar el flujo del programa hacia donde queremos)

S, pero como hacemos que brinque a un jmp esp FINDJMP.! Todos los EXE cargan KERNEL32.DLL y NTDLL.DLL. Estas DLLs exportan funciones y estn siempre cargadas en memoria.

Programando el Exploitchar buffer[1024] = "AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKK LLLLMMMMNNNNOOOOPPPPQQQQ"; char offset[] = "\xED\x1E\x95\x7C"; esp en ntdll.dll // jmp

char shellcode[] = "\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6\x45 \xF8\x63\xC6\x45\xF9\x6D\xC6\x45\xFA\x64\xC6\ x45\xFB\x2E\xC6\x45\xFC\x65\xC6\x45\xFD\x78\x C6\x45\xFE\x65\x8D\x45\xF8\x6A\x01\x50\xBB\x4 D\x11\x86\x7C\xFF\xD3";

Prctica - Programando el exploit.

Ejecutando! Happy Hacking !!!

FIN Dudas, comentarios etc. ?Muchas gracias!!!!

Taller por: Amir Canto @amircp www.facebook.com/amircanto Mail: cantoamir@gmail.com

Referencias http://insecure.org/stf/smashstack.html http://www.phrack.org/issues.html?issue=55 &id=15 http://es.wikipedia.org/wiki/Buffer_overflow http://foro.colombiaunderground.org/index.p hp?topic=559.0 http://packetstormsecurity.org/papers/win/A nalysis-of-Microsoft-Windows-Vistas-ASLR.pdf