Anatomía de una infección por malware

En informática, como en biología, los mejores virus son los mejor adaptados, son aquellos que se aprovechan de su huésped sin que este se percate… hasta que ya es demasiado tarde. También como en biología, no siempre sucede así.

—Iñaki, ¿te pillo por aquí?
—Sí, dime.
—Estoy acojonado. Algo pasa con WordPress. He llamado al hosting porque pensaba que sería problema del mismo, pero lo último que me han dicho es que el archivo «index.php» es 20 veces más grande de lo normal. ¿Es grave?

Inmediatamente le insto a descargar el fichero y a enviármelo, y a machacarlo con uno legítimo de WordPress. En una situación así, no hay tiempo que perder hasta saber a qué nos enfrentamos. Mientras tanto, conviene recabar toda la información posible, buscar más archivos modificados, comprobar la base de datos en busca de usuarios ilegítimos…

El «index.php» de una instalación de WordPress es minúsculo, de menos de 0.5 kB; por tanto 20 veces más, poco más de 8 kB, sigue siendo notablemente pequeño. El archivo que recibo es un «index.php» legítimo de WordPress con una línea (muy larga) añadida al comienzo, y tiene esta pinta:

Una larga cadena de caracteres sin ningún sentido y unas pocas operaciones debajo con menos sentido todavía. Por ahora. Es lo que se llama ofuscación de código, una técnica que tiene dos objetivos principales: por un lado, encubrir el propósito del código, o al menos dificultar su comprensión; por otro lado, dificultar su identificación. Efectivamente, una búsqueda en Google no arroja ningún resultado. Toca, pues, seguir los pasos uno por uno para descifrar el puzle.

El funcionamiento es simple, pero efectivo. El código se asemeja a una matrioska: de un conjunto de caracteres aparentemente aleatorios, se extraen unos cuantos en un orden determinado formando funciones que actúan sobre otras cadenas, que obtienen nuevos chorizos sin sentido y nuevas funciones ilegibles. En el caso que nos ocupa, la ofuscación es particularmente compleja, y me lleva hasta ocho etapas distintas hasta que logro llegar a un fragmento de código que deja de interaccionar consigo mismo y ensambla el verdadero propósito del malware. El corazón del virus tiene nombre: day212().

Esta vez, sí: una búsqueda en Google revela que existe un repositorio donde otros autores realizaron el mismo proceso que yo con otra muestra del virus. Recogen el fragmento original, el código final y detallan el proceso. ¿La fecha? Hace once meses. Lo que podemos deducir del análisis del malware es que, una vez instalado en un servidor legítimo y de una manera bastante sofisticada, inyecta código que obtiene de servidores rusos, con dominios alojados en China, en la web que recibe el usuario final. Pero esto solo es la punta del iceberg.

EITest, el negocio de la distribución de malware

Hace más de dos años, Malwarebytes publicaba una investigación en la que exponía una campaña de distribución de malware a la que apodaron EITest (por uno de los nombres de las variables del código involucrado). Desde entonces, se ha mantenido activa sin que ninguna autoridad competente haya tomado el control sobre los servidores rusos que son centrales a dicha operación. Podemos encontrar nuevos reportes de investigadores de marzo y octubre del pasado año, y ahora nos encontramos ante un nuevo repunte en sus actividades.

EITest se puede definir como una cadena de infección. Se centra en las fases de entrega, explotación de vulnerabilidades e instalación de software malicioso; es decir, su beneficio viene principalmente de la distribución de malware para otros criminales. Todo apunta a que es un negocio rentable y bien engrasado, por su evolución y su perdurabilidad, ya que sus orígenes podrían remontarse a 2011. La muestra de código con la que abríamos este artículo no es otra cosa que la puerta de entrada a esta red de distribución.

Anatomía de una infección

Todo empieza con un servidor web legítimo comprometido por alguna razón. Las posibles vías son múltiples: una instalación desactualizada, un plugin vulnerable, un servidor mal configurado… Una de las principales vías de infección conocidas fue, durante largo tiempo, una vulnerabilidad en MailPoet, un popular plugin para WordPress. No son infrecuentes tampoco los ataques distribuidos contra el panel de control de WordPress y otros gestores de contenidos (este mes precisamente ha habido un incremento que hemos notado en este blog; por eso es tan importante escoger una contraseña robusta y limitar los intentos de acceso fallidos). De una manera u otra, el código que encabeza la entrada o similar acaba en la cabecera de uno o más archivos —se han llegado a reportar cientos en un mismo servidor.

La infección está diseñada para parasitar sin perturbar demasiado al huésped y tiene unos targets muy determinados. Cuando un usuario apunta con su navegador al sitio en cuestión, está despertando a la bestia sin percatarse. El código entra en funcionamiento no sin antes comprobar cuidadosamente una serie de parámetros para asegurarse de que se encuentra ante un usuario legítimo con unas características determinadas. Pasará, por tanto, desapercibido ante bots como el de Google o Microsoft para evitar que el sitio sea identificado como portador de malware. Se ha reportado que EITest busca equipos Windows con Chrome o Internet Explorer como navegador, pero en la muestra analizada he podido comprobar que también buscan navegadores Firefox y sistemas Android.

Una vez confirmado el target, el código contacta con un tercero que será el que devuelva un regalito hecho a la medida del navegador. Parece ser que este servidor malicioso realiza más comprobaciones para asegurar que el contenido va directo a una web infectada, y además evita una misma IP durante un periodo de 24 horas [1]. Como resultado, el usuario carga la web en cuestión… y algo más. Y, de repente…

Chrome no encuentra la fuente

Cuando el cliente es Google Chrome, el usuario verá un pop-up similar al siguiente:

Da la impresión de que el navegador nos insta a descargar un pack de fuentes necesario para visualizar la página actual, pero evidentemente es un truco. De hecho, un navegador jamás necesita descargar fuentes: si no encuentra una, simplemente usa una por defecto. Pulsar ese botón desencadena otra ristra de comprobaciones, de que Chrome es en realidad Chrome, y una petición a otro servidor infectado que inicia la descarga de un archivo: «Chrome_Font.exe» o «Font_Update.exe».

La manera en que ese archivo es servido, de nuevo para asegurarse de que la petición viene de una víctima legítima, y cómo está protegido para evitar la detección por antivirus son dignos de mención (para los curiosos, todos los detalles se encuentran en [1]). Pero sobra decir que la ejecución del archivo consuma la infección. En el caso particular de Chrome, lo que se distribuye es un virus que se dedica a lanzar múltiples instancias invisibles de Internet Explorer y a navegar autónomamente, todo apunta que para generar dinero a base de clicks fraudulentos en publicidad. Los investigadores han sido capaces de identificar 7000 sitios web infectados y 30000 IPs únicas de usuarios que han descargado el malware diseñado para Chrome [1], principalmente de Estados Unidos, durante las últimas semanas.

¿E Internet Explorer?

Peor lo tienen los usuarios de Internet Explorer —aunque todo apunta a que un Windows 10 bien actualizado mitiga las probabilidades de infección, ya que el principal sistema infectado es Windows 7—. EITest distribuye una amplia variedad de malware sin intervención del usuario utilizando como vía de entrada este navegador. En concreto, la estrategia consiste en inyectar código para descargar un ejecutable de Adobe Flash Player capaz de explotar dos vulnerabilidades diferentes. La única acción necesaria por parte del usuario es visitar la web infectada.

En ese momento, y si la versión de Flash Player es vulnerable, se inyecta un script capaz de «llamar a casa» y descargar y ejecutar cualquier tipo de malware que se provea desde los servidores de EITest: desde ransomware hasta programas capaces de convertir un PC en parte de una red de bots sin levantar las sospechas de su dueño.

El patrón es claro: de día trabajan y de noche descansan cuando el dueño apaga su computadora, ya que las víctimas principales son ordenadores personales, y se aprecia cómo el número de bots ha crecido de forma sostenida durante estas últimas semanas. Para un análisis pormenorizado, por si no me he reiterado lo suficiente todavía, lean [1].

[1] Exposing EITest campaign, Malware Traffic Analysis.

Gafas para daltónicos

(Esta anotación se publica simultáneamente en Naukas)

Todos sabemos qué es el daltonismo, o creemos que lo sabemos. Si le preguntamos directamente a Google, nos responderá:

Defecto de la vista que consiste en no distinguir ciertos colores o confundirlos con otros.

Pero aquí cabe preguntarse, ¿cómo vemos? La vista es una interfaz de entrada más que nos permite desenvolvernos en el mundo que nos rodea. En concreto, es una pequeña ventana por la que asomarnos a una parte del espectro electromagnético que nos aporta mucha información para formarnos una imagen detallada (nótese que no digo precisa) de nuestro entorno.

Nuestra vista tiene como dispositivo de entrada el ojo, una pieza de hardware bastante compleja a la par que complicada. Aparte de enfocar la luz en un punto mediante una lente, tiene células especializadas en la captación luz y posterior transducción en la correspondiente señal neuronal. Hay dos tipos de células fotorreceptoras: los bastones y los conos. Los primeros tienen una gran sensibilidad y su señal nos sirve solo en condiciones de muy poca luz. Los segundos son los responsables de nuestra visión en condiciones normales.

Respuesta frecuencial de los conos
By OpenStax College [CC BY 3.0], via Wikimedia Commons
Pero un momento… todavía no nos hemos hecho una pregunta incluso más pertinente que la primera: ¿qué es el color? Nuestro ojo posee tres tipos de conos, y su respuesta en frecuencia (qué parte del espectro captan) se encuentra sobre estas líneas. Como se puede observar, tenemos receptores de onda corta (que se corresponde con el azul), onda media (verde) y larga (rojo). ¿Esto quiere decir que captan azul, verde y rojo respectivamente? No: simplemente quiere decir que los tres tipos de conos envían una señal diferente al encéfalo. Es este último el que, mediante dichas señales, se hace una composición de lugar y forma la imagen que vemos y los colores que percibimos.

Por tanto, podemos decir que los colores no existen —como concepto absoluto—; lo que existe es la luz a diferentes frecuencias. El color no es más que la respuesta a la primera pregunta: cómo vemos. El cerebro dispone, gracias a los conos, de tres señales diferentes, de los valores de intensidad en —podríamos decir— tres dimensiones independientes de un universo de frecuencias. Esto nos permite discernir entre un gran conjunto de frecuencias del espectro visible (pero, cuidado, no todas las existentes), y se traduce en lo que experimentamos como color. Ver dos colores es diferenciar dos espectros de luz, pero lo contrario no se sigue: dos fuentes de luz pueden diferir en su espectro y, para nosotros, corresponder al mismo color.

Esto nos lleva de vuelta al daltonismo. Así pues, un daltónico es aquella persona cuya percepción del color es diferente a la normal, entendido como habitual dado nuestro hardware y su funcionamiento. Dejando de lado aspectos neuronales que también pueden afectar a la visión y ciñéndonos al ojo, este daltonismo se presenta de tres posibles formas:

  • Monocromatismo: Por ausencia o disfunción de dos o tres tipos de conos, la visión queda reducida a una sola dimensión, por lo que el cerebro solo puede formar una imagen en base a la luminosidad; en blanco y negro, para que nos entendamos.
  • Dicromatismo: Por ausencia o disfunción de un tipo de cono, la visión queda reducida a dos dimensiones. Esto simplemente significa que la percepción del color es diferente de forma que se disciernen menos frecuencias: hay colores que se perciben como el mismo. Lo habitual suele ser que los rojos y los verdes se perciban como una misma gama. No es que se confundan los colores, como se suele decir, —lo que nos lleva a pensar que a veces el verde parece rojo y el rojo, verde— no: es como si, en lugar de rojos y verdes, viésemos toda una gama de marrones.
  • Tricromatismo anómalo: La visión normal es tricromática, por los tres conos o tres dimensiones que percibimos. En esta disfunción, lo que sucede es que la respuesta frecuencial de dos tipos de conos se solapan (las montañitas de la imagen de más arriba se superponen de forma que su cumbre casi coincide), y, de nuevo, lo habitual es que suceda con los conos verdes y rojos. Esto significa que el cerebro recibe señales muy similares de dos tipos de conos, por lo que pierde una dimensión. El resultado perceptivo es el mismo que el producido por el dicromatismo. La diferencia radica en que aquí de hecho funcionan los tres tipos de conos, pero mal.

Finalmente, llegamos a lo que la ciencia y la tecnología pueden hacer por estas personas. Y es que una empresa estadounidense llamada EnChroma vende unas gafas de sol que prometen corregir el daltonismo. ¿Puede funcionar algo así? ¿Cómo? Lo cierto es que sí, pero solo en el último tipo de daltonismo, que precisamente es el más común.

Respuesta frecuencial de las gafas EnChroma
Fuente de la imagen: EnChroma®

Estas gafas llevan un recubrimiento especial que actúa como un simple filtro, pero un filtro muy particular. En concreto, son opacas a dos rangos de frecuencia estratégicamente situados entre los máximos de la respuesta de los tres tipos de conos (véase la imagen superior). Dicho de otro modo, las gafas no dejan pasar la luz más conflictiva, la que produciría una señal más parecida en dos conos solapados (de ahí que necesariamente sean de sol: no son transparentes, por construcción). Como resultado, el cerebro recibe tres señales distintas y vuelve a ganar la dimensión perdida. El cerebro tiene una gran plasticidad y, con esa nueva información, el daltónico pasa a ver automáticamente como vemos los demás. Impresionante.

La empresa en cuestión pide a sus clientes que se graben en vídeo al estrenar las gafas y lo compartan en YouTube (no se me ocurre mejor publicidad…). Recomiendo encarecidamente ver sus reacciones, porque encogen el corazón un poquito. Ahí va un ejemplo (y otro, y más):

Como reflexión final, fijaos en que nuestra representación del color en cámaras, ordenadores, etc., —el sistema RGB— no es más que un reflejo de nuestra propia percepción. ¿Qué ocurriría si, como los daltónicos que pasan de dos tipos de conos a tres gracias a estas gafas, pasásemos de tres tipos a cuatro? Que ganaríamos otra dimensión, ni más ni menos, y, por tanto, distinguiríamos muchas más frecuencias y nuestra percepción del color sería mucho más rica. De hecho hay personas con esta rara cualidad, que se denomina, como no podía ser de otra forma, tetracromatismo.

(Gracias al compañero @BioTay por proporcionarme los punteros que han propiciado este artículo).

El coreano que rompió Internet

psy

O casi… De acuerdo, estoy exagerando un poquito. Pero el hecho es que PSY, el famoso cantante surcoreano autor de Gangnam Style, ha hecho que el gigante Google tenga que llevar a cabo una actualización masiva en sus bases de datos. ¿Por qué? Así lo explica el equipo de YouTube:

We never thought a video would be watched in numbers greater than a 32-bit integer (=2,147,483,647 views), but that was before we met PSY. «Gangnam Style» has been viewed so many times we have to upgrade!

Nunca pensamos que un vídeo sería visualizado un número de veces superior a un entero de 32 bits (2.147.483.647 visitas), pero eso fue antes de conocer a PSY. ¡Gangnam Style ha sido visto tantas veces que hemos tenido que actualizar!

Un contador como este no es más que un número, un número que se almacena en un campo de un set de datos asociado a un determinado vídeo en una base de datos. Que se almacena significa memoria, lo que a su vez significa que cada vídeo de YouTube, como cada entrada de este blog, tiene una porción de memoria finita reservada para guardar sus cositas (p. ej., número de visitas, número de «me gusta», URL, usuario al que pertenece…). En algún momento, el equipo desarrollador de YouTube (probablemente esto venga de antes de su adquisición por Google) pensó que 32 bits eran más que suficientes para tener guardado el número de visitas de un único vídeo. Parece razonable, pero… siempre está la realidad para sorprenderte.

El caso es que supongo que la actualización de marras no habrá sido inmediata precisamente. Tengamos en cuenta que se trata de ampliar un campo que está presente en todos y cada uno de los vídeos de YouTube, cuya información estará replicada probablemente en centenares de bases de datos repartidas por todo el mundo; añádele copias de seguridad, etc., además del hecho de que no puedes modificar por las bravas la base de datos en producción (esto es, la que está en uso). En fin, una odisea de moderadas proporciones para un mísero contador.

La duda que me sigue quedando es por qué utilizaban un entero con signo (arriba no han sido precisos: 2^{31}=2.147.483.648, no 2^{32}, luego el bit que nos falta es el que indica el signo; con un entero sin signo habrían tenido el doble de visitas posibles) para almacenar visitas, cuando nunca vas a tener visitas negativas… Un desperdicio absoluto.

Al margen de la realidad

Hace un par de semanas, en Applesfera (negritas mías)…

Cinco motivos por los que el reconocimiento dactilar del iPhone 5s es superior a todos los que conoces

Todo eso del Touch ID del iPhone 5s está muy bien pero, ¿qué pasa si utilizamos una fotocopia del dedo? ¿o hacemos una copia en plastilina de la huella? O peor aún, ¿y si alguien nos corta un dedo? ¿Podrían saltarse el sistema de reconocimiento dactilar de Apple? No, todo eso es por fortuna cosa del pasado y del mismo modo que el iPhone original fue el primer teléfono con pantalla táctil que de verdad hacia justicia a esta tecnología gracias a su interfaz, el iPhone 5s será el primer teléfono en acercar los sensores de huella al gran público.

1. Cortarte un dedo no sirve para nada.

El sistema Touch ID utiliza un sensor capacitivo, lo que significa que no obtiene una imagen óptica de la epidermis, sino que en su lugar realiza una lectura de las diferencias en la carga eléctrica de las crestas y valles en las capas subdermicas del dedo. Una fotocopia no funcionará, una huella de plastilina no funcionara y un dedo cortado tampoco funcionará.

Y ahora, dos días después de la salida al mercado del iPhone 5s, ¿adivinan qué?

Oh, sorpresa. Me encantan los lusers de Apple: nada puede con su mundo de fantasía.

¿Es seguro el generador aleatorio de Linux? Torvalds responde

Los últimos documentos filtrados por Edward Snowden revelan que la agencia de ciberinteligencia estadounidense, la NSA, en su afán por espiar las comunicaciones cifradas, habría llegado a comprometer incluso el propio kernel de Linux a través de la empresa Intel. Explicaré aquí brevemente cuál es este problema que recorre Internet estos días y de qué manera ha quedado zanjado, de momento.

Qué es un generador de números aleatorios

La criptografía necesita números aleatorios para funcionar: secuencias no predecibles que sirvan para generar claves igualmente no predecibles y otros menesteres. Sin embargo, los ordenadores son más bien lo contrario de la aleatoriedad —como suelo decir, el ordenador hace lo que le mandas—, lo cual es un problema. El kernel de Linux, como cualquier otro sistema operativo, tiene un generador de números aleatorios, que en realidad es un generador pseudoaleatorio (léase lo suficientemente aleatorio, también como el de cualquier otro sistema), que es a lo que se puede aspirar con algo determinista como un ordenador.

Cuál es —supuestamente— el problema

El generador del kernel de Linux utiliza como fuente de aleatoriedad una instrucción de los procesadores Intel llamada RDRAND, que no deja de ser un componente hardware ajeno al kernel de Linux y, por tanto, difícilmente auditable. Al parecer, la NSA podría haber introducido una puerta trasera en dicha fuente de aleatoriedad. Esto quiere decir que las secuencias generadas con esos chips de Intel podrían ser predecibles para la NSA.

De confirmarse el problema, las consecuencias serían bastante gordas. Para empezar, no sería confiable ningún certificado o clave pública generada con hardware Intel desde la inclusión de la instrucción RDRAND.

La respuesta de Torvalds

Las discusiones en las listas de correo de desarrolladores de Linux han sido acaloradas durante los últimos días. Se llegó a abrir una petición en Change.org para que Linus Torvalds, el creador del kernel de Linux, eliminase RDRAND del generador. La respuesta de este ha sido tajante, tal y como nos tiene acostumbrados:

Where do I start a petition to raise the IQ and kernel knowledge of people? Guys, go read drivers/char/random.c. Then, learn about cryptography. Finally, come back here and admit to the world that you were wrong. Short answer: we actually know what we are doing. You don’t. Long answer: we use rdrand as one of many inputs into the random pool, and we use it as a way to improve that random pool. So even if rdrand were to be back-doored by the NSA, our use of rdrand actually improves the quality of the random numbers you get from /dev/random. Really short answer: you’re ignorant.

Resumiendo, RDRAND es solo una fuente más de aleatoriedad utilizada por el generador. Por tanto, aunque tuviera una puerta trasera, no serviría de nada y las secuencias no serían predecibles. Todo ello explicado con el peculiar estilo Torvalds.