martes, 24 de julio de 2018

Analisis forense a sistemas IOS

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.: