Cómo funciona el «antimalware» XProtect para MacOS y por qué detecta poco y mal

Sergio de los Santos    6 mayo, 2019
Cómo funciona el "antimalware" XProtect para MacOS y por qué detecta poco y mal

Hace poco, MacOS incluyó una firma para detectar un binario para Windows en su «antivirus» incrustado, ¿tiene sentido esta detección? Se podría pensar que sí, como reacción a que en febrero de 2019 Trend Micro descubría malware creado en .NET para Mac. Se ejecutaba gracias a la implementación de Mono que incluía el propio malware en sí como intérprete de su propio código. Pero ahora en serio, ¿tiene sentido? 

Puede que tenga sentido puntualmente incluir una detección muy concreta que ha saltado a los medios, pero la estrategia en general de este antivirus a largo plazo no está tan clara, aunque reconozca que pretende detectar malware «conocido». La lucha contra el malware que lleva a cabo MacOS en su conjunto, parece un despropósito. Pasó de la absoluta negación de los primeros años del siglo XXI hasta la tímida aceptación para, desde 2009, combatir tímidamente el malwarePero desde entonces no ha evolucionado demasiado.

Sigamos con el ejemplo de la detección de un ejecutable para Windows: El malware se detectó en febrero, lo que implica que llevaba un tiempo funcionando. Pero Trend Micro lo anunció y saltó a las noticias, manchando una cuidada reputación. El 19 de abril, Apple incluye su firma en XProtect. Es un tiempo de reacción inaceptable. Por si fuera poco, esta es la primera firma con la que se actualiza XProtect en todo 2019. ¿Es posible que esté relacionada la exposición mediática del malware con el hecho de incluir la firma? ¿Qué prioridad le da a la seguridad de sus usuarios? ¿Sabemos cuánto malware detecta XProtect y cada cuánto se actualiza esta funcionalidad de la que MacOS no habla demasiado? ¿Son Gatekeeper e XProtect en general un movimiento meramente cosmético o de verdad pretenden ayudar a mitigar las potenciales infecciones en MacOS?

Qué es cada cosa
El asunto del malware en MacOS es un tema cíclico y recurrente (que a veces aburre). Pero para los que se incorporan al mundo de la seguridad, es necesario recordarles la peligrosidad de ciertos mitos que perduran todavía, porque aún existen grandes «negacionistas».

XProtect es un rudimentario sistema de detección por firmas de malware que se introdujo en septiembre de 2009. Se trata de un primer acercamiento a un antivirus integrado en MacOS. Tan rudimentario que cuando apareció solo reconocía dos familias que solían atacar al sistema operativo de Apple y exclusivamente comprobaba los ficheros descargados desde Safari, iChat, Mail y ahora Messages (lo que deja fuera a navegadores tan populares en MacOS como Chrome o Firefox). Actualmente XProtect cuenta con algunas firmas más que se pueden ver claramente (nombre del malware y el patrón de detección) en esta ruta:

/System/Library/CoreServices/XProtect.bundle/Contents/Resources/ 

XProtect contiene firmas por un lado, y reglas Yara por otro (viene definido por XProtect.plist y Xprotect.yara en ese directorio), y con los dos sistemas permite la detección y definición del malware, y en esto se apoya GateKeeper, que vigila y se las pasa. La lista XProtect.plist es pública. El número 3 en la URL hace referencia a Mountain Lion. Si se modifica al 2, se ve el fichero de firmas de Lion y 1 es para Snow Leopard. Apple no parece que quiera hablar mucho de ello. site:support.apple.com xprotect en Google no arroja apenas resultados.

GateKeeper poco tiene que ver con el malware ni con un «antivirus» como a veces se dice. Gatekeeper se trata de un sistema que controla que las apps descargadas estén firmadas por un ID conocido. Para desarrollar para Apple y publicar en el App Store, el programador debe conseguir (y pagar) un ID con el que firma sus programas. Una especie de certificado. Según Apple «El ID del programador permite a Gatekeeper bloquear aplicaciones creadas por desarrolladores de malware y verificar que las apps no han sido modificadas desde que fueron firmadas. Si una app fuera desarrollada por un programador desconocido (o sin ID) o modificada con él, Gatekeeper puede bloquear la app y que no sea instalada«. Por tanto, Gatekeeper está lejos de ser un anti malware. Más bien es un controlador de la integridad, procedencia y autoría de las apps que, si algo le resulta sospechoso, se lo pasará a XProtect marcándolo como «en cuarentena» si viene de un lugar sospechoso.

Por otro lado, también existe MRT en MacOS. Es su Malware Removal Tool, que se parece mucho al Malicious Software Removal Tool de Windows. Sirve para eliminar reactivamente el malware que ya esté instalado y solo se ejecuta cuando se inicia el sistema. Por si fuera poco, confía en rutas muy concretas de infección comunes para desinfectar, por tanto, poco puede hacer.

Por qué todo esto no parece funcionar demasiado bien

  • Un bit eludible para analizar: XProtect es un sistema basado en firmas (nos olvidamos de heurísticas ni el más mínimo rastro de un sistema de análisis avanzado) que realmente es la «base». Pero sufre toda clase de trabas para ser realmente eficaz. Gatekeeper es el sistema que le dice a XProtect, «voy a ponerle a este archivo recién descargado un bit activo de cuarentena, y a ver si tú lo detectas». Ese bit resulta trivial de eliminar sin ni siquiera tener privilegios, por lo que sería fácil eludir la comprobación base de XProtect.
  • Una actualización muy pobre, tanto en frecuencia como en cantidad: Por poner un ejemplo, como decíamos a fecha de mayo de 2019, XProtect ha recibido solo dos actualizaciones, con solo una firma cada una. la primera de 2019 ocurrió el día 19 de abril (para ese malware “de Windows”), y solo 10 días después, ya actualizó con otra (que introducía una regla para detectar MACOS.6175e25 en sus reglas Yara. De 2009 a 2011, pasó de dos firmas a menos de 20. ¿Cuántas tiene ahora? En su versión 2103, la última de mayo cuenta con 92 firmas (acumuladas en casi 10 años). Son estas:

«OSX.CrossRider.A»,»MACOS.6175e25″,»MACOS.d1e06b8″,»OSX.28a9883″,»OSX.Bundlore.D»,
«OSX.ParticleSmasher.A»,»OSX.HiddenLotus.A»,»OSX.Mughthesec.B»,»OSX.HMining.D»,»OSX.Bundlore.B»,
«OSX.AceInstaller.B»,»OSX.AdLoad.B.2″,»OSX.AdLoad.B.1″,»OSX.AdLoad.A»,»OSX.Mughthesec.A»,»OSX.Leverage.A»,
«OSX.ATG15.B»,»OSX.Genieo.G»,»OSX.Genieo.G.1″,»OSX.Proton.B»,»OSX.Dok.B»,»OSX.Dok.A»,
«OSX.Bundlore.A»,»OSX.Findzip.A»,»OSX.Proton.A»,»OSX.XAgent.A»,»OSX.iKitten.A»,»OSX.HMining.C»,
«OSX.HMining.B»,»OSX.Netwire.A»,»OSX.Bundlore.B»,»OSX.Eleanor.A»,»OSX.HMining.A»,»OSX.Trovi.A»,
«OSX.Hmining.A»,»OSX.Bundlore.A»,»OSX.Genieo.E»,»OSX.ExtensionsInstaller.A»,»OSX.InstallCore.A»,
«OSX.KeRanger.A»,»OSX.GenieoDropper.A»,»OSX.XcodeGhost.A»,»OSX.Genieo.D»,»OSX.Genieo.C»,
«OSX.Genieo.B»,»OSX.Vindinstaller.A»,»OSX.OpinionSpy.B»,»OSX.Genieo.A»,»OSX.InstallImitator.C»,
«OSX.InstallImitator.B»,»OSX.InstallImitator.A»,»OSX.VSearch.A»,»OSX.Machook.A»,»OSX.Machook.B»,
«OSX.iWorm.A»,»OSX.iWorm.B/C»,»OSX.NetWeird.ii»,»OSX.NetWeird.i»,»OSX.GetShell.A»,»OSX.LaoShu.A»,
«OSX.Abk.A»,»OSX.CoinThief.A»,»OSX.CoinThief.B»,»OSX.CoinThief.C»,»OSX.RSPlug.A»,»OSX.Iservice.A/B»,
«OSX.HellRTS.A»,»OSX.OpinionSpy»,»OSX.MacDefender.A»,»OSX.MacDefender.B»,»OSX.QHostWB.A»,
«OSX.Revir.A»,»OSX.Revir.ii»,»OSX.Flashback.A»,»OSX.Flashback.B»,»OSX.Flashback.C»,»OSX.DevilRobber.A»,
«OSX.DevilRobber.B»,»OSX.FileSteal.ii»,»OSX.FileSteal.i»,»OSX.Mdropper.i»,»OSX.FkCodec.i»,»OSX.MaControl.i»,
«OSX.Revir.iii»,»OSX.Revir.iv»,»OSX.SMSSend.i»,»OSX.SMSSend.ii»,»OSX.eicar.com.i»,»OSX.AdPlugin.i»,
«OSX.AdPlugin2.i»,»OSX.Leverage.a»,»OSX.Prxl.2″

Incluyendo Eicar y los primerísimos ejemplares con los que se inauguró Xprotect en septiembre de 2009 (OSX.RSPlug.A, OSX.Iservice).

  • XProtect se fundamenta en reglas Yara a plena vista. Yara es estupendo para la «caza» de malware por parte de analistas, pero no tenemos claro si es lo mejor para la detección, sobre todo si se publican las reglas y se deja claro cómo se detecta y bajo qué condiciones se hace.Esto abre la puerta a simples modificaciones para que los creadores de malware puedan eludirlo tranquilamente.
  • Las reglas Yara no solo hay que hacerlas, sino que hay que hacerlas bien. Escoger la singularidad concreta para evitar falsos positivos, y ponérselo difícil a los atacantes para que, cambiando alguna condición, sigan pudiendo atacar sin variar su payload. En concreto, nos llama la atención en este aspecto lo mucho que confía Apple en el tamaño para detectar malware. Lo hace por lo que entendemos que es «eficiencia».

En esta regla, se espera a que el fichero sea menor que 3500 bytes (los hashes de ejemplo pesan muy poco, apenas 2k) para calcular el hash y así detectarlos. Cualquier fichero descargado menor de ese tamaño, se comparará con unos hashes bien conocidos desde 2016. Primero discrimina por tamaño, y luego detecta hash, ambas variables muy poco relevantes. Y con esta misma estructura de tamaño y hash, podemos encontrar 42 de las 92 reglas Yara de XProtect que discriminan por tamaño y luego confían en hashes para la detección de malware.

No solo se basan en hash. Las reglas Yara de XProtect también usan cadenas significativas para detectar malware y añaden también al final añadiendo el tamaño como condición determinante para detectarlo.

Según esta regla, el malware debe ser de tipo Macho, tener todas las cadenas descritas y además se menor de 200kb. Si contiene todas las cadenas pero es mayor de 200k, la condición no se cumple y no se detectaría. El uso del tamaño en reglas Yara no es extraño ni incorrecto de por sí, pero en estas situaciones y como condición de un sistema de protección (y no de «caza»), no parece muy robusta.

Y con esta fórmula de tamaño discriminatorio, podemos encontrar 27 (un tercio) de las detecciones que se eludirían simplemente modificando el tamaño del archivo. Recordemos que 42 (casi la mitad) lo harían además alterando un solo bit del archivo. Y esto, con solo 92 firmas en su «base de datos» y analizando exclusivamente los programas que vienen por canales muy concretos (Safari, Mail, iChat y Messages). Si quisiéramos hilar más fino, podríamos mencionar que SHA1 se considera ya obsoleto para calcular el hash, pero tampoco importa demasiado en este contexto.

Conclusiones
XProtect no pretende competir con ningún antivirus, es cierto, y está diseñado para detectar malwareconocido. Ahora bien, «malware conocido» no es lo mismo que «muestra conocida». Al menos debería abarcar familias y no ficheros concretos. No se debe esperar mucho de él, sino que debe concebirse como una primera, finísima línea de protección contra las amenazas. Pero pensamos que ni aun así cumpliría con su cometido. Las reglas usan hashes para detectar, son escasas y las definiciones de malware siempre se incorporan mucho después de que el malware haya saltado a los medios. Alguien podría argumentar que quizás esas pocas firmas cubren la mayoría del malware conocido para MacOS, pero aunque no sea cierto, la capacidad de reacción y la fórmula para su detección, dejan en muy mal lugar al sistema en general. Por tanto, con XProtect no se puede esperar una protección real, ni siquiera reactiva ¿Qué se espera entonces con este sistema en MacOS? Simple y llanamente, dar una sensación de seguridad a algunos usuarios que «en condiciones ideales de infección» verán un mensaje tranquilizador en sus sistemas.

En su favor, decir que al menos Apple no es Android (con un sistema de detección como Play Protect poco eficaz, pero al menos justificable) pero sobre todo porque al menos si los usuarios se limitan a descargar del Apple Store, existen ciertas garantías. Al contrario que Google Play y aunque su tienda no está libre de malware, Apple Store es bastante segura, como pasa con iOS y sus aplicaciones.

Y ahora, la eterna pregunta que les gusta tanto a los negacionistas. ¿Necesitas un antimalware en tu MacOS? Diríamos que sí, pero no XProtect. No alimentemos la histeria, pero tampoco a los mitos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.