Video: Como Saber si Tienes Virus Espía en Tu Celular | Eliminar Virus Androd SIN Root 2020 (Noviembre 2024)
Firma digital no rota
El objetivo de firmar digitalmente un documento o archivo es demostrar que el archivo no ha sido modificado. El proceso utiliza una forma de criptografía de clave pública. Firmas digitalmente un archivo cifrándolo con tu clave privada. El hecho de que el archivo cifrado se pueda descifrar usando su clave pública es una prueba de que no ha habido alteración. Si BlueBox hubiera encontrado una manera de modificar realmente un archivo sin cambiar su firma digital, eso habría sido un golpe asombroso para toda la industria de la criptografía. Pero no lo hicieron.
BlueBox informará los detalles completos de su investigación en la conferencia Black Hat en unas pocas semanas. Sin embargo, el investigador de ViaForensics Pau Oliva Fora ha publicado un código de prueba de concepto que ilustra el enfoque adoptado.
En verdad, es muy, muy simple. Los archivos APK se empaquetan usando una versión del extenso algoritmo de archivo ZIP. La mayoría de las implementaciones de ZIP no permitirán dos archivos con el mismo nombre en un archivo, pero el algoritmo en sí no prohíbe esa posibilidad. Al verificar la firma digital de una aplicación, el sistema operativo Android mira el primer archivo coincidente, pero cuando realmente ejecuta e inicia el archivo, toma el último . Para troyanizar una aplicación, entonces, todo lo que necesita hacer es calzar su código malicioso con un nombre que ya existe dentro de la aplicación. La demostración de Fora es solo unas pocas docenas de líneas de código Java.
Otro ataque estructural
Un investigador chino que escribió en su blog como Android Security Squad encontró intrigante la demostración y buscó otras formas de subvertir el proceso de verificación. Leer la publicación traducida por Google es un poco difícil, pero parece que el ataque se basa en un concepto de 101 niveles de informática.
Los programas de computadora almacenan números de conteo en colecciones de bits de tamaño fijo. Por ejemplo, con ocho bits puede representar números del 0 al 255. Si es necesario representar números negativos, la convención de larga data es que el bit más a la izquierda indica un número negativo. Con ocho bits, entonces, también puede representar números del -128 al 127. El número binario 11111111 representa 255 o -1, dependiendo de si está destinado a ser un número sin signo o con signo.
Android Security Squad examinó el formato del encabezado del archivo APK y encontró un campo de datos que se supone que es un desplazamiento positivo, pero que se almacena como un entero con signo. Forzar este campo a un valor negativo específico hace que el cargador de APK ejecute el código malicioso, en lugar del código firmado digitalmente ya verificado. OK, es un poco más complejo, pero así es como funciona.
Seguir con Google Play
Ninguno de estos hacks en realidad subvierte el mecanismo de firma digital de Android. Por el contrario, ambos aprovechan las peculiaridades de la estructura APK para hacer que la firma digital sea irrelevante. Además, ninguno de ellos permitirá que una aplicación troyanada se cuele más allá del análisis de Google. Google ha actualizado específicamente Google Play para filtrar aplicaciones troyanizadas utilizando el ataque de "clave maestra"; incluso sin ese paso, la seguridad estándar casi seguramente bloquearía cualquier tipo de aplicación troyanizada.
La lección es clara. Siempre obtenga sus aplicaciones de fuentes legítimas, siempre verifique que el nombre del desarrollador sea válido y configure su teléfono para que no permita instalar aplicaciones de "fuentes desconocidas". Presta atención a los permisos que solicita una aplicación y prepárate para cancelar una instalación sospechosa. Si su proveedor ofrece una actualización de Android, instálela siempre. ¡Es solo sentido común!