¿Se desvela una "guerra sucia" en el mundo de los antivirus? (y II)

miércoles, 26 de agosto de 2015

Parece que dos antiguos trabajadores de Kaspersky han acudido a Reuters para denunciar (de forma anónima) que cuando trabajaban en el laboratorio, Kaspersky mantenía un plan mucho más sutil para que los competidores cayeran en el falso positivo una y otra vez, detectando ficheros importantes como malware. ¿Cómo lo hacían?

Existía la guerra sucia, pero... ¿venía de Kaspersky?

Microsoft, AVG y Avast confirman que, efectivamente, han observado estas tácticas de inducir a detectar falsos positivos. Las han comprobado, entre otras razones, gracias a la posibilidad de que cualquiera envíe a VirusTotal cualquier muestra. Se reparten entre todos los laboratorios y aquellos con menos recursos, menos cuidadosos, en una primera clasificación rápida para controlar la avalancha o simplemente porque su fórmula de detección, han cazado erróneamente como malware lo que "alguien" ha adulterado para hacerles caer en el error.

Aunque cualquiera puede hacerlo (atacantes, investigadores, la industria del malware...), si quien lo perpetra es la competencia esto se convierte en un claro sabotaje contra el motor de un competidor. Resulta relativamente sencillo desvelar los puntos débiles y fuertes de los motores a la hora de detectar y crear firmas. Y sobre todo en qué se suelen fijar para calificar un malware como tal. La idea es "manipular" ciertos ficheros para que el motor se equivoque y acabe detectando como malware el goodware. ¿Cómo?

Las firmas estáticas están muy limitadas. Al final, no se trata más que de un trozo de código, una cadena, o una combinación de ellas, características y singularidades en un código (un binario, que no son más que instrucciones) limitado. Y luego intentan extrapolar por similitud para que la firma abarque el máximo... pero nunca demasiado. Existen herramientas que trocean un fichero ejecutable por ejemplo, hasta que se dé exactamente con la parte concreta que hace "saltar" a un antivirus. Es muy sencillo y los atacantes y aficionados están muy acostumbrados a eludir así la detección por firmas. Una vez detectada esa pequeña porción de código o característica, se elimina, se tuerce, se cambia de sitio en el fichero... cualquier truco de programación o compilación es válido hasta que se evite la detección manteniendo el comportamiento. Y vuelta a empezar.

Aunque no se han dado detalles técnicos (y por tanto estamos deduciendo aquí cómo podría realizarse esta técnica), parece que según estos supuestos antiguos empleados de Kaspersky, desde el laboratorio se "inyectaba" o añadía código malicioso en ficheros populares y se enviaban a VirusTotal. Así, los antivirus saltarían. No importaría siquiera que el fichero funcione o sea válido. Lo importante es difundirlo y crear el "efecto dominó". Un motor lo comienza a detectar, crea una firma y el resto se plagia.

Pero, si se inyecta esa cadena, código, característica o singularidad de forma muy especial, por la forma que tienen los motores y los laboratorios de funcionar, puede que incluso el fichero original (goodware), que se ha enviado con la ligera modificación sea detectado finalmente si no se ha sido suficientemente riguroso con la creación de la firma... y así ocurría. Imaginemos la presión en las casas antivirus por actuar rápido y minimizando recursos.
  • Llega un fichero supuestamente dañino desde VirusTotal y lógicamente se quiere detectar/bloquear para sus clientes cuanto antes.
  • No hay tiempo para un análisis concienzudo (nunca lo hay excepto para casos muy particulares) porque parece que está claro, muchos lo detectan (recordemos que incluye código muy reconocido dentro de un archivo legítimo). Se deja en manos de automatismos.
  • El efecto dominó de creación de firma hace que se confíe en el resto de motores porque ya todos lo detectan y parece que "está claro que es malware".
  • Se crea una firma rápida para salir del paso o automatizada pero quizás de forma demasiado genérica y... al incluir esa nueva firma para detectar el fichero bueno "ligeramente adulterado", se escogen las características inadecuadas (que también definen al archivo legítimo) y se acabar por detectar ambos: tanto el "fichero inocuo con la ligera modificación" como ese mismo "fichero inocuo sin ella".
Esta es solo una posibilidad. Otra es saber dónde o cómo (qué características) mira exactamente un motor en un fichero para saber si es malware y modificar o inyectar código malicioso en ese espacio. En la siguiente versión de ese fichero que será legítima, también será marcado como malware aunque ya no contenga esas características porque para el antivirus, uno y otro "se parecen mucho", dejando actuar los "automatismos de extrapolación". Depende del archivo, de cómo funcione el motor y cómo se creen las firmas.

Así que ya tenemos un falso positivo, y para solucionarlo será necesario actualizar la base de datos, retirar esa firma, y volverla a crear.

Y esta era una práctica "habitual" durante 2012 y 2013, es un hecho. Si ha sido Kaspersky de forma orquestada o no... probablemente no. Obviamente lo niegan, y sinceramente, pensamos que no le hacen falta este tipo de técnicas contra la competencia. Aunque fuese discutible lo de su experimento de 2010, su capacidad para detectar APTs desde entonces, sus análisis, su rendimiento como motor... dejan ya clara sus capacidades técnicas. Gozan de buena reputación a nivel mediático y parecen económicamente sanos. ¿Por qué habrían de recurrir a estos trucos? Quizás, podría ser que esas sean precisamente las razones por las que fuentes "anónimas" difunden esta acusación.

¿Pero esto ocurre hoy en día?

Cada vez menos. Han tomado medidas. Los motores y laboratorios de calidad ya no suelen recurrir tanto a las firmas para detectar. Técnicas de detección en la nube o Machine Learning están sustituyendo a los métodos de detección tradicionales. Y sobre todo, los laboratorios se encuentran en medio de un viraje hacia la lista blanca, más que la inabarcable e inconmensurable lista negra de malware. O al menos utilizan la combinación de ambos factores, de forma que se intenta seguir combatiendo el malware con la detección (lista negra), pero también con el mantenimiento de una lista blanca que reduce esa bestia negra de los falsos positivos.

Conclusiones

Interesante historia no por la acusación hacia Kaspersky (que podrá o no ser cierta), sino por recordar y poner sobre la mesa las catacumbas y problemas de la industria que, aunque cualquiera que trabaje día a día con malware puede comprobar e intuir, no son tan conocidas para el público en general que venera todavía (erróneamente) el antivirus como santo grial de la seguridad y única arma necesaria para remediar todo mal.

¿Se desvela una "guerra sucia" en el mundo de los antivirus? (I)
Sergio de los Santos
ssantos@11paths.com