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

Publicado Actualizado
Cover image for: Análisis forense de iOS con recuperación de datos de SQLite: inmersión profunda y comparación

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:

Name Version & release date Platforms Price
Reincubate iPhone Backup Extractor 7.6.1.2201, May ‘18 Windows & macOS $34.95
SQLabs’ SQLite Doctor 1.3.0, Aug ‘13 Windows & macOS $49
SysTools' Sqlite Database Recovery 1.2, no release date shown Windows only $149
Stellar Data Recovery’s Stellar Phoenic Repair For Sqlite 1.0, no release date shown Windows only $599
GetData’s Forensic Explorer (FEX) 4.3.5.7364, May '18 Windows only $1,695
Acquire Forensics’ Sqlite Forensics Explorer 2.0, no release date shown Windows only $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 ).

Reincubate Acquire Forensics SQLabs SysTools Stellar Data Recovery GetData
Number recovered 342 56 (but mostly junk) 0 0 (After a lengthy scan, it found 220,261, which is the same number of valid records already present!) 0 (Each time we ran it, it counted up to 37 deleted messages, but crashed with error 0x40000015, before it finished the process. It wasn’t possible to export or save any.) 0 (We reached out multiple times to purchase a license, but never heard back.)
“Junk” recovered? None; all appear to be valid undeleted messages. Emojis, dates, times and sender / recipient numbers are all recovered. Most of those recovered are junk 😕 We needed to manually input max ROWID values a few times to try different parameters. None recovered at any point. Only found pre-existing messages. Crashed every time, so couldn’t tell. Wasn’t possible to get it running.
Effective cost per message recovered (in this example) $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.