En la primera y segunda parte se ha realizado un análisis de la información (gathering) con el objetivo de disponer de una completa visión sobre la aplicación (alcance y magnitud). En este artículo se van a describir los pasos para realizar una completa revisión del código fuente de la aplicación, es lo que se conoce como Análisis Estático.
INDICE:
- OWASP: Metodología para análisis de Seguridad en Aplicaciones Móviles (I)
- OWASP: Metodología para análisis de Seguridad en Aplicaciones Móviles (II)
- OWASP: Metodología para análisis de Seguridad en Aplicaciones Móviles (III)
E2: Static Analysis
En esta etapa se llevará a cabo una revisión del código fuente de la aplicación, esto puede realizarse de dos formas diferentes:
1 . Obteniendo el código fuente disponible y proporcionado por el equipo de desarrollo de la aplicación. En caso de ser una aplicación open-source, se accedería a su repositorio público.
1 . Obteniendo el código fuente disponible y proporcionado por el equipo de desarrollo de la aplicación. En caso de ser una aplicación open-source, se accedería a su repositorio público.
2. Utilizando ingeniería inversa, de forma que se obtiene el código de la aplicación utilizando de-compiladores y herramientas de manipulación a bajo nivel.
Desde el punto de la seguridad los mejores resultados de una auditoria de aplicaciones se suceden cuando se tiene pleno acceso al código fuente de la aplicación, y se dispone de un entorno de pruebas para la ocasión.
A continuación, se detallan las actividades y tareas en las que se divide una Auditoria de código para aplicaciones móviles.
E2.A1: Requisitos necesarios para la Auditoria de Código
E2.A1.T1 Obtener el código fuente de la aplicación a auditar.
E2.A1.T2 Revisión e identificación de los permisos requeridos por la aplicación (AndroidManifest.xml, iOS Entitlements).
E2.A1.T3 Revisión de las configuración de la aplicación en busca de estados incompletos o errores, configuración insegura, etc.
E2.A1.T4 Identificación y listado de las librerías de terceros utilizadas por la aplicación móvil.
E2.A1.T5 Comprobar si el dispositivo Android es posible obtener acceso root / jailbreak, si es así, buscar información sobre como es posible realizar con éxito el proceso.
E2.A1.T6 Revisar e identificar las librerías dinámicas que son cargadas por la aplicación para su funcionamiento.
E2.A1.T7 Identificar los permisos que la aplicación solicita para su funcionamiento, y comprobar que dichos permisos son realmente necesarios para su correcto funcionamiento, algunas aplicaciones requieren más permisos de los que realmente necesita.
E2.A1.T8 Identificar los puntos de entrada de información, y comprobar los controles de seguridad aplicados, Ejemplos:
> Recepción de SMS
> Lectura de datos de una WEB
> Lectura de datos de un fichero almacenado en la tarjeta SD.
E2.A2: Revisión del proceso de Autenticación
E2.A2.T1 Identificar las líneas de código que se encargan de manejar la autenticación de los usuarios a través de la interfaz gráfica.
E2.A2.T2 Analizar y evaluar el posible uso de técnicas de ataques de fuerza bruta para la obtención del acceso.
E2.A2.T3 Identificar y determinar que otros métodos, aparte del user / password, utiliza la aplicación:
> Información contextual (localización, IMEI, etc)
> Certificados
> Gestión de las sesiones de usuario (intercambios de información de forma segura, etc)
E2.A2.T4 En caso, de detectar la utilización de métodos visuales como método de contraseña, se deberá revisar el método de mapeado utilizado con objeto de verificar que se utiliza con un adecuado nivel de entropia.
> Información contextual (localización, IMEI, etc)
> Certificados
> Gestión de las sesiones de usuario (intercambios de información de forma segura, etc)
E2.A2.T5 En caso, de que la aplicación se comunique con otras aplicaciones, se por el medio que sea (WiFi Direct, Android Beam, NFC, etc), se deberá revisar la gestión adecuada de la autenticación remota de los usuarios, prestando especial interés en la gestión de los errores de autenticación (fail logon).
E2.A2.T6 En caso de utilizar el método Single Sign On, identificar que método esta utilizando (librerias,etc)
E2.A2.T7 Si se utiliza los SMS para la autenticación, comprobar que no se transmite información sensible comprometedora, utilización de OTP (Password de una sola vez), ¿Que otras aplicaciones tiene acceso a dichos datos?
E2.A2.T8 En caso de utilizar las notificaciones Push ¿Como gestionar la aplicación la verificación de la identidad del servidor de los datos?
E2.A3: Revisión de los niveles de Autorización de la aplicación
> Identificación de los algoritmo de cifrado utilizados.
> Examinar el método de gestión de la claves de cifrado.
> Identificar los puntos débiles de dicho método de cifrado.
E2.A4.T2 Identificación y localización de los puntos donde la aplicación almacena cualquier tipo de información (tmp, SD, etc..), incluidos los servicios de backup en la nube (Dropbox, Google Drive, etc)
E2.A3: Revisión de los niveles de Autorización de la aplicación
E2.A3.T1 Identificar y revisar los permisos que se aplican sobre los ficheros creados durante la ejecución de la aplicación.
E2.A3.T2 Verificar que la aplicación no tiene acceso a otras funcionalidades fuera de los establecido en su rol.
E2.A3.T3 Identificar y localizar puntos potenciales de escalada de privilegios como son:
> Fichero en texto plano
> HTTP
E2.A3.T4 Identificar puntos conflictivos del código fuente de la aplicación que pueden saltarse el flujo normal de funcionamiento de la misma. Ejemplo: Puntos de excepción.
> Fichero en texto plano
> HTTP
E2.A3.T5 En caso, de tratarse de una aplicación con licencia, se debe examinar con detalle el método y el procedimiento de gestión de la misma: resgitro, activación, modificación, expiración, etc.
E2.A4: Revisión de los métodos de almacenamiento de Información
E2.A4: Revisión de los métodos de almacenamiento de Información
E2.A4.T1 Cifrado de la Información
> Identificación de los algoritmo de cifrado utilizados.
> Examinar el método de gestión de la claves de cifrado.
> Identificar los puntos débiles de dicho método de cifrado.
E2.A4.T3 Analizar el tipo de información expuesta a API de terceros, como por ejemplo: el acceso a los contactos.
E2.A5: Gestión de las comunicaciones Seguras
E2.A5.T1 Identificación y análisis de uso de los métodos de conexión accesibles por la aplicación (WiFi, 3G, etc)
E2.A5.T2 Análisis de la gestión de la conexión segura de la aplicación al pasar de un medio de comunicación a otro. Ej: pasar de estar conectado con WiFi a 3G, o incluso utilización mixta.
E2.A5.T3 Identificación y verificación de los certificados utilizados por la aplicación.
E2.A5.T4 Análisis de los certificados: caducidad, autoridad de certificación, válidez, revocación, seguridad, etc.
E2.A6: Información Sensible Accesible (Information Disclosure)
E2.A6.T1 Identificación de los puntos de exposición de información. Ejemplo: logs, cache, archivos de configuración, etc.
E2.A6.T1 Identificación de los puntos de exposición de información. Ejemplo: logs, cache, archivos de configuración, etc.
E2.A6.T2 Análisis de los puntos de exposición de información (PEI) para identificar posibles fugas de información sensible.
E2.A6.T3 Verificación de los PEI en los mensajes de error de la aplicación. Asegurarse que estos mensajes son correctamente gestionados impidiendo que se muestre información considerada sensible.
E2.A6.T4 Identificar y evaluar la información accesible e intercambiada por las librerías (API) de terceros.
Por ultimo si la aplicación (Apps) es una versión WEB para móviles, se deberán de tener en consideración las vulnerabilidades WEB, es decir, Analizar la aplicación en busca de:
> XSS y HTML Injection.
> Command Injection (si la aplicación utiliza una shell para desarrollar parte de sus tareas)
> SQL Injection (si utiliza base de datos, o se comunica con alguna)
> Gestión de sesiones (Cookies)
> Proceso de Autenticación
> Seguridad en HTML5
Por ultimo si la aplicación (Apps) es una versión WEB para móviles, se deberán de tener en consideración las vulnerabilidades WEB, es decir, Analizar la aplicación en busca de:
> XSS y HTML Injection.
> Command Injection (si la aplicación utiliza una shell para desarrollar parte de sus tareas)
> SQL Injection (si utiliza base de datos, o se comunica con alguna)
> Gestión de sesiones (Cookies)
> Proceso de Autenticación
> Seguridad en HTML5
En todo análisis estático es muy útil realizar búsqueda en el código de cadenas de caracteres y expresiones regulares, ya que estas podrían estar relacionadas con puntos de entrada / salida de Datos.
Con esto finalizaría el Análisis estático de la aplicación móvil, pasando a continuación a evaluar y analizar la seguridad de la aplicación en funcionamiento, es lo que se conoce Análisis Dinámico.
Pero esto, daría para hablar de ello en otra serie de artículos. Espero que os haya gustado, si es así no olvidéis compartirlo por la redes sociales.
Gracias,
un Saludo.
REFERENCIAS
Faltaría la información del E3: Dynamic Analysis, el análisis dinámico.
ResponderEliminarGracias