ÚLTIMOS AVANCES EN ANÁLISIS FORENSE DE SISTEMAS ANDROID - ISMAEL VALENZUELA PRINCIPAL ARCHITECT, MCAFEE STRATEGIC SECURITY SERVICES (FOUNDSTONE)
←
→
Transcripción del contenido de la página
Si su navegador no muestra la página correctamente, lea el contenido de la página a continuación
Ú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
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?
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
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
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 -
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
¿Qué información guardan estos dispositivos? DISPOSITIVOS MÉDICOS EMBEBIDOS SMART CARS ATM / KIOSCOS ENTRETENIMIENTO
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.
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