jueves, 15 de enero de 2009

Del parche al exploit con BinDiff e ImmunityDebugger

Con motivo del apartado 4 del concurso 11 de 2008 de CrackSLatinoS, Ricardo propuso analizar 2 versiones consecutivas de WinRAR, para detectar que vulnerabilidad corregía la versión mas nueva.

En este caso de trata de las versiones WinRAR 3.10 y 3.11. La versión 3.10 de WinRAR no comprueba la longitud de las extensiones de los ficheros contenidos un fichero comprimido y procede a copiar su totalidad en una variable local alojada en la pila. Al desbordar esta variable sobreescribe la dirección de retorno guardada en la pila, pudiendo manipular esta dirección, es posible ejecutar código arbitrario.

En el tutorial se explica en detalle como utilizar BinDiff 2 y como analizar los datos que ofrece, para detectar el bloque vulnerable lo mas rápido y eficazmente posible.

Además se procede a elaborar un script que genera un fichero comprimido que provoca el Buffer Overflow y sirve de PoC (Prueba de concepto)

El tutorial finaliza mostrando los detalles necesarios para convertir la PoC en un exploit totalmente funcional, con el que se puede ejecutar código arbitrario en cualquier víctima que abra el fichero comprimido con la versión de WinRAR 3.10 y anteriores.

Espero que os guste y disfrutéis leyéndolo.
Podéis descargar el tutorial pinchando aquí.