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
porAlwaysOff
.
Windows 7
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