Cómo realizar una adquisición física en Android con "dd", incluso cuando no tienes tarjeta SD - PARTE 1 - Perito Informático
Cómo realizar una adquisición física en Android con “dd”, incluso cuando no tienes tarjeta SD – PARTE 1

Cómo realizar una adquisición física en Android con “dd”, incluso cuando no tienes tarjeta SD – PARTE 1

Supongo que si alguna vez os habéis encontrado con la necesidad de realizar una adquisición física de un dispositivo Android para crear una imagen completa del mismo, os habréis encontrado con problemas similares a los que yo me he encontrado en un caso real. Para una prueba pericial judicial, en la que he tenido que analizar un teléfono Android, me he encontrado esta necesidad, y por eso quería escribirla para que a alguien más le pueda servir.

En este post quiero indicaros cómo realizarlo de forma “manual”. Lógicamente, podríamos utilizar una Celebrite UFED o algún otro software comercial que incluya la funcionalidad para realizar la adquisición física, pero no es lo que quiero abordar en este caso.

En primer lugar recordaros, aunque seguro que esto es algo que todos tenéis claro, que para poder realizar una adquisición física en Android es imprescindible “rootear” el teléfono. No hay otra forma. Sin el teléfono “rooteado” lo único que puedes hacer es extraer la información de una copia de seguridad estándar, los datos de los providers “básicos” (llamadas, sms, etc…) y la información disponible en la SD o en la parte pública de la memoria interna del teléfono.

Hago un pequeño inciso en esto, y sin ánimo de generar controversia (quizá esto de para otro post), pero yo soy partidario siempre, en el análisis forense, de aplicar siempre el método más sencillo y proporcionado, según las pruebas que necesites extraer y también según el objetivo y motivación del informe pericial. Por ejemplo, para informes que exclusivamente deben reflejar los mensajes de Whatsapp de un teléfono, prefiero siempre si es posible extraer las BBDD sqlite de Whatsapp mediante un downgrade (utilizando Whatsapp Extractor, por ejemplo), dado que es un método que no necesita “rootear” el teléfono, y por tanto, es mucho menos agresivo para el dispositivo. Yo prefiero esto a realizar una adquisición física completa, dado que me parece que es igualmente fiable de cara a su capacidad probatoria.

Recordemos siempre que las pruebas no deben alterarse, pero los que hemos analizado alguna vez algún móvil sabemos que no se pueden aplicar de forma directa los mismos principios que podemos aplicar, por ejemplo, al analizar un PC.

Bueno, perdonad el “off topic”. Sigo con lo que estábamos.

Tenemos que “rootear” el teléfono. ¿Qué utilizamos? Hay muchas opciones pero siempre es importante intentar utilizar una herramienta con la que tengamos el menor riesgo posible (no queremos estropear el teléfono). Os puedo recomendar “KingRoot”. Yo la utilizo desde el PC (previa habilitación de la depuración USB en el dispositivo) y suele dar muy buenos resultados en la mayoría de los teléfonos.

Para comprobar que el proceso ha realizado correctamente, os recomiendo abrir un shell utilizando “adb” (comando adb shell), y una vez abierto, podéis utilizar el comando “su” para obtener la shell como “root”, y de ahí acceder a la carpeta /data/data (con un ls -la, por ejemplo)  para verificar que podéis acceder a los ficheros protegidos del sistema y que el proceso de “rooteo” ha sido satisfactorio.

Una vez realizado este primer paso, la herramienta que utilizaremos para realizar nuestra adquisición física será la archiconocida “dd”. A continuación os indico los parámetros básicos que podemos utilizar en estos casos:

dd if=/dev/block/mmcblk0 of=/sdcard/imagenfisica.img bs=4096 conv=notrunc,noerror,sync
  • if: Indicamos la ruta al orígen de la copia.
  • of: Indicamos la ruta al destino de la copia. Habitualmente indicaremos un fichero con extensión .img o .dd
  • bs: Tamaño del bloque de copia que vamos a utilizar.
  • conv: Esta opción nos permite especificar parámetros de conversión entre origen y destino:
    • notrunc: El fichero de salida no será truncado.
    • noerror: No parar el proceso aunque ocurra algún error.
    • sync: Si hemos seleccionado noerror, esta opción escribe\x00 para los bloques erroneos. Esto es importante para mantener los offsets de los ficheros en la imágen.

En el caso de un móvil Android, si queremos una copia completa del dispositivo, el origen de la copia lo encontraremos en /dev/block/mmcblk0. Ojo, esto no siempre es así y es recomendable revisar las particiones disponibles utilizando el comando cat /proc/partitions

Realmente esto es todo lo que necesitaremos si nuestro dispositivo tiene una tarjeta SD con espacio suficiente para almacenar la imagen, que como imaginarás tendrá el mismo tamaño que la memoria disponible en el dispositivo. Pero habrá casos en los que no tendremos ranura para tarjeta SD. ¿Un móvil sin posibilidad de tarjeta SD? Si, en serio. Existen en el mercado muchos móviles, habitualmente de bajo coste, que prescinden de esta opción.

¿Y que hacemos entonces? La única posibilidad que tenemos es guardar la imagen directamente en el equipo en el que estemos conectando el teléfono para realizar el análisis forense. Para ello, necesitaremos algo que nos permita que el resultado del comando “dd” se pueda guardar fuera del teléfono móvil. Para ello tenemos una herramienta que nos sirve de gran ayuda: Netcat

Creo que Wikipedia explica muy bien para qué sirve y cómo funciona Netcat:

Netcat es una herramienta de red que permite a través de intérprete de comandos y con una sintaxis sencilla abrir puertos TCP/UDP en un HOST (quedando netcat a la escucha), asociar una shell a un puerto en concreto (para conectarse por ejemplo a MS-DOS o al intérprete bash de Linux remotamente) y forzar conexiones UDP/TCP (útil por ejemplo para realizar rastreos de puertos o realizar transferencias de archivos bit a bit entre dos equipos)”

Aquí debemos hacer una pequeña diferenciación en función de si el equipo que estamos utilizando para el análisis forense es Linux o Windows, dado que si bien Netcat lo tendremos instalado en la mayoría de las distribuciones, en Windows habitualmente no lo tendréis, por lo que es necesario que lo descarguéis (https://joncraton.org/blog/46/netcat-for-windows/)

Pero también necesitaremos que el comando Netcat esté instalado en el movil para poder hacer la copia. En este caso, si es un dispositivo que no había sido “rooteado” previamente, es seguro que no tendréis dicho comando. Para instalarlo os doy dos posibilidades: Descargarlo desde http://sourceforge.net/projects/androidforensics-netcat/files/ y copiarlo al dispositivo mediante “adb push” o bien instalar la suite de herramientas avanzada “BusyBox” en el teléfono, que además de incluir Netcat, os instalará muchas otras de las herramientas que habitualmente tenemos en cualquier distribución Linux, pero que Android no nos trae instaladas por defecto.

Una vez estemos seguros que tenemos Netcat en ambos dispositivos, necesitamos realizar 3 acciones:

  1. Mediante el comando “adb forward tcp:8000 tcp:8000” haremos un port-forwarding de tal forma que todo lo que llegue al puerto 8000 del móvil sea transferido al puerto 8000 del equipo forense.
  2. En el dispositivo móvil, ejecutaremos: dd if=/dev/block/mmcblk0 bs=512 conv=notrunc,noerror,sync | nc –l –p 8000 , para lanzar la copia del dispositivo y enviar los bloques de salida al puerto 8000
  3. En el equipo forense, ejecutaremos: nc 127.0.0.1 8000 > imagenmovil.img

El proceso comenzará, pero hay que tener en cuenta que no dará ningún mensaje de aviso o progreso. Simplemente si todo va correctamente, las llamadas finalizarán y el fichero aparecerá ya creado en el equipo forense. A partir de ahí, podéis generarle sus correspondientes hash y/o analizar la imágen con el software forense de vuestro gusto.

Espero que este artículo os haya resultado interesante y si tenéis cualquier pregunta, comentario o sugerencia, estoy a vuestra disposición por este blog o por Twitter @peritotec

NOTA 28/02/2019 –> Podéis consultar la segunda parte del artículo en este enlace.

16 thoughts on “Cómo realizar una adquisición física en Android con “dd”, incluso cuando no tienes tarjeta SD – PARTE 1

  1. Después de varias lecturas, por fin encuentro una descripción clara y detallada sobre cómo realizar la copia de un dispositivo Android.

  2. En primer lugar, enhorabuena por el artículo y gracias por la claridad.

    En segundo lugar. Varias dudas.

    1. ¿Rootear el teléfono tiene algún tipo de implicación legal? ¿Podría la otra parte en un juicio argumentar que gracias al rooteado, se ha podido modificar el contenido del teléfono y por lo tanto no es fiable?

    2. Si lo que quiero es hace un file carving para recuperar posibles mensajes borrados (entiendo que se recuperarían fichero de base de datos donde se almacenan los mensajes), no hay otra opción que hacer el rooteado. ¿Es así?

    3. Indicas en el artículo que se puede usar el “Whatsapp Extractor”. Esta aplicación lo que hace es extraer mensajes de la copia de seguridad y de la base de datos en uso del whatssapp sin usar el rooteado. ¿Correcto?

    Perdona la retahíla de preguntas y gracias por tu trabajo y ayuda.

    Un saludo

    1. Hola Kike,

      Lo primero de todo gracias por tus preguntas. Y aprovecho para comentarte (y dejarlo público por si alguién más está interesado) que tengo pendiente una revisión 2.0 a este post, añadiendo algunas aportaciones de Buenaventura Salcedo (@nomed en Twitter), que es un gran experto en estos temas y que me ha hecho algunas sugerencias muy interesantes para mejorar el post.

      En cuanto a tus preguntas concretas, te contesto a cada una:

      1) No la tiene si el que rootea el teléfono es el perito y explica justificadamente la necesidad del rooteo. En el caso de los móviles la información es todavía más volatil que en PC’s, y es aceptado por cualquier perito que si rootear el teléfono es la única forma de acceder a cierta información, es totalmente aceptable. La famosa “Cellebrite” lo primero que hace es buscar el exploit más adecuado y rootear el teléfono, porque sino no puede acceder al 99% de la información. Distinto es que llegue a mis manos un teléfono rooteado previamente. Entonces hay que ver la cadena de custodia y qué se sabe de ese teléfono, porque las posibilidades de que haya sido manipulado aumentan exponencialmente.

      2) Exacto. Por mi experiencia y conversaciones que he tenido sobre este tema con otros peritos, las posibilidades de que el file carving te dé buenos resultados siempre es inversamente proporcional al tiempo transcurrido desde el borrado y al volumen de uso del Whatsapp. Te paso un link del blog de Jorge de Quantika14 en el que habla algo de este tema, y si quieres en mi blog tengo otro post también relacionado con esto.

      3) No, lo que hace es realizar un downgrade de la versión de Whatsapp instalada en el móvil, a una versión en la que, al realizar una copia de seguridad con “adb backup”, se incluía una copia en claro de la propia base de datos del Whatsapp y la clave de encriptación. La copia de seguridad no se toca en este caso, pero tiene el problema de que sólo funciona en versiones de Android anteriores a la 7.0. De la 7.0 para arriba tienes que buscarte la vida. La herramienta de Quantika14 que comentan en el link que te indicaba antes hace algo similar, un poco más automatizado por ellos.

      Espero que te haya resultado interesante y cualquier sugerencia será bienvenida. Si estás por Madrid en febrero de 2019 en la conferencia h-con hablaré un poco más de estos temas, por si te pudiera interesar.

  3. Enhorabuena y gracias por tu artículo, me ha resultado muy útil. Tengo una duda con respecto a lo que dices acerca de Whatsapp Extractor. Con esta aplicación puedo obtener una copia de la base de datos de mensajes sin rootear, pero existe la posibilidad técnica que la base de datos haya sido modificada. Si en un informe afirmo que los mensajes son verídicos,¿no podría el abogado de la parte contraria impugnarlo basándose en esta posibilidad?
    Gracias de nuevo y un saludo,

    1. Hola Jorge,
      En teoría, si no hay rooteo es prácticamente imposible que la base de datos haya sido modificada, dado que para modificarla tendría que haberse podido rootear el móvil. Yo sólo he encontrado una forma (muy rebuscada, de la que todavía no he visto nada escrito) en la que se podría manipular algún mensaje (modificando parte de su contenido) en Android. El que se pudiera impugnar basándose en esa remota posibilidad, me parece muy rebuscado. En general, si el móvil no está rooteado se debe entender que no hay manipulación.

      De todas formas, todo es bastante relativo y al final, cada juzgado tiene su propio criterio. El mío es que siempre debe haber un criterio de proporcionalidad. Por ejemplo, para un tema del juzgado de lo social, creo que sería más que suficiente la extracción con Whatsapp Extractor, si no hay ningún indicio de manipulación.
      Sin embargo, para un tema penal, creo que sería recomendable rootear el teléfono y hacerle una imágen, porque en caso de duda, se podrían revisar los logs de Whatsapp a ver si se da alguna circunstancia que pudiera llevarnos a pensar que se ha podido manipular algo, y esto podría hacerlo la parte contraria con una contra-pericial sobre la imágen adquirida.

      Espero que te haya servido de ayuda. Cualquier cosa, aquí estoy. Un saludo.

  4. Muchísimas gracias, me ha servido de gran ayuda. Opino como tu: si la única controversia son los mensajes, una extracción de la base de datos de Whatsapp y un análisis físico de la misma debería ser suficiente para comprobar manipulaciones. Rootear el teléfono modificaría el filesystem del mismo y creo que siempre podría generar la duda de si las pruebas han sido alteradas, y salvo que se crea que otros ficheros han sido borrados no lo veo necesario.

    1. Buenas tardes ,me pareció muy interesante el artículo. Si me permite una opinión, el rooteo de un teléfono es una cuestión técnica aceptable pero jurídicamente discutible . Lo curioso es que, como lo indica oportunamente , la mayoría de las extracciónes aceptadas en la actualidad y realizadas con alguna tecnología de prestigio y costosa, es aceptada si mayores cuestionamientos por lo general . Creo q explicar el rooteo de un teléfono, no siempre es bueno lamentablemente ,aunque reconozca q no existe otra manera de hacerlo . Ojalá en un futuro no muy lejano pueda convivir saludablemente el derecho y la tecnología en las sociedades modernas . Muchas Gracias

      1. Hola Marcelo.
        Gracias por tu comentario. Estoy totalmente de acuerdo contigo.
        Por si te sirve de idea, por ejemplo, si el objeto de la pericial son mensajes de WhatsApp únicamente (no importan otros contenidos del teléfono), siempre intento buscar una alternativa que no implique rootear el teléfono. Tengo pendiente publicar un artículo, actualizando el contenido de este, hablando de cómo realizar un volcado físico usando TWRP y Magnet Acquire. Básicamente es algo muy similar a lo que cuento en este, pero tiene 2 ventajas: No tienes que rootear el teléfono (sólo tienes que modificar el bootloader, que está en una partición distinta) y puedes usar una herramienta automática para realizar la imágen (sin tener que hacer tu el dd, el port forwarding, etc…)
        Un saludo!

  5. Si agrega status=progress al final de la línea de comandos de dd, debería mostrar el porcentaje de progreso de la copia. Excelente el artículo. Felicitaciones y muchas gracias por brindarnos este recurso.

  6. Hola,
    he probado varias veces el procedimiento para enviar el dd por netcat pero cuando recibo en el equipo forense el archivo .img y lo monto con ftkimager, me dice que el archivo es irreconocible…
    Sin embargo si hago el dd hacia la SD y luego lo saco con adb pull sí me deja montarlo con FTKimager.

    ¿Funciona correctamente el procedimiento?
    ¿Qué podría estar haciendo mal?

    Gracias,
    un saludo.

    1. Hola David,

      Es dificil saberlo. Creo que en alguna prueba que hice tuve problemas por seleccionar mal la partición que quería copiar (cada móvil tiene su estructura distinta en función del fabricante). Quizá por ahí pudiera ir el problema. Como decía Gabriel Dellavitta, si le pones el parámetro “status=progress” quizá te de más info, no vaya a ser que el netcat se esté cortando o no esté bien hecho el forward de los puertos. Tirando de teoría, ambas imágenes deberían ser idénticas. Puedes intentar revisarlas en un editor hexadecimal a ver qué diferencias ves y si eso puede servir para identificar el problema. Si vieras que aparentemente son iguales (o al menos en sus primeros bytes), podrías intentar montarla con alguna otra herramienta, aunque en teoría, con el FTK si la imágen es correcta la debe montar.

      Espero haberte podido dar alguna pista.
      Un saludo!

  7. Buenos días,
    En primer lugar enhoarabuena por tu publicación. Me pareció excelente.

    Mi duda igual no debería plantearse en este punto pero está relacionado con la parte de rootear un dispositivo móvil y la posibilidad de dejar el dispositivo inutilizable. ¿No debería firmar el cliente un “Consentimiento informado” ?

    Saludos

    1. Hola Manuel,

      Claro. Es que todo depende de si es una petición “de parte” o una designación judicial.
      La primera premisa de cualquier trabajo pericial es no modificar nada en las evidencias analizadas. Pero a día de hoy, la seguridad de los teléfonos móviles hace que en muchos casos sea imprescindible realizar acciones que modifiquen el teléfono. El rooteado es una de las más agresivas y sólo debería realizarse si es totalmente imprescindible. Antes de hacerlo, se deberá informar de los riesgos a quién corresponda, y después de hacerlo, en el informe, se deberá justificar bien porqué se ha tomado esa medida y si no había otra opción menos intrusiva.

      Un saludo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.