Análisis forense de iOS con recuperación de datos de SQLite: inmersión profunda y comparación

Publicado Actualizado

Existen muchas técnicas que utilizamos para ayudar a las personas a recuperar sus datos con nuestros productos, y gran parte de la inteligencia que hemos desarrollado durante la última década está por debajo de la superficie. Hoy vamos a sumergirnos en uno de los enfoques que utilizamos para recuperar mensajes eliminados: la recuperación forense de datos de SQLite.

¿Cómo almacenan los iPhones los datos, de todos modos?

En pocas palabras, muchas aplicaciones almacenan sus datos en bases de datos, y la mayoría de ellas utilizan el formato SQLite . SQLite es un pequeño y ordenado formato de base de datos sin servidor y se ajusta bien a lo que Apple y los proveedores de aplicaciones necesitan. Como SQLite se ejecuta sin un servidor de base de datos separado, hay algunas maneras en que se diferencia de otras bases de datos. En particular, para que el acceso sea rápido, no puede mantenerse regularmente cuando se está utilizando. Los usuarios no quieren que la aplicación se ralentice mientras la base de datos realiza un mantenimiento de rutina, como la limpieza de índices, por ejemplo.

Es posible que estas operaciones de limpieza u optimización ocurran con SQLite, pero tienden a ejecutarse con poca frecuencia. Para los usuarios, ese es el equilibrio adecuado: su iPhone será razonablemente rápido y sus datos serán sólidos. Y, si surge la necesidad, tendrá una probabilidad mejor que la media de recuperar los datos de iOS eliminados debido a la naturaleza poco frecuente de este proceso de mantenimiento.

Sin ser demasiado técnico, es bastante simple cómo funciona el proceso. Piense en estas bases de datos como grandes archivadores:

  • Cuando sea el momento de agregarles información, agregará un archivo con una etiqueta ordenada, explicando qué contiene el archivo y cómo funciona su teléfono.
  • Pero cuando elimina datos, en lugar de sacar el archivo del archivador, el teléfono simplemente retira la etiqueta. Por lo tanto, los datos antiguos no se eliminan, simplemente se dejan sin etiquetar (o quedan "huérfanos", como técnicamente podríamos llamarlo). Esto significa que cuando borra datos, su teléfono no necesita pasar por un proceso de liberación relativamente lento. espacio en el armario. Simplemente dice "eh, olvídate de esto", y sigue adelante.
  • Cuando se trata de agregar más datos, si hay espacio, su teléfono agregará archivos adicionales. Si no hay espacio para agregar más datos, verá si hay alguno de esos archivos sin etiquetar, y si los hay, eliminará cualquier parte de ellos que necesite para hacer espacio.

Lo que podría sacar de esto es que es rápido eliminar datos de su teléfono y bastante rápido para agregarlos, suponiendo que haya espacio. Y, de manera no intuitiva, es el proceso de agregar datos más recientes lo que realmente lleva a la eliminación de información más antigua.

Recuperar información eliminada de SQLite en iOS

Digamos que has estado usando tu teléfono un par de meses. Las bases de datos que contiene son como los archivadores que describimos anteriormente. Tienen un montón de archivos en ellos, y donde ha borrado los datos, esos archivos seguirán ahí, pero con dos advertencias: pueden haber sido sobrescritos parcial o totalmente, y estarán sin etiquetar.

La técnica de recuperación es casi lo que espera: se trata de encontrar estos archivos huérfanos, completos o no, y tratar de encontrar dónde encajan, y si hay suficiente información restante para que tengan sentido. Como es de esperar, todo es un poco incómodo, y hay una serie de otros aspectos técnicos que pueden surgir para dificultar las cosas. En particular, las bases de datos de más de unos pocos megabytes de tamaño y las bases de datos que contienen datos binarios pueden dificultar mucho más el proceso.

Dicho esto, no es demasiado difícil recuperar algunos datos, por lo que se ve una gran cantidad de herramientas en el mercado que afirman poder hacer esto. En general, puede dividir estas herramientas en tres categorías:

  • El bueno. Usan muchas técnicas diferentes que se han construido y probado en contra de miles de ejemplos diferentes de eliminación o corrupción.
  • El malo. Solo recuperan el contenido restante que está perfectamente formado e incluye una serie de sugerencias sobre a dónde pertenece.
  • El feo. Estos escanean en busca de contenido huérfano y marcan cualquier basura vieja que parece que podría encajar en el contexto. Si lo miras mientras entrecierras los ojos. "NSMutableArray": ¿podría ser el nombre de su registro de contacto faltante? Hmmm

Recuperación de SQLite y recuperación de iOS en el mundo real

Ahora que hemos hablado un poco sobre cómo funciona esto, vamos a ver qué tan efectivo es en el mundo real. Después de todo, queremos capacitar a los usuarios comunes para recuperar sus datos sin tener que ser expertos. ¿Nos las arreglamos? Realizaremos una evaluación comparativa de las cuatro herramientas de recuperación de SQLite líderes, contra el iPhone Backup Extractor. Al momento de escribir, la última versión de esas herramientas son:

Nombre Versión y fecha de lanzamiento Plataformas Precio
Reincubar iPhone Extractor de copia de seguridad 7.6.1.2201, mayo '18 Windows y macOS $ 34.95
SQLite Doctor de SQLabs 1.3.0, ago '13 Windows y macOS $ 49
Recuperación de la base de datos de SysTools 'Sqlite 1.2, no se muestra fecha de lanzamiento Solo Windows $ 149
Stellar Data Recovery's Stellar Phoenic Repair para Sqlite 1.0, sin fecha de lanzamiento Solo Windows $ 599
Explorador forense de GetData (FEX) 4.3.5.7364, 18 de mayo Solo Windows $ 1,695
Adquirir Forensics 'Sqlite Forensics Explorer 2.0, no se muestra fecha de lanzamiento Solo Windows $ 149

Para configurar esta prueba, vamos a utilizar una gran base de datos grande, llena de datos del mundo real. En este caso, se trata de una base de datos de “Mensajes” de 169 MB, tomada de un iPhone con iOS 11. Echemos un vistazo: los siguientes comandos muestran el tamaño del archivo y los resultados de una consulta para contar cuántos mensajes contiene .

$ ls -l sms.db
-rw------- 1 afitzpatrick 177565696 Oct  2  2017 sms.db

$ sqlite3 sms.db
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite> SELECT COUNT(*) FROM message;
220261

Por lo tanto, hay más de 220.000 mensajes. Ellos son los que no han sido eliminados. Pero, ¿cuántos de los mensajes eliminados pueden encontrar las herramientas de recuperación?

Recuperación de datos SQLite desde iOS: los resultados están en

Ejecutamos todas las herramientas que se muestran arriba en el mismo archivo y anotamos los resultados en la tabla a continuación. Nos hubiera encantado usar una Mac, pero como no todas las herramientas son compatibles con macOS, usamos una PC con 16 GB de RAM, que ejecuta Windows 10 Pro (versión 1803 , compilación 17134.48 ).

Reincubar Adquirir forense SQLabs SysTools Recuperación de datos estelares Obtener datos
Número recuperado 342 56 (pero en su mayoría basura) 0 0 (Después de un análisis prolongado, se encontraron 220,261, ¡que es el mismo número de registros válidos que ya existen!) 0 (Cada vez que lo ejecutamos, contó hasta 37 mensajes eliminados, pero se bloqueó con el error 0x40000015, antes de que finalizara el proceso. No fue posible exportar o guardar ninguno). 0 (Llegamos varias veces para comprar una licencia, pero nunca recibimos respuesta).
"Basura" recuperado? Ninguna; Todos parecen ser mensajes no eliminados válidos. Emojis, fechas, horas y números de remitente / destinatario se recuperan. La mayoría de los recuperados son basura 😕 Necesitamos ingresar manualmente los valores máximos de ROWID varias veces para probar diferentes parámetros. Ninguno recuperado en ningún punto. Solo se encontraron mensajes preexistentes. Se estrelló cada vez, así que no podía decirlo. No fue posible hacerlo funcionar.
Costo efectivo por mensaje recuperado (en este ejemplo) $ 0.10 $ 2.66 > $ 49 > $ 149 > $ 599 > $ 1,695

DE ACUERDO. Así que fue una sorpresa, ya que esperábamos que al menos todos recuperaran algunos datos. Turns Resulta que nuestra humilde herramienta lidera el mercado en la recuperación de datos de SQLite, a pesar de no ser una herramienta de recuperación de datos de SQLite dedicada. (Si se ha preguntado, es por esto que también licenciamos nuestra tecnología a otras compañías. Esto es difícil).

Recuperación de datos SQLite en diferentes versiones de iOS

Con cada nueva versión de iOS, Apple tiene la oportunidad de cambiar la forma en que el sistema operativo maneja las bases de datos SQLite. Esto incluye optimizaciones en la frecuencia con la que se realizan la limpieza y otras operaciones de mantenimiento y cuándo se activan.

A medida que los dispositivos se vuelven más potentes, estas operaciones se pueden usar más libremente a medida que su impacto en la experiencia del usuario se vuelve más pequeño. Por lo tanto, con cada nueva generación, es probable que una base de datos SQLite se limpie con mayor frecuencia, lo que tiene la ventaja de hacer que la base de datos sea más rápida para las operaciones normales. Esto se alinea con el objetivo de Apple de aumentar la protección y privacidad de los datos del usuario, ya que no se dejan datos no deseados en el dispositivo. Sin embargo, esto tiene la advertencia de hacer imposible la recuperación de datos a través del método SQLite.

En iOS 11, comenzamos a ver un aumento en la actividad de limpieza de bases de datos para SMS e iMessages. La recuperación sigue siendo posible, y es más probable que para mensajes más recientes que posteriormente se eliminaron, pero no se garantizaron.

En iOS 12, ha habido un gran aumento en la frecuencia de limpieza de la base de datos para la base de datos de SMS e iMessages. Debido a que esta versión fue promocionada por tener un gran enfoque en el mantenimiento y las mejoras de velocidad, este cambio tiene sentido ya que probablemente dará como resultado un desempeño más suave para operaciones más comunes.

¿Qué debo hacer para aprovechar esto cuando recupero datos de iOS?

Quizás sea lo mejor: esta tecnología está integrada con Reincubate iPhone Backup Extractor , y lo ha sido desde los primeros días. A medida que use la aplicación, aplicará esta tecnología cuando obtenga una vista previa o exporte sus mensajes y otros tipos de datos. Dependiendo de los datos que esté viendo y de la forma en que los esté viendo, la aplicación indicará qué datos no se eliminaron y cuáles no. Todo está incluido.

Sobre el Autor

Aidan Fitzpatrick fundó Reincubate en 2008 después de crear la primera herramienta de recuperación de datos de iPhone, iPhone Backup Extractor. Ha hablado en Google sobre emprendimiento y se graduó en la Academia de Liderazgo de la Organización de Empresarios.

CEO de Reincubate en el Palacio de Buckingham

En la foto de arriba se encuentran los miembros del equipo de Reincubate que se reunieron con la Reina Elizabeth Elizabeth en el Palacio de Buckingham, luego de recibir el premio empresarial más alto del Reino Unido por nuestro trabajo con la tecnología de Apple. Lea nuestra posición sobre privacidad, seguridad y protección .

Comentarios (1)

I have a question. When apple release new ios , do they provide any information about schema change? or we can get them from ios backup. Thanks in advance.

Hey Jon. Apple don't, and it's not just them changing things: any time a third-party app gets updates things can change. We have a set of tools and a team testing these things every day.


¿Podemos mejorar este artículo?

Nos encanta escuchar de los usuarios: ¿por qué no enviarnos un correo electrónico, dejar un comentario o tuitear? @reincubate?

© 2008 - 2019 Reincubate Ltd. Todos los derechos reservados. Registrado en Inglaterra y Gales #5189175, VAT GB151788978. Reincubate® es una marca registrada. Términos y privacidad. Recomendamos la autenticación de múltiples factores. Construido con en Londres.