Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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.
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.
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.
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.
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:
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.
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:
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.
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.
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).
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:
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).
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.
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.
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).
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/
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.
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 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
Modo de uso
python python_scripts/keychain_tool.py -Parámetro ruta/keychain-2.db ruta/Manifest.plist
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:
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/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.
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.
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.
.
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
.
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.
Directorio Descripcion
Applications Es un enlace simbólico a -> /var/stash/Applications.pwn
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
ea Esta vacío
vm Esta vacío
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.
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
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.
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.
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”.
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).
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
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.