Charla: Análisis Forense de Dispositivos Android, impartida por Antonio Díaz de Informática 64 para el curso de Especialización en Dispositivos Móviles que tuvo lugar en la Facultad de Informática de la Universidad de A Coruña del 20 al 22 de Junio de 2012. Diapositivas 2/3
2. Sistema de ficheros en Android
• Filesystem
– Estructuran la información guardada en una unidad de
almacenamiento
– Cada Sistema Operativo maneja su propio sistema de archivos.
• Windows (FAT, FAT32, NTFS, …)
• Unix (EXT2, EXT3, EXT4, Reiser, …)
• Mac (HFS+, …)
• Memorias Flash (YAFFS, YAFFS2, JFFS, JFFS2,…)
– Se suele acceder a los datos en bloques del mismo tamaño
(sectores o clúster)
– El software del sistema de archivos organiza los sectores en
archivos y directorios y mantiene un registro de los mismos.
3. Sistema de ficheros en Android
• YAFFS (Yet Another Flash File System)
– Utilizado por muchos dispositivos Android
– Diseñado específicamente para las memorias Flash NAND
– Provee automáticamente el "wear-levelling" (recolocación de datos)
– Robusto ante fallos de energía.
– Los datos de un fichero se almacenan por trozos de 512 bytes, con un
identificador.
– Versiones
• YAFFS1 (tamaño máximo del sistema de ficheros: 1 GiB)
• YAFFS2 (mejora de prestaciones, tamaño máximo del sistema de ficheros:
8 GiB)
4. Sistema de ficheros en Android
• De EXT 2 a EXT4
– La gran diferencia radica en la seguridad de datos y en la velocidad de lectura-
escritura
– EXT4 es utilizado en muchas distribuciones Linux.
– Los servidores de Google han migrado de Ext2 a Ext4.
– En la versión 2.3 (Gingerbread) del Nexus S de Google ya se utiliza EXT4.
– En muchos sistemas de doble núcleo se originaban “atascos”, ya que los
dispositivos anteriores usaban el sistema YAFFS
– Se prevé que el sistema de ficheros de Android en un futuro sea Btrfs (de
Oracle), ya implantado en muchos sistemas Linux.
5. Sistema de ficheros en Android
• Android está basado en un núcleo Linux.
• La forma de aproximarse al sistema es la
misma que se usaría en Unix.
• Hay particularidades de cada caso debido a:
– Variedad de versiones de Android
– Variedad de dispositivos
– Variedad de fabricantes
6. Permisos de carpetas y ficheros
• Permisos y dueños
– Todos y cada uno de los elementos del sistema de Linux tienen
dueño, ya sean ficheros, directorios o enlaces a dispositivos.
– El sistema de ficheros de Linux es jerárquico, así que las
acciones pueden afectar a niveles inferiores.
– Cada elemento tiene su usuario, dueño y grupo dueño y son
totalmente independientes.
– Cada elemento tiene sus propios permisos
7. Permisos de carpetas y ficheros
• Lista de comandos habituales
COMANDO DESCRIPCIÓN
cat Muestra el contenido del archivo en pantalla en forma continua.
cd Cambia de directorio.
cd … Sube un nivel en la jerarquía de directorios
exit Cierra las ventanas o las conexiones remotas establecidas.
jobs Lista los trabajos y sus números de identificación.
Lista los archivos y directorios dentro del directorio de trabajo. Tiene varios
ls
parámetros.
Monta dispositivos y particiones para su uso por el S.O. Hace que el S.O.
mount
proyecte el contenido montado en un enlace lógico (un directorio).
ps Muestra información acerca de los procesos activos.
pwd Muestra el directorio actual de trabajo.
8. Sistema de ficheros en Android
• Hay tres carpetas fundamentales del
sistema de ficheros.
– /system/: Corresponde al sistema operativo
android
– /mnt/sdcard/ ó /sdcard/: Se corresponde con la
tarjeta SD en un dispositivo real. Contiene el
almacenamiento de ficheros, música, etc.
– /data/: Almacena los datos de usuario y
aplicaciones:
• /data/app/: Almacena aplicaciones
• /data/data/: Almacena datos de las aplicaciones
• Incluye un subdirectorio por aplicación, con los
permisos de esa aplicación (un usuario en Linux).
9. Particiones
• Android utiliza particiones a la hora de organizar
los ficheros y carpetas del dispositivo.
• Cada partición se comporta de una manera
distinta según su labor a desempeñar
• Según han ido evolucionando las versiones
también lo han hecho las particiones
• El saber cuales son, y qué contienen evita las
consecuencias de su modificación
• Muy importante su manejo si se va a instalar una
ROM cocinada
10. Particiones
• ROMS
– Básicamente una ROM es el sistema operativo del terminal
– Las compañías cambian el aspecto de las ROMS para así poder
poner su sello a cada dispositivo y personalizarlo
– La ROM para UI TouchWiz de Samsung incorpora
• Un lanzador específico, el “TW Launcher”
• Aplicaciones propias
• Un market concreto
– La ROM para HTC Sense de HTC incorpora
• Aplicaciones propias
• Nuevos estilos en el calendario y la libreta de contactos.
11. Particiones
• ROMS Cocinadas
– Son firmwares modificados por usuarios para
mejorarlos de alguna manera
– En teoría son capaces de potenciar el terminal,
aunque una mala instalación puede dejar inutilizado
el dispositivo.
– Hay variantes de ROMs . Las más utilizadas son:
• Las ROMs de Stock: Son las oficiales, siguen el estilo de
Android
• Las ROMS MIUI: Creadas originalmente en China, intentan
profundizar y llevar más lejos a Android.
• CianogenMod: Muy extendido y disponible para más de 30
dispositivos, incluye MultiTouch, soporte para FLAC y otras
funcionalidades
12. Particiones
• Particiones estándar de la memoria interna.
– /boot
– /system
– /recovery
– /data
– /cache
– /misc
• Particiones pertenecientes a la tarjeta SD:
– /sdcard
– /sd-ext
13. Particiones
• /boot
– Es la partición de arranque del dispositivo
– Contiene el bootloader y el kernel
– Un dispositivo no puede arrancar sin esta
partición
– Importante su tratamiento cuando se va a
instalar una ROM cocinada.
14. Particiones
• /system
– Contiene el sistema operativo en sí (excepto
el kernel y el bootloader).
– Incluye:
• Interfaz de usuario de Android
• Aplicaciones pre instaladas del dispositivo
– Si se formatea esta partición se borra Android
del dispositivo
15. Particiones
• /recovery
– Es una partición de recuperación
– Permite iniciarlo en modo recuperación
– Se utiliza para tareas de mantenimiento o
recuperación de datos.
– Se puede instalar un sistema de recuperación
personalizado para tareas más avanzadas
16. Particiones
• /data
– Contiene los datos que el usuario ha creado o modificado
– Algunos ejemplos de datos:
• Datos de Aplicaciones y widgets instalados (menos las que venían preinstaladas /system)
• Contactos y su información asociada
• Información de llamadas y mensajes, así como de correos electrónicos
• Lista de marcadores, puntos WI-FI guardados y asociaciones a cuentas como Facebook.
– No todos los datos pertenecen a la partición /data:
• Los datos de la tarjeta SD no son de esta partición
• Otros elementos que no pertenecen pueden ser los temas, la caché, o ajustes del sistema.
17. Particiones
• /caché
– Información a la que el usuario accede
frecuentemente.
– Su labor es que la carga de datos frecuentes
sea más rápida.
– Limpiar esta partición sólo afectará al
rendimiento del dispositivo.
– Una vez vacía, se vuelve a llenar con datos
según se va utilizando el dispositivo
18. Particiones
• /misc
– Incluye información relacionada con la
configuración del sistema
– Puede incluir por ejemplo ajustes del
hardware o configuración de dispositivos USB
– Si se pierde esta partición algunas
características del dispositivo pueden dejar
de funcionar
19. Particiones
• /sdcard
– Pertenece a la tarjeta SD.
– Guarda los datos que se quieran almacenar
– Las aplicaciones instaladas por el usuario guardan aquí todos los datos y
configuraciones.
– Se puede borrar si se ha hecho copia de los datos con diversos programas
preparados para ello (por ejemplo MyBackup)
– Si un dispositivos tiene 2 tarjetas SD, una interna y otra externa, la partición
/sdcard hace referencia a la SD interna.
• Para la externa, se muestra en una partición alternativa que no es la misma en todos
los dispositivos (/sdcard/sd, o /sdcard2).
• En la partición de la tarjeta SD externa no se almacenan datos del sistema o de las
aplicaciones
20. Particiones
• /sd-ext
– Es una partición muy utilizada aunque no es estándar
– Funciona como una extensión de la /data si se utiliza con
algunas ROMS
– Cuando el dispositivo tiene poca memoria es cuando se
ve su utilidad.
– Si la ROM del dispositivo tiene instalada esta capacidad
se puede usar para instalar aplicaciones que requieran
más memoria interna de la que se permite.
– A nivel funcional es igual que la partición /data