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

Are you kidding me? Bypassing Android Security Solutions with a few clicks

Are you kidding me? Bypassing Android Security Solutions with a few clicks

62d835ed5deada6afab1c7cd65e159b9?s=128

Sheila Ayelen Berta

September 26, 2016
Tweet

Transcript

  1. Are you kidding me? aa BYPASSING ANDROID SECURITY SOLUTIONS With

    a few clicks
  2. ./me Sheila A. Berta – 21 años • Especialista en

    seguridad informática ofensiva. • Investigadora en UdeMM (Universidad). • Colaboradora en fuerzas de seguridad (Proyecto CROZONO). • Security Researcher en SIClabs. • Escritora del libro “Web hacking” de RedUSERS • Programadora en: • ASM x86 & Microcontroladores • C/C++ y JAVA (Android) • Python • Tecnologías web más populares. Twitter: @UnaPibaGeek www.semecayounexploit.com
  3. Motivación (? - Una vez me preguntaron…

  4. Al instalar un antivirus…

  5. Al instalar un antivirus…

  6. Al instalar un antivirus…

  7. Al instalar un antivirus…

  8. … y además… - ESET y Norton crean una cuenta

    de usuario administrador.
  9. Empezando a inferir ¿Por qué el antivirus solicita permisos a

    nivel aplicación para cumplir su función de proteger? ¿Significa eso que solo puede monitorear el dispositivo desde la capa en la que se ejecutan las aplicaciones instaladas por el usuario?
  10. ¿Qué ofrece el AV al usuario? - A simple vista…

  11. Consultando la documentación http://download.eset.com/manuals/eset_ems_an_3_userguide_esn.pdf

  12. Análisis del dispositivo Análisis exhaustivo de ESET: - Escaneo de

    aplicaciones (user) - Escaneo de /storage - Escaneo de aplicaciones (sistema) - Escaneo de /system Análisis de otros Antivirus: - Escaneo de aplicaciones (todas) - Escaneo de particiones con permiso de acceso.
  13. Particiones en Android - / (raíz) – Primer punto de

    montaje en ser cargado por el kernel, contiene configuraciones y librerías necesarias para el arranque. - /cache – Contiene archivos temporales, ej: caché del browser. - /data - /data/app – Aplicaciones instaladas por el usuario. - /data/data – Datos de las aplicaciones instaladas. - /mnt/sdcard – Almacenamiento externo (SD) - /storage – Almacenamiento interno - /system - /system/app – Aplicaciones del sistema (pre-instaladas). - /system/bin – Binarios ejecutables del sistema (ls, mount).
  14. Permisos de acceso Android utiliza un filesystem en el cual

    la mayoría de las particiones no tienen permisos para ser accedidas por el usuario ni por las aplicaciones que no sean del sistema. Cada aplicación instalada en Android tiene su propio UID, propietario de la carpeta /data/data/<app_name>. Únicamente el UID/User de cada aplicación puede acceder a los archivos alojados en su respectiva carpeta dentro de /data/data y /data/app.
  15. Todo se torna sospechoso… El Antivirus NO ES una aplicación

    del sistema NO tiene "consideraciones especiales” por parte de Android / Google. Aún si se añade como Administrador, NO es un usuario root del filesystem.
  16. Entonces… ¿Qué puede obtener una aplicación…. …de otra aplicación? ;)

  17. Esquema de seguridad de Android …más allá de los permisos…

    Cada proceso tiene su propio espacio en memoria con su estructura de datos, stack, heap, etc. que no pueden ser accedidos por otro proceso. Cada aplicación en Android se ejecuta en un proceso separado, cuyo propietario es su correspondiente UID.
  18. IPC – Android Binder Driver Cuando una aplicación desea acceder

    a datos de otra aplicación, debe utilizar el Inter-Process Comunication (IPC). Google adquirió OpenBinder y desarrolló “Android Binder” un kernel driver que facilita la comunicación entre procesos.
  19. Pero… ¿es útil para los AV? Los malware no comparten

    información. No utilizan la interfaz de Android Binder. Los antivirus no utilizan el IPC para interactuar con otras aplicaciones. So… back back
  20. Antivirus Fuera de Juego Una aplicación NO puede: - Acceder

    a los ejecutables de otra aplicación. - Interactuar con otra aplicación si no es a través de binders. Ahora sabemos que el Antivirus NO puede: - Ejecutarse como root del filesystem. - Escanear los ejecutables de las aplicaciones. - Monitorear las actividades de las aplicaciones. - Monitorear las actividades del sistema operativo. - Impedir la ejecución de acciones de las aplicaciones.
  21. La gran pregunta es… ¿Qué hace el antivirus cuando dice

    estar escaneando las aplicaciones instaladas? ¿¿¿ ???
  22. Haciendo un poco de reversing

  23. Díganme que es un chiste! Los antivirus utilizan EL NOMBRE

    del paquete Java como firma para detectar el malware.
  24. I like to rename it

  25. dex2jar y unos pocos comandos… Descarga: https://sourceforge.net/projects/dex2jar/ Decompilación: - d2j-dex2jar

    -f -o hello.jar hello.apk - d2j-jar2jasmin -f -o hello-dir hello.jar Re-Compilación: - d2j-jasmin2jar -f -o hello-mod.jar hello-dir/ - d2j-jar2dex -f -o classes.dex hello-mod.jar Generar APK: - cp hello.apk new_hello.apk - zip -r new_hello.apk classes.dex Firmar APK: - d2j-apk-sign -f -o new_hello_signed.apk new_hello.apk
  26. Demo

  27. ¿y la protección real-time? Extracto de la documentación de ESET:

    Protección real-time limitada al análisis de una carpeta =
  28. Detección Proactiva ¿Qué es eso? ¿Se come? Los antivirus para

    computadoras de escritorio implementan dos tipos de mecanismos de detección de malware… - Detección reactiva basada en firmas, para malware ya analizado por el laboratorio. - Detección proactiva basada en heurística, para malware no conocido. En Android la detección proactiva NO es posible. =
  29. ¿Podrían hacer las cosas mejor?

  30. Conclusión …el mejor antivirus es uno mismo…

  31. ¡Gracias! Sheila A. Berta – @UnaPibaGeek