Los Troyanos de Android Siguen Ofreciendo Novedades y Nuevos Métodos de Expansión

Hace poco hablamos del método MasterKey que permite a un atacante introducir un troyano en aplicaciones de Android sin modificar su firma de identidad. Hoy profundizamos en este asunto y comentamos una nueva fórmula que, según investigadores chinos, permitiría conseguir el mismo resultado...

Sergio Méndez Galindo
Sergio Méndez Galindo
17 de July · 576 palabras.
x

🕘 Resumen

La firma digital se utiliza para demostrar que un documento o archivo no ha sido alterado y se realiza mediante el uso de una clave criptográfica pública. BlueBox ha encontrado una forma de modificar un archivo sin alterar su firma digital, lo que demuestra que no siempre es posible confiar en las firmas digitales para asegurar la integridad de los archivos. Los archivos APK utilizados por Android se empacan utilizando una versión del algoritmo de compresión ZIP que permite la posibilidad de tener dos archivos con el mismo nombre en el mismo paquete. Cuando se comprueba la firma digital de una aplicación en Android, el sistema se fija en el primer archivo coincidente, pero al ejecutar el archivo, toma la última versión. Por lo tanto, es posible troyanizar una aplicación introduciendo un código alterado en un archivo con el mismo nombre. Un investigador chino también ha demostrado cómo se pueden burlar los procesos de verificación al manipular los números de recuento en colecciones de bits de tamaño fijo. Estos ataques ponen en duda la confianza en las firmas digitales como un medio seguro de garantía de integridad de los archivos.
Manteniendo intactas las firmas digitales

El objetivo primordial de firmar digitalmente un un documento o archivo es demostrar que el mismo no ha sido alterado. El proceso emplea un tipo de clave criptográfica pública. Se puede firmar un archivo o programa a través de encriptación mediante nuestra llave “privada”. El hecho de que un archivo encriptado pueda ser desencriptado mediante nuestra clave pública sería la prueba de que no ha habido alteraciones. BlueBox ha encontrado una forma de modificar un archivo sin cambiar su firma digital un ápice.

El laboratorio informará de todos los detalles de su investigación en la conferencia Black Hat que se celebrará en las próximas semanas. Sin embargo, la empresa ViaForensics ha reportado una prueba de concepto de código que ilustra esta situación.

En realidad esto es muy simple. Los archivos APK son empaquetados usando una versión del algoritmo de compresión ZIP. La mayoría de implementaciones ZIP no permitirán dos archivos con el mismo nombre contenidos en un mismo paquete, pero el algoritmo en si mismo no prohíbe esa posibilidad.

Cuando tiene que comprobar la firma digital de una aplicación, el sistema Android se fija en el primer archivo coincidente. Pero en el momento de ejecutar el archivo, sin embargo, toma la última versión. Para troyanizar una aplicación, por tanto, todo lo que necesitamos es “colar” nuestro código alterado usando un nombre que ya esté contenido en la propia aplicación.

Rompiendo la estructura del programa

Un investigador chino ha publicado en su blog Android Security Squad una demostración sobre cómo realizar otro tipo de ataques para permitir a un atacante burlar el proceso de verificación. Leyendo el post en cuestión -está en chino y es un poco pesado- parece ser que el ataque recae sobre el concepto Computer Science 101-level.

Los programas de ordenador almacenan números de recuento en colecciones de bits de tamaño fijo. Por ejemplo, con 8 bits podemos representar números entre 0 y 255. Si es necesario representar números negativos, el método más común es que el bit situado más a la izquierda indique el valor negativo. Con 8 bits, por tanto, podemos representar números de -128 a 127. El número binario 11111111 representa tanto 255 como -1, dependiendo de si se trata de un número firmado o sin firmar.

Android Security Squad se situó sobre el encabezado del archivo APK y encontró un campo de datos, asumido en principio como un rango positivo, pero que era almacenado como un número entero firmado. Forzando este campo a un valor específico negativo habilitará al “cargador” de APKs para ejecutar el código malicioso en lugar de cargar el código previamente verificado. Bien, realmente es algo más complejo, pero básicamente asï funcionaría.

Google Play sí garantiza la seguridad

Ninguno de estos ataques vulnera activamente el mecanismo de firmas digitales de Android. En lugar eso, se benefician de fallos en la estructura para convertir la firma digital en irrelevante. Además, ninguno de estos métodos activará una aplicación troyanizada escondida tras el análisis de Google.

Google ha actualizado de forma específica Play Store para filtrar aquellas apps que han sido troyanizadas mediante “master key”. Incluso sin esta mejora, lo más probable es que las aplicaciones de seguridad (que todos deberíamos tener instaladas en nuestro dispositivo) neutralizarán la práctica totalidad de apps troyanizadas.

Programas PC y software para acelerar el pc en nuestra web Mejor Antivirus

Comparte tu conocimiento y tus intereses con el mundo.

Publica un artículo →