S31_CompTIA Mobile App Security+ for Android Presentación Este curso enseña el conocimiento y las habilidades necesarias para crear de forma segura una aplicación móvil Android nativo, al tiempo que garantiza las comunicaciones de red seguras y servicios web back-end. Qué se lleva el alumno? Al finalizar el curso los alumnos podrán: Describir los principios fundamentales de la seguridad de las aplicaciones Describir el modelo de seguridad de los dispositivos Android Describir las amenazas comunes a la seguridad de aplicaciones móviles Desarrollar aplicaciones moderadamente complejas utilizando el SDK de Android Describir el modelo de seguridad de servicios Web y vulnerabilidades Implementar correctamente SSL / TLS para comunicaciones Utilizar las funciones de seguridad del sistema operativo Android y APIs Aplicar correctamente técnicas de codificación segura Evitar la retención de inseguridad de los datos en la memoria Describir las implementaciones comunes de criptografía como PKI Las reglas del juego de cifrado para el almacenamiento y / o comunicaciones Entender los permisos de control de acceso y de archivo Endurecer una demanda contra el ataque a los niveles apropiados para el modelo de riesgo de la aplicación A quién va dirigido? Este curso está dirigido a aquellos individuos con al menos 24 meses de experiencia en el desarrollo de aplicaciones, así como la familiaridad sólido con Java, el SDK de Android, y los principios de desarrollo de aplicaciones seguras. Requisitos previos Antes de asistir a este curso, los estudiantes deben tener conocimientos sobre programación JAVA, Android SDK, codificación SQL, lo esencial de seguridad móvil y de aplicación, y la aplicación de cifrado.
Temario Módulo 1.0: Mobile Application Security, SDLC, y modelos Threat Módulo 1.1: Identificar las razones de la importancia del desarrollo móvil seguro EE.UU. Requisitos reglamentarios: PCI, HIPAA, FFIEC, FISMA Los requisitos internacionales: E.U. privacidad Los requerimientos del negocio Las expectativas del consumidor (incluyendo la privacidad) Los riesgos de seguridad que son únicos o superiores para móviles Dispositivo Perdido / robado (acceso físico) Untrusted redes Wi-Fi (ataque DNS, MITM) Los usuarios que ejecutan OS modificado (jailbreak) Ataques relacionados con la telefonía (SMiShing, MitMo, fraude telefónico) Módulo 1.2: Comparación de la gravedad relativa de los problemas de seguridad. Interfaces Web sin protección La vulnerabilidad a la inyección de SQL El almacenamiento de contraseñas, datos sensibles sin cifrado Transmisión sin cifrado (TLS / SSL) Módulo 1.3: Explicar un proceso de desarrollo seguro durante todo el desarrollo de aplicaciones. Las pruebas de seguridad / revisión sobre la liberación (y durante el desarrollo) Los requerimientos del negocio Especificaciones Análisis de riesgos de arquitectura / modelo Threat La revisión de código Automatizado Manual Llevar a cabo las pruebas de seguridad Fuzzing Funcionalidad de la seguridad Validación dinámica Prueba basada en el riesgo Las pruebas de penetración Tipos de documentación Políticas de seguridad reguladoras o corporativas o requisitos de privacidad Schedule on-going security tests post-os upgrades
Módulo 1.4: Resumir las mejores prácticas de seguridad generales. Sanitizing input, input validation Contextually appropriate output escaping Buenas consideraciones de diseño: Lógica en aplicaciones Almacenamiento de variables Diseño de base de datos Depuración El manejo de errores Almacenamiento seguro Comunicaciones seguras Autenticación y autorización Gestión de sesiones Garantizar la aplicación e integridad de datos Security by design vs. Obscurity Sandbox Módulo 1.5: Identificar los principales riesgos arquitectónicos en las debilidades de una aplicación. Construir un diagrama de la arquitectura de una aplicación (incluidos los servicios de back-end), junto con descripciones de cada componente Establecer una comprensión profunda y completa de la aplicación y sus componentes Romper la arquitectura en zonas de seguridad específicas para la consideración individual Para cada zona, articular y enumerar cada uno de los siguientes: Quién tiene acceso a la zona? Qué podría motivar a alguien para atacar el sistema? Qué haría un objetivo atacante, específicamente, en cada zona? Cómo podía ser atacado cada objetivo? (Proceso STRIDE Referencia de Microsoft) Cuál sería el impacto en el negocio de un ataque con éxito? Qué remedio podría aplicarse para reducir la probabilidad de un ataque exitoso? Recomendar y justificar remedios basados en sus correspondientes probabilidades y magnitud del impacto contra sus costos para el negocio Módulo 2.0: Android SDK, APIs y características de seguridad Módulo 2.1: Resumir la arquitectura de seguridad de Android. El sistema y el nivel de seguridad del kernel Sandbox Firma de aplicaciones Propósito Gestión de claves Permisos Sistema de archivos Application-defined Permisos de URI
Módulo 2.2: Explicar el modelo de permisos de Android. API Protegidas Solicitud de permisos Definición de permisos El uso de firmas Niveles de protección Resumir la administración de dispositivos de API Finalidad y uso apropiado Dejar el control de acceso al usuario para los datos sensibles Comenzar la actividad de los contactos para permitir al usuario seleccionar un contacto para el uso de la aplicación, en lugar de requerir permisos para acceder a cada contacto Iniciar la aplicación de la cámara para que el usuario tome una fotografía para su uso en la aplicación sin necesidad de permisos de cámaras Módulo 2.3: Describir una comunicación segura inter-proceso. Componentes públicos y privados Proteger el acceso a: Servicios Receptores de radiodifusión Actividades Los proveedores de contenido Bases de datos Acceder con seguridad a los componentes de terceros con IPC Tipos de ataques Confused deputy Intento de sniffing Intento de hijacking Divulgación de datos Módulo 2.4: Implementar características comunes seguras. Web view KeyChain Módulo 3.0: Servicio Web y seguridad de la red Módulo 3.1: Resumir los riesgos en la realización de las comunicaciones Web y de red. Borrar la transmisión de texto de los datos Man-in-the-middle Ataque de proxy Celular (archivo de suministro) Validación insuficiente de los certificados / cadena de certificados Compromiso SSL Secuestro de DNS
Módulo 3.2: Implementar una sesión SSL con validación. Cifrado / confidencialidad de datos Aspectos básicos de la criptografía de clave pública, empleado en SSL La comprensión de las amenazas contra las que el cifrado SSL protege Autenticación del servidor (básico) Cómo se verifican los certificados de servidor? (por defecto CA comprobación de la cadena) La comprensión de las amenazas contra las que la autenticación del servidor SSL protege Autenticación del servidor (avanzado) Verificadores de nombre de host personalizados Personaliza la confianza (configuración de aplicaciones de sólo confiar en ciertas certs) Utilizar certificados con firma para la autenticación del servidor Autenticación del cliente Explicar conceptos básicos de la mutua autenticación SSL La comprensión de las amenazas contra las que la autenticación de cliente SSL protege Implementar certificado de cliente en almacén de claves de la aplicación Implementar certificado de cliente en almacén de claves del sistema Configurar la aplicación para presentar certificados de cliente para su autenticación Módulo 3.3: Distinguir las protecciones de seguridad de sonido para la autenticación. Explicar pros / contras y poner en práctica técnicas de autenticación / aplicación de dispositivos SSL Mutual-autenticación para la autenticación de dispositivos cliente Claves de la API de servicios Web para la autenticación de la aplicación cliente Explicar ventajas / desventajas y aplicar técnicas de autenticación de usuario Almacenamiento / acceder a las credenciales de usuario mediante AccountManager La autenticación implícita Autenticación basada en token utilizando OAuth Módulo 3.4: Explicar las amenazas y las protecciones comunes para los servicios Web. Explicar la validación de entrada Necesidad de validación de entrada Ley de Postel Positivo (lista blanca) vs negativo (lista negra) de validación Pros / contras de validación de lista blanca Pros / contras de validación de lista negra Explicar cross site scripting (XSS) XSS almacenado XSS reflejado Las estrategias de prevención de XSS Explicar cross site request forgery (ataques CSRF) Ataque CSRF principios generales Login CSRF Estrategias de prevención CSRF Explicar los ataques de inyección de comandos / SQL Fundamentos de la orden de inyección / SQL Validación de entrada como una estrategia de defensa Consultas con parámetros / sentencias preparadas
Módulo 3.5: Describir la correcta aplicación de la seguridad de sesión. Token altamente aleatorio Expirar el tiempo de espera o de salida Almacenar en memoria no en datos Evitar el token de usuario estático UDID deprecation Módulo 4.0: La seguridad de datos y el cifrado de la Implementación Módulo 4.1: Explicar cómo encriptar y hashing works. Criptografía simmetryc-keys y public-key Funciones de un solo sentido (por ejemplo, los hashes) Por qué es el salting de contraseñas necesario? La generación de claves, por qué 10.000 rounds es mejor que 2.000? Seguridad por diseño vs oscuridad Módulo 4.2: Resumir los métodos para proteger los datos almacenados. Certificados Permisos y derechos de acceso Seguridad de base de datos Contraseñas de bases de datos SQL fuertes Sanitizing inputs (detener SQL injection) Encryption Módulo 4.3: Distinguir la correcta aplicación de cifrado en una aplicación Android. El cifrado de la aplicación (cuando se habilita de nuevo) Por qué el uso de GPG / OpenPGP podría ser mejor que su propia versión? El uso de algún valor conocido como el MEID a los datos oscuros, mejor que nada? La ofuscación del código para detener a alguien, invertir el algoritmo que está usando Cómo almacenar contraseñas y claves para que no puedan ser extraídos de la aplicación Cómo cifrar o hash de datos almacenados en bases de datos SQL Verificando si la encriptación dispositivo está habilitada Módulo 4.4: Implementar la seguridad de datos utilizando el modelo de permisos de Android. Crear un permiso personalizado para su aplicación Proteger un servicio con los permisos correctos Conceder permiso temporal para abrir un archivo descargado
Módulo 5.0: Endurecimiento de aplicaciones e ingeniería inversa Módulo 5.1: Explicar la ingeniería inversa. Explicar qué es la ingeniería inversa Explicar las "buenas" razones para aplicaciones de ingeniería inversa Explique las "malas" razones para aplicaciones de ingeniería inversa Naturaleza de las plataformas Android y Java y por qué la ingeniería inversa es fácil Explicar las técnicas básicas de la ingeniería inversa y enfoques Proceso / etapas Componentes de APK (clases, dex, certificados, manifiestos, diseños, tarros, bibliotecas nativas, recursos / activos, etc) El análisis estático Análisis Strings / recursos Desmontaje Descompilación Pros y contras Análisis dinámico Areneros Observando las comunicaciones de red Emulador de Android Depuración en vivo Pros y contras Entender la ingeniería forward (código => javac => dx => classes.dx) para entender la ingeniería inversa Herramientas de ingeniería inversa apktool, dex2jar, jd-gui Módulo 5.2: Explicar las contramedidas de la ingeniería inversa. ProGuard Explicar qué es ProGuard Explicar por qué ProGuard puede hacer la ingeniería inversa más difícil Implementar una instalación predeterminada de ProGuard en un proyecto Android Explicar por qué los métodos nativos pueden hacer más difícil la aplicación ProGuard Explicar por qué reflexión puede hacer la aplicación ProGuard más difícil Las diferentes opciones que se pueden configurar en una configuración ProGuard Proporcionar un ejemplo donde se debe modificar la configuración por defecto ProGuard Explicar cómo las bibliotecas nativas impactan sobre la ingeniería inversa Filtración de información Eliminar / reducir Logcat login info Eliminar / reducir depurar código Eliminar / reducir las fugas stacktrace Excepciones de captura Las cosas que se utilizan para depurar aplicaciones ayudarán a revertir las aplicaciones si se deja en el código Hacer man-in-the-middle (MITM) más difícil para el protocolo de red de ingeniería inversa Utilizar SSL para las comunicaciones a servidor Utilizar el bloqueo de certificado: codificar el certificado para el servidor Detectar las modificaciones del paquete Comprobar la integridad de APK MD5 / SHA checksum of application public key. Comprobar si los campos individuales coinciden. Password Storage
Explicar por qué la ingeniería inversa puede hacer la recuperación de contraseñas estáticas fácil Explicar cuál es la información, contenida en una aplicación, que se puede recuperar a través de la ingeniería inversa Explicar las ventajas y desventajas entre el almacenamiento, derivación, y la facilidad de suministro de información secreta Módulo 6.0: Codificación Secure Java Módulo 6.1: Explicar la estructura del lenguaje Java y desarrollo orientado a objetos. Clases, objetos, métodos, campos El manejo de excepciones, try / catch Paquetes Módulo 6.2: Demostrar el manejo adecuado de la información sensible. Purgar información sensible de excepciones y de la memoria después de su uso Evitar ingresar información altamente sensible Módulo 6.3: Explicar las mejores prácticas de codificación segura de Java. Denominación correcta Limitar la extensibilidad de las clases y métodos Definir envolturas alrededor de los métodos nativos Obtener referencia adecuada para el almacenamiento externo como una tarjeta SD Aislar código relacionado