martes, 5 de junio de 2012

TheFlame, el sueño de todo creador de malware

No por su funcionalidad, sino por el salvoconducto con el que viene acompañado: está firmado por Microsoft. Esto es el sueño de todo creador de malware, por la forma en la que actúan las casas antivirus ante esta garantía, es seguro que se trata de parte de la clave del éxito por la que TheFlame ha permanecido oculto durante al menos 5 años.

Microsoft publicó el domingo una actualización de su repositorio de certificados. Revocaba (marcaba como "no confiables") a tres autoridades de certificación intermedias. La explicación oficial deja algunas lagunas. En algún momento, alguien consiguió manipular un certificado que se usa para licencias de Terminal Server, y firmar código con él. Esto es un grave error por parte de Microsoft. Como explica SecurityByDefault, los certificados tienen unas funciones concretas cuando son creados, y no deben mezclarse.

Microsoft habla también de "older criptography", lo que lleva inmediatamente a pensar en MD5. Al comprobar que los certificados revocados usan ese tipo de hash, más o menos encaja. Si unimos las dos piezas, tenemos que de alguna manera los atacantes han forzado un certificado destinado a Terminal Server y han conseguido firmar código con él, validando hacia arriba la cadena de certificación por ser "débil" la validación de las autoridades certificadoras intermedias. El hecho de que haya revocado toda una autoridad intermedia, en vez de un simple certificado, indica que el problema podría ir más allá. De hecho, lo inquietante del comunicado de Microsoft es:

"The Flame malware used a cryptographic collision attack in combination with the terminal server licensing service certificates to sign code as if it came from Microsoft. However, code-signing without performing a collision is also possible. This is an avenue for compromise that may be used by additional attackers on customers not originally the focus of the Flame malware. In all cases, Windows Update can only be spoofed with an unauthorized certificate combined with a man-in-the-middle attack."

O sea, es posible, sin necesidad de colisión, firmar código con este tipo de certificados que vienen de las licencias de Terminal Server. Por eso preventivamente han revocado las entidades a ese nivel.


El certificado

En concreto hablamos de 1d190facf06e133e8754e564c76c17da8f566fbb, el usado para firmar el componente de TheFlame. Ya todo el mundo sabe que fue firmado el 28 de diciembre de 2010. Pero lo curioso es que en realidad caducó el 19 de febrero de 2012. Esto quiere decir que el certificado ya no era válido de por sí, aunque no estuviera revocado. También alimenta la teoría de que el atacante no pudo elegir este dato. Si yo fuese un atacante y crease un certificado "a la carta" no lo haría caducar en febrero de 2012 sino mucho más adelante. Confirma la teoría de la colisión.



El secreto de su éxito

Stuxnet, también estaba firmado,pero con un certificado de una compañía a la que claramente, le habían robado la clave privada de los certificados. El secreto del éxito de TheFlame para pasar desapercibido, es que está firmado no por cualquier compañía, sino por Microsoft que, como dijo Mikko Hypponen de F-Secure, es "el santo Grial" del malware. Esto quiere decir que los antivirus puede que ni se molestaran en analizarlo o que, por muy extraño que resultara su comportamiento, no se arriesgaran a clasificarlo como malware. Al fin y al cabo, Microsoft nunca jamás firmaría malware... ¿verdad? Todo lo firmado por Microsoft está en listas blancas, casi por definición. Cuando un antivirus ha cometido el enorme error de clasificar un software legítimo (firmado o no) de Microsoft como malware, el sistema puede dejar de funcionar (los componentes críticos de Windows suelen estar firmados)... simplemente no arriesgan. Sería un gran varapalo a la imagen de la compañía si se comete un error de este tipo.

Desinformación

Queríamos también destacar que se está informando de una manera incorrecta sobre la actualización de Microsoft. No corrige ninguna vulnerabilidad, y no podría permitir (o en todo caso sería extremadamente improbable) que se usara para crear phishings. La actualización de Microsoft simplemente deja de confiar en ciertas entidades certificadoras intermedias, y está destinado a prevenir la aparición de más malware firmado por Microsoft.

Más información:

Microsoft certification authority signing certificates added to the Untrusted Certificate Store

Security Advisory 2718704: Update to Phased Mitigation Strategy

Flame y los certificados digitales

Microsoft Update and The Nightmare Scenario


Sergio de los Santos
Twitter: @ssantosv


10 comentarios:

  1. Gracias.
    Dos cosas... rectificad el 19 de diciembre.
    Y otra cosa... yo pondría el certificado que caducara esa fecha, porque puedo tener otro nuevo que esté certificado en 2012 y caduque en 2014... ya que si lo han podido hacer con uno, quién no dice que lo puedan hacer con más y esa sea la manera de permanecer tanto tiempo en el anonimato.
    Un saludo.

    ResponderEliminar
  2. En esta oración hay un problema "Ya todo el mundo sabe que fue firmado el 28 de diciembre de 2010. Pero lo curioso es que en realidad caducó el 19 de diciembre de 2012" al final no es 2012 es 2011.

    ResponderEliminar
  3. En realidad es febrero, en vez de diciembre. Corregido. Gracias.

    ResponderEliminar
  4. Supongo que todos los que vienen siguiendo esta noticia no se ven asombrados por esto.
    O sea, quién está detrás de The Flame? El mismo estado que dice temer ataques cibernéticos y que por lo tanto construye gigantescas instalaciones para "defenderse" (http://www.clarin.com/mundo/EEUU-construye-secreto-espionaje-mundo_0_704329613.html)?
    Justo tiene un certificado de Microsoft?
    Y Microsoft da explicaciones poco creibles...
    MMMMMMMMMMM

    ResponderEliminar
  5. Gran artículo, muchas gracias.

    Te quería hacer una pregunta en relación a la validación "débil" que comentas.

    Más exactamente, en la frase "se ha conseguido firmar código validando hacia arriba la cadena de certificación por ser "débil" la validación de las autoridades certificadoras intermedias."

    Estoy intentando buscar los certificados de las CAs intermedias que se ha revocado, y no lo encuentro. Qué tipo de validación tienen para considerarlos como "débil"? Entiendo que tanto CRL como OCSP son métodos válidos. Quizás no tienen ningún método (ni AIA ni CRLDP).

    ResponderEliminar
  6. ¿Nadie ha podido llegar a pensar que esto puede ser algo "consentido" por parte de Microsoft (por ejemplo presionado por el gobierno de EEUU) y que les hemos pillado con las manos en la masa... Microsoft dice que la culpa es suya y el año que viene todo el gobierno de EEUU renueva todas las licencias de Microsoft que tengan... ¿fácil, no?

    ResponderEliminar
  7. Joder, lo último que esperaba de visitantes de un sitio serio como este era que publicaran teorías conspirativas...

    ResponderEliminar
  8. @Mercurio

    Los certificados deben estar en el certmgr.msc de tu Windows. Las autoridades firman hashes, y el tipo de validación que me refiero es que utilizan MD5.

    ResponderEliminar
  9. Teorías conspirativas?
    Primero: el sitio es serio y respetable.
    Segundo: cada uno opina a su parecer. No se puede prohibir ni molestar eso, verdad?
    Tercero: cierto, me olvidé, vivimos en un mundo perfecto, donde todos somos buenos, nadie acumula poder, nadie hace lobby, nadie bombardea países basándose en información mentirosa, etc.

    ResponderEliminar