Saltar al contenido principal

Technology, security analysis

Análisis forense de iOS con recuperación de datos SQLite: análisis en profundidad y comparativa

Aidan FitzpatrickPublicado el 1 de junio de 2018Actualizado el 17 de febrero de 2020
En esta página
Cover image for: Análisis forense de iOS con recuperación de datos SQLite: análisis en profundidad y comparativa

Usamos muchas técnicas para ayudar a las personas a recuperar sus datos con nuestros productos, y buena parte de la inteligencia que hemos desarrollado en la última década queda bajo la superficie. Hoy vamos a sumergirnos en uno de los enfoques que usamos para recuperar mensajes eliminados: la recuperación forense de datos SQLite.

¿Cómo almacenan los datos los iPhone?

En pocas palabras, muchas apps almacenan sus datos en bases de datos, y la mayoría usa el formato SQLite. SQLite es un formato de base de datos pequeño y práctico, sin servidor, que encaja bien con lo que necesitan Apple y los proveedores de apps. Como SQLite funciona sin un servidor de bases de datos independiente, difiere de otras bases de datos en varios aspectos. En concreto, para que el acceso sea rápido, no puede mantenerse a sí misma con regularidad mientras se está usando. Los usuarios no quieren que una app se ralentice mientras la base de datos realiza tareas de mantenimiento rutinarias, como limpiar índices, por ejemplo.

Con SQLite es posible que se produzcan estas operaciones de limpieza u optimización, pero tienden a ejecutarse con poca frecuencia. Para los usuarios, ese es el equilibrio adecuado: tu iPhone será razonablemente rápido y tus datos serán robustos. Y, si surge la necesidad, tendrás mejores probabilidades que la media de recuperar tus datos de iOS eliminados, gracias a la poca frecuencia de este proceso de mantenimiento.

Sin entrar en demasiados tecnicismos, el proceso es bastante sencillo. Piensa en estas bases de datos como grandes archivadores:

  • Cuando llega el momento de añadir información, añades una carpeta con una etiqueta clara que explica lo que contiene, y así es como funciona tu teléfono.
  • Pero cuando eliminas datos, en lugar de sacar la carpeta del archivador, el teléfono simplemente le quita la etiqueta. Así, los datos antiguos no se eliminan, solo se quedan sin etiqueta (o «huérfanos», como podríamos decir técnicamente). Esto significa que, cuando eliminas datos, tu teléfono no necesita pasar por un proceso relativamente lento para liberar espacio en el archivador. Simplemente dice «bah, olvida esto» y sigue adelante.
  • A la hora de añadir más datos, si hay espacio, tu teléfono añadirá más carpetas. Si no hay espacio para añadir más datos, comprobará si hay por ahí alguna de esas carpetas sin etiqueta y, si la hay, descartará las partes que necesite para hacer sitio.

De todo esto puedes deducir que eliminar datos en tu teléfono es rápido, y añadirlos también es bastante rápido, siempre que haya espacio. Y, aunque parezca poco intuitivo, es el proceso de añadir datos más nuevos el que realmente hace que se elimine la información más antigua.

Recuperar información eliminada de SQLite en iOS

Imagina que llevas un par de meses usando tu teléfono. Las bases de datos que contiene son como los archivadores que describimos antes. Tienen un montón de carpetas y, donde has eliminado datos, esas carpetas seguirán ahí, pero con dos salvedades: pueden haberse sobrescrito parcial o totalmente, y no tendrán etiqueta.

La técnica de recuperación es entonces más o menos la que cabría esperar: consiste en encontrar esas carpetas huérfanas, completas o no, intentar averiguar dónde encajan y comprobar si quedan datos suficientes para que tengan sentido. Como es de esperar, todo es un poco laborioso, y pueden surgir otras cuestiones técnicas que lo compliquen. En particular, las bases de datos de más de unos pocos megabytes y las que contienen datos binarios pueden dificultar mucho el proceso.

Dicho esto, no es demasiado difícil recuperar algunos datos, y por eso ves en el mercado un buen número de herramientas que afirman poder hacerlo. En general, estas herramientas se pueden dividir en tres categorías:

  • Las buenas. Usan muchas técnicas distintas, desarrolladas y probadas con miles de ejemplos diferentes de eliminación o corrupción.
  • Las malas. Solo recuperan el contenido restante que está perfectamente formado e incluye varias pistas sobre dónde encaja.
  • Las feas. Buscan contenido huérfano y marcan cualquier resto antiguo que parezca encajar en el contexto, si lo miras entrecerrando los ojos. «NSMutableArray»: ¿podría ser el nombre de tu registro de contacto perdido? Mmm.

Recuperación de datos SQLite eliminados en iOS en el mundo real

Ahora que hemos hablado un poco de cómo funciona, veamos lo eficaz que es en el mundo real. Al fin y al cabo, queremos que los usuarios corrientes puedan recuperar sus datos sin tener que ser expertos. ¿Lo conseguimos? Vamos a comparar las cuatro principales herramientas de recuperación de SQLite con iPhone Backup Extractor. En el momento de escribir esto, las últimas versiones de esas herramientas son:

NombreVersión y fecha de lanzamientoPlataformasPrecio
Reincubate iPhone Backup Extractor7.6.1.2201, mayo de ’18Windows y macOS$34.95
SQLite Doctor de SQLabs1.3.0, agosto de ’13Windows y macOS$49
Sqlite Database Recovery de SysTools1.2, sin fecha de lanzamiento indicadaSolo Windows$149
Stellar Phoenic Repair For Sqlite de Stellar Data Recovery 1.0, sin fecha de lanzamiento indicadaSolo Windows$599
Forensic Explorer (FEX) de GetData4.3.5.7364, mayo de ’18Solo Windows$1,695
Sqlite Forensics Explorer de Acquire Forensics2.0, sin fecha de lanzamiento indicadaSolo Windows$149

Para preparar esta prueba vamos a usar una base de datos bien grande, llena de datos del mundo real. En este caso, es una base de datos de «Mensajes» de 169 MB, extraída de un iPhone con iOS 11. Echémosle un vistazo: los siguientes comandos muestran el tamaño del archivo y el resultado de una consulta que cuenta 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

Así que hay más de 220 000 mensajes. Son los que no se han eliminado. Pero ¿cuántos de los mensajes eliminados pueden encontrar las herramientas de recuperación?

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

Ejecutamos todas las herramientas indicadas arriba sobre el mismo archivo y anotamos los resultados en la tabla siguiente. Nos habría encantado usar un Mac, pero como no todas las herramientas son compatibles con macOS, usamos un PC con 16 GB de RAM y Windows 10 Pro (versión 1803, compilación 17134.48).

ReincubateAcquire ForensicsSQLabsSysToolsStellar Data RecoveryGetData
Cantidad recuperada34256 (pero en su mayoría basura)00 (tras un análisis prolongado, encontró 220 261, ¡que es el mismo número de registros válidos que ya había!)0 (cada vez que la ejecutamos, contó hasta 37 mensajes eliminados, pero se cerró con el error 0x40000015 antes de terminar el proceso. No fue posible exportar ni guardar ninguno).0 (We reached out multiple times to purchase a license, but never heard back.)
¿Se recuperó «basura»?Ninguna; todo parecen mensajes válidos no eliminados. Se recuperan emojis, fechas, horas y números de remitente y destinatario.La mayoría de lo recuperado es basuraTuvimos que introducir manualmente valores máximos de ROWID varias veces para probar distintos parámetros. No recuperó nada en ningún momento.Solo encontró mensajes que ya existían.Se cerró cada vez, así que no pudimos saberlo.Wasn’t possible to get it running.
Coste efectivo por mensaje recuperado (en este ejemplo)$0.10$2.66>$49>$149>$599>$1,695

Bien. Esto fue una sorpresa, porque esperábamos que todas recuperaran al menos algunos datos. Resulta que nuestra humilde herramienta lidera el mercado en recuperación de datos SQLite, a pesar de no ser una herramienta dedicada a ello. (Si te lo has preguntado, por eso también licenciamos nuestra tecnología a otras empresas. Esto es difícil).

Recuperación de datos SQLite en distintas versiones de iOS

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

A medida que los dispositivos se vuelven más potentes, estas operaciones pueden usarse con más libertad, ya que su impacto en la experiencia del usuario es menor. Por eso, con cada nueva generación, es probable que una base de datos SQLite se limpie con más frecuencia, lo que tiene la ventaja de hacerla más rápida en las operaciones normales. Esto concuerda con el objetivo de Apple de aumentar la protección de los datos y la privacidad del usuario, ya que no queda en el dispositivo ningún dato no deseado. Sin embargo, tiene la contrapartida de hacer imposible la recuperación de datos mediante el método SQLite.

En iOS 11 empezamos a ver un aumento de la actividad de limpieza de la base de datos de SMS e iMessage. La recuperación sigue siendo posible, y más probable en el caso de mensajes recientes que se eliminaron después, pero no está garantizada.

En iOS 12 se ha producido un gran aumento de la frecuencia de limpieza de la base de datos de SMS e iMessage. Como esta versión se presentó con un fuerte enfoque en el mantenimiento y las mejoras de velocidad, este cambio tiene sentido, ya que probablemente se traducirá en un rendimiento más fluido en las operaciones más habituales.

¿Qué tengo que hacer para aprovechar esto al recuperar datos de iOS?

Quizá esta sea la mejor parte: esta tecnología está integrada en Reincubate iPhone Backup Extractor, y lo está desde los primeros días. Al usar la app, aplicará esta tecnología cuando obtengas una vista previa o exportes tus mensajes y otros tipos de datos. Según los datos que estés viendo y cómo los veas, la app indicará qué datos se han recuperado y cuáles no. Todo está incluido.


Sobre el autor

Aidan Fitzpatrick

Fundador, CEO

Aidan fundó Reincubate en 2008 después de crear la primera herramienta de recuperación de datos de iOS del mundo. Desde entonces, ha convertido la empresa en uno de los principales ISV del mundo, colaborando con compañías como AMD, Qualcomm y HP para impulsar funciones de aprendizaje automático relevantes para software de video, encabezadas por el ecosistema de aplicaciones Camo. Bajo el liderazgo de Aidan, Reincubate ha ganado en cuatro ocasiones el galardón empresarial más importante del Reino Unido, se ha ganado un lugar en la lista 100 Tech de The Sunday Times y ha obtenido reconocimiento del sector con nominaciones al Apple Design Award y al App Store. Su trabajo y sus técnicas se citan con frecuencia en artículos académicos sobre informática forense móvil, y ha sido invitado a hablar en eventos organizados por empresas como Google, Microsoft y Snap.


Comentarios (1)

jon 22 de mayo de 2019

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.

Respuesta del soporte de Reincubate 22 de mayo de 2019

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.


Contenido relacionado


Artículos populares

Logotipo del King's Award for Enterprise

King's Award for Enterprise: Reincubate ha ganado cuatro veces el máximo honor empresarial oficial del Reino Unido, la más reciente en reconocimiento al destacado crecimiento de la empresa durante los últimos tres años.

Nuestras relaciones con usuarios y socios son el núcleo de nuestros valores y de los productos que creamos. Consulta nuestras reseñas para saber lo que opinan de nosotros.

Certificación ISO 27001 del Centre for Assessment, acreditada por UKAS

© 2008-2026 Reincubate Ltd. Todos los derechos reservados. Registrada en Inglaterra y Gales con el n.º 5189175, IVA GB151788978. Camo®, Streamlight® y Reincubate® son marcas registradas. Patentes en trámite.

Ayuda