Random IRC quote :      * ggonzalez se ha marchado (Quit: no me quereis, por lo que me alegro)

They did it!

Echando un vistazo al subversion de metasploit, me di cuenta de que después las ultimas actualizaciones que w00t!!han hecho en su exploit para el servidor DNS del que tanto hemos hablado estos días este es compatible con DEP/NX !!, a primera vista pensé .. «WTF???», total que me puse a mirar como lo habían conseguido, descubriendo algo muy interesante que no conocía … 🙂

Si echamos un ojo al código fuente del exploit en los targets vemos las siguientes líneas:

# ATL.DLL (bypass DEP/NX, IB -> Image Base of ATL.dll)
[ ‘Windows 2003 Server SP1-SP2 English’, { ‘OS’ => ‘2003SP12’, ‘Off’ => 1633, ‘IB’ => 0x76a80000 } ],
[ ‘Windows 2003 Server SP1-SP2 French’, { ‘OS’ => ‘2003SP12’, ‘Off’ => 1633, ‘IB’ => 0x76a30000 } ],

Lo primero que pensé es que estaban de alguna manera explotando un exception handler registrado en la ATL.DLL, total que pillo la imagen de VMWare y lanzo el exploit con el debugger attacheado al servidor DNS, la técnica que utiliza el exploit es la de sobreescribir el exception handler con una direccion dentro de ATL, seguir escribiendo para provocar la excepcion cuando se llegue al límite de la pila, y de esta manera se salta «/GS», hasta aquí todo normal …
Cual fue mi sorpresa al comprobar que en la ATL.DLL que estaba cargada permitía ejecutar código en cualquier posición, vamos que DEP no estaba funcionando en ese módulo !!, el exploit lo que hace realmente es aprovechar esto, junto con la técnica comentada por skape y Skywing , buscando un poco de informacion por internet sobre este misterioso hecho (por lo menos para mi), me he encontrado con el resumen del libro «Writing secure code for windows vista», donde se dice textualmente:

«About Data Execution Prevention, already spoken about in third chapter, it’s enabled for most of Windows Vista system processes; compatibility checks are performed through Internet Explorer Compatibility Test Tool, also included in ACT 5.0. A known incompatibility is that applications using older versions of Active Template Library (ATL) will fail and run correctly when DEP is enabled; developers will use ATL 8.0 or higher, enforcing this with assert(AtlGetVersion(NULL) >= 0X0800);»

Si echamos un vistazo a los modulos cargados en el DNS nos encontramos con lo siguiente

Modules
Interesante, parece que los programadores van a tener que andarse con cuidado cuando utilicen ATL en sus proyectos … 🙂

Un saludo !

Un comentario para “They did it!”

  1. Comment por ATL fan | 04/30/07 at 12:17 pm

    Vais a ir todos a la carcel.

Se han cerrado los comentarios