Desbordamiento de buffer local en SHELL32.dll . Net monitor - Desbordamiento de buffer local en SHELL32.dll . Net monitor
15 de Diciembre de 2005
Microsoft Windows, Sistemas operativos, Administración de sistemas
Versiones probadas
W2000 Server Sp3 Shell32.dll versión 5.0.3502.5436
Estatus del vendedor
Microsoft fue informado hace meses, pero como lo único que hacen es darme largas pidiéndome una y otra vez que les mande el archivo de prueba, he dedicido publicarlo. La vulnerabilidad fue corregida en el sp4
Fecha: 29-5-03
Descripción
Net monitor es una herramienta para analizar el tráfico que se incluye con algunas versiones de windows. El programa permite analizar archivos de captura ( .cap ) además de capturar el tráfico. Si se abre un archivo de captura con un nombre de 252 bytes net monitor se cierra con una violación de acceso. El puntero de instrucción del programa es sobreescrito con el nombre del archivo convertido a UNICODE, por lo que la causa es una corrupción de variables adyacentes en la pila ( stack ).
Para poder ejecutar código mediante este fallo, se tiene que situar el código a ejecutar en una variable de entorno del sistema, esto lo situará en una dirección de memoria que puede ser referenciada por el valor que situemos en EIP en unicode ( ~00010040 ).
En concreto el crash se produce en esta función:
77E3A294 8B4424 04 MOV EAX,DWORD PTR SS:[ESP+4]---77E3A298 CD 2B INT 2B
77E3A29A C2 0400 RETN 4
Tras ejecutarse la interrupción 2B, el programa parece cambiar de stack y ESP salta hasta ~6bf88. El programa se cerrará debido a que la pila está corrupta. Esa zona de memoria es sobreescrita por la segunda llamada a MultiByteToWideChar en el módulo shell32.dll.
775C059B FF7424 10 PUSH DWORD PTR SS:[ESP+10] ( Longitud del Wide buffer = 260 bytes )
775C059F 66:890E MOV WORD PTR DS:[ESI],CX
775C05A2 8A50 02 MOV DL,BYTE PTR DS:[EAX+2]
775C05A5 80E2 34 AND DL,34
775C05A8 80FA 34 CMP DL,34
775C05AB 0F84 8AA20400 JE SHELL32.7760A83B
775C05B1 56 PUSH ESI ( Puntero a Wide buffer )
775C05B2 83C0 0E ADD EAX,0E
775C05B5 6A FF PUSH -1
775C05B7 50 PUSH EAX ( filename )
775C05B8 51 PUSH ECX
775C05B9 51 PUSH ECX
775C05BA FF15 68185977 CALL DWORD PTR DS:[<&KERNEL32.MultiByteToWideChar>;]
Creo que el fallo se encuentra en esta función, ya que al hacer la conversión a Unicode se dobla el número de bytes de la cadena, por lo que al tener el archivo 252 al pasarlo a unicode queda en 504 bytes .
Esta segunda llamada a MultiByteToWideChar se hace desde GetOpenFileNameW, que se encarga de abrir el diálogo para elegir el archivo a abrir y de rellenar la estructura OpenFileName con el nombre y path del archivo elegido. La llamada a GetOpenFileNameW se completa correctamente, el crash ocurre más tarde al ejecutar la interrupción 2b. Esta interrupción ignoro qué hace, según he encontrado en google es reservada de DOS y es equivalente a un RET.
NetMonitor.bat ( -> netmonitor.ace -> netmonitor .zip )
Con este script se puede generar el archivo de captura con nombre largo que provocará el fallo al ser abierto por Net monitor.
W2000 Server Sp3 Shell32.dll versión 5.0.3502.5436
Estatus del vendedor
Microsoft fue informado hace meses, pero como lo único que hacen es darme largas pidiéndome una y otra vez que les mande el archivo de prueba, he dedicido publicarlo. La vulnerabilidad fue corregida en el sp4
Fecha: 29-5-03
Descripción
Net monitor es una herramienta para analizar el tráfico que se incluye con algunas versiones de windows. El programa permite analizar archivos de captura ( .cap ) además de capturar el tráfico. Si se abre un archivo de captura con un nombre de 252 bytes net monitor se cierra con una violación de acceso. El puntero de instrucción del programa es sobreescrito con el nombre del archivo convertido a UNICODE, por lo que la causa es una corrupción de variables adyacentes en la pila ( stack ).
Para poder ejecutar código mediante este fallo, se tiene que situar el código a ejecutar en una variable de entorno del sistema, esto lo situará en una dirección de memoria que puede ser referenciada por el valor que situemos en EIP en unicode ( ~00010040 ).
En concreto el crash se produce en esta función:
77E3A294 8B4424 04 MOV EAX,DWORD PTR SS:[ESP+4]---77E3A298 CD 2B INT 2B
77E3A29A C2 0400 RETN 4
Tras ejecutarse la interrupción 2B, el programa parece cambiar de stack y ESP salta hasta ~6bf88. El programa se cerrará debido a que la pila está corrupta. Esa zona de memoria es sobreescrita por la segunda llamada a MultiByteToWideChar en el módulo shell32.dll.
775C059B FF7424 10 PUSH DWORD PTR SS:[ESP+10] ( Longitud del Wide buffer = 260 bytes )
775C059F 66:890E MOV WORD PTR DS:[ESI],CX
775C05A2 8A50 02 MOV DL,BYTE PTR DS:[EAX+2]
775C05A5 80E2 34 AND DL,34
775C05A8 80FA 34 CMP DL,34
775C05AB 0F84 8AA20400 JE SHELL32.7760A83B
775C05B1 56 PUSH ESI ( Puntero a Wide buffer )
775C05B2 83C0 0E ADD EAX,0E
775C05B5 6A FF PUSH -1
775C05B7 50 PUSH EAX ( filename )
775C05B8 51 PUSH ECX
775C05B9 51 PUSH ECX
775C05BA FF15 68185977 CALL DWORD PTR DS:[<&KERNEL32.MultiByteToWideChar>;]
Creo que el fallo se encuentra en esta función, ya que al hacer la conversión a Unicode se dobla el número de bytes de la cadena, por lo que al tener el archivo 252 al pasarlo a unicode queda en 504 bytes .
Esta segunda llamada a MultiByteToWideChar se hace desde GetOpenFileNameW, que se encarga de abrir el diálogo para elegir el archivo a abrir y de rellenar la estructura OpenFileName con el nombre y path del archivo elegido. La llamada a GetOpenFileNameW se completa correctamente, el crash ocurre más tarde al ejecutar la interrupción 2b. Esta interrupción ignoro qué hace, según he encontrado en google es reservada de DOS y es equivalente a un RET.
Exploit
NetMonitor.bat ( -> netmonitor.ace -> netmonitor .zip )
Con este script se puede generar el archivo de captura con nombre largo que provocará el fallo al ser abierto por Net monitor.
Valora este capítulo:
Autor y licencia de 'Desbordamiento de buffer local en SHELL32.dll . Net monitor - Desbordamiento de buffer local en SHELL32.dll . Net monitor'
|
Opiniona sobre 'Desbordamiento de buffer local en SHELL32.dll . Net monitor - Desbordamiento de buffer local en SHELL32.dll . Net monitor' (0)
Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.
Opina sobre este artículo |
Wikis relacionados con 'Desbordamiento de buffer local en SHELL32.dll . Net monitor - Desbordamiento de buffer local en SHELL32.dll . Net monitor'
Monografía sobre comunicación y soledad.
Kerio mailserver es un servidor de correo que soporta los protocolos imap, pop3 y smtp....
Más »
La descentralización de las funciones del Estado nacional es una tendencia relacionada a los cambios...
Más »
Este documento describe la puesta en marcha y mantenimiento de noticias de Usenet bajo Linux....
Más »
La cocina española es rica en salsas sobre la base de cebollas, tomates ajíes; cazuelas...
Más »

