El caso del patch-downloader
En los tiempos que corren desgraciadamente no es muy dificil toparse con algun que otro esperpento creado especialmente para llenar tu pc de publicidad, casinos, robarte tus claves del messenger o vigilar tus movimientos bancarios y es que realmente hay bastante dinero en juego cuando hablamos de este tipo de malware.
Con este post inauguramos una nueva categoría en 48Bits dedicada al análisis de las técnicas usadas actualmente por malware, si tienes alguna «muestra» que te gustaría analizar o quieres comentar algun caso/código curioso, puedes ponerte en contacto con nosotros a través de correo electrónico, ah y si nos envias muestras que sea en un comprimido con clave ;-).
El bicho que nos ocupa hoy nos llegó por correo electrónico, parece que alguien pudo «spamearlo» o vete a saber …
Se trata de un ejecutable de unos 21 KB, lo primero que llama la atención de este es que solamente importa dos funciones de librerías del sistema, se trata de GetProcAddress y LoadLibrary, normalmente esto es común en los ficheros empaquetados con algún packer, pero no es este el caso. Lo segundo que llama la atención es que no se aprecia ninguna cadena de texto en el fichero, ¿Como cargará entonces las funciones que necesite?, existen maneras de localizar las funciones recorriendo las exports de las dlls en memoria sin tener que tener estos nombres (usando hashes de ellos por ejemplo), también podría ser que tuviera todos estos nombres encriptados, lo cual es una técnica comunmente usada también, bueno despues de estas suposiciones empezamos a mirar un poco el desensamblado…
Como podemos observar aquí (y en el resto del programa) parece que el ejecutable tiene código basura por todos los lados, esto probablemente esté como medida para evitar una detección genérica y como no para dificultar su análisis también, desconozco cómo se ha generado este tipo de junk code, de cualquier manera tampoco es que sea una «maravilla» :-). Veamos un poco más como queda este «junk code» en lo que parece ser una implementación de «memzero» aunque la verdad es un poco guarra :-)…
Seguimos con otro trozo de desensamblado que pertenece a la función «FunnyNames».
Bueno, creo que aquí queda desvelado el misterio de la no existencia de cadenas… el que ha programado esto reconstruye las cadenas de manera desordenada y byte a byte!, curioso… las cadenas están codificadas en instrucciones del propio procesador. En el ejemplo de arriba carga la librería «kernel32.dll», cosa que por otro lado no hace falta porque ya está importando funciones de ahí ;-).
Si seguimos mirando el resto del programa vemos que todas las cadenas y los nombres de las funciones que necesita usar están codificados de esta manera. Ahora bien, para enterarnos un poco mejor, con ayuda de algunos breakpoints y demás, dado que esta reconstruccion se hace en la pila del programa en tiempo de ejecución, dumpeando la memoria de la pila a disco obtenemos algo con lo que trabajar … 🙂
Bueno con un poco de paciencia y siguiendo el análisis me di cuenta de que lo que hacía este «bicho» es acceder a la siguiente URL:
http://207.226.177.108/BN/QgaHo26bYG
Si os descargaís este fichero (no teneís peligro alguno porque no es un ejecutable), observareís una maraña de datos que parecen estar comprimidos/encriptados … esto realmente es código realocalizable que el bicho inyectará en el contexto del internet explorer, para ello utiliza VirtualAllocEx y CreateRemoteThread además de establecer los privilegios necesarios para poder hacerlo, de esta manera evita firewalls que bloqueen el acceso a internet a determinados procesos, ya que internet explorer suele ser uno de los programas «permitidos».
Lo interesante de todo esto es que este «parche» se actualiza cada cierto tiempo, supongo que será una nueva generación del mismo, empaquetado de manera diferente, no he analizado este componente porque ya no tenía ganas XD, de cualquier manera podrían cambiar el parche que hay ahí y actualizarlo con una versión nueva o lo que sea en cualquier momento, lo que si que he hecho ha sido sacar un dumpeado de este código una vez ejecutado en el contexto de internet explorer. Y menuda sorpresita… porque hay cosas bastante interesantes… como las siguientes URLs
0000BAD0 0000BAD0 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHERE180Sol.UNIQCNTR.html 0000BB56 0000BB56 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHERE180sol.UNIQCNTR.html 0000BBDC 0000BBDC 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREADWARE.UNIQCNTR.html 0000BC62 0000BC62 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREAVG.UNIQCNTR.html 0000BCE2 0000BCE2 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREAdware.UNIQCNTR.html 0000BD68 0000BD68 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREAntivir.UNIQCNTR.html 0000BDF0 0000BDF0 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREBDSM.UNIQCNTR.html 0000BE72 0000BE72 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREBlackjack.UNIQCNTR.html 0000BEFE 0000BEFE 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREBlowjob.UNIQCNTR.html 0000BF86 0000BF86 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHERECASINO.UNIQCNTR.html 0000C00C 0000C00C 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHERECLEAN.UNIQCNTR.html 0000C090 0000C090 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHERECasino.UNIQCNTR.html 0000C116 0000C116 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREClaria.UNIQCNTR.html 0000C19C 0000C19C 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREClean.UNIQCNTR.html 0000C220 0000C220 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHERECumshot.UNIQCNTR.html 0000C2A8 0000C2A8 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREE-gold.UNIQCNTR.html 0000C32E 0000C32E 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREERROR.UNIQCNTR.html 0000C3B2 0000C3B2 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREEgold.UNIQCNTR.html 0000C436 0000C436 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREError.UNIQCNTR.html 0000C4BA 0000C4BA 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREGATOR.UNIQCNTR.html 0000C53E 0000C53E 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREGator.UNIQCNTR.html 0000C5C2 0000C5C2 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREHYIP.UNIQCNTR.html 0000C644 0000C644 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREHyip.UNIQCNTR.html 0000C6C6 0000C6C6 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREINVESTMENT.UNIQCNTR.html 0000C754 0000C754 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREInvestment.UNIQCNTR.html 0000C7E2 0000C7E2 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREMcAfee.UNIQCNTR.html 0000C868 0000C868 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHERENAV.UNIQCNTR.html 0000C8E8 0000C8E8 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHERENude.UNIQCNTR.html 0000C96A 0000C96A 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREPORN.UNIQCNTR.html 0000C9EC 0000C9EC 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREPRIVACY.UNIQCNTR.html 0000CA74 0000CA74 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREPissing.UNIQCNTR.html 0000CAFC 0000CAFC 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREPoker.UNIQCNTR.html 0000CB80 0000CB80 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREPorn.UNIQCNTR.html 0000CC02 0000CC02 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHEREPrivacy.UNIQCNTR.html 0000CC8A 0000CC8A 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHERERecover.UNIQCNTR.html 0000CD12 0000CD12 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHERERoulette.UNIQCNTR.html 0000CD9C 0000CD9C 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHERESPYWARE.UNIQCNTR.html 0000CE24 0000CE24 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHERESlots.UNIQCNTR.html 0000CEA8 0000CEA8 0 http://207.226.177.108/G0/WEBMIDHERECOMPIDHERESpybot.UNIQCNTR.html
En esas URLs hay un repositorio de programas maliciosos bastante grande… cuidado con lo que ejecutaís/descargaís de ahí, he publicado estas direcciones porque este tipo de cosas deberían ser denunciadas publicamente.
Un saludo y hasta la próxima!