martes, 2 de diciembre de 2008

Buen texto sobre análisis de malware

Aquí hay un buen texto sobre análisis de malware. Mas bien es un recorrido por las herramientas que cualquiera podría usar para ver si un archivo hace algo mas de lo que dice :P La mayoría de esto no serviría de mucho si se usa algún crypter con código que detecte si se está ejecutando sobre una máquina virtual y entonces no lanzase sus malvadas funciones. Algún día me gustaría examinar los códigos que se suelen usar para detectar máquinas virtuales, encontrar algún modo de localizarlos y anularlos para poder seguir con el análisis del malware en un entorno seguro. ¿Y porque me ha dado por mirar esto? Porque en un foro donde participo se postea malware y es habitual que alguno postee malware infectado con malware. Y yo me estoy aficionando a pillar a estos pillos :D Que divertido, ¿no?

martes, 18 de noviembre de 2008

Nuestros queridos amigos los routers. La salvación

En anteriores entregas andaba yo quejandome, que si los routers, que si el fscan...pelándome con la versión 0.6, suplicando que alguien me diera la versión 1.0, intentando entender el código...un infierno.

El señor escucho mis ruegos nocturnos y un día después de aquello la web de los hermanos Tarasco¿? volvió a la luz. Con la versión 1.0 beta 5 del fscan.

Grandes cambios, facilidad para usar la libreria HTTP FScan Core en nuestros programas, mas esquemas, mas passwords, mas de todo.

Una maravilla !!

Gracias señor...señor Tarasco.

miércoles, 12 de noviembre de 2008

Nuestros queridos amigos los routers. Reloaded

...En anteriores episodios...
Nuestros queridos amigos los routers.

Muy poco a poco he ido ojeando el código del fscan. Es horrible ver códigos que no los has hecho tú de cero, que no sabes el por qué se hacen las cosas y además tan complicados :S

Al final me tope con lo que empecé buscando, el porqué del fallo que me dió. Resulta que sucede que falla con combinaciones "user" + ":" + "pass" mas largas de 27 carácteres:

void *Escanea(void *thread){
   ...
   char password[28]
   ...

Pues fale, aumento el tamaño del buffer y a correr. Ahora el programa pilla el super password de mi router, lo malo es
que le quité el soporte para openSSL y la salida no sale bien ordenada, estaba pensado para 27 carácteres ...Que kaos xDD

El código está muy bien, me gustaría rescribirlo para comprenderlo y poderlo adaptarlo facilmente a otros programas. Quizás algún día me de por automatizar la búsqueda y el redireccionamiento de puertos de estos cacharros...

Pero antes de ponerse a hacer un trabajo tan duro, porque no usar la versión 1.0 de este programa.
¿Que !!? ¿Pero existe la versión 1.0 y nosotros haciendo el tonto con la 0.6?
Pues si y no. Existe la 1.0, juro que un día la use y todo, pero ahora no encuentro la herramienta por ningún lado y en su página no puede descargarse :(  Es mas, la caché de google me dá la razón:

2008, March: Fscan HTTP Proxy developed. Improved Fscan core API
2008, February: Fscan v1.0 project and Fscan HTTP Core API published

¿Donde está tarasco? ¿Ya le abdujo una mujer? Vuelve !!!

Lo que si está todavía en su página es el "Fscan HTTP Core API":
http://www.tarasco.org/Web/fscan/index.html

Fscan core
This library is our HTTP/1.1 implementation for developing HTTP security software under win32/linux. Supports multithreading, SSL and native digest/NTLM/basic authentication.

Esto ya es otra cosa, otra cosa que da mucho mas miedo que la anterior :S

Ahora tendré que meditar que hacer: seguir con la 0.6, programarme la mía que funcionará peor pero comprenderé o seguir buscando la 1.0.

¿Y todo esto para que? Pues para el final usar varios routers para hacer saltos de uno a otro y al final acceder a una ip de forma "anónima".

martes, 11 de noviembre de 2008

Como casi soluciono el reto 6 de S21Sec

Estaba un día revisando blogs y tal cuando me tope que justo acababan de publicar el reto 6 en el blog de S21sec.

Para empezar en el texto del reto no estaba el reto...ya estamos. Lo primero fue ver el código fuente, "seguro que hay alguna pista" y efectivamente, allí hay una frase muy rara:

<!-- Hola, sí, el reto está aquí: Venga, 3,1,2, a ello!!!!: +>>+++++++++++++++++++++++++++++++++[+++< .....

Eso me sonaba a un lenguaje de programación que había visto en alguna parte, buscando por "lenguajes de programación raros" encontré que se llamaba brainfuck y en la wikipedia había un enlace a un compilador/debugger, perfecto.

Seguro que es compilar y listo....NO. Eso no funcionaba, se quedaba pillado :( Así que toco entender un poco brainfuck y ver como había muchísimos bucles sin sentido, cabrones ¿y ahora que?  Ganas de matar en aumento.

Un descanso, una ducha y recuerdo eso de "venga 3, 1, 2 a ello", eso era muy raro. ¿Se conmutarán cada 3 instrucciones?

Eran 18.087 instrucciones, umm justo divisible por 3. Así que fui al final y miré las últimas 3. .]< habrá que ordenarlas de modo que hagan algo con sentido, y lo mas lógico es que el programa acabe imprimiendo una letra con el ., así que lo normal es que acabara así: <].

Realice esa conmutación sobre todos los grupos de 3 instrucciones. Ejecute el programa y devolvió una horrenda salida:

Huk pawf, qv tq ohjgpdmmg sd xaiax rwd bmzga. Dsjs wntm hwjuwma rokw vwwee rwkusmgmflw wd nisiawflz fuqzwjg, yex emw qs yiedgfwk ga ocfljsnezws vw vzsowxjsvj. hmqzwlwoebshmfljpgblgtsmrmpsjjsrwidmflgnvqwflamioesuhmfooocetsjmapskusjbaepsjjsmefckwakbuucftsbjggwgftseorokwljzsbiflgrdp Niwfs kpedhw

Ganas de matar ++
Lo ojee un poco traté de aplicar cesar y nada. Además esas líneas intermedias sin espacios entre los caracteres daban bastante miedo.

Tras estar a punto de mandarlo a tomar vientos, me fijo en que seguro que lo último que dice es "Buena suerte"´. Y que si así fuera coincide que el 3 y el 11 carácter que corresponden a la letra w serian la e de Buena suerte. Umm además a una distancia de 8 caracteres, ¿será la clave de longitud 8?

Tras sacar los desplazamientos y pasarlo a caracteres se me queda la clave FAOMIIII y el texto se descifra, bieeeeen.

Muy bien, ya te aproximas al final del juego. Para esta tercera fase debes des- cargarte el siguiente fichero, del que ya dispones la contrasenia de descifrado. hachetetepepuntopuntobarrabarrawwwpuntosveintiunosecpuntocombarradescargasbarra- retoseisguionbajoguionbajofasetrespuntozip Buena suerte.

A descargar el fichero zip, voy a descomprimirle, pongo la clave de descifrado de antes y ZAS password incorrecto. Ganas de matar aumentando mas y mas.

Tras repostar un rato y pensarlo mas detalladamente recordé que vigenere lo había aplicado al revés. Ya que en la aplicación web que use puse el texto cifrado como plano y la clave FAOMIIII, pero debería haberlo hecho al revés!! Y efectivamente la clave real era VAMOSSSS. Fichero descomprimido.

Pero el juego sigue mas y mas, no se cansan!! Abro el fichero y la cabecera dice que es un GIF, pero no lo reconoce ningún programa. Leo un poco el RFC y veo que la longitud es absurda, 10 de alto por ~10000 de ancho. Cree un gif de ese tamaño para comparar la estructura y nada tenia sentido, el gif mío ocupaba muchísimo menos. Hay un hola y adios desconcertantes. Mikel da unas pistas de lo mas extrañas de vivaldi, mozart, bach. Nada tiene sentido.

Las ganas de matar llegan a su limite y abandono hasta nueva idea feliz que nunca llegó.

 

Hace unos días han publicado la solución en ella, Dani Kachakill y Dreyer & Uri han puesto el solucionarío del reto completo siguiendo unos procedimientos muy correctos y bien explicados.

Lo que me falto fue identificar que ese último fichero no era un GIF sino un archivo WAV :S Nunca lo habría logrado.

Muerte a los retos.

martes, 28 de octubre de 2008

Nuestros queridos amigos los routers

Los routers al fin y al cabo son miniordenadores, así que en gran medida se puede hacer exactamente lo mismo que con un ordenador.

Lo bonito de los routers es que permiten administrarlos remotamente, bien mediante telnet o una interfaz web. Y si se tiene acceso como administrador a ellos se pueden hacer cosas muy chulas.

Que yo sepa se pueden modificar los DNS que da DHCP de modo que todos los equipos que se conecten a partir de ese momento al router y obtengan la IP por DHCP usarán esos servidores DNS, que por supuesto podrían ser maliciosos. También se puede crear "redirecciones de puertos", NAT o como quiera Dios llamarlo. De este modo se pueden usar para realizar conexiones desde tu equipo al router por un puerto específico y que este las redirija a una dirección IP que le digamos.

Recuerdo que _Q_ de indetectables.net hace años usaba esto para acceder al IRC cuando le baneaban por usar botijos. También Puede ser útil para estas páginas de descarga de archivos que te limitan el ancho de banda por IP. Y también es útil para ocultar nuestra dirección IP, un poco de anonimato nunca está mal, ¿no?

Se puede configurar los routers para que solo puedan ser administrados desde el puerto serial o solo desde la red local, esto únido a una combinación sensata de user:pass hace que sean lo suficientemente seguros.

El problema es que muchos routers vienen con passwords por defecto, root, admin, 1234, etc... Y con la administración remota activada, incluso para IPS externas.

Para encontrar estos cacharros podemos usar nmap o algún otro escaner de puertos, en busca de los puertos 23 y 80. Claro que después tendríamos que acceder para comprobar que es un panel de administración de un router y no un servidor web. Y por último probar los diferentes passwords, algo que podríamos automatizar con Wfuzz o acunetix.

Pero...¿y si juntamos todo esto? Pues Andres Tarasco lo pensó mucho antes y realizó este programa: Fast HTTP Auth Scanner

Unos manuales de uso y referencias: http://www.514.es/2007/07/fast_http_auth_scanner.html http://www.indetectables.net/foro/viewtopic.php?f=8&t=3623 http://elladodelmal.blogspot.com/2007/07/fast-http-auth-scanner-por-tarasco.html

Yo andaba tan feliz aprendiendo a usarlo, añadiendo algunos logins cuando ZAS !! fscan fallo

Le puse una combinación user:pass algo larga :P

...En próximos capítulos... ¿Lograré corregir el fallo? ¿Existe la versión 1.0 de esta herramienta? ¿Y si concatenamos un puñado de routers? ¿Se podría automatizar todo esto para lograr un buen anonimato?