De vez en cuando, surge la pregunta sobre la captura de RAM de los dispositivos Android. Dado que el término «dispositivos Android» puede cubrir no solo los teléfonos móviles de cualquier número de fabricantes de teléfonos, sino también una serie de otros dispositivos integrados y de Internet de las cosas (IoT), la respuesta real es «depende».
En los teléfonos móviles, de los que nos ocuparemos aquí, la respuesta general es no, pero hay formas de descargar la memoria RAM de los dispositivos que dependen de ciertas condiciones. Esas condiciones pueden definirse parcialmente por lo que desea el volcado de RAM, y también en qué estado se encuentra el teléfono. Aquí, observamos los teléfonos que han sido rooteados o los teléfonos que tienen un estado especial al que se puede acceder para volcar la RAM. Para otros estados, el teléfono deberá ser explotado y se deberá realizar un volcado de RAM después de la explotación.
Volcados de RAM de dispositivos rooteados
Los teléfonos Android generalmente se venden en un estado bloqueado. Esto significa que el acceso a las áreas internas está asegurado y existen mecanismos de protección para evitar que los usuarios legítimos y malintencionados accedan a las áreas internas del dispositivo.
La mayoría de los teléfonos se pueden desbloquear de alguna manera para que el acceso a las áreas internas sea más fácil. Sin embargo, estos permisos elevados solo brindan un mejor acceso a la configuración del sistema y la capacidad de ejecutar comandos que normalmente tienen privilegios. Estos también darán acceso a áreas normalmente invisibles dentro del sistema de archivos, pero aún no permitirán el acceso a la RAM, ya que está bajo el control del kernel. Para acceder a la RAM en el dispositivo, podemos usar un módulo de kernel cargable, Linux Memory Extractor – LiME.
Los módulos del kernel deben compilarse con el kernel que se usa en el dispositivo. Afortunadamente, debido a la naturaleza de código abierto de Android, podemos descargar el código fuente del kernel de un dispositivo y compilar LiME. El kernel recién creado se puede instalar en el dispositivo y la RAM se puede descargar del dispositivo mediante el módulo. El enlace de arriba le mostrará cómo compilar tanto el kernel como el módulo. El nuevo núcleo se puede instalar una vez que se haya convertido en una imagen de arranque. Las instrucciones para esto a veces son específicas para el teléfono y esto se deja como un ejercicio para el lector.
Volcados de RAM de dispositivos Samsung
Los dispositivos Samsung tienen un modo especial al que se puede acceder para habilitar un volcado de RAM. Este modo especial se denomina «modo de carga» y se puede iniciar desde el teléfono a través de un menú al que se puede acceder desde la aplicación del marcador. Los desarrolladores suelen utilizar el modo de carga para extraer la RAM si ha habido un problema grave con el sistema. Fue utilizado principalmente por los desarrolladores del kernel para ver la memoria del sistema y poder depurar el kernel. Esto normalmente no está activado, y el acceso es a través del menú ‘sysdump’ al que se puede acceder escribiendo *#9900# en la aplicación de marcación. Una vez en el menú ‘sysdump’, podemos desplazarnos hasta el nivel de depuración y configurarlo en MID y luego configurar el modo de carga en habilitado. Reiniciar el teléfono lo pondrá en modo de carga donde se puede acceder a la RAM mediante programación.
El acceso al volcado de RAM se puede lograr usando Samsung Upload Client. Este es un script de python y se ejecutará tal cual desde una máquina Linux. Los usuarios de Windows requerirán que se instale el kit de desarrollo USB (Versiones · daynix/UsbDk · GitHub) para usar de manera confiable el script de python. Si usa el script en una máquina Windows con XRY instalado, es mejor desactivar el controlador MSAB abriendo la herramienta de la bandeja del sistema XRY y seleccionando «usar controladores MSAB sólo cuando XRY Wizard se esté ejecutando»:
Una vez instalado y los controladores MSAB desactivados, el script debería ejecutarse y volcar la RAM. Después de que se ejecute el script, debería haber una carpeta con alrededor de 60 archivos dentro. La memoria se puede tallar para artefactos de los archivos a continuación (para este teléfono en particular):
Dave Lauder, Security Researcher MSAB. 8 August, 2022