El objetivo de esta primera incursión en la
seguridad de IOS pretende obtener las claves en las medidas de
seguridad implementadas en los dispositivos IOS (tanto hardware como
software) para ayudarnos a conocer su funcionamiento y las
restricciones y opciones que estas imponen en la realización de un
análisis forense en los dispositivos iOS (phone y ipad) a partir de
su versión 9.3, concretamente en iOS 10.
Para ello, existe un documento publicado por Apple
en la que se explica la arquitectura de seguridad de iOS y cada uno
de los componentes y tecnológicas utilizadas en esta arquitectura.
El documento está disponible en este link.
Definición de metodología de análisis
En este apartado
vamos a proceder a definir una metodología para la realización de
un análisis forense en iOS. Esta metodología deberá tomarse como
una guía de los pasos a seguir a la hora de realizar el análisis en
estos dispositivos.
Aunque las fases
de un análisis forense digital pueden variar según autores y
circunstancias, para el caso concreto de dispositivos iOS, podemos
definir las siguientes fases:
Preservación
En esta fase se
requisa u obtiene el dispositivo que se cree pueden haber estado
implicados en un incidente, o del que se sospecha se puede extraer
pruebas que podrían ser aportadas en un caso judicial.
Como primera
medida, es importante introducir el dispositivo lo antes posible en
la bolsa de faraday y evitar así la adulteración del mismo.
Adquisición de los datos
Una vez que ya se
dispone del dispositivo, hay que preservar el contenido de esto.
Para acceder al
terminal e inspeccionar el contenido de las apps y registros de las
mismas. Existe varios escenarios.
-
Análisis del backup de iOS en el equipo pareado
-
Análisis forense del terminal desde un equipo pareado
-
El terminal tiene jialbreak y openSSH
-
El terminal tiene passcode, no tiene jialbrek
-
El terminal tiene un passcode complejo, no tiene jialbrak
-
El terminal no se puedo saber el passcode, no tiene jialbrek y no se tiene un equipo pareado
iPhone DataProtection
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, 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 y se puede descargar desde
GitHub.
Resolviendo Dependencias
Mac OS X,
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:
sudo ARCHFLAGS= '-arch i386 -arch x86_64' easy_install pycrypto
Instalando
M2crypto, construct y progressbar:
sudo easy_install M2crypto construct 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.
Windows OS,
Este proceso también es bastante sencillo de realizar. Solo se hace
necesario la instalación de las siguientes dependencias:
pip install constructor M2crypto construct progressbar pycrypto
Linux OS,
Este proceso también es bastante sencillo de realizar. Solo se hace
necesario la istalacion de las siguientes dependencias:
sudo apt-get install constructor M2crypto construct progressbar pycrypto
Montando iPDP
phyton backup_tool.py <backup path> [output path]
Recuperando contraseñas del llavero
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. Esta 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.
python python_scripts/keychain_tool.py -<Parámetro> [ruta/keychain-2.db] [ruta/Manifest.plist]
Generando copia bit a bit
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, conectarnos 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
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.
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.
Nota: 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.
python python_scripts/emf_decrypter.py -<Parámetro> [ruta/imagen.dmg]
Sacando claves
Los dispositivos
iOS vienen con la funcionalidad de cifrado-desifrado por hardware, lo
que le confiere un procesador dedicado exclusivamente a esta tarea.
En este
procesador se encuentran endebidas dos claves. Una de ellas es UID,
la cual referencia a un usuario y la otra almacenada en el
procesador, es la clave hardware, y llamada GID, la cual
identifica una única clave por modelo del dispositivo.
El proceso de
cifrado consiste en cifrar cada archivo con una única palabra clave.
Esta, es derivada al proceso de UID + GID, mas la clave que genere el
proceso, estas llamadas, a su vez, se almacenan en un contenedor, el
cual es llamado keybag. Y esto se resguarda por un PIN.
El PIN de bloqueo
suponiendo que sea de 4 dígitos numéricos, con cada dígito con la
posibilidad del 0 al 9. Se obtiene una entropia de 13.28. En pocas
palabras, se necesitan 10.000 intentos para poder averiguar al clave
que daría acceso al keybag.
Para mayor
protección, iOS lleva protección por software, la cual impide que
se puedan realizar ataques por fuerza bruta. Esta protección limita
a 10 intentos el que se puedan introducir una clave errónea. Si se
sobrepasa esta barrera, el dispositivo borrará las claves internas
necesarias para el cifrado-decifrado, y la información será
irrecuperable.
iPhone Data
Protector nos ofrece una solución a este problema con su script
emf_decrypter.py.
Nota: 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.
Ahora si podemos
realizar el análisis de información para poder hacer el peritaje.
Análisis del dispositivo
Este es el punto
de partida, se puede decir que el indice desde se obtiene una primera
visualización de la información más vital y básica con el numero
de serie del teléfono, versión del sistema operativo, si el
smartphone tiene jialbreak.
La línea temporal de un dispositivo
Uno de los puntos
más críticos a la hora de realizar un análisis forense es recrear
un evento según fecha, hora y lugar, detallando diversos sucesos que
ocurren en los intervalos especificados en la investigación.
en numerosas
ocasiones se pide al analista si este usuario ha realizado una
llamada a un numero determinado o si se conecto a la una web
especifica en un tiempo determinado, por ejemplo.
Análisis de contactos
Quizás este
apartado sea uno de los que, desde un punto de vista de una
investigación, pueda tenerse en cuenta dada su utilidad al
proporcionar información sobre la relación que exista en los
contactos que tengan el dueño del teléfono. En el terminal iOS,
estos son archivos tipo SQLite y pueden ser analizados con cualquier
visor.
Dado el avance
tecnológico ya no solo se guarda un nombre y numero, sino muchas
veces se añaden notas personales del contacto, fechas significativas
del cumpleaños, paginas web, sus redes sociales, incluso su foto.
Todos estos detalles son muy importantes y no se debe de olvidar que
gran parte de las investigaciones comienzan con este apartado.
Geolocalización de datos extraídos
Un smartphone es
un dispositivo naturalmente móvil que va guardando información de
los lugares por los que ha pasado. En un investigación judicial es
probable que el juez, si así le considera, acaba pidiendo
información a las operadoras para conocer a que estaciones de
telefonía se conectó, lo que permitirá hacer un estudio de la
posición física del terminal mediante triangulan de señales.
Esto no puede ser
necesario si se analiza toda la información del GPS de almacena el
iOS.
La primera de
ellas es la base de las torres de comunicacionque se almacenan en la
base de datos de consolidated.db, lo que viene a ser la
misma información a la que se tendría acceso con una orden
judicial.
Otra información
interesante son las aplicaciones sociales que guardan las coordenadas
cuando el usuario hizo un "check-in".
Se puede
encontrar información en los metadatos de las fotografiás tomadas
por el terminal o publicadas en RRSS. Estos datos son analizados por
aplicaciones como crep.py.
Por último, en
el caso de iOS, también se tienen en cuenta las redes WIFI a las que
del móvil se conectó. Esta redes pueden estar geolocalizadas en las
bases de datos de Google.
Mensajes de comunicación
Aunque la mensajería instantánea como skype y whatsapp están triunfando entre los usuarios de smartphones no se debe olvidar el numero de canales de comunicación de un dispositivo iOS es infinitamente mayor, y que puede ir desde los SMS/MMS hasta las aplicaciones de chat como messenger pasando por supuesto por los correos electrónicos.
Un análisis de
un terminal iOS en busca de las comunicaciones implicaría analizar
todas las bases de datos, y todos los ficheros de comunicaciones de
todas las aplicaciones con estas características.
Registros de eventos
En el registro de
eventos se puede observar el ultimo historial de llamadas. El
propósito de esta información puede ser vital para determinar un
ultimo uso del terminal y las llamadas resientes.
El
calendario
El calendario es
un excelente apartado donde es posible conocer los eventos
importantes que el usuario ha marcado, tal vez reuniones marcadas en
determinado lugar, repeticiones de tareas con alarmas, o cualquier
información que suele ser de elevada importancia y que el usuario
del teléfono haya determino.
Web
Browser and cache analizer
Estudiar es
historial de navegación y sus cookies proporciona información útil.
En este caso,
safari, podemos ver el historial de navegación, cookies, paginas
como favoritas, usuarios y contraseñas.
Google
Services
Los servicios de
google son interesantes, sobretodo por la transferencia y el hecho de
que incluyen un conjunto de servicios con la misma credencial.
Aplicaciones
Cada vez salen
nuevas apps que recolectan información y las alojan en bases de
datos.
Logs
de actividad del dispositivo
Como ultimo paso
en el descenso de nivel, es posible obtener mas datos si cabe, con la
información de lo que el usuario ha hecho en el teléfono revisando
los logs del mismo. En este apartado es posible incluso que tecla ha
pulsado y el momento.
Por supuesto no
es fácil el interpretar todos los datos, y que el volumen de
información que aparezca a lo largo de un gran periodo de tiempo o
se haya perdido, o sea de una magnitud ingente.
No hay comentarios.:
Publicar un comentario