Nueva herramienta: GmtCheck. ¿De dónde viene esta app de Android o applet?ElevenPaths 10 febrero, 2014 Existen millones de applets maliciosos (ficheros JAR) y apps de Android (ficheros APK) ahí fuera. ¿De dónde vienen? ¿De qué país? ¿Al menos, cuál es su zona horaria? En un estudio forense, puede ser relevante conocer (o al menos establecer indicios) si provienen de Rusia, Brasil, China, la India o Estados Unidos. Veamos cómo. Los ficheros dentro de los ZIP Los APK (apps de Android) y los applets (y programas Java) vienen todos del mismo formato: son un fichero ZIP. Esto quiere decir que comparten buena parte de las especificaciones PKzip. A la hora de crear un fichero ZIP, el atributo «fecha» de modificación de cada fichero se almacena dentro del ZIP. Se puede comprobar simplemente abriendo un fichero con cualquier herramienta. La forma en la que se almacena este dato es curiosa, y hablaremos de ella en alguna otra entrada. La parte interesante es que el atributo «fecha y hora de modificación» con el que se almacenan es el mismo que el del sistema en el que se han compilado. También, que hay ficheros que se crean justo cuando se compila el programa, como el manifiesto (.mf). Pero, no se da ningún «offset» a esa hora, así que este dato por sí mismo no permite saber si el APK o el JAR está creado en un país concreto. Un fichero dentro del ZIP con fecha de modificación a las 23:45 no significa nada por sí solo. ¿Las 23:45 de qué país? Fechas de modificación de los ficheros dentro de un APK Ficheros firmados y certificados Algunos applets se firman, de forma que pueden escapar de la sandbox de Java y atacar a los usuarios. Los APK casi siempre están firmados, porque Google Play y Android dicen que así debe ser para usarlo en su plataforma. Cuando están firmados, se añade un certificado dentro de los ficheros ZIP. Este certificado está en una estructura PKCS7, que es un fichero con extensión (entre otras) RSA o DSA en el directorio META-INF. Los certificados puede que estén autofirmados. Esto es gratis y los atacantes no tienen que demostrar a nadie quiénes son en realidad. Atacantes y certificados Fecha de creación del certificado… «Válido desde…» Los atacantes odian los certificados firmados por CAs, pero les encantan (y tienen que hacerlo) los certificados autofirmados. Son gratis y desechables. Pueden crear un certificado autofirmado ad-hoc para una app y nunca usarlo más. Eclipse y otras plataformas de desarrollo ayuda en esta tarea de crear expresamente certificados a la hora de compilar ficheros apk, como último paso antes de enviarlo a Google Play. Los certificados se almacenan dentro de los APK cuando se crean. Y aquí está el truco. Su hora de creación se almacena sin «zona horaria, o sea, en UTC. En concreto en formato YYMMDDHHMMSSZ. La Z corresponde a «hora zulú», que es UTC o a efectos prácticos,, casi igual que GMT+0. time zone. Vista en formato ASN.1 de la fecha de un certificado Como curiosidad, si un certificado contiene una fecha más allá de 2049, se usa un formato llamado «generalizado», que es fundamentalmente el mismo pero incluye la especificación completa del año con cuatro cifras. YYYYMMDDHHMMSSZ. Poniéndolo todo junto Así que por un lado tenemos la fecha de sistema del creador, y la hora UTC, que no es más que GMT+0. Solo tenemos que asumir que el certificado y los ficheros son creados justo en el mismo momento para hacer las cuentas y calcular el «offset» de la zona horaria. Si un fichero manifest o de firmas (que son los últimos creados en la compilación de un JAR o APK) contiene la fecha de sistema 16:00, 1 de enero de 2014, y la hora UTC del certificado pone que fue creado a las 15:00 del 1 de enero de 2014, si asumimos que se crearon en el mismo momento, podríamos decir (a menos que el atacante haya modificado su hora de sistema) que el atacante vive en una zona horaria GMT+1. Hora UTC – Ficheros ZIP… en su diferencia está el offset y, por tanto, la zona horaria (fuente del mapa: timeanddate.com) La herramienta que hace el cálculo Hemos creado una herramienta que realiza el cálculo. Lee un fichero JAR o APK y, si está firmado: Intentará extraer la hora de creación (UTC) de un certificado. Intentará leer la hora de modificación del último fichero creado en la compilación (normalmente el fichero .sf en el directorio meta-inf). Hará las cuentas y dirá en qué zona horaria vive el desarrollador, asumiendo que la creación del certificado y la compilación han ocurrido en el mismo momento (minuto arriba, minuto abajo) y que el desarrollador no ha modificado su hora de sistema. Estos son algunos ejemplos reales: Una app fraudulenta desde España Malware desde E.E.U.U Una aplicación falsa desde Hong Kong Este APK es de una aplicación india falsa. Teen Patti poker La herramienta está disponible en Python y compilada en C#. Ambas pueden ser descargadas desde este enlace: http://elevenpaths.com/downloads/gmtcheck.zip Invitamos al uso de la herramienta. Sergio de los Santos ssantos@11paths.com @ssantosv Detectados (muchos) Flash Player falsos en Google Play… y cuánto han ganado con las estafasMITM en GSM: ataque con falsa estación base (I)
Carlos Rebato Criptografía, una herramienta para proteger los datos compartidos en la red Actualmente, la Ciberseguridad representa un aspecto primordial en las empresas. No obstante, cada día surgen nuevos modos de atentar contra ella. Muchos se han preguntado: ¿de qué manera las...
Roberto García Esteban ChatGPT y Cloud Computing: un matrimonio bien avenido ChatGPT (quizá no sepas que son las siglas de Chat Generative Pre-Trained Transformer) está en boca de todos por su impresionante habilidad para generar textos que parecen escritos por...
David Prieto Marqués La importancia del control de acceso: ¿está tu empresa protegida? Por David Prieto y Rodrigo Rojas En un mundo cada vez más digitalizado y complejo, la seguridad de la información es fundamental para las empresas. A medida que las empresas...
Telefónica Tech Boletín semanal de Ciberseguridad, 22 – 26 de mayo GitLab parchea una vulnerabilidad crítica GitLab ha abordado una vulnerabilidad crítica que afecta a GitLab Community Edition (CE) y Enterprise Edition (EE) en la versión 16.0.0. En concreto, dicho fallo...
David García ¿Salvará Rust el mundo? (II) Segunda entrega en la que descubrimos cómo Rust, el lenguaje de programación de código abierto centrado en la seguridad, mejora el panorama en cuanto a vulnerabilidades basadas en errores...
Sergio de los Santos Cuatro hitos en Ciberseguridad que marcaron el futuro del malware Un recorrido por los 15 años que ha dedicado Microsoft para consolidar una estrategia que ha repercutido en la Ciberseguridad a nivel global
@Anónimo, disculpa, por ahora no tenemos la intención de subir el código fuente del C#, aunque tienes la versión en Python. Muchas gracias por el interés. Responder