ÚLTIMOS AVANCES EN ANÁLISIS FORENSE DE SISTEMAS ANDROID - ISMAEL VALENZUELA PRINCIPAL ARCHITECT, MCAFEE STRATEGIC SECURITY SERVICES (FOUNDSTONE)

Página creada Andrea Álvaro
 
SEGUIR LEYENDO
ÚLTIMOS AVANCES EN ANÁLISIS FORENSE DE SISTEMAS ANDROID - ISMAEL VALENZUELA PRINCIPAL ARCHITECT, MCAFEE STRATEGIC SECURITY SERVICES (FOUNDSTONE)
Últimos avances en Análisis Forense
de sistemas Android

Ismael Valenzuela
Principal Architect, McAfee Strategic Security Services (Foundstone)
ÚLTIMOS AVANCES EN ANÁLISIS FORENSE DE SISTEMAS ANDROID - ISMAEL VALENZUELA PRINCIPAL ARCHITECT, MCAFEE STRATEGIC SECURITY SERVICES (FOUNDSTONE)
El equipo de Foundstone

•   Fundada en 1999, parte de McAfee desde 2004
•   Herramientas gratuitas
•   Whitepapers
•   Presente en BlackHat desde 2003
•   Open Research Security Blog:
    –   blog.opensecurityresearch.com
•   Hacking Exposed Series
    –   @Foundstone / @FSEMEA

•   Personal
    –   blog.ismaelvalenzuela.com
    –   @aboutsecurity
    –   CISSP, CISM, GREM, GCFA, GCUX…
    –   12 años en Seguridad IT
ÚLTIMOS AVANCES EN ANÁLISIS FORENSE DE SISTEMAS ANDROID - ISMAEL VALENZUELA PRINCIPAL ARCHITECT, MCAFEE STRATEGIC SECURITY SERVICES (FOUNDSTONE)
De qué hablaremos hoy

• Por qué Forense en Android
• Técnicas forenses para:
   –   Adquisición de evidencia
   –   Análisis de sistema de ficheros
   –   Análisis de memoria RAM
   –   Análisis de malware (estático y dinámico)

• Resumen de Herramientas (no exhaustivo)
• Demos
• Referencias para investigar

• ¿Por qué forense en Android?
ÚLTIMOS AVANCES EN ANÁLISIS FORENSE DE SISTEMAS ANDROID - ISMAEL VALENZUELA PRINCIPAL ARCHITECT, MCAFEE STRATEGIC SECURITY SERVICES (FOUNDSTONE)
Malware móvil - Acumulativo

 El malware móvil se ha convertido en la categoría con más crecimiento a medida que se
 experimentan nuevos ataques dirigidos principalmente a la plataforma Android.

              2,000

              1,500

               1,000

                 500

                      0
                          Q1 10 Q2 10
                                        Q3 10 Q4 10
                                                    Q1 11 Q2 11
                                                                Q3 11   Q4 11
ÚLTIMOS AVANCES EN ANÁLISIS FORENSE DE SISTEMAS ANDROID - ISMAEL VALENZUELA PRINCIPAL ARCHITECT, MCAFEE STRATEGIC SECURITY SERVICES (FOUNDSTONE)
Muestras nuevas de malware Android / trimestre

 En el último trimestre de 2011 el número de muestras de malware de Android recibidas se
 cuadruplicó. La mayoría del malware Android está dirigido al envío de mensajes SMS a números
 premium. El “rooting” de dispositivos Android se ha convertido cada vez en tarea más fácil.

             500

             400

             300

             200

             100

               0
                   Q1 10 Q2 10 Q3 10 Q4 10 Q1 11 Q2 11 Q3 11 Q4 11
ÚLTIMOS AVANCES EN ANÁLISIS FORENSE DE SISTEMAS ANDROID - ISMAEL VALENZUELA PRINCIPAL ARCHITECT, MCAFEE STRATEGIC SECURITY SERVICES (FOUNDSTONE)
Tendencia clave: recuperación en Botnets
 Las infecciones de Botnets repuntaron fuertemente en Diciembre, aunque están lejos de sus máximos históricos.
 Brasil, Bielorrusia, Colombia, India, España, Turquía y Estados Unidos experimentaron crecimientos
 significativos.
                            Global Botnet Infections per Month
 6,000,000
 5,000,000
 4,000,000
 3,000,000
 2,000,000
 1,000,000
          -
ÚLTIMOS AVANCES EN ANÁLISIS FORENSE DE SISTEMAS ANDROID - ISMAEL VALENZUELA PRINCIPAL ARCHITECT, MCAFEE STRATEGIC SECURITY SERVICES (FOUNDSTONE)
Android/Geinimi.A
• Cifrado                                                       180.168.68.34
    –   Comandos, peticiones URL a C&C                          117.135.134.185
                                                                google.funimoe.com
• Escucha en puerto 5432 el “handshake”, “hi,are you online?”   www.widifu.com
                                                                www.udaore.com
    •   Responde con “yes,I’m online!”                          www.frijd.com
    •   Cambia a puertos 4501 o 6543                            www.islpast.com
    •   Puerta trasera local en puerto 9547                     www.piajesj.com
                                                                www.qoewsl.com
•   Comandos de ‘backdoor’                                      www.weolir.com
    –    Reenviar SMS a los servidores C&C                      www.uisoa.com
                                                                www.riusdu.com
    –    Instalar software, malware o spyware adicional
                                                                www.aiucr.com
    –    Reenviar contactos
    –    Generación de tráfico
ÚLTIMOS AVANCES EN ANÁLISIS FORENSE DE SISTEMAS ANDROID - ISMAEL VALENZUELA PRINCIPAL ARCHITECT, MCAFEE STRATEGIC SECURITY SERVICES (FOUNDSTONE)
¿Qué información guardan estos dispositivos?

                      DISPOSITIVOS
                        MÉDICOS

      EMBEBIDOS

SMART CARS

      ATM / KIOSCOS

                  ENTRETENIMIENTO
ÚLTIMOS AVANCES EN ANÁLISIS FORENSE DE SISTEMAS ANDROID - ISMAEL VALENZUELA PRINCIPAL ARCHITECT, MCAFEE STRATEGIC SECURITY SERVICES (FOUNDSTONE)
Forensics & Android

• Preservación, Adquisición,
  Análisis, Reporte

• Principio de Locard
• Evidencia Digital
• Orden de volatilidad

• Investigaciones internas,
  criminales, litigios civiles,
  seguridad nacional, análisis de
  malware, etc.
ÚLTIMOS AVANCES EN ANÁLISIS FORENSE DE SISTEMAS ANDROID - ISMAEL VALENZUELA PRINCIPAL ARCHITECT, MCAFEE STRATEGIC SECURITY SERVICES (FOUNDSTONE)
Desafíos

• Sistema de Ficheros YAFFS2
     – Herramientas tradicionales no sirven
• Acceso como ROOT al dispositivo
     – Lagunas legales
     – Invalida la garantía
• Para cada adquisición lógica del dispositivo la opción de “debugging” debe estar
  habilitada
     – Difícil si el teléfono está bloqueado con contraseña
•   Difícil obtener duplicados bit a bit
•   Dificultad para utilizar Write Blockers
•   ¿Extraemos el disco duro?
•   Violación de la cadena de custodia y principio de integridad
     – ¿Guardamos volcados de memoria en SD Card?
Soluciones Comerciales vs Open Source

• Comerciales
   –   Cellebrite
   –   Encase
   –   Oxygen
   –   ViaForensics
   –   etc..

• Open Source
   – ¿Decías algo de que el Kernel estaba
     basado en Linux?
   – Bien documentado
   – Extensa comunidad
   – Aquí va la imagen de la arquitectura de
     Android que tantas veces has visto
     ya…
A Continuación

• Recolección de Evidencia
• Análisis de Evidencia
Preparando el entorno

• Software Development Kit
       • Herramienta de desarrollo
       • Incluye librerías de software, APIs, documentación y
         un emulador!
       • Soporta Linux, Windows y OSX
       • Imprescindible para análisis forense!
       • Android Debug Bridge – Interfaz para acceso al
         dispositivo

   – Install APPS, APK Downloader con Google Chrome
       • adb install 

   – ¿Dónde consigo muestras?
      • http://contagioexchange.blogspot.com.es/
      • http://malc0de.com/database/
¿Dónde está la “evidencia”?
 • Preferencias compartidas
     – XML files
 • Almacenamiento interno
     – Ficheros creados por el dispositivo, no accesibles por ninguna aplicación ni por el
        usuario (sino es root)
 • Almacenamiento externo
     – Generalmente formateado en FAT32 (sin seguridad)
              $ adb shell
             $ mount
             $ ls /mnt/sdcard

 • SQLite
     – Permite almacenar una base de datos entera en un solo fichero
     – Multi plataforma
           • Ejemplo:
             $ adb shell
             $ ls /data/data/com.android.email/databases
Dónde está la “evidencia”
 • Red
     – Android proporciona APIs de bajo nivel para interactuar con la red.
         • Ejemplo:
               – Instala DROPBOX y busca el fichero files/log.txt
     – Capturas de tráfico
         • Wireshark
         • O desde el emulador con la opción -tcpdump
 •
 • El Kernel de Linux en Android proporciona multitud de información a través de logs, debuggers, etc:

               $ adb shell dmesg
               $ adb shell logcat
               $ adb shell logcat -b events
               $ adb shell dumpsys
               $ adb shell dumpstate
               $ adb shell bugreport

      –   Bugreport: combina logcat, dupmsys, dumpstate
            • Miles de líneas
            • El análisis manual es prácticamente imposible
Particularidades de Android
• Memoria flash NAND
   – Teléfonos, discos USB y otros dispositivos portátiles
   – No removibles!
   – Características muy particulares (op. escritura y borrado
     limitadas)

    – A diferencia de Apple, fabricantes no están limitados a un
      tipo de memoria NAND específico.
                                                                            $ adb shell
         • Para ello Android proporciona Flash Translation Layer
                                                                            $ mount
           (FTL)
             – Accesible como un dispositivo de bloques a desarrolladores
                                                                            mtdblock emula
             – Implementado en software mediante el subsistema Linux
                                                                            dispositivos de
               Memory Technology Devices (MTD)
                                                                            bloque
             – MTD es Open Source
             – Nuevos sistemas Android (Samsung) están migrando a
               eMMC donde el controlador FTL está integrado en la
                                                                            $ ls /dev/mtd*
               memoria (similar a discos USB y SSD)                         $ cat /proc/mtd
Forensics & Android

• MTD divide la memoria en bloques de 132 KB con 64 bytes Out of Band (OOB) por
  cada “trozo” de 2 KB
   – OOB guarda YAFFS2 etiquetas, metadatos, bloques erróneos, etc.

     (132 KB = 64 ‘trozos’ de 2 KB + 64 ‘trozos’ de 64 bytes = 128 KB + 4096 bytes)
YAFFS2
Primer sistema de ficheros diseñado específicamente para memorias Flash NAND

- Open Source
- Robusto
- Reduce la sobrecarga de la RAM y los tiempos de inicio

Lo que le interesa saber al analista forense:

   - Pocas herramientas que “entiendan” este sistema de ficheros
   - Utiliza un sistema de “recolección de basura” que permite la recuperación de ficheros borrados
     con relativa facilidad
   - Esta posibilidad decrece con el tiempo… incluso si no se está usando el dispositivo

   -   http://www1.informatik.uni-erlangen.de/filepool/thesis/diplomarbeit-2011-zimmermann.pdf
Adquisición

  Tres maneras básicas
       • Backup
       • Lógica
       • Física
  – Espacio asignado vs No asignado

  – Utiliza un Bloqueador de Escritura
      • Pueden dar fallos, a veces no exponen todos los dispositivos conectados

  – ¿Acceso directo a la evidencia?
      • El investigador debe estar suficientemente formado
      • Debe proporcionar razones válidas para seguir ese proceso
      • Detallar el impacto y la consecuencia de sus acciones
      • Mantener la trazabilidad (los pasos deben ser reproducibles)
Adquisición Lógica

  Habitualmente suficiente, aunque tiene sus limitaciones (solo se extrae espacio asignado).

  – Tres métodos:

      • Backup
      • Content Providers
          – Información compartida entre aplicaciones.
          – AFLogical Open Source Edition (viaExtract comercial)
              » http://code.google.com/p/android-forensics

      • A partir de aquí… necesitas ROOT
          – Conecta con ADB y extrae los ficheros que quieres adquirir:
                    $ adb pull 
          – Algunos APK están cifrados en la SD Card y solo pueden ser adquiridas conectadas
             al dispositivo
Adquisición Física

  Adquisición bit a bit, réplica “exacta”, recupera espacio no asignado

  - Android viene con DD
      - Va a darte la mayor parte de la memoria interna (incluyendo ‘unallocated space’, pero no
        puede leer los trozos OOB de las particiones YAFFS2 MTD)

         $ dd if=/dev/mtd/mtd2 of=/sdcard/cache.img bs=2048

  - Imagen NAND completa
      - Incluye OOB
      - Utilidad ‘nandump’
      - Extrae todo los datos de YAFFS2
          - Muchas posibilidades de recuperar datos borrados
          - Si se ha producido “recolección de basura” se pueden encontrar fragmentos de
              ficheros repartidos por la imagen.
Análisis de Sistema de Ficheros
• SDCard
   – FAT32
       • Sdcard.img
• Disco Interno
   – YAFFS2
      • Cache.img
      • userdata.img
         • userdata-qemu.img

• Examinar:
   –   /proc (utilizar ‘cat’)
   –   /data or /data/data and /data/system
   –   /cache
   –   /mnt/sdcard
   –   /mnt/emmc
Sistema de Ficheros

• Técnicas
   – Tradicionales
       • File Carving (scalpel)
           – Magic files (cabeceras conocidas)
           – Usar firmas específicas para Android
       • Strings (--all –radix) | egrep
       • Hex Editor
       • Sqllite (o sqlbrowser si prefieres GUI)

   – Timelines (en desarrollo)
       • The Sleuth Kit (mactime)
       • Log2timeline from Kristinn Gudjonsson
Artefactos en Aplicaciones Android

• Contactos
   – /data/data/com.android.providers.contacts
• Calendario
   – /data/data/com.android.providers.calendar
• Navegador
   – /data/data/com.android.providers.browser
• SMS & MMS
   – /data/data/com.android.providers.telephony
• Gmail
   – /data/data/com.google.android.providers.gmail
• Historial Descargas
   – /data/data/com.android.providers.downloads

• Muchos otros: Youtube, Google Maps, Facebook…
Adquisición y Análisis de Memoria
• Hasta ahora muy poca investigación
• Poca información disponible
• Debería ser el primer elemento a adquirir (orden de volatilidad)
   – Información estructurada y no estructurada
       • Strings: datos de aplicaciones, fragmentos de comunicaciones, claves de
         cifrado, etc.
       • Estructuras de kernel: procesos, ficheros abiertos, sockets, etc.

• Métodos para adquirir memoria física en Linux no funcionan
   – /dev/fmem: dispositivo que soporta lectura de RAM para herramientas como DD
       • Función page_is_ram no existe en arquitectura ARM. DD no tendría forma de saber si una
         página es RAM o memoria de un dispositivo hardware (ver /proc/iomem)
       • DD en Android tiene un problema de “integer overflow” que lo hace inutilizable en la
         mayoría de los dispositivos Android.
Adquisición y Análisis de Memoria
• ¿Cómo adquirirla?
  – Live acquisition
      • Adb shell ps
      • Adb shell netstat
      • Adb shell logcat …

  – Dalvik Debugging Monitor Server: proceso por proceso
     $ ddms

      1 – Selecciona un proceso
      2 – Selecciona “DUMP HPROF file” para guardar un volcado del
      proceso en disco
Adquisición y Análisis de Memoria

• DMD ahora Lime Forensics (Linux Memory Extractor)
  –   Primera herramienta que permite captura completa de RAM
  –   Loadable Kernel Module
  –   Minimiza los cambios entre espacio usuario/kernel = ++ forense
  –   Vuelca la memoria directamente a la tarjeta SD o a la red a través de adb

  – Open Source, disponible desde el 5 de Abril en http://code.google.com/p/
      lime-forensics/

  – Paper “Acquisition and analysis of volatily memory from android devices” de Digital
    Investigation (2012)
Adquisición y Análisis de Memoria

• Lime via TCP
    $ adb push lime.ko /sdcard/lime.ko
    $ adb forward tcp:4444 tcp:4444
    $ adb shell
    $ su
    # insmod /sdcard/lime.ko path=tcp:4444

•   En tu estación forense:

    $ nc localhost 4444 > android_ram.dump
Adquisición y Análisis de Memoria

• Lime via SD Card
    $ adb push lime.ko /sdcard/lime.ko
    $ adb shell
    $ su
    # insmod /sdcard/lime.ko path=/sdcard

•   En tu estación forense:

    $ adb pull
Adquisición y Análisis de Memoria

• Analisis
   – Strings, grep y tu editor de Hex.
   – Volatility, análisis de memoria para plataformas Windows (Linux en beta)
   – Volatilitux
       • Equivalente a Volatility para Linux y Android
       • Necesitas un archivo de “perfil” para Android

• Limitaciones actuales en este área
   – Carga de módulos requiere permisos de Root
   – Compilación específica para cada dispositivo
      • Requiere la obtención y preparación del código fuente del Kernel del dispositivo
      • Requiere “compilación cruzada” (cross-compiling) del módulo de Kernel
Análisis de Aplicaciones
• Enfocado en Malware Analysis
• Dos maneras de analizar malware
   – Análisis Estático = examinando el código
   – Análisis Dinámico = ejecutando y observando

• Estático
   –   Completa visibilidad de todos los posibles ‘caminos’ de ejecución
   –   Es más difícil de que te hagas daño a ti mismo…
   –   Lento, más complejo
   –   Vulnerable a los métodos de ofuscación

• Dinámico
   – Basado en observación = más sencillo
   – ¿Detección de emulación?
   – No todos queremos contactar con los atacantes…
Ficheros APK

• No es más que un fichero ZIP: incluye código y recursos de app.
• Lleno de cosas que no son siempre interesantes…
   – META-INF/
      • Certificados
      • Fichero ‘manifest’ – lleno de SHA-1 hashes
   – Assets/
      • Configuraciones de aplicación, etc…
   – Manifest/
      • Fichero XML. Indica los permisos requeridos por la aplicación.
      • Realmente un fichero Dbase IV que contiene XML y algún que otro lenguaje.
      • Afortunadamente tenemos http://code.google.com/android-apktool/
   – Res/
      • Otros recursos, principalmente imágenes
Uso de Permisos

• Todas las aplicaciones Android deben declarar los permisos que
  quieren tener (buena intención!)
• Estadística de permisos en 1.400 aplicaciones legítimas vs 760
  maliciosas.
  – Número medio de peticiones
     • 7 para las maliciosas (algunas llegaron a pedir 39!!)
     • 3 para las legítimas

  – No es un indicador definitivo pero es algo a tener en cuenta.
Código de Aplicaciones
 • Las aplicaciones de Android están basadas en Java
 • Así que el código debe estar en ‘bytecode’, verdad?

 • mmm… no! Está en un fichero ejecutable ‘Dalvik’
    – Ejecutable Dalvik, fichero .dex
    – Formato diseñado para ejecutarse en la máquina virtual que corre en el ‘corazón’
      de Android
    – El código ‘bytecode’ de Java se transforma en Dalvik ‘bytecode’ antes de la
      instalación

 • Podemos descompilar los archivos .dex
    – Apktool
    – Smali/baksmali
Código de Aplicaciones

 • El código resultante se parece mucho a ensamblador
    – Aunque tampoco exactamente….

 • Puesto que originalmente era Java, ¿por qué no volvemos atrás?
    – Dex2jar
       • http://code.google.com/p/dex2jar
       • Herramienta simple de línea de comandos, multi-plataforma

 • Una vez en formato JAR, utiliza tu descompilador de Java favorito
    – JDGUI: http://java.decompiler.free.fr/?q=jdgui
Análisis de Malware Estático

• Resumen de herramientas útiles:
   –   Smali/Baksmali
   –   APK Tool
   –   Dex2Jar
   –   JD-GUI
   –   Androguard
   –   Understand
   –   IDA (solo para valientes!)
   –   …

• Nueva
   – APK Inspector, nueva herramienta para análisis estático
Ejemplo

• HippoSMS
   – Descargable de servidores Chinos en 2011
   – Puedes encontrarlo en “contagiodump”

   – Comenzamos por descomprimir la applicación
      # unzip hippoSMS.apk
   – Usamos baksmali para descompilar classes.dex y generar código más legible en ficheros .smali
      # java –jar baksmali-1.3.2.jar classes.dex –o output

   – También podemos usar dex2jar y JD-GUI para analizar el fichero .jar resultante
       # dex2jar.sh classes.dex

• Ver sms/MessageService y network/ServerStub
Análisis de Malware Dinámico

• Dos métodos
   – Utilizando un Sandbox tipo ‘Cuckoo’ para Android
   – Por ejemplo:
       • Droidbox - http://code.google.com/p/droidbox/

   – Instalando y observando el comportamiento manualmente
       • Captura de trazas de Red
            – Tcpdump
            – Wireshark
       • Interceptación de DNS y servicios HTTP, IRC, FTP, etc…
            – Recuerda: evita contactar directamente con el atacante
            – Dale lo que el malware pida!

            – Utiliza Remnux: http://zeltser.com/remnux/
            – Distribución Linux para Ingeniería Inversa de Malware
Otras Iniciativas

• Entornos virtualizados pre-configurados

• ARE
   – ARE Toolkit (VirtualBox)
   – http://redmine.honeynet.org/projects/are/wiki

• OSAF (Vmware)
   – Open Source Android Forensics
   – www.osaf-community.org
Referencias

• Android Mind Reading: Memory Acquisition and Analysis with DMD
  and Volatility, por Joe Sylve

• Analyzing Mobile Malware, labs.snort.org

• Android Forensics: Investigation, Analysis and Mobile Security for
  Google Android, por Andrew Hoog
¿Quieres aprender más?

  – Imágenes Android gratuitas con propósito educacional. 10
    dispositivos (5 imágenes: 3 YASSF2/2 FAT)
         http://viaforensics.com/products/tools/sleuth-kit-yaffs2/

  – Honeynet Forensics Challenge 9 – “Mobile Malware”
       • https://www.honeynet.org/node/751

  – DFRWS 2011
     • Imágenes concurso en http://www.dfrws.org/2011/challenge/
         index.shtml

  – My ERP Got Hacked
     • Introducción al análisis forense: metodologías y
        herramientas
         http://blog.ismaelvalenzuela.com/papers-presentations/
Ismael Valenzuela
blog.ismaelvalenzuela.com
Open Security Research
blog.opensecurityresearch.com
@aboutsecurity
@fsemea / @foundstone

linkedin.com/in/ivalenzuela

ismael_valenzuela@mcafee.com
También puede leer