Android Security

42
Marco Avendaño Android Security Fundamentals

Transcript of Android Security

Page 1: Android Security

Marco Avendaño

Android SecurityFundamentals

Page 2: Android Security

Contexto móvil

Page 3: Android Security

Smartphones everywhere..

Page 4: Android Security

El mundo le pertenece a los móviles

Page 5: Android Security

¿Cuándo desarrollar Apps?

Page 6: Android Security

Tipos de aplicaciones móviles

Page 7: Android Security

Características de una App

Diseño Funcionalidad Rendimiento Seguridad

Page 8: Android Security

Seguridad en los móviles

Page 9: Android Security

“Hackear” una App

Page 10: Android Security

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)

Page 11: Android Security

Anatomía de un ataque móvil

https://www.nowsecure.com/resources/secure-mobile-development/primer/mobile-security/

Page 12: Android 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.

Page 13: Android Security

¿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

Page 14: Android Security

OWASP

Open Web Application Security Project.

Organización mundial, sin fines de lucro.

Busca promover la seguridad y generar conciencia.

Page 15: Android Security

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

Page 16: Android Security

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

Page 17: Android Security

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.

Page 18: Android Security

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.

Page 19: Android Security

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.

Page 20: Android Security

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.

Page 21: Android Security

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.

Page 22: Android Security

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.

Page 23: Android Security

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.

Page 24: Android Security

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.

Page 25: Android Security

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.

Page 26: Android Security

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.

Page 27: Android Security

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

Page 28: Android Security

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

Page 29: Android Security

Seguridad en Android

Page 30: Android Security

Android: el mas popular

http://www.scientiamobile.com/page/movr-mobile-overview-report

Page 31: Android Security

Arquitectura de Android

Page 32: Android Security

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.

Page 33: Android Security

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

Page 34: Android Security

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

Page 35: Android Security

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

Page 36: Android Security

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.

Page 37: Android Security

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.

Page 38: Android Security

Goatdroid (II)

Page 39: Android Security

FourGoats

Page 40: Android Security

Recursos bibliograficos

Page 41: Android Security

Datos de contacto

[email protected]

@marcoviaweb

https://www.facebook.com/marcoviaweb

bo.linkedin.com/in/marcoviaweb

Page 42: Android Security

Muchas gracias !

Android SecurityFundamentals