Stack-Based Buffer Overflow Windows x86

Configuración de ambiente Windows

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.pyarrow-up-right

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.pyarrow-up-right

circle-info

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.pyarrow-up-right

3) Verificar el offset

Verificar el "offset" identificado y control del EIP.

Archivo: 03-checkOffset.pyarrow-up-right

4) Buscar los badchars

Archivo: 04-badchars.pyarrow-up-right

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.pyarrow-up-right

6) Exploit

Generación de shellcode.

  • <badchars> = \x00\x0a\x0d

Ejecutar exploit de buffer overflow.

Archivo: 06-exploit.pyarrow-up-right

Última actualización

¿Te fue útil?