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

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

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

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

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

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

Deja un comentario

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.