Mayhem: malware para *nix, "como si fuera un Windows"

lunes, 21 de julio de 2014

Mayhem es un malware para servidores Linux. Al margen de las discusiones estériles sobre fanáticos y escépticos que siempre levantarán este tipo de noticias, su tecnología es interesante (comparable a los bots habituales para Windows). Aunque al final, al menos desde cierto punto de vista, decepcionan sus aparentes objetivos. Veamos por qué.

Ocasionalmente se encuentra un malware más o menos sofisticado que está destinado a infectar a sistemas *nix. Normalmente orientados a servidores, ejemplos recientes son Forkitor, Effusion... Veamos ahora Mayhem (encontrado en abril de 2014 con unos 1400 bots manejados), y sus principales características a alto nivel.

Infectando y actuando

En el informe no aclara explícitamente cómo llega el malware a los servidores, pero suponemos que lo están haciendo a través de vulnerabilidades que permitan la ejecución de código en PHP. De hecho, el primer "enlace" en la cadena de malware es un script en PHP que descarga un script y lanza todo el proceso de infección. Este es el método clásico en servidores *nix. Cualquier despiste o falta de actualización en la configuración de una página PHP puede terminar en la ejecución de código PHP. Si normalmente los atacantes culminan su tarea de "conquista" del servidor subiendo una shell en PHP para controlar el sistema dentro de sus posibilidades, la diferencia es que Mayhem va mucho más allá.

Script  PHP de infección de Mayhem

El código PHP se encarga fundamentalmente de ejecutar un script llamado 1.sh con el comando "at now -f 1.sh". Este script fundamentalmente abusa de LD_PRELOAD para conseguir que una librería (shared object, los .so en Linux comparables con una DLL) se cargue antes que un programa y por tanto "enganche" funciones. Es una técnica conocida desde hace años. Mayhem en concreto reescribe la función "exit" para que sea invocada cuando se lanza el comando "/usr/bin host". Este nuevo "exit" lo que hace es "situarse" en el sistema (buscando la dirección de memoria base en memoria a partir de "ELF", y desde ahí deducir el path real) y además descargar un binario. Ese binario por último se encargará, a través de un "fork" de procesos, de comprobar que tiene conexión, borrar el ELF descargado y leer la configuración cifrada del C&C para poder empezar a trabajar. Como detalle, la configuración se encuentra cifrada en el segmento .data del objeto compartido. Una vez leída, se borra el .so y comienza la infección. Hasta aquí, lo cierto es que es similar a ciertos modelos estándar de infección de Windows, pero relativamente interesante en Linux.

Luego, Mayhem utiliza un sistema de colas más o menos complejo para poder ponerse en contacto con el C&C, enviarle la información relevante, recoger nuevos plugins, controlar el sistema, etc. Un resumen de los comandos con los que se comunica con el C&C es:
  • Comandos que envía: R (llamar al C&C y enviar información), F (requerir fichero), Q (envía datos), P (reporta su estado).
  • Comandos que recibe: F (ejecutar nueva tarea) , L (Cargar plugin), Q (enviar datos), S (parar tarea).

El disco invisible

Una característica interesante es la capacidad de crear, haciendo gala de incluso trucos antidebugging, un archivo (llamado ".sd0") oculto en memoria como un sistema de ficheros. Para comunicarse con él se usa una librería FAT16/32 libre modificada por los atacantes para poder trabajar con código cifrado. Este disco virtual oculto cifra la información con 32 rondas del algoritmo XTEA en modo ECB. La clave de cifrado varía de bloque a bloque. En este sistema de ficheros se guarda el botín, los plugins,  urls, etc.

Un sistema de plugins... ¿decepcionante?

El malware utiliza plugins. Hasta ocho se han encontrado, en forma de ficheros .so, y ninguno detectado por ningún motor antivirus (algo hasta cierto punto normal). Si analizamos para qué sirve cada uno, fundamentalmente se encuentran:

  • Plugins para encontrar páginas que sean vulnerables a problemas de RFI (Remote File Inclusion).
  • Plugins para atacar a Wordpress, encontrando usuarios válidos, páginas de login, aplicar fuerza bruta sobre páginas de login (también de Joomla)...
  • Un plugin más genérico para aplicar fuerza bruta sobre casi cualquier página y otro para cuentas FTP.
  • Otro para "crawlear" páginas o IPs (las que le dice el C&C) y extraer información.

Esta serie de posibilidades no resulta excesivamente espectacular. Ya existen miles de scripts y sitios desde donde (atacantes mucho menos sofisticados) realizan este tipo de búsquedas cuyo objetivo son sistemas muy populares como Wordpress, por ejemplo. Decenas de guías de "hacking" no hacen más que apuntar a scripts "listos para usar" que explotan fallos y listas de "dorks" para Google que devolverán páginas potencialmente vulnerables a esos fallos. Por otro lado, además, el uso de fuerza bruta es muy ruidoso y poco efectivo en general, si hablamos de objetivos jugosos. Quizás reporte cierto éxito entre páginas de usuarios comunes, pero resultaría de poco interés desde el punto de vista de un atacante de un perfil alto, a no ser que esto forme parte de una primera fase de un ataque más sofisticado que requiera de muchas máquinas "base" para conseguirlo.

Conclusiones

El sistema de infección y almacenamiento de información en disco virtual es interesante y efectivo, y hace lo que puede sin intentar elevar privilegios. Por supuesto, si el sistema se encuentra que corre como root, el sistema de comunicación con el C&C dará mucho más juego. Pero en principio el diseño de los plugins, que parecen las "tareas comunes" para las que ha sido diseñado el malware, tienen como misión encontrar páginas comunes con una configuración débil, algo que nos aleja de la idea de que fue creado con algún objetivo interesante en mente, sino que sus expectativas resultaban mucho más modestas. ¿El primer paso para reclutar agentes necesarios para otro ataque? Quién sabe.

Aunque la botnet puede ser muy potente y no se sabe cuál es su fin último, da la sensación de que el método de infección está muy trabajado, pero el botín que puede encontrar una vez funcionando desde un sistema bajo su control, no es de "buena calidad". Este botín (paginas en PHP mal configuradas, servidores FTP con contraseñas que pueden ser deducidas por fuerza bruta) es el que esperan los atacantes de un perfil mucho más bajo, que solo necesitan comprometer una página en PHP atacando un CMS desactualizado, subir una shell común y desde ahí lanzar dorks y plugins ya existentes... al alcance de cualquier atacante adolescente. De hecho no se necesitan grandes conocimientos para hacerse con un buen puñado de páginas de este tipo y controlarlas para que sirvan de lanzadera de spam, alojar phishings, etc. Son el "low hanging fruit" de los atacantes.

Sin embargo Mayhem sirve, como siempre, para recordar que es necesario asegurar los servidores (y aquí no podemos más que recomendar Faast), y que no solo existen ataques personalizados que puedan estar buscando una empresa como objetivo, sino que, como servidor basado en *nix, se puede ser víctima hasta de malware más o menos automatizado.


Sergio de los Santos
ssantos@11paths.com

No hay comentarios:

Publicar un comentario en la entrada