4 feb 2014

Malware que modifica ejecutables sin alterar su firma

Microsoft acaba de arreglar (a medias) un método que permitía alterar un fichero firmado con Authenticode. Aunque el método fue descubierto en 2009, no ha sido  hasta ahora, cuando se ha observado que ciertos programas han comenzado a usar la fórmula, que ha introducido una corrección (que todavía no se activa por defecto). Se trataba de aprovechar un fallo de diseño de Authenticode. Veamos cómo funcionaba.

Varios métodos para cambiar la integridad sin alterar la firma

Existían varios métodos para alterar una imagen de un binario firmado sin que el sistema se quejase de que la firma era incorrecta (de que se había alterado su integridad). El parche MS12-024, de abril de 2012, corrige algunos. Tiene el CVE-2012-015 y lo descubrieron Robert Zacek e Igor Glucksmann, de Avast. No se había observado en malware aún.  Pero sí que existía un problema pendiente de arreglar. El truco era muy sencillo.

Ya hemos hablado en varias ocasiones de Authenticode en este blog. Fundamentalmente, cuando se firma un binario, se calcula el hash de todo el flujo de datos del menos algunos pequeños huecos que "se salta": La cabecera del fichero llamada "Security directory RVA" (también llamada Certificate Table RVA) y el checksum del fichero completo.

En 2009 se comprobó que era posible además añadir código al final de un ejecutable, sin alterar la firma. Aunque publicaron herramientas para conseguirlo, se demuestra manualmente de manera muy sencilla, con cualquier editor hexadecimal. El truco consiste en que se puede añadir código más allá del final del fichero y modificar las cabeceras correspondientes de tamaño. La última parte del fichero (entre 1 y 4 kbs), cuando se firma, corresponde a la estructura PKCS que contiene la firma en sí. En esta estructura se encuentra el certificado y toda la información criptográfica de la firma. Para engañar a Authenticode, se le puede simplemente indicar al fichero en su cabecera que la estructura PKCS es un poco más larga (cambiar el valor del tamaño) y que abarque la parte añadida. Así de simple.

Contenido completo en fuente original ElevenPath

Suscríbete a nuestro Boletín

0 Comments:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!