Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Seguridad dispositivos móviles

jmortegac
September 24, 2015

Seguridad dispositivos móviles

Android and iOS security applications and devices

jmortegac

September 24, 2015
Tweet

More Decks by jmortegac

Other Decks in Technology

Transcript

  1. Agenda • Modelo de permisos en Android e iOS •

    Seguridad en aplicaciones • Prevención y detección de malware • Phishing en aplicaciones móviles • Riesgos en aplicaciones móviles • Buenas prácticas de desarrollo seguro • Seguridad en la empresa mediante BYOD y MDM • Conclusiones
  2. Modelo de permisos iOS Android Requerido cuando primero sea necesario

    Se solicitan al instalar Denegar permisos en cualquier momento No se pueden denegar permisos (de forma oficial) Sí a través de aplicaciones de terceros
  3. Permisos en Android Normal De bajo Riesgo para el usuario

    ACCESS_NETWORK_STATE Dangerous De mayor riesgo para el usuario,pudiendo incluso acceder a información privada CAMERA,CONTACTS Signature Si dos aplicaciones están firmadas con el mismo certificado, se les concede el acceso a los datos de la otra SignatureOrSystem Uso especial cuando varias aplicaciones necesitan compartir características específicas
  4. Permisos dangerous 50% de los usuarios de Android tienen una

    aplicación con los siguientes permisos: android.permission.ACCESS_FINE_LOCATION android.permission.INTERNET android.permission.READ_SMS android.permission.RECORD_AUDIO android.permission.CAMERA android.permission.READ_CALL_LOG android.permission.RECEIVE_BOOT_COMPLETED
  5. Agenda • Modelo de permisos en Android e iOS •

    Seguridad en aplicaciones • Prevención y detección de malware • Phishing en aplicaciones móviles • Riesgos en aplicaciones móviles • Buenas prácticas de desarrollo seguro • Seguridad en la empresa mediante BYOD y MDM • Conclusiones
  6. SandBox • Cada aplicación se ejecuta en su propio contexto

    de ejecución • El objetivo es proteger las aplicaciones unas de otras a nivel de acceso a datos y permisos • Por defecto las aplicaciones no pueden interactuar entre sí y poseen un acceso limitado al sistema operativo. • Si una aplicación trata de invadir el espacio asignado a otra aplicación el sistema operativo se encarga de evitarlo.
  7. Seguridad en Android • Las aplicaciones son firmadas con certificados

    autofirmados por desarrolladores. • Permisos personalizadosRiesgo para la privacidad • Controles de seguridad de Google play (“Bouncer”) deberían ser más exhaustivos para la detección de malware
  8. JailBreak en iOS  Cydia  JailbreakME(versiones antiguas hasta la

    5)  Evasion(iOS version>=6)  http://evasi0n.com  Pangu(Windows,Mac)  http://en.pangu.io  Redsnow, SnowBreeze(reinstala iOS)
  9. Android Rooting • Permite obtener control de superusuario en el

    subsistema • El proceso consiste en explotar alguna vulnerabilidad en el firmware del dispositivo y copiar el binario de superusuario
  10. Android Rooting • ¿Qué cosas se pueden hacer cuando eres

    root?  Instalar ROMS  Eliminar las aplicaciones que vienen por defecto instaladas  Acceso a bajo nivel al hardware  Acceder a apps instaladas  Instalar aplicaciones en la SDCARD • Riesgos  Pérdida de garantía  Nos exponemos a ataques de malware  Brick
  11. Agenda • Modelo de permisos en Android e iOS •

    Seguridad en aplicaciones • Prevención y detección de malware • Phishing en aplicaciones móviles • Riesgos en aplicaciones móviles • Buenas prácticas de desarrollo seguro • Seguridad en la empresa mediante BYOD y MDM • Conclusiones
  12. Malware en Android • 99% del malware para plataformas móviles

    está orientado a Android • Controles de seguridad en Google play no son sufucientes • Aplicaciones que no son del market oficial suponen un riesgo para el usuario
  13. Recomendaciones  Instalar de orígenes conocidos Comprobar los permisos antes

    de instalar/actualizar Revisar comentarios de los usuarios Deshabilitar conexión automática a redes Wifi y evitar conectarnos a redes Free.
  14. Recomendaciones Evitar aplicaciones que no sean de markets oficiales No

    aceptar mensajes o archivos vía Bluetooth por parte de desconocidos. No instalar aplicaciones sin haber verificado su procedencia, especialmente si no están firmadas. En caso de hacer jailbreak a tu iPhone, cambia la contraseña de superusuario. Si tienes un Android rooteado, instala Superuser para que toda aplicación solicite permiso. Instala programas antivirus /antimalware móvil para tu plataforma.
  15. Aplicaciones maliciosas Suscripción a SMS premium Seguimiento de ubicaciones del

    dispositivo Robo de información personal Grabación de audio/video Simulaciones de aplicaciones:FakeAV
  16. Análisis de malware • Informes de virusTotal • Permisos •

    Services • Receivers • ContentProviders • Librerías externas(monetización)
  17. Análisis en la nube http://tracedroid.few.vu.nl • Análisis online de peticiones

    de red,llamadas,sms • También realiza un análisis estático y de cobertura de código • Está orientada a detección de malware
  18. Agenda • Modelo de permisos en Android e iOS •

    Seguridad en aplicaciones • Prevención y detección de malware • Phishing en aplicaciones móviles • Riesgos en aplicaciones móviles • Buenas prácticas de desarrollo seguro • Seguridad en la empresa mediante BYOD y MDM • Conclusiones
  19. Ataques de ingeniería social • Phising  Estafa que mediante

    ingeniería social pretende obtener información de una victima de forma fraudulenta.  El estafador envía un email a la victima haciéndose pasar por una organización legitima.  En este email se insta a la victima a acceder a un enlace adjunto e introducir sus datos con el fin de confirmar su cuenta, recibir dinero, haber ganado un concurso.  El enlace dirige a una aplicación web controlada por el estafador y similar a la de la organización suplantada.  La victima accede a la aplicación web del enlace e introduce en ella los datos solicitados.  La aplicación web envía los datos introducidos al estafador.
  20. Ataques de ingeniería social  Particularidades del navegador en el

    dispositivo:  Aprovechan las características del navegador de los dispositivos móviles para realizar Phishing UrlSpoofingAtack:  Aprovechan que solo se muestra el inicio de la url en el navegador  Phising con nombres de subdominio legítimos UISpoofingSafari:  Ciertas versiones de Safari ocultan la pestaña de navegación tras cargar una página.  Aprovechando lo anterior mediante la inserción de una imagen,se puede hacer creer al usuario que se encuentra en un dominio legitimo.
  21. Agenda • Modelo de permisos en Android e iOS •

    Seguridad en aplicaciones • Prevención y detección de malware • Phishing en aplicaciones móviles • Riesgos en aplicaciones móviles • Buenas prácticas de desarrollo seguro • Seguridad en la empresa mediante BYOD y MDM • Conclusiones
  22. Moble Thread Model APPS OS Web Coporate Networks Web Services

    Websites App Stores Cloud Storage SMS Voice - Carrie Network - Local Network (Wifi, VPN, etc) Hardware extensions
  23. OWASP Mobile Project • OWASP inició en 2010 un proyecto

    de seguridad móvil • Objetivo: Proporcionar a desarrolladores y profesionales de seguridad recursos para asegurar aplicaciones móviles • Hitos: OWASP Top 10 riesgos móviles Guías de desarrollo y pruebas de seguridad Proyecto OWASP GoatDroid https://www.owasp.org/index.php/OWASP_Mobile_Security_Project
  24. OWASP Mobile Top 10 Risks 1- Almacenamient o de datos

    inseguro 2- Controles débiles en el lado del servidor 3- Protección insuficiente en la capa de transporte 4- Inyección en el lado del cliente 5- Sistema pobre de autenticación y autorización 6- Gestión inadecuada de la sesión 7- Decisiones de seguridad a partir de entradas inseguras 8- Canal lateral de fuga de datos 9- Rotura de la criptografía 10- Divulgación de información confidencial
  25. Riesgos • Tienda de aplicaciones(appstore) • Permisos de las aplicaciones

    • Malware móvil • App sandboxingJailBreaking /Rooting • Cifrado de dispositivo y aplicaciones • Actualizaciones del sistema y aplicaciones • Problemas de privacidad(Geolocalización) • Seguridad de las comunicaciones • Robo del dispositivo
  26. JailBreak/Root Risks • Las aplicaciones pueden acceder a la capas

    más bajas del sistema • Se podría acceder a datos sensibles de aplicaciones que tengas instaladas(gmail,evernote)
  27. Factores de riesgo • Permisos en androidManifest.xml • Verificar la

    firma de la aplicación • Origen de la aplicación • Dispositivo rooteado • Depuración habilitada en androidManifest • Ayuda a un atacante a aprender el funcionamiento de la App
  28. Permisos • Usuario: Aplicar sentido común • Desarrollador: No abusar

    de la solicitud de permisos (overprivileged) • Principio de mínimo privilegio
  29. Permisos  Minimizar el número de permisos que se piden

     33% aplicaciones piden más permisos de los necesarios  ¿Es necesario android.permission.CAMERA?
  30. Almacenamiento en Android • Ficheros o Almacenamiento interno o Almacenamiento

    externo(SDCARD) • Base de datos SQLite • Preferencias de usuario(Shared Preferences) • Web Cache
  31. Ficheros SQLite • Caché y consultas offline por parte de

    las aplicaciones • Gmail almacena la información de emails para acceder cuando el usuario no tiene conexión • BD muy rápida que no requiere config • No soporta encriptación
  32. Vectores de ataque • Manipulación de datos:  Modificación por

    otra aplicación  JailBreak /root del dispositivo • Pérdida de datos:  Pérdida del dispositivo  Intento de acceder de forma física • Malware:  Virus y rootkits
  33. Amenazas Amenazas basadas en aplicaciones • Malware /• Spyware •

    Amenazas de privacidad • Vulnerabilidades en aplicaciones Amenazas basadas en la web • Phishing • Drive-by-downloads • Exploits en navegadores Amenazas basadas en las redes • Exploits para protocolos de red • Wi-fi sniffing Amenazas físicas • Pérdida o robo del dispositivo
  34. Connan Mobile para Android  https://play.google.com/store/apps/details?id=es.inteco.conanmobile  Configuración segura del

    dispositivo  Permisos de aplicaciones  Servicios proactivos de seguridad  Desarrollada por el INCIBE(Instituto Nacional de Ciberseguridad)  https://www.osi.es/es/conan-mobile
  35. X-Ray • Aplicación que realiza un escaneo del dispositivo para

    determinar si hay vulnerabilidades o falta de parches en el sistema • Presenta una lista de vulnerabilidades que permiten identificar y revisar la presencia de cada vulnerabildiad en el dispositivo
  36. Agenda • Modelo de permisos en Android e iOS •

    Seguridad en aplicaciones • Prevención y detección de malware • Phishing en aplicaciones móviles • Riesgos en aplicaciones móviles • Buenas prácticas de desarrollo seguro • Seguridad en la empresa mediante BYOD y MDM • Conclusiones
  37. Buenas prácticas de desarrollo • Análisis estático • Análisis dinámico

    • Encriptación de datos • Ofuscación • Anti-debug • Anti-patching
  38. Androwarn python androwarn.py -i my_apk.apk -r html -v 3 Telephony

    identifiers exfiltration: IMEI, IMSI, MCC, MNC, LAC, CID, operator's name... Device settings exfiltration: software version, usage statistics, system settings, logs... Geolocation information leakage: GPS/WiFi geolocation... Connection interfaces information exfiltration: WiFi credentials Telephony services abuse: premium SMS sending, phone call composition... Audio/video flow interception: call recording, video capture... Remote connection establishment: socket open call, Bluetooth pairing, APN settings edit... PIM data leakage: contacts, calendar, SMS, mails... External memory operations: file access on SD card... PIM data modification: add/delete contacts, calendar events... Arbitrary code execution: native code using JNI, UNIX command, privilege escalation... Denial of Service: event notification deactivation, file deletion, process killing, virtual keyboard disable, terminal shutdown/reboot...
  39. Análisis de código fuente • Siempre es buen punto de

    inicio listar todas las llamadas a funciones que podrían ser usadas de forma insegura como: • putString • setJavaScriptEnabled(true) • getExternalStorageDirectory() • getBundleExtra() • sharedPreferences
  40. Análisis dinámico apps  Cobertura de código  Hashes para

    los paquetes analizados  Datos de red mediante herramientas como wireShark para analizar los paquetes de red  Información de debug  Operaciones de lectura/escritura en ficheros  Operaciones de criptografía utilizando la API de Android  Envío de SMS y llamadas de teléfono
  41. Análisis dinámico apps • Wireshark / NetWorkMiner https://www.wireshark.org http://www.netresec.com/?page=NetworkMiner •

    Drozer https://www.mwrinfosecurity.com/products/drozer • DroidBox / introSpy https://github.com/iSECPartners/Introspy-Android
  42. Almacenamiento ficheros WORLD_READABLE / WORLD_WRITABLE Otras apps podrían leer el

    fichero si conocen la ruta Los ficheros deberían crearse en MODE_PRIVATE FileOutputStream fos = openFileOutput(“MyFile", Context.MODE_PRIVATE); fos.write(“contenido”.getBytes()); fos.close();
  43. Encrypt /Decrypt Android public String encrypt(String cleartext, String password) {

    byte[] encryptedText = null; String result = ""; try { // Get key based on user-provided password PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray(), salt, PBE_ITERATION_COUNT, 256); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(PBE_ALGORITHM); SecretKey tmp = keyFactory.generateSecret(keySpec); // Encrypt SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES"); Cipher encryptionCipher = Cipher.getInstance(CIPHER_ALGORITHM); IvParameterSpec ivspec = new IvParameterSpec(initVector); encryptionCipher.init(Cipher.ENCRYPT_MODE, secret, ivspec); encryptedText = encryptionCipher.doFinal(cleartext.getBytes()); // Encode encrypted bytes to Base64 text to save in text file result = Base64.encodeToString(encryptedText, Base64.DEFAULT); } catch (Exception e) { e.printStackTrace(); } return result; }
  44. Encrypt /Decrypt Android public String decrypt(String encryptedText, String password) {

    byte[] encryptedText = null; String result = ""; try { // Decode Base64 text back to encrypted bytes byte[] toDecrypt = Base64.decode(encryptedText, Base64.DEFAULT); // Get key based on user-provided password PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray(), salt, PBE_ITERATION_COUNT, 256); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(PBE_ALGORITHM); SecretKey tmp = keyFactory.generateSecret(keySpec); // Decrypt SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES"); Cipher decryptionCipher = Cipher.getInstance(CIPHER_ALGORITHM); IvParameterSpec ivspec = new IvParameterSpec(initVector); decryptionCipher.init(Cipher.DECRYPT_MODE, secret, ivspec); byte[] decryptedText = decryptionCipher.doFinal(toDecrypt); result = new String(decryptedText); } catch (Exception e) { e.printStackTrace(); } return result; }
  45. Android root public class RootUtil { public static boolean isDeviceRooted()

    { return checkRootMethod1() || checkRootMethod2() || checkRootMethod3(); } private static boolean checkRootMethod1() { String buildTags = android.os.Build.TAGS; return buildTags != null && buildTags.contains("test-keys"); } private static boolean checkRootMethod2(){ String[] paths = { "/system/app/Superuser.apk", "/sbin/su", "/system/bin/su", "/system/xbin/su", "/data/local/xbin/su", "/data/local/bin/su", "/system/sd/xbin/su", "/system/bin/failsafe/su", "/data/local/su" }; for (String path : paths) { if (new File(path).exists()) return true; } return false; } private static boolean checkRootMethod3() { Process process = null; try { process = Runtime.getRuntime().exec(new String[] { "/system/xbin/which", "su" }); BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream())); if (in.readLine() != null) return true; return false; } catch (Throwable t) { return false; } finally { if (process != null) process.destroy(); } } }
  46. Ofuscar el código Proguard • Clase gratuita que optimiza, ofusca

    el código. Detectando y eliminando las clases no utilizadas, campos, métodos y atributos. Se optimiza el código en bytes y elimina las instrucciones que no estén siendo utilizadas. Se cambia el nombre de las clases restantes, campos, métodos por nombres cortos sin sentido aparente. • Por defecto al instalar el SDK de Android viene incluido. • Sólo debemos de activarlo modificando el fichero project.properties y activar el flag proguard.config=proguard.cfg • Todas las opciones que queramos incluir las escribiremos en el fichero proguard.cfg • Cuando exportemos la aplicación automáticamente nos generara el fichero APK con el código de la misma ofuscado
  47. Testear seguridad aplicaciones Análisis estático Código fuente • Code Review

    Binario • Ingeniería inversa Análisis dinámico • Debug en tiempo de ejecución • Capturar logs y tráfico que generan • Llamadas a servicios remotos • Peticiones de red Análisis forense • Permisos en ficheros • Análisis del contenido de ficheros
  48. Patrón de Bloqueo en Android adb shell cd /data/data/com.android.providers.settings/databases sqlite3

    settings.db update system set value=0 where name='lock_pattern_autolock'; update system set value=0 where name='lockscreen.lockedoutpermanently'; adb shell rm /data/system/gesture.key
  49. Agenda • Modelo de permisos en Android e iOS •

    Seguridad en aplicaciones • Prevención y detección de malware • Phishing en aplicaciones móviles • Riesgos en aplicaciones móviles • Buenas prácticas de desarrollo seguro • Seguridad en la empresa mediante BYOD y MDM • Conclusiones
  50. Retos actuales en movilidad • Información sin cifrar(store+ request) •

    Diversidad de dispositivos (BYOD) • Internet of things(IoT) • Seguridad en la nube • Sistemas de pago seguro
  51. Riesgos de seguridad en la empresa Riesgo Posible solución Sin

    control sobre los dispositivos (robo o pérdida) Encriptar Dispositivos externos (BYOD / Bring Your Own Device) MDM Conexión a redes no confiables VPN Aplicaciones no conables en dispositivos de empresa Concienciar y formar a los usuarios Contenido de origen desconocido (QR con página maliciosa) Antivirus / Antimalware y estar en alerta Rastreo por GPS Desconexión de GPS cuando sea posible
  52. BYOD • Bring Your Own Device • Política que permite

    a los empleados llevar sus dispositivos al trabajo • Espías y hackers podrían captar esta información si no se implantan los sistemas de seguridad adecuados para impedirlo. • Controlar las aplicaciones que se instala el usuario. Tanto aplicaciones pasa uso personal como aplicaciones que se usan para incrementar la productividad en el trabajo.
  53. 1 • Protección del acceso password, reconocimiento dactilar o facial

    2 • Control de la conectividad WiFi , GPS o Bluetooth 3 • Controlar el acceso y permisos de la aplicaciones debemos considerarlo durante la instalación 4 • Mantener el firmware y S.O. actualizado considerar las actualizaciones del fabricante 5 • Mantener copia de los datos sobre los datos críticos, personales y de la empresa 6 • Borrar datos si el dispositivo se pierde algunos servicios permiten el borrado de datos de forma remota 7 • No almacene información privada datos como tarjetas de crédito y passwords 8 • Cuidado con las aplicaciones gratuitas pueden haber sido alteradas o contener spyware 9 • Use antivirus y herramientas de escaneo tenerlos actualizados 10 • Use software MDM configuran y monitorizan el acceso
  54. Medidas para empresas • Definir estándares de seguridad independientemente de

    la plataforma. • Utilizar los sistemas de administración centralizada (Mobile Device Manager) para las plataformas implementadas:  Habilitar borrado remoto  Habilitar bloqueo remoto  Geolocalización del equipo  Aplicación de Políticas (OTA)
  55. MDM • MDM ayuda a implementar directivas en toda la

    empresa para reducir costos de soporte,discontinuidad del negocio y riesgos de seguridad. • Ayuda a los administradores de sistema a implementar y administrar aplicaciones de software por todos los dispositivos de la empresa para asegurar y monitorizar dispositivos móviles(smartphones,tablets) • Puede ser utilizado para administrar dispositivos de la organización y personales • Permite al personal de TI realizar de forma remota acciones de registro y rastreo de los dispositivos
  56. Políticas de seguridad MDM • Autenticar el accesos a los

    datos para usuarios y dispositivos. • Proporcionar seguridad en la conexiones. • Formar a los usuarios. • Instalación de herramientas para la detección de malware. • Centralizar la seguridad de los dispositivos móviles.
  57. MDM

  58. Administrar MDM Se instala un agente en cada terminal y

    permite la gestión desde un servidor centralizado.  Complejidad de las contraseñas  Tiempos de bloqueo de pantalla  VPNs  Desinstalar funciones específicas  Instalar,actualizar y desinstalar aplicaciones  Localizar dispositivos con GPS  Borrar información de forma remota
  59. Soluciones MDM • Citrix XenMobile MDM http://www.citrix.com/products/xenmobile/overview.html • Airwatch http://www.air-watch.com

    • WSO2 Enterprise Mobility Manager http://wso2.com/products/enterprise-mobility-manager
  60. Aplicaciones  Checkear el estado de la red  Fing(NetWork

    Discovery,TCP SCan,Ping,traceroute)  Wireless Network Watcher(NetWork Discovery)  Aplicaciones para obtener información sobre paquetes capturados  WireShark / tcpdump  NetWorkMiner
  61. DroidWall • Funciona como un firewall para las aplicaciones a

    la hora de acceder a la red(wifi,3G) ROOT
  62. Protocolos WIFI • WEPVulnerable.En pocos minutos se puede sacar una

    password • WPATambién vulnerable frente ataques por fuerza fruta mediante diccionario • WPA2+PSKCifrado AES de 256 bits.Actualmente el método más robusto • Uso de contraseñas seguras para evitar ataques por diccionario
  63. Comunicaciones seguras • Confidencialidad, integridad, autenticación, no repudio • Establecer

    canales seguros en medios inseguros • HTTPS • VPN • WiFi cifrada con WPA2 • Bluetooth no descubrible • Uso de PKI
  64. Analizando el tráfico de red • Es importante analizar el

    tráfico de red que fluye entre el cliente / servidor en una aplicación. • Busque credenciales, tokens de autenticación, las claves API que se transmiten a través de canales http no seguro. • El tráfico puede ser analizada utilizando una herramienta de proxy como BurpSuite
  65. Conclusiones Lograr un equilibrio entre la seguridad del dispositivo y

    la funcionalidad para el usuario Funcionalidad Seguridad
  66. Referencias y blogs  Open Android Security Assessment Methodology 

    http://oasam.org/es/oasam  Developer.android.com  https://developer.android.com/training/articles/security-tips.html  https://source.android.com/devices/tech/security  http://globbsecurity.com  http://www.securitybydefault.com  http://blog.s21sec.com  http://hacking-etico.com