Stack-Based Buffer Overflow Windows x86

Configuración de ambiente Windows

  • Instalar Immunity Debugger: https://www.immunityinc.com/

    • Configurar ejecutar como administrador: clic derecho -> Propiedades -> Compatibilidad -> Habilitar opción "Ejecutar este programa como administrador".

  • Instalar mona.py: https://github.com/corelan/mona

    • C:\Program Files\Immunity Inc\Immunity Debugger\PyCommands

Desactivar la prevención de ejecución de datos (DEP / Data Execution Prevention)

Windows XP

  • Panel de control -> Sistema -> Avanzado -> Inicio y Recuperación -> Configuración -> Editar

    • Reemplazar OptIn por AlwaysOff.

Windows 7

bcdedit.exe /set <current> nx AlwaysOff

Reiniciar el sistema operativo y posteriormente comprobar en: Mi PC -> clic derecho -> Propiedades -> Avanzando -> Rendimiento -> Configuración -> Data Execution Prevention.

Procedimiento

0) Pre-inicio

Identificar dirección IP y puerto donde se ejecuta el binario, y cual campo es vulnerable a buffer overflow.

Archivo: parameters.py

1) Fuzzing

Realizar fuzzing para encontrar con cuantos bytes se desborda el búfer y se sobrescribe el registro EIP (Extended Instruction Pointer).

Archivo: 01-fuzzing.py

Sincronizar (Ctrl + F1) y ejecutar (F9) el proceso en Immunity Debugger.

2) Offset

Creación de "pattern" para calcular el "offset".

Identificación de "offset".

Archivo: 02-findOffset.py

3) Verificar el offset

Verificar el "offset" identificado y control del EIP.

Archivo: 03-checkOffset.py

4) Buscar los badchars

Archivo: 04-badchars.py

5) Encontrar "JMP ESP"

Verificación de badchars.

  • <badchars> = \x00\x0a\x0d

Obtención de dirección "JMP ESP" utilizando Mona.

Obtención de dirección "JMP ESP" utilizando findjmp.exe.

Archivo: 05-jmpESP.py

6) Exploit

Generación de shellcode.

  • <badchars> = \x00\x0a\x0d

Ejecutar exploit de buffer overflow.

Archivo: 06-exploit.py

Última actualización

¿Te fue útil?