Marco Avendaño
Android SecurityFundamentals
Contexto móvil
Smartphones everywhere..
El mundo le pertenece a los móviles
¿Cuándo desarrollar Apps?
Tipos de aplicaciones móviles
Características de una App
Diseño Funcionalidad Rendimiento Seguridad
Seguridad en los móviles
“Hackear” una App
Herramientas para hacking
Categoría HERRAMIENTAS DE EJEMPLOApp Decryption / Unpacking / Conversion
ClutchAPKToolDex2jar
Static Binary Analysis, Disassembly, Decompilation
IDA Pro & Hex Rays (Disassembler/Decompiler)Hopper (Disassembler/Decompiler)JD-GUI (Decompiler)Baksmali (Disassembler)Info dumping: class-dump-z (classes), nm (symbols), strings
Runtime Binary Analysis
GDB (Debugger)ADB (Debugger)Introspy (Tracer/Analyzer)Snoop-It (Debugging/Tracing, Manipulation) Sogeti Tools (Dump key chain or lesystem, Custom ramdisk boot, PIN Brute force)
Runtime Manipulation, Code Injection, Method Swizzling, Patching
Cydia Substrate (Code Modication Platform) (MobileHooker, MobileLoader)�Cycript / CynjectDYLDTheos suiteHex editors
Jailbreak Detection EvasionxConBreakThroughtsProtector
Integrated Pen-Test Toolsets AppUse (Custom "hostile" Android ROM loaded with hooks, ReFrameworker runtime manipulator, Reversing tools)
Anatomía de un ataque móvil
https://www.nowsecure.com/resources/secure-mobile-development/primer/mobile-security/
Factores que afectan la seguridad
Aparición de nuevas formas de ataques por la tecnologías y nuevas funcionalidades del dispositivo.
Restricciones económicas y de tiempo: muchas veces solo les interesan el resultado y no su proceso de desarrollo.
Desarrollo personalizado: los emprendedores y empresas de desarrollo suelen utilizar librerías o código ya existente que no necesariamente estén probados.
Pro actividad del desarrollador, realizar pruebas y encriptación de datos.
¿Quiénes se ocupan de la seguridad?
Oficiales de seguridad Pentesters Auditores de seguridad Equipos de control de
calidad Administradores de
infraestructura Desarrolladores de
aplicaciones Usuarios
OWASP
Open Web Application Security Project.
Organización mundial, sin fines de lucro.
Busca promover la seguridad y generar conciencia.
Proyectos OWASP
Proyectos de documentación Guía OWASP OWASP Top 10 Métricas ..
Proyectos de desarrollo WebGoat GoadtDroid ..
https://www.owasp.org/index.php/Proyectos_OWASP
Top Ten Mobile Risk
OWASP Mobile Top 10 Risks
M2 – Insecure Data Storage
M3 – Insufficient Transport Layer
Protection
M1 – Weak Server Side Controls
M4 – Unitended Data Leakage
M6 – Broken Cryptography
M7 – Client Side Injection
M5 – Poor Authorization and
Authentication
M8 – Security Decisions Via
Untrusted Inputs
M9 – Improper Session Handling
M10 – Lack of Binary Protections
1. Weak Server Side Controls
Debilidad en los controles del lado del servidor de la aplicación: La aplicación servidor a la cual se conecta el dispositivo
móvil de manera remota, no posee controles suficientes de seguridad.
La App podría enviar datos que el servidor no sepa procesar y por ende crear una condición de vulnerabilidad permitiendo inyectar y ejecutar código del lado del servidor.
2. Insecure Data Storage
Almacenamiento de datos inseguro: La App no almacena los datos de manera segura. Si alguien pierde el dispositivo, los datos podrían verse
comprometidos (fuga de información). En caso que se guarden datos sensibles de la aplicación,
que el usuario no debiera conocer o alterar, es viable que el usuario los pueda llegar a acceder o modificar sin autorización.
3. Insufficient Transport Layer Protection
Protección insuficiente en la capa de transporte: Al momento en que una App se conecta al servidor para
transmitir información, esta conexión no se realiza de manera segura.
Los datos en tránsito se encuentran en riesgo de ser interceptados, lo que deja los datos expuestos a fuga de información o modificación no autorizada de la misma.
4. Unintended Data Leakage
Fuga de datos involuntaria: La App puede perderse/modificarse debido a las
actualizaciones del sistema operativo, de los frameworks de software, o incluso del hardware (cuando es posible).
Estas actualizaciones ponen en riesgo o cambian el comportamiento de la aplicación.
5. Poor Authorization and Authentication
Autenticación y autorización pobres: La App no provee los niveles adecuados y necesarios de
autorización y autenticación. Los usuarios podría saltarse la autenticación de la
aplicación logrando acceso no autorizado y suplantación de identidad, o modificar los niveles de autorización logrando acceso no autorizado a información de la aplicación.
6. Broken Cryptography
Criptografía rota: La App no realiza un cifrado adecuado a la información
almacenada o transmitida (desde o hacia el dispositivo). Se puede lograr acceso no autorizado a información de la
aplicación.
7. Client Side Injection
Inyección del lado del cliente: La App no posee controles suficientes de seguridad para
la entrada o envío de datos al servidor,. Se podrían enviar datos que el servidor no procese
adecuadamente y permita realizar acciones sobre los datos contenidos en el servidor.
8. Security Decisions Via Untrusted Inputs
Decisiones de seguridad a través de entradas no confiables: La App podría recibir datos de entrada de varias fuentes. Si las entradas no son validadas previamente para ser
procesados por la aplicación, podrían poner en riesgo la seguridad de la información.
9. Improper Session Handling
Manejo de sesiones inapropiado: La App no provee los niveles adecuados y necesarios, por
lo cual una sesión de usuario válida podría ser interceptada y los datos transmitidos estarían en riesgo.
Un usuario no autorizado podría clonar una sesión válida de usuario, saltando con esto los controles de autenticación y autorización.
10. Lack of Binary Protections
Falta de protección en binarios: Cuando una persona no autorizada realiza cambios a los
binarios de la aplicación y modifica el comportamiento de esta.
Puede variar los datos enviados al servidor, para transmitirlos a un servidor alterno no autorizado, realizar cualquier tipo de modificación a la información, modificar la presentación de la aplicación e incluso llegar a permitir la fuga de la información.
Categorización de los riesgos
Risk Client Network Server
M1 – Weak Server Side Control X
M2 - Insecure Data Storage X
M3 – Insufficient Transport Layer Protection X
M4 - Unintended Data Leakage X
M5 - Poor Authorization and Authentication X X
M6 - Broken Cryptography X X X
M7 - Client Side Injection X
M8 - Security Decisions via Untrusted Inputs X X
M9 - Improper Session Handling X X
M10 - Lack of Binary Protections X
Top Ten Mobile Controls
OWASP/ENISA Mobile Top 10 Controls
C2 – Protect Authentication
Credentials
C3 – Protect Data in Transit
C1 – ID & Protect Sensitive Data
C4 – Strong AuthN, Sess, Mgt,
AuthZ
C6 – Secure 3rd Party Integration
C7 – Collect Consent for Use of
User Data
C5 – Secure Services and
Server
C8 – Protect For Pay Services
C9 – Secure App Distro / Update
C10 – Avoid / Safety Use
Interpreters
European Network and Information Security Agencyhttps://www.owasp.org/index.php/Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls
Seguridad en Android
Android: el mas popular
http://www.scientiamobile.com/page/movr-mobile-overview-report
Arquitectura de Android
Características del SO
Android es un plataforma basada en Linux y multiusuario. Cada aplicación tiene su propio user ID (UID). Dado que el UID es único, cada App se ejecuta en un
proceso separado y con diferentes permisos. Este mecanismo es denominado ‘application sandboxing’.
El sandbox permite, en condiciones normales, que no se pueda acceder a datos de otras aplicaciones.
Mecanismos esenciales (I)
OWASP risk Recomendations
M2 - Insecure Data Storage
• Implementar permisos de archivos cuidadosamente
M4 - Unintended Data Leakage
• Evitar el cacheo de:• Imagines de la camera• GUI Objects
M5 - Poor Authorization and Authentication
• Autenticación en el lado del servidor• Protocolo OAuth
M6 - Broken Cryptography • Sign Android APKs
M7 - Client Side Injection • Implement Content Providers Carefully
Mecanismos esenciales (II)
Riesgo OWASP Recomendaciones
M8 - Security Decisions via Untrusted Inputs
• Implementar cuidadosamente:• Intents• PendingIntents• Broadcasts
• Verificar Activities• Proteger Application Services• Evitar Intent Sniffing
M9 - Improper Session Handling • Autenticación periódica en el usa de web
services.
M10 - Lack of Binary Protections • Seguir la mejores practicas de los WebView
Mitigando vulnerabilidades
Validación de las entradas SQL injection
Permisos Normal Dangerous Signature Signature of System
Manejo de datos y credenciales del usuario Comunicación entre aplicaciones
Intents Content providers
Herramientas para la seguridad movil
MobiSec: https://www.owasp.org/index.php/Projects/OWASP_Mobile_Security_Project_–_MobiSec
Es un entorno para testear móviles, incluyendo dispositivos, aplicaciones y la infraestructura de soporte. El objetivo es proporcionar a los atacantes y los defensores, la posibilidad de probar sus entornos móviles para identificar las debilidades de diseño y vulnerabilidades.
Androick: https://www.owasp.org/index.php/OWASP_Androick_Project
Se centra en la automatización de las tareas de análisis forenses en lugar de pruebas de penetración. Se basa en automatizar la recuperación de artefactos forenses clave como archivos APK, datos de aplicaciones, bases de datos, y logs desde el dispositivo.
Goatdroid (I)
Goatdroid: https://www.owasp.org/index.php/Projects/OWASP_GoatDroid_Project
Son un buen punto de partida para los principiantes en la seguridad de aplicaciones Android.
Es un entorno de entrenamiento autónomo. El entorno ofrece dos implementaciones de ejemplo para
realizar practicas:FourGoats, una red social basada en la localización.Herd Financials, aplicación de banca móvil ficticia.
Estos proyectos ofrecen una amplia cobertura para la mayoría de los OWASP Top 10 mobile risk.
Goatdroid (II)
FourGoats
Recursos bibliograficos
Datos de contacto
@marcoviaweb
https://www.facebook.com/marcoviaweb
bo.linkedin.com/in/marcoviaweb
Muchas gracias !
Android SecurityFundamentals