Uso de MD5 para identificadores de malware: ¿riesgos de ataque de colisión?

8

Desde 2004 se sabe que el hash MD5 es vulnerable a ataques de colisión ( actualización - no ataques de "preimagen" - mi error ...). Sin embargo, todavía parece que la gente lo está utilizando para identificar malware. P.ej. los informes sobre el nuevo malware de Flame documentan a personas que se remontan a varios años para descubrir las mismas firmas de md5 en los datos archivados de md5.

¿Qué edad tiene Flame? - Alienvault Labs

Es probable que un atacante se asegure de que todos sus archivos coincidan con el hash md5 de otros archivos que hacen públicos y que parecen inocuos, por lo que confiar en md5 parece peligroso.

No veo referencias a sha256 o incluso sha1, que no hayan visto ataques de colisión (públicos). ¿Cuál es el estado de pasar a mejores hashes para las bases de datos de virus?

Actualización : la inquietud que tenía era que si el db del virus no retenía también copias completas de todos los archivos en cuestión (por ejemplo, porque algunos eran realmente grandes o lo que fuera), y / o si Las personas que buscan en la base de datos no verificaron el contenido completo de los nuevos archivos que están buscando con los archivos archivados, luego un nuevo archivo de un virus malicioso, que coincidía con un archivo "inocuo" antiguo, podría ser descartado por error como no peligroso basado en un partido md5. Pero es de esperar que los investigadores del antivirus retengan y revisen los archivos completos, o de lo contrario serían vulnerables a este ataque.

Entonces, ¿qué tipo de ataques contra los identificadores de malware podrían hacer uso de la facilidad de producir colisiones de md5, y qué pasos se toman realmente en bases de datos hash específicas y software AV para frustrarlos?

    
pregunta nealmcb 30.05.2012 - 15:48
fuente

3 respuestas

6

En primer lugar, tienes razón en que sería mejor usar SHA1, SHA256, SHA2 o alguna función hash más moderna.

Sin embargo, no creo que el riesgo sea muy alto. Para explicar por qué tengo que dar un poco de información sobre los ataques a las funciones hash. Hay dos tipos de ataques de los que preocuparse:

  • Ataques de colisión. Un atacante encuentra dos archivos M (Malicioso), S (Seguro) que tienen el mismo hash. Aquí el atacante puede elegir M y S libremente.

  • Segundos ataques de pre-imagen. Al atacante se le da un archivo C (Común), y debe encontrar un segundo archivo M que tiene el mismo hash que el archivo C . Tenga en cuenta que el atacante no puede elegir C ; Se le da a él. El único grado de libertad del atacante está en la elección de M.

Los segundos ataques de pre-imagen son mucho más dañinos, porque le permiten al atacante hacer cosas que no podía hacer solo con un ataque de colisión. Lo que hay que saber sobre MD5 es que se sabe que es vulnerable a los ataques de colisión. Sin embargo, no se conocen segundos ataques de pre-imagen contra MD5.

Con este contexto, ahora puedo responder tu pregunta. Si bien el MD5 es vulnerable a los ataques de colisión, no hay una forma clara en que un atacante pueda usar esto para causar problemas. Claro, un atacante podría encontrar un archivo malicioso M y un archivo inocuo S que tengan el mismo hash. El atacante podría entonces comenzar a propagar el malware M , de modo que el hash MD5 de M llegue a la lista negra de alguien, y esto podría hacer que algunas personas concluyan falsamente que S es perjudicial. ¿Y qué? S será un conjunto de bytes de apariencia aleatoria. No hay ninguna razón por la que alguien ya tenga S almacenado en sus sistemas, por lo que el hecho de que el atacante pueda activar falsas alarmas en S es básicamente inofensivo.

Un segundo ataque de pre-imagen en MD5 sería mucho más problemático. Le permitiría al atacante elegir un archivo benigno C que se almacena en el disco duro de todos: tal vez un archivo que sea crítico para el funcionamiento del Firewall de Windows, por ejemplo. Luego (si el atacante conocía una forma de realizar un segundo ataque de pre-imagen en MD5), el atacante podría construir un archivo malicioso M que tenga el mismo hash que C , y comienza a esparcir M . Cuando las compañías de antivirus agregan el hash MD5 de M a alguna lista negra, esto podría causar problemas: podría causar que el software antivirus concluya erróneamente que C es dañino, y esa falsa alarma podría terminar deshabilitando el Firewall de Windows en varios sistemas o algo así. Eso sería malo, si fuera posible. Sin embargo, por lo que sabemos hoy en día, un escenario tan malo no es posible, porque nadie conoce ninguna forma de montar un segundo ataque exitoso de pre-imagen en MD5.

Conclusión: si bien sería mejor usar una función hash más moderna en lugar de MD5, no creo que haya mucho potencial para que los malos exploten la práctica actual de usar MD5. El riesgo parece muy bajo.

    
respondido por el D.W. 04.06.2012 - 05:22
fuente
9

Un análisis rápido:

Amenaza : alguien crea un archivo limpio que coincide con el hash MD5 de un archivo malicioso.

Resultado : el archivo limpio se identifica como malicioso, pero no es más que una colisión. Todavía existe otro archivo que coincide y siempre se identificará como el mismo.

Supongo que si esto sucede, podría haber algo de que hablar sobre seguir adelante. Mis conjeturas sobre por qué no lo hemos hecho:

  • Esto no es autenticar el malware, sino identificarlo. Insertar coincidencias falsas positivas tiene un valor limitado. Los verdaderos positivos todavía se encontrarán.
  • Actualmente es universal. Uno puede identificar malware con una sola operación de algoritmo hash. Si cambiamos, deberás comenzar a hacer hashing de cada archivo con múltiples algoritmos, a menos que alguien mantenga un repositorio y pueda publicar nuevos hashes de algoritmos para todo.

Una coincidencia falsa tiene un valor muy limitado, ya que no puedes hacer mucho más que intentar convencer a alguien de que está viendo una pieza de software malicioso que podría ser una pieza diferente de software malicioso ... o simplemente una montón de bits Solo los investigadores que intentan aprender sobre ese malware en particular podrían importarle y deberían darse cuenta de lo que está pasando.

Actualizar

Tengo entendido que las bases de datos de virus no incluyen sumas de comprobación "limpias". Si hay una entrada MD5 coincidente, es para algo que no desea en su sistema a menos que esté intentando investigarlo. Debido a que una sección de un archivo ejecutable puede reservarse para que se llene con cualquier antiguo disparate, es posible crear un archivo de malware que tenga la misma suma MD5 que otro archivo inocuo (un "ataque de colisión"). Si bien no sabemos cómo realizar un "ataque de preimagen" práctico, la naturaleza de diseño de los ejecutables hace que sea bastante probable que un atacante enfocado pueda crear un ataque de colisión como se describe en la página MD5 de Wikipedia . A saber, la estructura ejecutable permite una gran flexibilidad para completar la inserción de cualquier dato de elección que se ignore durante la ejecución. Además, uno podría cargar un archivo no ejecutable de otro modo desde un lanzador que permita la modificación de cualquiera de los datos iniciales o finales del archivo. Eso permite el uso de lanzadores genéricos y colisiones de hash excepcionalmente fáciles, ya que los primeros y últimos bytes pueden ser cualquier cosa.

Dado que las bases de datos no contienen archivos limpios, no obtendrá un falso negativo. Podría obtener un falso positivo si alguien diseñó una pieza de malware con eso en mente. Si estuvieras a cargo de crear la primera base de datos de malware hoy, usarías un algoritmo hash diferente. Por razones históricas y un impacto relativamente bajo de un ataque exitoso de colisión, el MD5 sigue avanzando, aunque ahora no es ideal.

    
respondido por el Jeff Ferland 30.05.2012 - 16:35
fuente
2

Tengo que estar en desacuerdo con las conclusiones que escribió el autor de ese artículo.

  

Hemos encontrado una versión del componente principal (mssecmgr.ocx) que   parece ser compilado a finales de 2008. Puede indicar que Flame   Ha existido por lo menos durante 4 años.

En realidad, todo lo que indica es que el componente principal de una pieza muy grande de malware tiene 4 años. Esto no significa que haya otros componentes principales en uso. Como Flame explota una falla que fue corregida, creo en el 2010.

Actualización: Después de las primeras dos semanas de mirar la Llama. Se descubrió que Flame tenía en realidad varios años. Pudo permanecer oculto porque explota una falla en Servicios de Terminal Server y un ataque de Colisión MD5 contra un Certificado de Microsoft.

Estoy de acuerdo con el resto de la conclusión del autor. No hay duda de que Flame es nueva en el sentido de que es la madre del malware, explota un montón de cosas, en orden a varios ataques sofisticados.

  

Es probable que un atacante se asegure de que todos sus archivos coincidan con el hash md5 de otros archivos que hacen públicos y que parecen inocuos, por lo que confiar en md5 parece peligroso.

Flame no intentó hacer esto. Tu preocupación no está dirigida hacia lo correcto

  

Actualización: la preocupación que tenía era que si la db del virus no se conservaba también   Copias completas de todos los archivos en cuestión (por ejemplo, porque algunos eran realmente   grande o lo que sea), y / o si la gente que buscaba en la base de datos no verificaba el   Contenido completo de los nuevos archivos que están buscando con el archivo   archivos, luego un nuevo archivo de un virus malicioso, que coincide con un antiguo   El archivo "inocuo" puede ser desechado por error como no solo peligroso   basado en un partido md5. Pero esperemos que los archivos completos se conserven y   revisados por investigadores de antivirus, o de lo contrario serían vulnerables a   este ataque.

Todo lo que tengo que decirle a esta actualización es que estás preocupado por lo incorrecto. Estos sitios web de bases de datos de virus conservan una copia del archivo. Las compañías de seguridad también usan más que solo el hash MD5 de un archivo para determinar si un archivo es malicioso.

Las posibilidades de que un archivo real coincida con un hash MD5 de un archivo malicioso son realmente MUY PEQUEÑAS. Así, incluso si un archivo malicioso coincide con un archivo real más que solo el hash MD5 se usa para identificar la amenaza .

La mayoría de las infecciones maliciosas bien conocidas en los últimos 10 años han usado la misma vulnerabilidad, además de las descubiertas entre "fechas de descubrimiento", además de trabajar de formas muy similares.

Todos pensaron que Stuxnet era un troyano realmente avanzado escrito en un lenguaje "personalizado". Venga a descubrir que fue escrito en C y compartió los mismos componentes, como todos los demás hermanos.

    
respondido por el Ramhound 30.05.2012 - 18:11
fuente

Lea otras preguntas en las etiquetas