05 junio 2012

Flame y los certificados digitales

Flame no deja de sorprendernos, una vez se han liberado los primeros reportes sobre los detalles técnicos, empiezan a salir detalles sorprendentes.

El último ha motivado incluso que Microsoft haya lanzado un parche de emergencia para 'blacklistear' unos cuantos certificados digitales de su infraestructura.

¿El motivo? Por lo visto, Flame es capaz de hacer un ataque MitM a los equipos de una red y suplantar Windows update enviando una falsa actualización que infecte el equipo

Evidentemente para que un equipo Windows acepte una actualización desde Windows Update, esta ha de estar firmada digitalmente por Microsoft.

Parece que Flame es capaz de enviar un fichero llamado WUSETUPV.EXE como parte de una actualización y hacer que el equipo la instale.

Ese fichero, está firmado digitalmente por Microsoft, como se puede ver en la captura del post de  F-secure



El fichero está perfectamente firmado digitalmente.

Los detalles de cómo ha sucedido esto aun no están claros y el advisor de Microsoft no me aclara excesivamente el escenario.

Según leo en el advisor de Microsoft, durante el proceso de licenciado de Terminal Server, se emiten a modo de licencia unos certificados cuyo origen es una CA de Microsoft (lógico) y parece ser, que los creadores de Flame se las han ingeniado para hacer que esos certificados, destinados originalmente a ser licencias de Terminal Server, se conviertan en certificados de tipo 'authenticode'

En este punto, todo se vuelve gris y poco claro. Personalmente no tengo acceso a uno de esos certificados para licencias de Terminal Server por lo que no puedo examinar su fisonomía ni sus campos.

No obstante, aquí va mi teoría: Si leemos con atención el advisor de Microsoft, nos encontramos esta línea que a mi, me ha llamado la atención:

'When we initially identified that an older cryptography algorithm could be exploited and then be used to sign code as if it originated from Microsoft'

Muy poco claro y descriptivo, no obstante, ese 'older cryptography algorithm' tiene toda la pinta de ser MD5 y ese 'could be exploited' me suena bastante al ataque del que ya hablamos tiempo atrás sobre MD5 y alteración de certificados digitales

A modo de resumen (aunque lo mejor es leer el post) un certificado tiene ciertos campos que, entre otras cosas, definen su propósito en función del perfil de certificado que sea. Esos datos se 'hashean' y se firman por parte de una CA válida para darles autenticidad. 

Si el algoritmo empleado es MD5, se pueden alterar esos campos (añadiendo propiedades ...) y mediante colisiones, hacer que la firma digital siga siendo válida

De momento, podemos ver que los certificados digitales de esas CAs bloqueadas (al menos 2 de los tres certificados bloqueados) emplean MD5 como algoritmo de hash



Si alguien tiene a mano algún certificado de los emitidos por estas CAs como licencias, y puede comprobar el algoritmo empleado, aclararía bastante el escenario.

UPDATE: Un amable lector me ha enviado una muestra de WUSETUPV.EXE y tal y como sospechaba, el certificado emplea MD5 como algoritmo



Se puede ver en las propiedades del certificado como ha sido adulterado para añadir el propósito de firma digital de software



UPDATE: Teoría confirmada http://blogs.technet.com/b/srd/archive/2012/06/06/more-information-about-the-digital-certificates-used-to-sign-the-flame-malware.aspx

14 comments :

Asdfgh dijo...

ahora hay que desconfiar de los certificados digitales de Microsoft...

Tio Pepe Puerta del Sol dijo...

Hola Yago,

Y digo yo, ¿no es más fácil que alguien dentro de Microsoft los haya firmado?

Buen post y un saludo

Yago Jesus dijo...

 Yo creo que no, eso supondría que el parche liberado, etc es una cortina de humo y si saliera a la luz sería un torpedo a la línea de flotación para Microsoft

Rodrigo L. dijo...

Que se mantengan certificados con ese nivel de confianza basados en MD5 la verdad es que es de película de Ozores...

lost-perdidos dijo...

Bueno, viéndolo así también podríamos pensar que un atacante se ha colado en los servidores de Windows Update y lo ha firmado.

Tomas dijo...

En el libro del Kit de recursos de RDS se explica el funcionamiento de las licencias de TS y el procedimiento que usa mediante certificados SSL para licenciar el servidor de licencias de RDS. básicamente el serv. LS se comporta como un root certificate para crear y enviar certificados al servidor de RDS. Un día realizando prueba constate que esos certificados se almacenan en una rama del registro. seguramente los malos habrán investigado y han usado ese root certificate para generar certificados falsos. Un saludo.

Alwar dijo...

Voy a ser un poquito (mucho) paranoico, pero tratandose de certificados de microsoft, y que las victimas del virus están en oriente medio,  ¿podria estar el gobierno de EE.UU detrás?

Invitado dijo...

No conozco los detalles... Pero no se yo si tiene que ver con colisiones de MD5... Almenos, no desde luego como se describe aqui. Piensa que para poder hacer este tipo de ataque tienes que poder manipular A LA VEZ el certificado a firmar y el nuevo. No vale tener uno fijo , manipularle unos bits y ale tener el mismo MD5. No consisten en eso los ataques descubiertos. Poder manipular unos datos fijos y que de un MD5 dado es un ataque de tipo preimagen, y hasta donde yo se, eso todavia no existe para MD5.

Invitado dijo...

Vamos, que apuesto a que si ese cert fuera SHA-1 hubiera pasado lo mismo. En definitiva, que es por las caracteristicas del certificado involucrado en la parte de los TS, sin tener en cuenta el algoritmo utilizado.

Yago Jesus dijo...

 Hombre, el certificado sin la clave privada, no sirve para nada, estaría bien si tienes a mano URLs con información sobre el procedimiento que las aportases

Yago Jesus dijo...

En teoría, Microsoft ha hecho mucha campaña de imagen, enseñando el código fuente a muchos países para evitar ese tipo de suspicacias, no obstante, todo puede ser

Yago Jesus dijo...

 En el caso del 2008, efectivamente inyectaron CSRs ad-hoc para conseguirlo, yo, personalmente, desconozco como funciona el tema de licenciado en terminal server, ignoro si al final lo que envías es un CSR o que ...

Enrique Soriano dijo...

MD5 es vulnerable a colisiones con prefijo elegido, que es más que tener simplemente colisiones, pero aun así yo tampoco veo como han podido forjar el certificado X.509 falso con los ataques que se conocen para MD5.

Alwar dijo...

Lo que me mosquea tanto, es las molestias que se han tomado para que no se propague a lo "epidemia" si no como un ataque concreto.