Vous êtes sur la page 1sur 38

Análisis Forense a dispositivos iOS

Hoy traigo una serie de artículos donde se pretende explicar cómo realizar el análisis
forense a dispositivos iOS paso a paso, detallando cada aspecto a tener en cuenta para
realizar el proceso y llevar a feliz término el análisis a los dispositivos móviles de
Apple.

Para no hacer muy aburrido el texto será dividido en varias partes, empezando con las
etapas previas a la adquisición y copia bit a bit del dispositivo iOS, utilizando el
proyecto iPhone Data Protector de Jean-Baptiste Bédrune y Jean Sigwald, hasta el
análisis de los archivos almacenados, sus rutas en diferentes versiones de iOS y sus
backups.

Una de las metodologías más extendidas para realizar un proyecto de análisis forense,
sin importar el sistema operativo o el dispositivo al que se le realice, es la planteada por
Warren G. Kruse II y Jay G. Heiser, autores del artículo “Computer Forensics: Incident
Response Essentials”, en la que sostienen que toda investigación forense digital, debe
pasar por cada una de las etapas del siguiente diagrama en ese orden lógico para ser
llevada a feliz término.

En el transcurso de las siguientes entregas, seguiremos el orden lógico planteado en el


modelo de Kruse y Heiser, pero obviando algunos apartados que no aplican para el
análisis forense de dispositivos iOS o no son tema de trabajo para este artículo, en
donde nos enfocaremos solamente en los aspectos técnicos necesarios para llevar a cabo
nuestro proyecto forense sobre los dispositivos móviles de Apple.

Antes de empezar a ver las técnicas forenses para dispositivos iOS, es importante tener
en cuenta una serie de consideraciones adicionales que un analista forense debe saber al
encontrarse con dispositivos iOS que cuenten con conexión 3G o bien sean teléfonos
móviles. Estos procedimientos serán descritos en el artículo y quienes hagan un análisis
a dispositivos sin estas características podrán omitir estos pasos adicionales.
Para adquirir un dispositivo iOS debemos tener preparado y sanitizado el medio donde
se almacenará la imagen forense, la copia lógica o el backup del dispositivo realizado
con iTunes. Para esto debemos realizar el borrado seguro del disco o partición para
garantizar que la información almacenada previamente no altere la nueva información.

A continuación veremos cómo se realiza el proceso de borrado seguro en varios


sistemas operativos como Mac OS X, Microsoft Windows y GNU Linux, utilizando
herramientas integradas al sistema operativo o de libre distribución:

Borrado seguro en entornos Mac OS

La mejor forma de realizar el borrado seguro de medios de almacenamiento en un


sistema Mac OS es usando la herramienta Utilidad de Discos (Disk Utilities) que está
integrada en este sistema operativo, y que cuenta varios tipos de borrado que pueden ser
configurados con las [Opciones de seguridad…] en la pestaña “Borrar”:

 Borrado seguro sobrescribiendo los datos 1 vez, que borra los datos y escribe sobre
ellos con datos aleatorios para dificultar la recuperación de los mismos.
 Borrado seguro sobrescribiendo los datos 3 veces, que cumple el estándar del
Departamento de Energía de los Estados Unidos para el borrado seguro de soportes
magnéticos.
 Borrado seguro sobrescribiendo los datos 7 veces, que cumple el estándar 5220-22-M
del Departamento de Defensa de los Estados Unidos.

Borrado seguro en entornos Windows

Para entornos Windows, existe una excelente herramienta gratuita llamada Eraser
(http://eraser.heidi.ie/) que se integra perfectamente con el sistema operativo y cuenta
con varios tipos de borrado que pueden ser configurados en la pestaña “Settings”
seleccionando en método de borrado “Default file erasure method:” y “Default unused
space erasure method:”

 Borrado seguro sobrescribiendo los datos con 35 diferentes patrones, que utiliza el
método de borrado Gutmann.
 Borrado seguro sobrescribiendo los datos 7 veces, que cumple el estándar 5220-22-M
del Departamento de Defensa de los Estados Unidos.
 Borrado seguro sobrescribiendo los datos 7 veces, que cumple el estándar RCMP
TSSIT OPS-II.
 Borrado seguro sobrescribiendo los datos 7 veces, que cumple el estándar Schneier
desarrollado por Bruce Schneider’s.
 Borrado seguro sobrescribiendo los datos 7 veces, que cumple el estándar German
VSITR.
 Borrado seguro sobrescribiendo los datos 3 veces, que cumple el estándar British
HMG IS5.
 Borrado seguro sobrescribiendo los datos 3 veces, que cumple el estándar 5020 de la
Fuerza Aérea de los Estados Unidos.
 Borrado seguro sobrescribiendo los datos 3 veces, que cumple el estándar AR380-19
de las Fuerzas Armadas de los Estados Unidos.
 Borrado seguro sobrescribiendo los datos 2 veces, que cumple el estándar Russian
FOST P50739-95.
 Borrado seguro sobrescribiendo los datos 1 vez con datos pseudo aleatorios.
Borrado seguro en entornos GNU Linux

En los sistemas GNU Linux, contamos con varias alternativas integradas al sistema
operativo, pero destacamos la herramienta shred que está incluida en el paquete
coreutils y cuenta con la posibilidad de personalizar el número de veces que se pueden
sobrescribir los datos con el parámetro –iterations=N.

 Borrado seguro sobrescribiendo los datos 3 veces, utilizando el comando sin


parámetros adicionales shred /dev/(medio de almacenamiento).
 Borrado seguro sobrescribiendo los datos 7 veces, utilizando el comando con los
siguientes parámetros: shred -v -z –interations=7 /dev/(medio de almacenamiento).
 Borrado seguro sobrescribiendo los datos N veces, utilizando el comando con los
siguientes parámetros: shred -v –interations=N /dev/(medio de almacenamiento).

Una vez sanitizado el medio de almacenamiento que utilizaremos para guardar la


imagen del dispositivo, pasamos a la etapa de adquisición.

Transporte del dispositivo iOS

Si es necesario transportar el dispositivo de lugar, por ejemplo, de la escena donde fue


encontrado al laboratorio de análisis, se debe grabar en video o capturar con fotografías
la posición y el estado en el que se encontraba. La manipulación del mismo debe
realizarse después de terminado el levantamiento de evidencia física (huellas, muestras,
etc..) si es el caso, ya que el manejo inadecuado de esta evidencia física conduce a la
contaminación, el deterioro o la destrucción, siendo ésta la causa principal que impide el
posterior análisis de la misma; recuerda que en análisis forense, tanto digital como
tradicional, es preferible pecar por exceso que por defecto.
Si estamos seguros de que ya se realizaron los análisis previos y contamos con la suerte
de encontrar el dispositivo sin codigo de bloque, es recomendable verificar si cuenta o
no con el bloqueo automático. Si lo tiene pero no está activo en este momento, es
recomendable seguir estos pasos para evitar que se active.

También es recomendable extraer la información básica del dispositivo, porque aunque


muchas herramientas forenses lo hacen, no siempre vamos a tenerlas a la mano.

Los procedimientos anteriores deben ser muy bien documentados y justificados en la


cadena de custodia ya que estamos manipulando fisicamente el dispositivo, tambien es
una buena práctica extraer la tarjeta SIM (subscriber identity module o módulo de
identificación del suscriptor) del dispositivo (si aplica), para lo cual debemos ingresar
la herramienta que se incluye en el manual del equipo para este fin, en el agujero que
trae el dispositivo en su borde derecho, y presionar fuerte hasta que salga la bandeja que
guarda la SIM o Micro SIM. Si no contamos con esta herramienta, un clip o una aguja
también son de gran utilidad.
Otra buena práctica a tener en cuenta, es poner el dispositivo en modo avión si es
posible, de esta forma evitamos que se pueda conectar a las redes celulares
e inalámbricas.

Adicional a esto, es recomendable meter el dispositivo en una jaula de Faraday, si


contamos con una, esto evitará cualquier tipo de comunicación del dispositivo con el
exterior.
Nota: Una jaula de Faraday es un dispositivo que anula los efectos de los campos
electromagnéticos externos evitando que ingresen a la jaula, por tanto, toda
comunicación de los dispositivos almacenados en ella con el exterior, queda anulada,
sino se cuenta con una jaula de Faraday, es fácil construir una, sólo necesitas crear un
esqueleto de madera del tamaño que desees y cubrirlo con un mosquitero de alambre.

O puedes adquirir una jaula de Faraday especialmente pensada para dispositivos


móviles, en cualquier tienda de electrónica.

El uso de la jaula de Faraday cobra especial significado en los dispositivos iOS ya que
el fabricante (Apple) ha puesto a disposición de sus clientes por medio de la App Store y
sin costo alguno, una herramienta llamada “Buscar mi iPhone/iPad/iPod” que además
de geo posicionar el dispositivo, cambiar el código de bloqueo, enviar mensajes o
reproducir sonidos, permite eliminar remotamente toda la información que contenga.
En caso de ser borrada la información, ésta podría recuperarse, pero el borrado remoto
de la información en un dispositivo como estos, podría entorpecer cualquier
investigación forense en la que esté vinculado.

Creación de imagen forense

Existen varias formas de crear una imagen forense de un dispositivo iOS. Algunas de
ellas requieren un escenario idóneo para que puedan llevarse a cabo, otras en cambio
requieren que adquiramos hardware o software especializado para realizar la tarea; En
este artículo tendremos los dos enfoques para satisfacer las necesidades tanto de los
analistas forenses que cuentan con recursos, como aquellos que no cuentan con ellos.

Para sacar la copia bit a bit de un dispositivo iOS sin gastar dinero en el camino,
tenemos varias alternativas, la más completa hasta la fecha de la publicación de este
artículo es la planteada por Jean-Baptiste Bédrune y Jean Sigwald con su iPhone Data
Protector.
iPhone Data Protector es una herramienta desarrollada en Python, que permite cargar en
la memoria RAM del dispositivo iOS un conjunto de aplicaciones (servidores ssh, rpc y
scripts en python para comunicarse con el computador usando usbmux) que facilitan al
analista forense, entre otras cosas, las siguientes tareas sin alterar en ningún momento
los archivos del dispositivo:

 Establecer una comunicación directa entre el dispositivo iOS y el equipo del


investigador.
 Descifrar el código de bloqueo por defecto utilizado en el dispositivo en menos de 30
minutos, utilizando fuerza bruta.
 Leer los archivos cifrados del sistema.
 Crear una imagen bit a bit del dispositivo.
 Recuperar archivos borrados.

La buena noticia es que comparado con otros métodos, si utilizamos la herramienta de


Bédrune y Sigwald, no necesitamos que el dispositivo iOS cuente con Jailbreak o
software adicional para poder extraer su imagen bit a bit, lo que sí necesitamos es
cumplir con las dependencias del iPhone Data Protector en el sistema que lo corramos
(en mi caso Mac OS X), por tanto será lo primero que hagamos.

Nota: Jailbreak es un procedimiento utilizado para eliminar las limitaciones planteadas


por Apple en sus dispositivos con sistema operativo iOS. Realizar este proceso permite
al propietario del equipo tener acceso total al sistema operativo, permitiendo realizar
modificaciones, instalar extensiones, temas o aplicaciones que no se encuentran
disponibles en la tienda de aplicaciones oficial de Apple (App Store).
Resolviendo Dependencias de iPhone Data Protector

Nota: El proceso documentado en este artículo se realizó desde un equipo Mac OS X,


pero no quiere decir que no puedas correrlo en tu sistema de preferencia, lo unico que
necesitas es cumplir con las dependencias que se mencionan en este texto e instalarla
segun sea el caso.

Lo primero que haremos será descargar e instalar el paquete Link Identity Editor (ldid)
en nuestro sistema operativo. Para esto, ingresamos al repositorio en google code de
Kenny Chan quien nos proporcionará el ejecutable ldid con soporte para Mac OS, pero
además para arquitecturas de procesadores ARM v5 y v7
http://code.google.com/p/networkpx/downloads/detail?name=ldid&can=2&q=ldid una
vez descargado, le damos permisos de ejecución y lo movemos a la carpeta /usr/bin de
nuestro sistema.

La siguiente dependencia que instalaremos se trata de OSXFUSE, la adaptación para


Mac del famoso FUSE (Filesystem in Userspace), que además de facilitarnos la
visualización y escritura en una buena cantidad de sistemas de archivos, nos permitirá
crear el disco RAM que subiremos a nuestro dispositivo iOS para ayudarnos a realizar
las tareas de adquisición, sólo tenemos que descargarlo de la página oficial
http://osxfuse.github.com e instalarlo utilizando su asistente.
También es necesario tener instalado el entorno de desarrollo Xcode, ojalá en su última
versión, ya que este proporciona todas las herramientas necesarias para compilar
algunos componentes del iPhone Data Protector, podemos conseguir una copia de
Xcode, por medio de la Mac App Store o desde http://developer.apple.com

iPhone Data Protector utiliza varias librerías de python para su funcionamiento.


Algunas de ellas como pycrypto son muy comunes en herramientas que realicen algún
procedimiento criptográfico, como en nuestro caso, ya que haremos uso de esta librería
para descifrar los archivos del sistema iOS una vez tengamos la copia bit a bit del
mismo.

Hay muchas formas de instalar una librería de python, pero en este caso usaremos las
herramientas que nos proporciona el sistema operativo para instalar pycrypto y otras
librerías requeridas por el iPhone Data Protector como lo son M2crypto, construct y
progressbar.

Instalando pycrypto:

Instalando M2crypto, construct y progressbar:

Y por último nos queda instalar Mercurial, el sistema de control de versiones utilizada
por los desarrolladores de iPhone Data Protector para administrar su proyecto. Por
tanto, si deseamos una copia actual de él, tenemos que descargar mercurial desde
http://mercurial.selenic.com e instalarlo usando su asistente.

iPhone Data Protector

Una ves resueltas todas las dependencias del iPhone Data Protector, pasamos a
conseguir la última versión de la herramienta desde el repositorio oficial en google
code.

El iPhone Data Protector utiliza algunos archivos de iOS 5.0 para generar el disco RAM
que finalmente subiremos a nuestro dispositivo. Por tanto, debemos tener una copia de
esta versión de iOS para que la herramienta pueda extraer estos archivos. Existen
diferentes páginas que almacenan las imágenes del sistema iOS en sus diferentes
versiones y dispositivos, la que más recomiendo es getiOS.com, pero con una simple
búsqueda con las palabras “iOS 5.0 ipsw” seguro encontrarás otra fuente de donde
descargar esta versión para tu equipo, una vez tengas el firmware, lo guardas en la
carpeta /iphone-dataprotector/.

Nota: A la fecha de la publicación de este artículo la versión actual del iOS es superior
a la 5.0, pero se utiliza esta imagen por compatibilidad con los dispositivos y la
herramienta, la última versión del iPhone Data Protector no es compatible con
dispositivos iPhone 5 y superiores ni con sistema operativo iOS 6.0, para sistemas
inferiores a iOS 6 podemos seguir usando el firmware de iOS 5.0. Recuerda que la
imagen sólo se utilizará para crear el disco RAM, en ningún momento tocaremos los
archivos ni el sistema del dispositivo a analizar, por tanto, para la herramienta es
transparente la versión que tenga instalada el aparato.

Para su correcto funcionamiento el iPhone Data Protector utiliza el listado de llaves


Keys.plist que contiene la herramienta redsn0w 0.9.10b5 desarrollada por el iPhone
Dev-Team y utilizada ampliamente para realizar Jailbreak a los dispositivos iOS, este
archivo se encuentra dentro de la aplicación redsn0w.app (clic derecho, mostrar
contenido del paquete) en la ruta /Contents/MacOS/Keys.plist y lo copiamos en la
carpeta /iphone-dataprotection/.

Nota: iPhone Dev-Team es uno de los grupos mas reconocidos en la escena


“Jailbreak”, famosos por realizar la primera herramienta para ejecutar software no
firmado por Apple en sus dispositivos (PwnageTool) y saltar una a una las medidas de
seguridad interpuestas por la manzana con cada nueva versión de iOS. El sitio oficial
del grupo es www.iphone-dev.org donde, entre otras cosas, encontrarás las últimas
versiones de sus creaciones como PwnageTool y redsn0w.

El paso a seguir será parchear el kernel del iOS 5.0 y generar nuestro disco RAM. Para
eso, abrimos la consola de nuestro sistema, nos ubicamos en la carpeta del iPhone Data
Protector y lanzamos el script kernel_patcher.py que se encuentra en la carpeta
python_scripts, pasándole como parámetro el nombre del iOS 5.0 que descargamos
(python python_scripts/kernel_patcher.py IOS5PARATUDISPOSITIVO.ipsw).

Después de correr el script kernel_patcher.py, compilamos la herramienta img3fs


(make -C img3fs) que nos dará soporte al sistema de archivos img3 utilizado por los
dispositivos iOS y utilizada por el script make_ramdisk_XXXX(cambia según el
dispositivo).sh, el cual debemos ejecutar para generar el disco RAM que subiremos al
equipo.
El resultado de ejecutar estos scripts es la creación de 2 archivos:
kernelcache.release.n90.patched que contiene el kernel de iOS 5.0 parcheado y
myramdisk.dmg (puede cambiar de nombre según el dispositivo) que contiene un
conjunto de herramientas que subiremos a la RAM del dispositivo y nos ayudarán en el
proceso de análisis forense sobre iOS.

Para esto usaremos la herramienta redsn0w 0.9.10b5 desarrollada por el iPhone Dev-
Team y utilizada ampliamente para realizar Jailbreak al iOS 5, pero en esta ocasión le
pasaremos una serie de parámetros, para que en vez de instalar Cydia, la tienda de
aplicaciones no oficiales para iOS, instale en la RAM de nuestro dispositivo el paquete
de herramientas que contiene el archivo myramdisk.dmg.
Copiamos el firmware de iOS 5.0, el kernel parcheado y el disco RAM a la carpeta
donde tengamos el redsn0w para pasárselos como parámetro ejecutando:

open redsn0w.app –args -i IOS5PARATUDISPOSITIVO.ipsw -r myramdisk.dmg -k


kernelcache.release.n90.patched

Nota: Cuando lancemos el redsnow 0.9.10b5 con los parámetros descritos


anteriormente y no logramos poner el dispositivo en modo DFU (algo normal si nunca
has realizado el procedimiento), NO podemos darle el botón “< Back” y empezar de
nuevo, lo que debemos hacer es cerrar la aplicación y lanzarla de nuevo con los
parámetros “–args -i IOS5PARATUDISPOSITIVO.ipsw -r DISCORAM.dmg -k
KERNELPARCHEADO.patched”, de lo contrario cuando estemos subiendo el disco
ram tendremos problemas.

Si todo ha salido bien debe aparecerte la interface del redsn0w 0.9.10b5 indicándote que
apagues tu dispositivo para proceder a ponerlo en modo DFU (Device Firmware
Update).

El modo DFU en los dispositivos iOS es un estado especial de recuperación que se


utiliza principalmente para restaurar el firmware del sistema, aunque también es muy
utilizado por la escena Jailbreak para subir firmware modificado que haga funciones
adicionales a las que Apple ha pensado para su dispositivo y por investigadores como
nosotros que deseamos cargar software que cumpla con una función especifica, como la
de darnos acceso nativo al equipo para poder realizar un análisis forense digital forense.

Para poner nuestro equipo en este modo, es necesario:

 Dejar presionado el botón Home (botón redondo ubicado debajo de la pantalla) y el


botón Sleep (botón ubicado en la parte superior del dispositivo, junto al agujero para
conectar los audífonos) al mismo tiempo durante 10 segundos
 Después de estos 10 segundos debemos soltar el botón Sleep, sin dejar de presionar el
botón Home por otros 10 segundos.

Si has realizado bien el procedimiento, redsn0w detectó el modo DFU y empezó a


realizar una serie de tareas. Cuando termine estas tareas, tu dispositivo deberá estar con
la pantalla negra y tener las letras OK dibujadas en código ASCII como en la siguiente
imagen.

A veces poner el dispositivo en este modo puede ser un poco tedioso, más aun, cuando
no se conoce con exactitud la duración de un segundo, por eso, redsn0w te guía paso a
paso en este proceso con un contador que te irá diciendo que botones oprimir o soltar, y
por cuanto tiempo. Si es tu primera vez realizando este tipo de procedimientos
seguramente te será más útil una búsqueda con las palabras “modo dfu + dispositivo”
en YouTube, donde con seguridad encontrarás una buena cantidad de videos que
enseñan detalladamente a llevar a cabo este proceso.

NOTA: Si estás virtualizando el Mac OS X, es importante que copies los archivos


kernelcache.release.n90.patched, myramdisk.dmg y la imagen de iOS 5.0 a tu sistema
anfitrión deberá ser un Windows o Mac OS ya que redsn0w sólo está disponible para
estos sistemas, también que descargues la versión 0.9.10b5 de redsn0w para Windows,
desconectes tu dispositivo de la maquina virtual y desde la consola ejecutes el programa
con los parámetros antes mencionados, o los siguientes parámetros si el sistema
anfitrión es un Windows, redsn0w.exe -i IOS5PARATUDISPOSITIVO.ipsw -r
myramdisk.dmg -k kernelcache.release.n90.patched ya que normalmente existen
problemas de detección en las máquinas virtuales cuando se conecta un dispositivo iOS
en modo DFU.

Los procedimientos realizados anteriormente sólo son necesarios una vez por cada tipo
de dispositivo iOS que desees analizar, ya que el mismo disco RAM, el mismo parche
para el kernel y el mismo firmware iOS 5.0 servirán para cualquier iPhone 4 (utilizado
en nuestro caso). Sólo tendrías que volver a generar estos archivos, si tuvieras que
analizar, por ejemplo, un iPhone 4S o cualquier dispositivo diferente al iPhone 4.

Pensando en agilizar un poco este trabajo, he realizado este proceso para algunos de los
modelos de dispositivos iOS más populares y los he puesto en una carpeta compartida
online en http://www.4shared.com/folder/NaaNSN34/Forense-iOS.html, sólo por si
algún día llegaras a necesitarla, en ella encontrarás los archivos necesarios para realizar
el análisis forense a un dispositivo iOS.

Una vez tengamos el disco que acabamos de crear, en la memoria RAM de nuestro
dispositivo debemos hacer la conexión del equipo con nuestro computador. Para esta
tarea, iPhone Data Protector trae una herramienta muy útil llamada tcprelay.sh que nos
permite re direccionar los puertos remotos abiertos por las aplicaciones del disco RAM
en nuestro dispositivo (22 y 1999), a puertos locales en nuestra máquina (2222 y 1999),
facilitándonos la comunicación. Para ejecutar esta herramienta primero le damos
permisos de ejecución en nuestro sistema (chmod +x tcprelay.sh), luego la ejecutamos
(./tcprelay.sh) y dejamos abierta esa consola por el tiempo que deseemos mantener la
conexión.

Recuperando Código de Bloqueo

Una vez hecha la conexión local con nuestro equipo, podemos utilizar las demás
herramientas que trae el iPhone Data Protector. La primera que usaremos es un script
llamado demo_bruteforce.py que se encuentra en la carpeta python_scripts, este
pequeño script permite recuperar el código de bloqueo que tenga asignado el dispositivo
realizando un ataque de fuerza bruta bastante efectivo cuando el código de bloqueo es
numérico (opción por defecto).

Velocidad del ataque de fuerza bruta de la herramienta demo_bruteforce.py:

Dispositivo iOS Tiempo en probar las 10000 combinaciones numericas


iPad 1 Alrededor de 16 minutos

iPhone 4 Alrededor de 20 minutos

iPhone 3GS Alrededor de 30 minutos

Nota: La fuerza bruta en la seguridad informática, se refiere a la forma de recuperar una


contraseña probando todas las combinaciones posibles de forma automatizada, hasta
encontrar aquella que permite el acceso.

Otra forma de conseguir el código de bloqueo es utilizando el software comercial Phone


Password Breaker, desarrollado por la empresa Elcomsoft (www.elcomsoft.com) que
permite descifrar el código de bloqueo de los dispositivos iOS haciendo uso de la fuerza
bruta o el software IGPRS Ivan Golubev’s Password Recovery Suite que además de
recuperar contraseñas de iOS desde sus backups, también recupera contraseñas de
BlackBerry, algunos volúmenes de TrueCrypt, y handshakes de WPA/WPA2 con la
posibilidad de usar el poder de computo de nuestra GPU para agilizar el
proceso. (http://www.golubev.com/igprs), sin importar la herramienta que decidamos
utilizar, el único requisito es que contemos con acceso a un equipo sincronizado con
iTunes para extraer el archivo manifest.plist.

El único archivo que necesitamos para descifrar el código de bloqueo utilizado por los
dispositivos iOS se llama manifest.plist almacenado en los backups que genera
automáticamente el iTunes y que puede ser encontrado en las siguientes rutas según el
sistema operativo:
• Mac OS X: ~/Library/Application Support/MobileSync/Backup/

• Windows XP: \Documents and Settings\(usuario)\Application Data\Apple


Computer\MobileSync\Backup\

• Windows Vista y Windows 7: \Users\(usuario)\AppData\Roaming\Apple


Computer\MobileSync\Backup\

Sólo debemos abrir el manifest.plist con el Phone Password Breaker, darle clic al botón
Start y esperar que el ataque de fuerza bruta surja efecto, arrojando en la mayoría de los
casos el código de bloqueo mucho mas rápido que con el iPhone Data Protector ya que
se utiliza la capacidad de procesamiento del equipo donde se ejecuta el software y no la
del dispositivo iOS.

Phone Password Breaker:

Ivan Golubev’s Password Recovery Suite:


Continuando con nuestra iniciativa de documentar paso a paso y en español el proceso
de realizar el análisis forense a un dispositivos iOS, presentamos la segunda entrega de
esta serie de artículos (ver primera parte), en esta entrega veremos como recuperar las
contraseñas del llavero (keychain) de iOS, como realizar la copia bit a bit y la copia
logica de los dispositivos moviles de apple.

Recuperando contraseñas del llavero en dispositivos iOS

Continuando con las herramientas que conforman el iPhone Data Protector, el script
demo_bruteforce.py no se limita solamente a obtener el código de bloqueo del
dispositivo. Después de tenerlo y ya “entrado en gastos” este script en python descarga
el “llavero” o keychain del dispositivo, una base de datos en SQLite con nombre
keychain-2.db donde se almacenan todas las contraseñas, certificados y datos
personales que el usuario del dispositivo ha guardado en el, esta información se
encuentra cifrada, pero podemos descifrarla fácilmente con la herramienta
keychain_tool.py
keychain_tool.py puede extraer mucha información de interés del llavero, desde las
contraseñas en texto plano almacenadas en él, pasando por los certificados que se han
usado en el dispositivo e incluso los códigos de bloqueo anteriores utilizados en el
equipo. Para que keychain_tool.py nos muestre la información que deseamos, sólo
debemos ejecutarlo con el parámetro adecuado:

Parámetro Función

Muestra un mensaje de ayuda con las diferentes opciones del script y un


-h, –help
ejemplo de uso

Muestra todo el contenido del llavero decifrado en texto plano como una
-d, –display
salida estandar de consola

-s, –sanitize Igual que -d sólo que ocultará las contraseñas con asteriscos (*)

-p, –
Guarda las contraseñas genéricas y de internet en un archivo CSV
passwords

-c, –certs Extrae todos los certificados y llaves

Extrae utilizando fuerza bruta los códigos de bloqueo anteriores utilizados en el


-o, –old
dispositivo

Modo de uso
python python_scripts/keychain_tool.py -Parámetro ruta/keychain-2.db ruta/Manifest.plist

Generando copia bit a bit, nuestro segundo original

La finalidad de crear un segundo original o imagen bit a bit, es tener una copia idéntica
de la información contenida en el dispositivo iOS, para que la evidencia original no sea
alterada en ningún momento, lo que nos da la posibilidad de manipular estos datos
fácilmente con herramientas especializadas, para buscar información que nos permita
resolver nuestro caso forense.

Pero antes de realizar la copia bit a bit, conectémonos vía SSH a nuestro dispositivo,
para que observemos las particiones que contiene su disco. Para esto desde la consola y
teniendo en segundo plano el script tcprelay.sh ejecutamos:

ssh -p 2222 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null


root@localhost

Cada vez que la conexión nos pregunte la clave de acceso, escribimos “alpine”, que es
la contraseña por defecto del usuario root en iOS y por tanto elegida por los creadores
del iPhone Data Protector para el servidor SSH de su disco RAM.

Con esto podemos ver que el disco del dispositivo está dividido en varias particiones,
cada una de ellas con una función especifica dentro del sistema operativo. En la
siguiente tabla podremos ver para qué utiliza iOS cada una de estas particiones.

Partición Descripción

/dev/rdisk0 Contiene todo el disco duro, incluidas todas las particiones

/dev/rdisk0s1 Es la partición que contiene el firmware del equipo iOS

/dev/rdisk0s1s1 Es la partición que contiene la raiz del sistema

/dev/rdisk0s1s2 Es la partición que contiene los datos del usuario y sus aplicaciones

Para versiones anteriores de iOS algunas particiones cambian de nombre, por ejemplo
en las versiones de iOS 4.X la partición que contiene la raíz del sistema es /dev/rdisk0s1
y los datos del usuario se almacenan en /dev/rdisk0s2s1, para iOS 3.X la raíz del
sistema se encuentra en /dev/rdisk0s1 y los datos de usuario en /dev/rdisk0s2. También
hay particiones que sólo aparecen en algunos dispositivos, como es el caso de la
partición /dev/rdisk0s2s1 que sólo se ve en el iPhone 3GS.

Ahora que conocemos cómo está conformado el disco duro del equipo y sabemos qué
hace en cada una de sus particiones, vamos a realizar el segundo original, con el que
trabajaremos a lo largo de toda nuestra investigación. Para realizar esta tarea iPhone
Data Protector tiene un script llamado dump_data_partition.sh, que se encarga
automáticamente de comunicarse vía SSH con nuestro dispositivo, generar una copia bit
a bit con la famosa herramienta DD y guardarla en nuestro equipo con extensión .DMG
para poderla montar fácilmente en nuestro sistema Mac OS X.

Por defecto el script dump_data_partition.sh inicia la copia bit a bit de la partición


/dev/rdisk0s1s2, donde se encuentran los datos de usuarios en el sistema iOS, pero sí
queremos hacer una copia de otra partición, sólo debemos editar este script y
especificarle el nombre de la partición que deseamos adquirir.

Corriendo en segundo plano para mantener la conexión entre PC y dispositivo iOS.


Normalmente con la partición /dev/rdisk0s1s2 (que contiene los datos de usuario),
tenemos toda la información necesaria para llevar a un feliz término nuestra
investigación, pero es bueno que sepas de la existencia de las otras particiones y lo que
el sistema operativo guarda en ellas, ya que por ejemplo, las aplicaciones de terceros,
instaladas con Cydia, pueden guardar información en la raíz u otras partes del iOS y no
podrías verla si solamente copias los datos de usuario.

Finalmente para empezar a crear la imagen bit a bit debemos darle permisos de
ejecución al script dump_data_partition.sh y ejecutarlo, teniendo en cuenta que
el tcprelay.sh debe estar corriendo en segundo plano siempre que quieras mantener el
puente entre tu PC y el dispositivo iOS.
Debes tener en cuenta que el tiempo total de la adquisición es directamente proporcional
a la capacidad de almacenamiento del dispositivo, una vez terminado el proceso nos
encontraremos con una copia exacta de la partición de datos del equipo iOS.

Lo primero que debemos hacer después de generada la imagen es firmarla digitalmente


utilizando SHA-1 y MD5 (se recomienda el uso de los 2 hash ya que si se presentan
problemas de colisión con una firma, la otra estaría de respaldo) tanto en el original
como en la copia que guardaremos en el medio de almacenamiento previamente
sanitizado.

Al abrir la imagen generada y examinar con cualquier editor de textos sus archivos,
podrás darte cuenta de que toda la información contenida en ella está cifrada, de nuevo.
iPhone Data Protector nos ofrece una solución a este problema con su script
emf_decrypter.py.

emf_decrypter.py permite descifrar todos los archivos contenidos en la imagen .dmg


que acabamos de generar. Debes tener cuidado ya que este script modifica la
información de la imagen, por tanto, debes guardar una copia del original, volver a sacar
la firma SHA-1 y MD5 a la imagen después de descifrar y documentarlo todo en la
cadena de custodia, si sólo queremos probar su funcionamiento sin escribir sobre la
imagen, sólo debemos ejecutarlo con el parámetro adecuado:

.
Parámetro Función

Muestra un mensaje de ayuda con las diferentes opciones del script y un ejemplo
-h, –help
de uso

-w, –nowrite Deshabilita la escritura de los archivos descifrados, para realizar pruebas

Modo de uso

python python_scripts/emf_decrypter.py -Parámetro ruta/imagen.dmg

.
Después de lanzar el emf_decrypter.py, debemos firmar de nuevo la imagen adquirida,
ya que esta ha sido modificada, la finalidad de este proceso es mantener la cadena de
custodia, ya que cualquier persona que realice estos pasos a la misma imagen debe
obtener como resultado siempre las mismas firmas en MD5 y SHA1 para poder
demostrar que no se ha modificado la evidencia.

Dependiendo de la partición a la que le sacaste la copia bit a bit, ya sea


/dev/rdisk0s1s1 que contiene la raíz del sistema o /dev/rdisk0s1s2 que contiene los
datos del usuario y sus aplicaciones encontraras los archivos estructurados de diferentes
formas.

En /dev/rdisk0s1s1 el árbol de directorios es muy similar a este (puede variar según la


versión de iOS):

Directorio Descripcion
Applications Es un enlace simbólico a -> /var/stash/Applications.pwn

Developer Esta vacío

Library Como en cualquier sistema Mac OS X, contiene los plugins,


configuraciones, etc..

System Contiene las preferencias del sistema y del dispositivo

User Es un enlace simbólico a -> /var/mobile

bin Contiene los ejecutables del sistema

boot Esta vacío

cores Esta vacío

dev Esta vacío

etc Es un enlace simbólico a -> private/etc/

lib Esta vacío

mnt Esta vacío

private Contiene los directorios etc y var (aquí encontraremos los


archivos fstab, passwd y muchos mas)

sbin Contiene los ejecutables del sistema


tmp Es un enlace simbólico a -> private/var/tmp/

usr Contiene los datos de zona horaria y ejecutables del sistema

var Es un enlace simbólico a -> private/var/

Mientras que en la partición /dev/rdisk0s1s2, que esta configurada por defecto para la
copia bit a bit en el iphone-dataprotector y es la partición que recomendamos adquirir,
tiene una estructura similar a esta:

Directorio Descripcion
audit Esta vacío

backups Esta vacío

cache Es utilizado por Cydia para almacenar temporalmente algunos


paquetes

db No hay datos relevantes

ea Esta vacío

empty Esta vacío

keybags Almacena el archivo systembag.kb que esta vinculado al código


de bloqueo del dispositivo, que puede ser descifrado usando el
script demo_bruteforce.py

Keychains Es el llavero de contraseñas en ios, contiene usuarios y


passwords cifrados de varias aplicaciones, se puede descifrar
usando el script keychain_tool.py

lib Carpeta utilizada por Cydia, nos puede arrojar información


sobre los repositorios y aplicaciones instaladas con esta tienda
alternativa de aplicaciones

local Esta vacío

lock No hay datos relevantes

log Contiene algunos logs de diagnostico y conexión que pueden


ser de utilidad.

logs En esta carpeta encontramos los logs generales del dispositivo,


también los logs del código de bloqueo y de los fallos en las
aplicaciones.

Managed Preferences Esta vacío


mobile Es la carpeta que contiene mas información, las aplicaciones
instaladas y gran información del usuario, la describiremos en
detalle mas adelante.

MobileDevice Esta vacío

MobileSoftwareUpdate Contiene log de la actualización de software

msgs No hay datos relevantes

preferences Encontramos una gran cantidad de información sobre la


configuración del equipo, rangos de ips, información sobre las
redes inalámbricas a las que se ha conectado, nombre del
teléfono y mucha mas información.

root Contiene información sobre la ubicación GPS del dispositivo,


cookies almacenadas, además los certificados públicos y
privados.

run Encontraremos logs del sistema

spool Esta vacío

tmp Algunos archivos temporales

vm Esta vacío

wireless Encontraremos el historial de llamadas realizadas, además de


los logs sobre las conexiones inalámbricas (3G, Bluetooht,
WiFi) del dispositivo.

Adquisición lógica del dispositivo iOS

Realizar el copiado bit a bit del dispositivo es el proceso recomendado para extraer la
máxima cantidad de información de un equipo iOS, ya que nos permite recuperar
incluso información borrada del equipo, pero no es la única forma de obtener la
información almacenada, en algunos casos no tendremos acceso o permiso para acceder
al dispositivo Apple que necesitamos analizar, pero si contamos con acceso a un equipo
donde se ha sincronizado dicho dispositivo, por tanto podemos realizar una copia lógica
y extraer información del backup almacenado por iTunes automáticamente.

Del backup de un dispositivo iOS, no solo se puede recuperar el código de bloqueo


como vimos anteriormente, sino también una gran cantidad de información que nos
puede servir para resolver una investigación, especialmente en esos casos donde no
tenemos acceso físico al equipo involucrado.

La ubicación de la carpeta Backups donde se almacenan las copias de seguridad que se


realizan a los dispositivos por medio de iTunes, varia según el sistema operativo y
normalmente se encuentran en estas rutas respectivamente:
 Mac OS X: ~/Library/Application Support/MobileSync/Backup/
 Windows XP: ~\Documents and Settings\(usuario)\Application Data\Apple
Computer\MobileSync\Backup\
 Windows Vista, Windows 7 y Windows 8: ~\Users\(usuario)\AppData\Roaming\Apple
Computer\MobileSync\Backup\

En esta carpeta podemos encontrar varios backups de diferentes dispositivos cada uno
de ellos en carpetas con el UUID del dispositivo como nombre, con una gran cantidad
de archivos cuyos nombres corresponden a su respectivo hash en SHA-1 y los
siguientes archivos con información valiosa sobre dicho backup:
.

Archivo Descripcion
Status.plist Almacena el estado de la última sincronización, la fecha, el UUID
del dispositivo y el tipo de backup realizado

Manifest.plist y Lista de todos los archivos que contiene la copia de seguridad,


Manifest.mbdb fecha de modificación y la firma de hash

Info.plist Toda la información del iPhone, el Nombre, El número


telefónico, el IMEI, versión de iOS, etc…

Nota: El Identificador universalmente único (universally unique identifier o UUID) es


un numero que identifica inequivocamente cada dispositivo,es un estandar realizado por
la Open Software Foundation (OSF) que ha tomado Apple para diferenciar cada
dispositivo.
Existen muchas herramientas para extraer la información de los backups de un
dispositivo iOS, pero solo vamos a ver la mejor herramienta para cada sistema
operativo, empezando por Mac OS X.

Extrayendo Backups de iTunes en Mac OS X

Para Mac OS X existe una herramienta grafica bastante simple pero igual de efectiva
que nos permite extraer la información contenida en los backups de iTunes y
organizarla de forma que podamos trabajar con ella mas fácilmente, su nombre
es iPhone Backup Extractor y puede ser descargada de www.supercrazyawesome.com.
El funcionamiento del iPhone Backup Extractor es muy simple, lo primero que nos
aparece es la interface donde podemos seleccionar la opción “Read Backups” para
listar los backups almacenados en nuestro equipo, una vez seleccionado el Backup al
que queremos extraerle la información, se nos muestra un listado con las aplicaciones
que han guardado información en el backup de iTunes y la opción de extraer los “iOS
Files” que contiene bastante información sobre el dispositivo iOS.

La mayor cantidad de información la sacaremos de “iOS Files” ya que contiene entre


otras cosas la información de las aplicaciones por defecto que trae el sistema operativo
iOS:
.

Directorio / Archivo Descripcion


/keychain-backup.plist Backup del archivo “llavero” donde se almacenan las claves de
algunas aplicaciones en iOS, esta cifrado pero como vimos
anteriormente puede ser descifrado con la utilidad
keychain_tool.py del iPhone Data Protector.

/Library En esta carpeta podemos encontrar la información de casi


todas las aplicaciones que integra iOS por defecto, entre ellas
encontramos la agenda de contactos, el calendario, el historial
de llamadas, las notas, las cuentas de correo, las notas de voz,
la organización del SpringBoard, los marcadores e historial de
safari, los diccionarios personalizados por el usuario (gran
fuente de información) y un largo etc…

/Media Encontraremos todas las fotos y grabaciones almacenadas en


el dispositivo.

/SystemConfiguration/ todos los archivos de configuración donde podemos encontrar


desde las redes inalámbricas a las que se ha conectado hasta la
hora en que se tenían configuradas las alarmas.

/TrustStore.sqlite3, Base de datos donde esta almacenada la información de los


ocspcache.sqlite3 certificados digitales en safari y la cache del estado de los
certificados.

Extrayendo Backups de iTunes en Microsoft Windows

Para Windows existe una herramienta de código abierto llamada iPhone Backup
Browser que permite extraer la información de los backup realizados con iTunes en el
sistema operativo de Microsoft, la podemos descargar de su pagina en Google Code
http://code.google.com/p/iphonebackupbrowser/.
Su funcionamiento es muy simple, solo abrimos el programa y automáticamente este
detectara los backups que tengamos guardados en nuestro equipo, si copiamos el backup
de otro lugar, nos da la opción de examinar el disco para indicarle la ruta donde lo
tenemos almacenado. Tan pronto seleccionamos el backup nos aparece en pantalla un
listado con todos los archivos que contiene la copia de seguridad, siendo el mas
importante el llamado ”System”, ya que contiene gran cantidad de información
relacionada con el dispositivo iOS, pero además extrae archivos importantes de las
aplicaciones instaladas.

Podemos exportar todos los archivos de backup a la carpeta c:\temp y como


característica diferenciadora el iPhone Backup Browser permite exportar la lista de
archivos en .csv.

Extrayendo Backups de iTunes en GNU/Linux

iTunes no tiene una versión para entornos GNU Linux, sin embargo podemos llevarnos
la copia de seguridad de un dispositivo iOS a un equipo con sistema GNU Linux y
extraer su información con herramientas de Windows como iPhone Backup Browser o
iPhone Backup Extractor (www.iphonebackupextractor.com) haciendo uso de mono
para correrlas en este sistema operativo.
Solo necesitas instalar la librería libmono-winforms2.0-cil con sus dependencias y
ejecutar el software con mono “mono ejecutable.exe”.

Las herramientas enumeradas anteriormente funcionan perfectamente si el backup de


iTunes no ha sido cifrado, pero cuando nos encontramos con un backup cifrado, es
necesario recurrir a herramientas comerciales como iOS Forensic Toolkit, desarrollada
por la empresa rusa Elcomsoft (www.elcomsoft.com/eift.html) o utilizar las
funcionalidades que nos ofrece el iPhone Data Protector para esta función.

El iPhone Data Protector incluye dos utilidades llamadas demo_backup_keychan.py y


backup_tools.py, diseñadas especialmente para ayudarnos a extraer la información de
los backups cifrados, ambas herramientas se encuentran en la carpeta python_scripts del
iPhone Data Protector, la primera nos ayudará a conseguir las contraseñas del llavero
del dispositivo y la segunda nos permite extraer la información cifrada una vez le
ingresemos la contraseña.

Para poder ejecutar la herramienta demo_backup_keychan.py debemos cumplir con


todas sus dependencias, por tanto debemos instalar:

 Qt para Mac
 PyQt (necesita SIP)

Para sistemas Mac OS X, existe un instalador con asistente grafico para Qt, solo
debemos descargarlo de qt-project.org/downloads e instalarlo siguiendo su asistente
paso a paso.

Para las librerías SIP y PyQt debemos descargar los archivos fuente y compilarlos en
nuestro equipo, empezaremos descargando y compilando SIP ya que es dependencia de
la librería PyQt.

Para instalar SIP debemos descargar el código fuente escrito para nuestro sistema
operativo del sitio www.riverbankcomputing.co.uk/software/pyqt/download/, una
vez descargado, descomprimimos, configuramos (sudo python configure.py),
compilamos (sudo make) e instalamos SIP en nuestro equipo (sudo make install).
Una vez instalado SIP, continuamos con la instalación de PyQt, de nuevo lo primero
que haremos será bajar el código fuente para nuestro sistema operativo de la pagina
oficial www.riverbankcomputing.co.uk/software/pyqt/download, una vez bajamos el
archivo con los fuentes, lo desempaquetamos y desde una consola del sistema iniciamos
la configuración pasándole con el parámetro -q la ruta donde quedo instalado el qmake
(sudo python configure.py –q /User/-USUARIO-/QtSDK/Desktop/Qt/-VERSION-
/gcc/bin/qmake), luego compilamos el código (sudo make) y finalmente instalamos el
PyQt (sudo make install).

La compilación de PyQt puede tardar un poco dependiendo de las prestaciones que


tenga tu equipo, espera que termine el proceso y cuando finalice podrás ejecutar la
herramienta demo_backup_keychan.py, te saldrá un cuadro de dialogo para que
busques la carpeta donde esta almacenado el backup de iTunes.

Si todo ha salido bien tendrás las contraseñas del dispositivo iOS almacenadas en el
Backup de iTunes, más de un 70% de usuarios utiliza la misma contraseña para
todo, por tanto con un poco de suerte alguna de las contraseñas almacenadas en el
llavero será la utilizada por el usuario para cifrar su backup en iTunes.

Apple suele cambiar con cada nueva versión de iTunes el sistema de cifrado para los
backups de sus dispositivos, por lo que es recomendable siempre estar pendiente de
estos cambios y del proyecto iPhone Data Protector, que siempre esta al tanto de estos
cambios y busca la manera de saltar las nuevas protecciones impuestas a los backups
por la empresa de la manzana (code.google.com/p/iphone-dataprotection/).

Si ya contamos con el password utilizado para realizar el cifrado del backup, solo
debemos utilizar la herramienta backup_tool.py para descifrar la información contenida
en el backup de iTunes ejecutándola con los siguientes parámetros e introduciendo la
contraseña de cifrado cuando nos sea solicitada:
.

Parámetro Función

Muestra un mensaje de ayuda con las diferentes opciones del script y un ejemplo
Ruta Origen
de uso

Ruta Destino Deshabilita la escritura de los archivos descifrados, para realizar pruebas

Modo de uso

python python_scripts/backup_tools.py /ruta/backupcifrado


/ruta/destino/backupdescifrado

El ultimo método de adquisición que documentaremos es la copia lógica del dispositivo


iOS, a diferencia de los métodos anteriores donde no se manipulaban directamente los
archivos del equipo iOS, este método es un poco mas intrusivo ya que requiere tener
jailbreak e instalar desde Cydia el servicio AFC2 que nos permite total acceso al
sistema de archivos del dispositivo, incluido la raíz del sistema.
Para realizar la copia lógica de un dispositivo iOS necesitamos el software Phone Disk
de la empresa Macroplant (www.macroplant.com/phonedisk/), una excelente
herramienta que nos permite montar nuestro equipo como un disco duro en nuestro
sistema, lo primero que haremos será descargarla q instalarla siguiendo su asistente.

Una vez instalado el Phone Disk, debemos añadir en el dispositivo iOS por medio de
Cydia, el servicio AFC2, que aparece en la tienda alternativa como afc2add, lo
instalamos y configuramos el Phone Disk para acceder al verdadero root (click derecho
en el icono de phone disk, preferencias y seleccionar “Alow Access to real root.”),
después solo conectamos nuestro dispositivo y ya podemos navegar desde finder en el
como si un disco externo se tratara.

Phone Disk esta disponible para entornos Mac OS X y Windows, por lo que en teoría
podríamos utilizar herramientas como FTK Imager de AccessData para realizar la copia
lógica de esta nueva partición en el sistema, pero en la practica el FTK Imager y
similares son incompatibles con Phone Disk, por tanto utilizaremos la herramienta de
copiado open source y multiplataforma llamada UltraCopier (ultracopier.first-
world.info) que nos permitirá realizar la copia lógica del dispositivo iOS conservando
las fechas y los permisos de los archivos.