Adquisición de RAM en linux
Realizaremos una captura forense de un sistema Linux Debian y la analizaremos a través de volatility, donde podremos ver datos de procesos en ejecución, ect.
REQUISITOS PREVIOS:
2 máquinas Debian 10: 1 para la Adquisición y 1 para el análisis de la adquisición.
Software usado: Lime y Volatility.
Esto lo hacemos para no tener problemas con la creación del perfil y posterior carga en Volatility.
En mi caso vamos a usar directamente Lime de su repositorio oficial en Github, una vez lo descargamos, comprobamos que se ha descargado correctamente con el siguiente comando:
También debemos de instalar los siguientes paquetes:
make build-essential linux-headers
Por último, vamos a comprobar la version de nuestro kernel, para cuando usemos make, ver que realmente nos ha creado el necesario para el nuestro:
Una vez hecho esto, estamos listos para usar el Lime.
Esta técnica es invasiva, ya que se escribe en el disco evidencia los archivos necesarios para que funcione el módulo en el núcleo.
Evidentemente, la imagen de memoria se puede sacar a un dispositivo externo de almacenamiento, en mi caso la voy a almacenar en un pendrive conectado ya a la máquina.
Para sacar la imagen ejecutamos el siguiente comando, poniendo como ubicación el pendrive que he mencionado en el párrafo anterior:
Y como se puede ver en la siguiente imagen, la imagen de la captura de la ram (Adquisicion_LRAM.mem) es almacenada en mi pen de análisis, en la carpeta de Evidencias_Linux
aDQUISICIÓN POR RED
Pero también es posible sacar una imagen de la RAM a través de la red. El objetivo de esta segunda parte es tratar de realizar este experimento a la máquina virtual del compañero. Para ello, nos tenemos que asegurar de que las máquinas están en la misma red.
Yo en mi caso he realizado la adquisición remota con una máquina Kali, apuntando a una máquina Debian que use en el punto anterior de la práctica para adquirir las evidencias de la RAM.
Para realizar la adquisición desde la KALI, he puesto en escucha en el puerto 4444 a la máquina Debian:
IP Máquina Debian
Puerto en escucha
El siguiente paso, usando el comanco ncat he conseguido sacar una imagen de la RAM de la máquina Debian, como se puede ver a continuación:
En primer lugar, lo que estamos haciendo es sacar la imagen como tal:
En un segundo comando, lo que se realiza en una copia de la adquisición que acabamos de hacer como backup, por si nos cargamos la imagen de evidencias, poder sacar más a partir de esta:
En el siguiente punto del comando lo que he puesto es que se ejecute el comando ls -l para que nos muestre por pantalla los datos de los archivos que se han generado y que saque también los sha1 de las 2 imágenes y los guarde en un txt como vemos a continuación:
Por último, hago que se muestre en consola el contenido de dicho archivo txt:
La operación completa se ve así:
Con este formato de adquisición nos garantizamos la integridad de las imágenes y podremos volver a estos datos en caso de necesidad de verificar que todo este correcto.
Análisis de perfiles
El análisis de una captura windows es sencillo porque el número de perfiles de memoria RAM es más limitado. En Linux, este factor se complica dada la apertura que tiene su núcleo y los cientos de variantes que se pueden encontrar. Esto hace que volatiliy no pueda almacenar los valores de todas esas variantes.
Para crear el perfil se necesita de los siguientes programas:
dwarfdump, gcc y make.
Yo en mi caso voy a seguir la siguiente guía, que la he encontrado bastante cómoda de entender y de usar.
En primer lugar decir, que para usar el perfil correcto, he clonado la máquina que estaba usando para sacar las evidencias, donde esta nueva la voy a usar para analizar la evidencia que sacamos anteriormente con lime.
El primer paso que debemos de hacer para analizar la imagen de evidencias de RAM, es instalar volatility y crearnos el perfil.
Comenzamos con la instalación de volatility, que básicamente es descargarse el repositorio que se nos indica en la guía:
A continuación, como se nos indica en la guía, instalamos las dependencias necesarias ejecutando el siguiente comando:
El siguiente paso es instalar las dependencias necesarias para Python:
Por último, vamos a construir el perfil, para ello vamos a ejecutar la siguiente secuencia de comandos:
- Navegamos hasta el siguiente directorio:
2. El siguiente paso es construir el perfil con el siguiente comando:
3. A continuación, ejecutamos el siguiente comando:
4. Siguiente paso, vamos a comprimir tanto el perfil que acabamos de crear como el System.map con la version de nuestro kernel, para ello ejecutamos el siguiente comando:
Esto nos creara el archivo comprimido Debian4908.zip, como podemos a continuación:
5. Por último, movemos o copiamos el zip que hemos creado a la siguiente dirección:
Ahora comprobamos que se puede usar el perfil que hemos creado, para ello usamos el comando python vol.py –info, obteniendo el siguiente resultado:
Y por último solo queda probar que podemos extraer información de la imagen con volatility, para ello vamos a sacar datos, como por ejemplo, lo últimos comandos que se han ejecutado en el sistema:
Comandos ejecutados en el sistema de Adquisicion_LRAM
PIDS
CPU INFO
Unidades Montadas
Interfaces de Red
Versión del Kernel
Como se puede ver, se puede obtener información bastante relevante de lo que estaba pasando en el equipo mientras estaba encendido, podemos usar multitud de módulos para extraer información con Volatility, ya es cuestión de elegir el apropiado para cada caso.