Nuevos ESET Smart Security 5 y ESET NOD32 Antivirus 5




Fernando de la Cuadra, director de Educación (fernando@ontinet.com)
Josep Albors, director de Comunicación (josep@ontinet.com)
OSX/Flashback




El sistema operativo de Apple OSX puede llegar a convertirse
en víctima de malware, como todos los sistemas. Antes de la
aparición de OSX/Flashback, hubo unos cuantos casos
                                                                Flashback es una amenaza diseñada específicamente para
documentados de malware que tenían como objetivo el
sistema operativo de Apple, pero este último es el que se ha    afectar a la plataforma OSX que fue detectada por primera vez
cobrado el mayor número de víctimas.                            en otoño de 2011. Tras estar propagándose durante varios
                                                                meses sin ser detectado, Flashback atrajo todas nuestras
En este artículo describimos las características técnicas más   miradas en abril de 2012, ya que fue capaz de infectar y tener
interesantes de esta amenaza. Particularmente, su método de     bajo su control a más de medio millón de ordenadores.
espiar las comunicaciones de red y sus algoritmos para
generar nombres de dominio de forma dinámica.
                                                                ¿Cómo llegó a infectar tantos ordenadores? ¿Son sus técnicas de
Igualmente, resumimos los hitos más importantes de este         ofuscación tan complejas como las que generalmente se asocian
malware que ha persistido durante varios meses.                 a amenazas para Windows? ¿Cuál era la verdadera intención de
                                                                su creador?

                                                                En este artículo analizaremos, primero, su método de
                                                                propagación. Además, analizamos dos componentes diferentes
                                                                de Flashback: el de instalación y su librería, que es utilizada para
                                                                interceptar el tráfico de red para espiar a los usuarios.
OSX/Flashback
Vector de infección




                                                                  Visitando el sitio web malicioso, la víctima recibía un mensaje del
                                                                  intérprete de Java solicitándole permiso para ejecutar un applet
                                                                  firmado, supuestamente, por Apple. El certificado, por supuesto, no
                                                                  procedía de Apple, por lo que tras dar la autorización, el Mac del
                                                                  usuario era infectado.




                                                                  Sin lugar a dudas, el método más efectivo utilizado para la
                                                                  propagación de Flashback ha sido el que se ha aprovechado de dos
El método utilizado para infectar a las víctimas de Flashback     agujeros de seguridad en Java: CVE- 2012-0507 o CVE-2011-3544. En
ha evolucionado a lo largo del tiempo. Las primeras variantes     este caso, las vulnerabilidades han permitido la instalación automática
se camuflaban como una actualización de Adobe Flash Player.       de Flashback sin el conocimiento ni el consentimiento del usuario, ya
La víctima era redirigida a un sitio web malicioso,               que se producía simplemente con visitar una web que contenía el
probablemente como resultado de aplicar Black Hat SEO             applet malicioso de Java. Más de medio millón de ordenadores Mac
(indexación y posicionamiento en motores de búsqueda de           han resultado infectados por este método.
webs maliciosas que suplantan a otras lícitas). La víctima,
convencida de que era una actualización legítima, procedía a      Con el tiempo, los métodos de ofuscación de cada uno de sus
descargar y a ejecutar el fichero en cuestión. Y de esta forma,   componentes se volvieron más complejos. Este análisis se basa en la
el usuario permitía que Flashback se autoinstalase en su Mac
                                                                  última variante de Flashback, la que ha conseguido infectar a la mayoría
al introducir sus claves solicitadas durante la instalación.
                                                                  de ordenadores utilizando la vulnerabilidad CVE-2011-0507.

Sin embargo, el segundo método de infección que fue
identificado utilizaba un applet de Java firmado.
OSX/Flashback


El paquete de instalación
Una vez que el exploit de Java se ha instalado
satisfactoriamente, un fichero ejecutable Mach-O es instalado
en el directorio raíz del usuario. Con el objetivo de
permanecer escondido, el nombre del fichero empieza con un
punto. Además, crea un fichero en ~/Library/LaunchAgents
para ejecutar el comando cada vez que el usuario accede al
ordenador infectado. El único objetivo de este ejecutable es
descargar e instalar el componente capaz de interceptar el
tráfico web.

Técnicas de ofuscación
El análisis dinámico del paquete de instalación muestra que
cuando es ejecutado por primera vez, el malware envía el
UUID de la Plataforma del sistema infectado al Centro de
comando y control (C&C) a través de HTTP. La respuesta que
recibe no es generada por el malware. Por lo tanto, la URL no
es el objetivo del control automático. Creemos que solo es
utilizada por el desarrollador del malware para obtener datos
estadísticos.

Después de esta primera ejecución, nos dimos cuenta de que
el fichero ejecutable se había modificado a sí mismo. ¿Cuál
podría ser la diferencia? Pues, primero, vimos que la URL
utilizada para la estadísticas en el primer comando había sido
eliminada del fichero ejecutable. Y además, un gran parte de
la sección de datos había cambiado completamente.
OSX/Flashback




A pesar de los cambios, el fichero permanece como un
ejecutable válido. En las siguientes ejecuciones, su
comportamiento era igual que la primera vez con una
excepción: no generaba más tráfico a la URL que había sido
borrada. Por lo tanto, parecía que estábamos enfrentándonos
a un malware capaz de autocifrarse.

Con el fin de analizar los ficheros maliciosos cifrados enviados
por los usuarios o encontrados por Internet, tuvimos que
analizar primero los métodos de cifrado utilizado por
Flashback. Primero de todo, echemos un vistazo a la sección
de código utilizada al principio de la ejecución.
OSX/Flashback




Como el UUID de Plataforma es único para cada máquina, el
fichero ejecutable cifrado no puede ser ejecutado desde otro
ordenador Mac diferente al que lo hizo por primera vez. Y como
la mayoría de las variantes recibidas, así como aquellas que
hemos encontrado en Internet, estaban cifradas, era imposible
comprobar su contenido sin conocer el UUID de Plataforma de la
máquina infectada.

Pero… ¿qué podría contener esta porción de código cifrado?
Incluso después de un descifrado con RC4, todavía no tenemos
ninguna cadena de caracteres clara ni una estructura de datos
reconocible. Veamos cómo se utiliza el bloque posteriormente.
Para ello necesitamos seguir monitorizando la ejecución para
encontrar llamadas a una función que pueda encontrar cadenas
en su estructura. Aquí encontraréis algunos ejemplos de este tipo
de llamadas:
OSX/Flashback




Vamos a examinar el contenido de la función:




                                               get_string que usa cinco parámetros
                                               1.  strings_struct: estructura que contiene punteros a nuestros
                                                   datos.
                                               2.  key: el valor clave a encontrar en los datos.
                                               3.  xor_key: XOR key es utilizado para descifrar el contenido.
                                               4.  decrypted: como salida, contendrá el puntero al valor de
                                                   descifrado en el diccionario.
                                               5.  decrypted_length: como salida, contendrá la longitud de la
                                                   cadena

                                               get_string encuentra la cadena en el diccionario con la clave con
                                               find_string, y entonces aplica la clave XOR dada a todos los bloques
                                               de 64-bit. Si analizamos find_string, encontramos la estructura de
                                               un diccionario en memoria. La siguiente tabla muestra la estructura
                                               que representa el diccionario.
OSX/Flashback




Afortunadamente, los datos y sus claves XOR son los mismos
en todas las variantes, lo que facilita el proceso de descifrado
de todas ellas, estadísticamente hablando. La parte cifrada
debería por tanto contener un diccionario de claves y de
valores que son usados por el paquete de instalación.

A partir de aquí, empezamos a ver cadenas más claras, pero
muchas de ellas están todavía ofuscadas. Una última pasada
de descifrado desvela su valor final. El algoritmo que es
utilizado en el último descifrado parece que no es conocido.
En breve, se genera lo que parece ser una lista aleatoria
determinante de 216 bytes. Cada palabra de 2 bytes en la
cadena es equivalente al índice del octeto deseado de la lista.

Una vez que hemos llevado a cabo todos estos pasos, hay
varias listas separadas por "|". Este es el resultado final del
descifrado.
OSX/Flashback



                                                                Encontramos igualmente nombres de librerías y de funciones en las claves 0xf12e y
                                                                0xe002. Estas se cargarán dinámicamente con dlopen y dlsym. Sabiendo ahora las
                                                                funciones a las que llama, entendemos mucho mejor el comportamiento de este
                                                                malware.




                                                                Periódicamente, el software malicioso busca entre una lista de dominios desde los
                                                                cuales puede descargar y ejecutar un fichero. Los campos son derivados de tres
                                                                fuentes diferentes:
                                                                1. Una lista de dominios se encuentra en el paquete de instalación (con la clave
                                                                     0x92be);
                                                                2. 5 prefijos de dominios son dinámicamente generados de constantes
                                                                     encontradas en el paquete de instalación (las tres de la clave 0x6192);
                                                                3. Otro prefijo de dominio es generado dinámicamente basándose en la fecha.

                                                                Para cada uno de los prefijos de dominio generados dinámicamente en el punto 2 y
                                                                3, los sufijos que se añadirán a cada uno se encuentran en la clave 0x1f91. En todas
                                                                las variantes que hemos analizado, había cinco dominios principales. Los prefijos
                                                                del punto 2 son falsas cadenas de caracteres compuestas de 11 a 13 letras y
                                                                generadas al azar. Son diferentes dependiendo de la variante.
                                                                El prefijo del punto 3 también es una cadena aleatoria generada dinámicamente
                                                                pero es única, ya que coge el dato de la fecha, aunque también es exactamente
En la clave 0x92fa, vemos una lista de rutas a software
                                                                igual para todas las variantes. Los 5 sufijos se agregarán también al prefijo diario.
antivirus, cortafuegos personales y software diseñado para el
uso por parte de usuarios experimentados. Si alguno de esos
                                                                Excluyendo los dominios autogenerados y basados en el día del punto 3, hemos
ficheros existen en el sistema infectado, la ejecución
                                                                identificado 185 dominios diferentes de todas las variantes.
terminará y el malware se desinstalará del sistema.
OSX/Flashback



                                                               Nuestro análisis indicó que el propósito principal de la instalación del componente
Una de las pecualiaridades del componente de instalación de    es la inserción de un segundo módulo para interceptar las comunicaciones HTTP y
Flashback es que el autor no ha registrado previamente todos   HTTPS. Esta interceptación permite la inyección de publicidad en la navegación
los dominios posibles, quizá porque habían demasiados como     HTTP y HTTPS, mostrando los anuncios al usuario infectado. Este nuevo módulo es
para registrarlos periódicamente. Además, el algoritmo         independiente del componente de instalación que hemos visto previamente. En
utilizado para generar los nombres de dominio del día es el    esta sección, te enseñaremos las características de la interceptación HTTP usada
mismo para todas las variantes de Flashback.                   por Flashback.


En el curso del análisis de ingeniería inversa aplicado al
algoritmo de generación de nombres de dominio, varias          El componente de interceptación no tiene la forma de un ejecutable, ya que es una
compañias incluyendo a DrWeb, ESET, Kaspersky y Symantec       librería, lo que origina una buena pregunta: ¿cómo se ejecuta el código? El
fueron capaces de registrar los nombres de dominio             componente de Mac OS X que está encargado de cargar dinámicamente las
disponibles y colocar controladores en ellos, permitiéndonos   librerías se llama dyld. Normalmente, las rutas a librerías necesarias para la
de esta manera conocer el número de sistemas infectados.       ejecución de un programa se encuentran en su cabecera Mach-O, y el componente
                                                               dyld está a cargo de cargarlas en su momento de ejecución. La página manual de
Una vez que el malware establece una conexión con alguno       dyld muestra varios entornos diferentes de configuración de dyld. Para ser
de estos dominios, el software intenta ejecutar un comando     cargadas, Flashback utiliza DYLD_INSERT_LIBRARY, que permite cargar una librería
HTTP GET. Y espera recibir una respuesta con el formato.       antes de que esté especificado en el programa a ejecutar. Para cambiar este
                                                               entorno de variables de manera persistente, Flashback utiliza dos técnicas:

                                                               1. Si tiene privilegios de administrador, Flashback cambiará los metadatos del
                                                               navegador instalados para asignar las variables de entorno antes de su ejecución.
                                                               Esto es posible añadiéndola dentro de la clave LSEnvironment dentro de la
                                                               aplicación Info.plist.
                                                               2. Si no tiene permisos de administración, Flashback añadirá una al fichero
                                                               ~/.MacOSX/environement.plist. Y se preocupa de crear una en el caso de que no
                                                               exista (caso que suele ser habitual). Cundo el usuario se registra, la variable se verá
                                                               afectada; por eso la librería se cargará en todas las aplicaciones que sean
                                                               ejecutadas por ese usuario.
OSX/Flashback




Para usuarios infectados por el exploit de Java, el método
                                                                     Configuración
utilizado es el segundo, porque el applet no tiene privilegios de
aministración.

La intervención de Flashback

La librería contiene una sección “ __interpose” que permite
reemplazar la función proporcionada por otra librería cargada.
Por lo tanto, con DYLD_INSERT_ LIBRARY, es posible situarse          Cuando abres la librería en un desensamblador, encontramos una larga
entre la función de llamada y la función original. El resultado es   cadena de caracteres codificados en Base64. Incluso descodificándolos,
similar al uso de LD_PRELOAD en Linux.                               el resultado no es inteligible, desgraciadamente. No tenemos otra
                                                                     opción más que encontrar cómo descodificarlo para poder acceder a
Flashback interpone dos funciones: CFReadStreamRead y
                                                                     sus contenidos. La siguiente sección de la librería muestra la rutina que
CFWriteStreamWrite. Estas dos funciones son parte de
CoreFoundation, el API del lenguaje de programación en C de          se encarga de la descodificación.
Mac OS X. Como indican sus nombres, estas funciones se utilizan
para enviar y recibir datos en un flujo. A menos que se utilicen
otras funciones de perfil bajo para enviar y recibir, todas las
comunicaciones de red en Mac OSX van a través de estas
funciones.

Resulta interesante saber que es posible crear un CFStream
cifrado en SSL utilizando las funcionalidades de CoreFoundation.
Esto significa que la interposición de Flashback permite
interceptar los datos en una conexión HTTPS en estado
descifrado.
OSX/Flashback




Lo primero que vemos es el clásico descifrado de Base64.
“cfinh” es utilizado como un marcador y se encuentra en
todas las variantes. Hay además un descifrado con RC4
utilizando para ello la UUID de Plataforma como clave, y            Lo primero que encontramos en la ruta de red es un comando HTTP
finalmente hay que descifrarlo con RC4 utilizando esta vez          GET towards / scheck. Este es el formato de la respuesta:
una clave de 16 caracteres incluida en el binario.

En conclusión, la función descomprimida es llamada para
descomprimir los datos cifrados. Una vez más, nos damos
cuenta de que una parte muy interesante de Flashback es
cifrada con el UUID de Plataforma, que hace que el análisis         El descifrado en Base64 no devuelve nada de interés. Nada de ASCII,
sea bastante difícil si el proceso de ingeniería inversa no tiene   sin fichero comprimido, nada que sepamo. La segunda parte es de
esta información.                                                   512 octetos. Necesitamos mirar dentro del código para ser capaces
                                                                    de encontrar el uso que se le da a OpenSLL conectada por esta
                                                                    query.



Una vez descodificado, las cadenas de caracteres representa
un diccionario compuesto por varios elementos.
OSX/Flashback




En la lista del centro de mando y control, varios dominios no han
sido registrados por el autor. Este análisis previo ha sido
implementado para evitar que alguien no autorizado tome el
control y envíe comandos a los Macs infectados.

Interceptación
Cuando intercepta los datos, Flashback determina si es una petición
HTTP GET examinando el principio de los datos enviados a
CFWriteStream. Cuando es una sentencia de búsqueda enviada a
Google, las palabras clave de búsqueda así como la información de
la máquina como la clave UUID de Plataforma y el idioma
configurado se envían al centro de mando y control. La respuesta
posterior para ejecutar la próxima acción se hace cifrando utilizando
RC4 con el hash MD5 usando como clave la UUID de Plataforma. La
consulta a Google no cambia; sin embargo, la respuesta puede ser
alterada para simular un clic en un anuncio. A continuación
encontraréis un ejemplo de una respuesta válida del servidor de
mando y control:
OSX/Flashback




Durante nuestros experimentos solo hemos observado el uso de
dos comandos: BIDOK y BIDFAIL. Los otros comandos, que son
utilizados para añadir servidores en su lista (ADD_S) o incluso
para autodestruirse (SK), no han sido vistos en nuestras capturas
de tráfico.

Utilizando Twitter como un mecanismo de Mando y de
Control

Podemos encontrar en la configuración una URL que busca
hashtags en Twitter. ¿Cuál es su objetivo? Si echamos un vistazo
a cómo está siendo utilizado, encontramos otra técnica
disponible para el botmaster (el operador de la red) que le
permite controlar su red.
OSX/Flashback




Se genera un hashtag diferente cada día. Una búsqueda en
Twitter por este hashtag revela las direcciones IP o el nombre
del dominio del nuevo servidor de mando y control
disponible. En el tweet, encontramos información entre los        Durante nuestro análisis, hemos visto otro elemento interesante en
delimitadores      «beginbump»         y «endbump» (estos         nuestra traza de red. Flashback intentaba resolver nombres de dominio
delimitadores son también parte de la configuración).             que empezaran con el hashtag del día. Hemos encontrado en la
                                                                  configuración una lista de sufijos a aplicar para generar la cadena, en el
generate_string_for_day concatena 3 cadenas de caracteres         caso del componente de instalación.
de una lista en la configuración. Si, por ejemplo, se encuentra
esto en la configuración…


                                                                  Y en una variante antigua:

el hashtag para el 2 de febrero de 2003 será #efghabcdijkl (el
mes de Enero es 0). Hemos listado 6 listas de cadenas de
diferentes variantes analizadas.

No tenemos        rastro del tweet del ciberdelincuente.
Probablemente han sido borrados si realmente los ha
utilizado. Sin embargo, hemos encontrado que alguien que
parece trabajar para una compañía antivirus ha intentado
atraer tráfico a su trampa twiteando su dirección con el
hashtag correcto.
OSX/Flashback




Estos dominios se utilizarán, una vez en la lista de configuración,
para auto-actualizarse. Estas actualizaciones están también
firmadas, por lo tanto, es muy complicado para un intruso registrar
el nombre de dominio del día y distribuir su propio código sin          •
disponer de la clave privada.
                                                                        •




Desde principios de abril, ESET fue capaz de registrar nombres de       •

dominio utilizados por el componente de instalación de Flashback.
El malware facilita las cosas en cuanto envía el UUID de Plataforma
                                                                        •
de la máquina donde ha sido instaldo en el campo User-Agent field
de la cabecera HTTP. Por lo tanto, es posible contabilizar el número
de máquinas infectadas dado que el UUID de plataforma identifica a      •
cada Mac de manera única.

Ttuvimos en nuestra posesión varias muestras de Flashback, pero         •

también tuvimos un gran problema: no fuimos capaces de
determinar el UUID de Plataforma de las máquinas infectadas. Con
                                                                        •
nuestra trampa puesta en marcha, las posibilidades de que un
ordenador infectado se comunicara con esta eran altas. Gracias a
esta herramienta, fuimos capaces de reunir alrededor de 600.000         •

identificadores únicos. En este momento, también fue posible
utilizar esta lista para forzar el descifrado de las muestras para la
instalación del componente, así como el componente de                   •


interceptación.
OSX/Flashback




Algunos usuarios de Mac creen que son inmunes a los efectos del malware         Tras la aparición de Flashback en los medios, Apple reaccionó muy deprisa.
porque están utilizando OSX. Ciertamente, las amenazas diseñadas para
                                                                                Primero, registró todos los nombres de dominios disponibles conectados con
OSX son más escasas que las de Windows, pero esto no significa que no
existan.                                                                        Flashback, incluyendo aquellos que se habían generado dinámicamente.


Flashback es un ejemplo de un ataque a gran escala contra la plataforma         Muy poco tiempo después, Apple creó una actualización para OSX que detectaba
OSX. Hay constancia también de otros ataques dirigidos, como es el caso de      la presencia de Flashback y lo desinstalaba del sistema. Sin embargo, Apple ha sido
Lamadai y MacControl, que atacaron a organizaciones no gubernamentales          relativamente lento en esta estrategia (la presencia de Flashback en los medios
pro-tibetanas.                                                                  difícilmente puede considerarse una buena campaña publicitaria para Apple).

La versión de Java instalada en Mac OSX no puede ser actualizada por
                                                                                Hay varias preguntas que todavía necesitan respuestas: ¿quiénes son los autores
Oracle. Apple debe validar y distribuir las actualizaciones mediante su
sistema, lo que ha dejado a algunos preguntándose si Apple ha sido              de Flashback?, por ejemplo. ¿Esperaban tener muchas infecciones y hacerse así
demasiado lento en publicar la actualización de Java que corregía la            mucha publicidad? ¿Era simplemente una prueba?
vulnerabilidad explotada por Flashback.
                                                                                Flashback ha demostrado que OSX no es inmune a sufrir infecciones a gran escala y
Dos meses hemos tenido que esperar para tener una actualización que             los creadores de malware pueden estar considerando seriamente a OSX como un
corrigiera la vulnerabilidad y cuya técnica de explotación está disponible en   nuevo campo donde lanzar sus creaciones. Los usuarios de Mac, por lo tanto,
la Red, creando así una ventana de riesgo.
                                                                                deberían estar alerta y adoptar medidas de seguridad.

Desde que Apple ha lanzado Mac OSX Lion (10.7), ya no instala intérpretes
de Java por defecto en su sistema operativo, un movimiento que puede ser
visto como una forma de reducir los vectores de ataque. También podría
interpretarse como un intento de evitar la carga de tener que actualizar
software que está bajo su control.
OSX/Flashback




Ficheros analizados

Análisis técnico de Flashback, el troyano para Mac que ya ha infectado a más de 500.000 ordenadores

  • 1.
    Nuevos ESET SmartSecurity 5 y ESET NOD32 Antivirus 5 Fernando de la Cuadra, director de Educación (fernando@ontinet.com) Josep Albors, director de Comunicación (josep@ontinet.com)
  • 2.
    OSX/Flashback El sistema operativode Apple OSX puede llegar a convertirse en víctima de malware, como todos los sistemas. Antes de la aparición de OSX/Flashback, hubo unos cuantos casos Flashback es una amenaza diseñada específicamente para documentados de malware que tenían como objetivo el sistema operativo de Apple, pero este último es el que se ha afectar a la plataforma OSX que fue detectada por primera vez cobrado el mayor número de víctimas. en otoño de 2011. Tras estar propagándose durante varios meses sin ser detectado, Flashback atrajo todas nuestras En este artículo describimos las características técnicas más miradas en abril de 2012, ya que fue capaz de infectar y tener interesantes de esta amenaza. Particularmente, su método de bajo su control a más de medio millón de ordenadores. espiar las comunicaciones de red y sus algoritmos para generar nombres de dominio de forma dinámica. ¿Cómo llegó a infectar tantos ordenadores? ¿Son sus técnicas de Igualmente, resumimos los hitos más importantes de este ofuscación tan complejas como las que generalmente se asocian malware que ha persistido durante varios meses. a amenazas para Windows? ¿Cuál era la verdadera intención de su creador? En este artículo analizaremos, primero, su método de propagación. Además, analizamos dos componentes diferentes de Flashback: el de instalación y su librería, que es utilizada para interceptar el tráfico de red para espiar a los usuarios.
  • 3.
    OSX/Flashback Vector de infección Visitando el sitio web malicioso, la víctima recibía un mensaje del intérprete de Java solicitándole permiso para ejecutar un applet firmado, supuestamente, por Apple. El certificado, por supuesto, no procedía de Apple, por lo que tras dar la autorización, el Mac del usuario era infectado. Sin lugar a dudas, el método más efectivo utilizado para la propagación de Flashback ha sido el que se ha aprovechado de dos El método utilizado para infectar a las víctimas de Flashback agujeros de seguridad en Java: CVE- 2012-0507 o CVE-2011-3544. En ha evolucionado a lo largo del tiempo. Las primeras variantes este caso, las vulnerabilidades han permitido la instalación automática se camuflaban como una actualización de Adobe Flash Player. de Flashback sin el conocimiento ni el consentimiento del usuario, ya La víctima era redirigida a un sitio web malicioso, que se producía simplemente con visitar una web que contenía el probablemente como resultado de aplicar Black Hat SEO applet malicioso de Java. Más de medio millón de ordenadores Mac (indexación y posicionamiento en motores de búsqueda de han resultado infectados por este método. webs maliciosas que suplantan a otras lícitas). La víctima, convencida de que era una actualización legítima, procedía a Con el tiempo, los métodos de ofuscación de cada uno de sus descargar y a ejecutar el fichero en cuestión. Y de esta forma, componentes se volvieron más complejos. Este análisis se basa en la el usuario permitía que Flashback se autoinstalase en su Mac última variante de Flashback, la que ha conseguido infectar a la mayoría al introducir sus claves solicitadas durante la instalación. de ordenadores utilizando la vulnerabilidad CVE-2011-0507. Sin embargo, el segundo método de infección que fue identificado utilizaba un applet de Java firmado.
  • 4.
    OSX/Flashback El paquete deinstalación Una vez que el exploit de Java se ha instalado satisfactoriamente, un fichero ejecutable Mach-O es instalado en el directorio raíz del usuario. Con el objetivo de permanecer escondido, el nombre del fichero empieza con un punto. Además, crea un fichero en ~/Library/LaunchAgents para ejecutar el comando cada vez que el usuario accede al ordenador infectado. El único objetivo de este ejecutable es descargar e instalar el componente capaz de interceptar el tráfico web. Técnicas de ofuscación El análisis dinámico del paquete de instalación muestra que cuando es ejecutado por primera vez, el malware envía el UUID de la Plataforma del sistema infectado al Centro de comando y control (C&C) a través de HTTP. La respuesta que recibe no es generada por el malware. Por lo tanto, la URL no es el objetivo del control automático. Creemos que solo es utilizada por el desarrollador del malware para obtener datos estadísticos. Después de esta primera ejecución, nos dimos cuenta de que el fichero ejecutable se había modificado a sí mismo. ¿Cuál podría ser la diferencia? Pues, primero, vimos que la URL utilizada para la estadísticas en el primer comando había sido eliminada del fichero ejecutable. Y además, un gran parte de la sección de datos había cambiado completamente.
  • 5.
    OSX/Flashback A pesar delos cambios, el fichero permanece como un ejecutable válido. En las siguientes ejecuciones, su comportamiento era igual que la primera vez con una excepción: no generaba más tráfico a la URL que había sido borrada. Por lo tanto, parecía que estábamos enfrentándonos a un malware capaz de autocifrarse. Con el fin de analizar los ficheros maliciosos cifrados enviados por los usuarios o encontrados por Internet, tuvimos que analizar primero los métodos de cifrado utilizado por Flashback. Primero de todo, echemos un vistazo a la sección de código utilizada al principio de la ejecución.
  • 6.
    OSX/Flashback Como el UUIDde Plataforma es único para cada máquina, el fichero ejecutable cifrado no puede ser ejecutado desde otro ordenador Mac diferente al que lo hizo por primera vez. Y como la mayoría de las variantes recibidas, así como aquellas que hemos encontrado en Internet, estaban cifradas, era imposible comprobar su contenido sin conocer el UUID de Plataforma de la máquina infectada. Pero… ¿qué podría contener esta porción de código cifrado? Incluso después de un descifrado con RC4, todavía no tenemos ninguna cadena de caracteres clara ni una estructura de datos reconocible. Veamos cómo se utiliza el bloque posteriormente. Para ello necesitamos seguir monitorizando la ejecución para encontrar llamadas a una función que pueda encontrar cadenas en su estructura. Aquí encontraréis algunos ejemplos de este tipo de llamadas:
  • 7.
    OSX/Flashback Vamos a examinarel contenido de la función: get_string que usa cinco parámetros 1. strings_struct: estructura que contiene punteros a nuestros datos. 2. key: el valor clave a encontrar en los datos. 3. xor_key: XOR key es utilizado para descifrar el contenido. 4. decrypted: como salida, contendrá el puntero al valor de descifrado en el diccionario. 5. decrypted_length: como salida, contendrá la longitud de la cadena get_string encuentra la cadena en el diccionario con la clave con find_string, y entonces aplica la clave XOR dada a todos los bloques de 64-bit. Si analizamos find_string, encontramos la estructura de un diccionario en memoria. La siguiente tabla muestra la estructura que representa el diccionario.
  • 8.
    OSX/Flashback Afortunadamente, los datosy sus claves XOR son los mismos en todas las variantes, lo que facilita el proceso de descifrado de todas ellas, estadísticamente hablando. La parte cifrada debería por tanto contener un diccionario de claves y de valores que son usados por el paquete de instalación. A partir de aquí, empezamos a ver cadenas más claras, pero muchas de ellas están todavía ofuscadas. Una última pasada de descifrado desvela su valor final. El algoritmo que es utilizado en el último descifrado parece que no es conocido. En breve, se genera lo que parece ser una lista aleatoria determinante de 216 bytes. Cada palabra de 2 bytes en la cadena es equivalente al índice del octeto deseado de la lista. Una vez que hemos llevado a cabo todos estos pasos, hay varias listas separadas por "|". Este es el resultado final del descifrado.
  • 9.
    OSX/Flashback Encontramos igualmente nombres de librerías y de funciones en las claves 0xf12e y 0xe002. Estas se cargarán dinámicamente con dlopen y dlsym. Sabiendo ahora las funciones a las que llama, entendemos mucho mejor el comportamiento de este malware. Periódicamente, el software malicioso busca entre una lista de dominios desde los cuales puede descargar y ejecutar un fichero. Los campos son derivados de tres fuentes diferentes: 1. Una lista de dominios se encuentra en el paquete de instalación (con la clave 0x92be); 2. 5 prefijos de dominios son dinámicamente generados de constantes encontradas en el paquete de instalación (las tres de la clave 0x6192); 3. Otro prefijo de dominio es generado dinámicamente basándose en la fecha. Para cada uno de los prefijos de dominio generados dinámicamente en el punto 2 y 3, los sufijos que se añadirán a cada uno se encuentran en la clave 0x1f91. En todas las variantes que hemos analizado, había cinco dominios principales. Los prefijos del punto 2 son falsas cadenas de caracteres compuestas de 11 a 13 letras y generadas al azar. Son diferentes dependiendo de la variante. El prefijo del punto 3 también es una cadena aleatoria generada dinámicamente pero es única, ya que coge el dato de la fecha, aunque también es exactamente En la clave 0x92fa, vemos una lista de rutas a software igual para todas las variantes. Los 5 sufijos se agregarán también al prefijo diario. antivirus, cortafuegos personales y software diseñado para el uso por parte de usuarios experimentados. Si alguno de esos Excluyendo los dominios autogenerados y basados en el día del punto 3, hemos ficheros existen en el sistema infectado, la ejecución identificado 185 dominios diferentes de todas las variantes. terminará y el malware se desinstalará del sistema.
  • 10.
    OSX/Flashback Nuestro análisis indicó que el propósito principal de la instalación del componente Una de las pecualiaridades del componente de instalación de es la inserción de un segundo módulo para interceptar las comunicaciones HTTP y Flashback es que el autor no ha registrado previamente todos HTTPS. Esta interceptación permite la inyección de publicidad en la navegación los dominios posibles, quizá porque habían demasiados como HTTP y HTTPS, mostrando los anuncios al usuario infectado. Este nuevo módulo es para registrarlos periódicamente. Además, el algoritmo independiente del componente de instalación que hemos visto previamente. En utilizado para generar los nombres de dominio del día es el esta sección, te enseñaremos las características de la interceptación HTTP usada mismo para todas las variantes de Flashback. por Flashback. En el curso del análisis de ingeniería inversa aplicado al algoritmo de generación de nombres de dominio, varias El componente de interceptación no tiene la forma de un ejecutable, ya que es una compañias incluyendo a DrWeb, ESET, Kaspersky y Symantec librería, lo que origina una buena pregunta: ¿cómo se ejecuta el código? El fueron capaces de registrar los nombres de dominio componente de Mac OS X que está encargado de cargar dinámicamente las disponibles y colocar controladores en ellos, permitiéndonos librerías se llama dyld. Normalmente, las rutas a librerías necesarias para la de esta manera conocer el número de sistemas infectados. ejecución de un programa se encuentran en su cabecera Mach-O, y el componente dyld está a cargo de cargarlas en su momento de ejecución. La página manual de Una vez que el malware establece una conexión con alguno dyld muestra varios entornos diferentes de configuración de dyld. Para ser de estos dominios, el software intenta ejecutar un comando cargadas, Flashback utiliza DYLD_INSERT_LIBRARY, que permite cargar una librería HTTP GET. Y espera recibir una respuesta con el formato. antes de que esté especificado en el programa a ejecutar. Para cambiar este entorno de variables de manera persistente, Flashback utiliza dos técnicas: 1. Si tiene privilegios de administrador, Flashback cambiará los metadatos del navegador instalados para asignar las variables de entorno antes de su ejecución. Esto es posible añadiéndola dentro de la clave LSEnvironment dentro de la aplicación Info.plist. 2. Si no tiene permisos de administración, Flashback añadirá una al fichero ~/.MacOSX/environement.plist. Y se preocupa de crear una en el caso de que no exista (caso que suele ser habitual). Cundo el usuario se registra, la variable se verá afectada; por eso la librería se cargará en todas las aplicaciones que sean ejecutadas por ese usuario.
  • 11.
    OSX/Flashback Para usuarios infectadospor el exploit de Java, el método Configuración utilizado es el segundo, porque el applet no tiene privilegios de aministración. La intervención de Flashback La librería contiene una sección “ __interpose” que permite reemplazar la función proporcionada por otra librería cargada. Por lo tanto, con DYLD_INSERT_ LIBRARY, es posible situarse Cuando abres la librería en un desensamblador, encontramos una larga entre la función de llamada y la función original. El resultado es cadena de caracteres codificados en Base64. Incluso descodificándolos, similar al uso de LD_PRELOAD en Linux. el resultado no es inteligible, desgraciadamente. No tenemos otra opción más que encontrar cómo descodificarlo para poder acceder a Flashback interpone dos funciones: CFReadStreamRead y sus contenidos. La siguiente sección de la librería muestra la rutina que CFWriteStreamWrite. Estas dos funciones son parte de CoreFoundation, el API del lenguaje de programación en C de se encarga de la descodificación. Mac OS X. Como indican sus nombres, estas funciones se utilizan para enviar y recibir datos en un flujo. A menos que se utilicen otras funciones de perfil bajo para enviar y recibir, todas las comunicaciones de red en Mac OSX van a través de estas funciones. Resulta interesante saber que es posible crear un CFStream cifrado en SSL utilizando las funcionalidades de CoreFoundation. Esto significa que la interposición de Flashback permite interceptar los datos en una conexión HTTPS en estado descifrado.
  • 12.
    OSX/Flashback Lo primero quevemos es el clásico descifrado de Base64. “cfinh” es utilizado como un marcador y se encuentra en todas las variantes. Hay además un descifrado con RC4 utilizando para ello la UUID de Plataforma como clave, y Lo primero que encontramos en la ruta de red es un comando HTTP finalmente hay que descifrarlo con RC4 utilizando esta vez GET towards / scheck. Este es el formato de la respuesta: una clave de 16 caracteres incluida en el binario. En conclusión, la función descomprimida es llamada para descomprimir los datos cifrados. Una vez más, nos damos cuenta de que una parte muy interesante de Flashback es cifrada con el UUID de Plataforma, que hace que el análisis El descifrado en Base64 no devuelve nada de interés. Nada de ASCII, sea bastante difícil si el proceso de ingeniería inversa no tiene sin fichero comprimido, nada que sepamo. La segunda parte es de esta información. 512 octetos. Necesitamos mirar dentro del código para ser capaces de encontrar el uso que se le da a OpenSLL conectada por esta query. Una vez descodificado, las cadenas de caracteres representa un diccionario compuesto por varios elementos.
  • 13.
    OSX/Flashback En la listadel centro de mando y control, varios dominios no han sido registrados por el autor. Este análisis previo ha sido implementado para evitar que alguien no autorizado tome el control y envíe comandos a los Macs infectados. Interceptación Cuando intercepta los datos, Flashback determina si es una petición HTTP GET examinando el principio de los datos enviados a CFWriteStream. Cuando es una sentencia de búsqueda enviada a Google, las palabras clave de búsqueda así como la información de la máquina como la clave UUID de Plataforma y el idioma configurado se envían al centro de mando y control. La respuesta posterior para ejecutar la próxima acción se hace cifrando utilizando RC4 con el hash MD5 usando como clave la UUID de Plataforma. La consulta a Google no cambia; sin embargo, la respuesta puede ser alterada para simular un clic en un anuncio. A continuación encontraréis un ejemplo de una respuesta válida del servidor de mando y control:
  • 14.
    OSX/Flashback Durante nuestros experimentossolo hemos observado el uso de dos comandos: BIDOK y BIDFAIL. Los otros comandos, que son utilizados para añadir servidores en su lista (ADD_S) o incluso para autodestruirse (SK), no han sido vistos en nuestras capturas de tráfico. Utilizando Twitter como un mecanismo de Mando y de Control Podemos encontrar en la configuración una URL que busca hashtags en Twitter. ¿Cuál es su objetivo? Si echamos un vistazo a cómo está siendo utilizado, encontramos otra técnica disponible para el botmaster (el operador de la red) que le permite controlar su red.
  • 15.
    OSX/Flashback Se genera unhashtag diferente cada día. Una búsqueda en Twitter por este hashtag revela las direcciones IP o el nombre del dominio del nuevo servidor de mando y control disponible. En el tweet, encontramos información entre los Durante nuestro análisis, hemos visto otro elemento interesante en delimitadores «beginbump» y «endbump» (estos nuestra traza de red. Flashback intentaba resolver nombres de dominio delimitadores son también parte de la configuración). que empezaran con el hashtag del día. Hemos encontrado en la configuración una lista de sufijos a aplicar para generar la cadena, en el generate_string_for_day concatena 3 cadenas de caracteres caso del componente de instalación. de una lista en la configuración. Si, por ejemplo, se encuentra esto en la configuración… Y en una variante antigua: el hashtag para el 2 de febrero de 2003 será #efghabcdijkl (el mes de Enero es 0). Hemos listado 6 listas de cadenas de diferentes variantes analizadas. No tenemos rastro del tweet del ciberdelincuente. Probablemente han sido borrados si realmente los ha utilizado. Sin embargo, hemos encontrado que alguien que parece trabajar para una compañía antivirus ha intentado atraer tráfico a su trampa twiteando su dirección con el hashtag correcto.
  • 16.
    OSX/Flashback Estos dominios seutilizarán, una vez en la lista de configuración, para auto-actualizarse. Estas actualizaciones están también firmadas, por lo tanto, es muy complicado para un intruso registrar el nombre de dominio del día y distribuir su propio código sin • disponer de la clave privada. • Desde principios de abril, ESET fue capaz de registrar nombres de • dominio utilizados por el componente de instalación de Flashback. El malware facilita las cosas en cuanto envía el UUID de Plataforma • de la máquina donde ha sido instaldo en el campo User-Agent field de la cabecera HTTP. Por lo tanto, es posible contabilizar el número de máquinas infectadas dado que el UUID de plataforma identifica a • cada Mac de manera única. Ttuvimos en nuestra posesión varias muestras de Flashback, pero • también tuvimos un gran problema: no fuimos capaces de determinar el UUID de Plataforma de las máquinas infectadas. Con • nuestra trampa puesta en marcha, las posibilidades de que un ordenador infectado se comunicara con esta eran altas. Gracias a esta herramienta, fuimos capaces de reunir alrededor de 600.000 • identificadores únicos. En este momento, también fue posible utilizar esta lista para forzar el descifrado de las muestras para la instalación del componente, así como el componente de • interceptación.
  • 17.
    OSX/Flashback Algunos usuarios deMac creen que son inmunes a los efectos del malware Tras la aparición de Flashback en los medios, Apple reaccionó muy deprisa. porque están utilizando OSX. Ciertamente, las amenazas diseñadas para Primero, registró todos los nombres de dominios disponibles conectados con OSX son más escasas que las de Windows, pero esto no significa que no existan. Flashback, incluyendo aquellos que se habían generado dinámicamente. Flashback es un ejemplo de un ataque a gran escala contra la plataforma Muy poco tiempo después, Apple creó una actualización para OSX que detectaba OSX. Hay constancia también de otros ataques dirigidos, como es el caso de la presencia de Flashback y lo desinstalaba del sistema. Sin embargo, Apple ha sido Lamadai y MacControl, que atacaron a organizaciones no gubernamentales relativamente lento en esta estrategia (la presencia de Flashback en los medios pro-tibetanas. difícilmente puede considerarse una buena campaña publicitaria para Apple). La versión de Java instalada en Mac OSX no puede ser actualizada por Hay varias preguntas que todavía necesitan respuestas: ¿quiénes son los autores Oracle. Apple debe validar y distribuir las actualizaciones mediante su sistema, lo que ha dejado a algunos preguntándose si Apple ha sido de Flashback?, por ejemplo. ¿Esperaban tener muchas infecciones y hacerse así demasiado lento en publicar la actualización de Java que corregía la mucha publicidad? ¿Era simplemente una prueba? vulnerabilidad explotada por Flashback. Flashback ha demostrado que OSX no es inmune a sufrir infecciones a gran escala y Dos meses hemos tenido que esperar para tener una actualización que los creadores de malware pueden estar considerando seriamente a OSX como un corrigiera la vulnerabilidad y cuya técnica de explotación está disponible en nuevo campo donde lanzar sus creaciones. Los usuarios de Mac, por lo tanto, la Red, creando así una ventana de riesgo. deberían estar alerta y adoptar medidas de seguridad. Desde que Apple ha lanzado Mac OSX Lion (10.7), ya no instala intérpretes de Java por defecto en su sistema operativo, un movimiento que puede ser visto como una forma de reducir los vectores de ataque. También podría interpretarse como un intento de evitar la carga de tener que actualizar software que está bajo su control.
  • 18.