Hola secuaces:
En primer lugar, igual que hice en la entrada anterior “Volcado de memoria RAM en Windows – OSForensics”, voy a recordar la importancia de las buenas prácticas, recordando la necesidad de conocer y seguir la RFC 3227, que lleva por título “Guidelines for Evidence Collection and Archiving”, (Directrices para la recolección y archivo de la Evidencia). Vuelvo a decir: recomiendo encarecidamente su lectura.
En esta ocasión, vamos a realizar un volcado de memoria de un sistema Linux.
Para ello, vamos a usar LiME, (Linux Memory Extractor). LiME es una herramienta desarrollada por 504ensics Labs, de código abierto, que permite la adquisición de la memoria volátil de sistemas Linux y dispositivos basados en Linux, como Android, y que trabaja a nivel de kernel.
Como viene siendo habitual en mí, y como pienso que la documentación de una aplicación se ha hecho para ser leída, pierdo unos minutos en leer el doc de esta maravillosa herramienta 😉
Para su uso, lo primero que vamos a hacer es clonar, (o descargar), la herramienta. Ello se hace con
git clone https://github.com/504ensicsLabs/LiME.git
Una vez que se ha descargado, procedemos a verificar que se ha realizado correctamente, mediante la línea
ls -R -l LiME
LiME precisa de tres paquetes, (make, build-essential y linux-headers). Los instalamos mediante
sudo apt-get install make build-essential linux-headers
Con la instalación de linux-headers será necesario conocer qué versión de kernel estamos usando.
Podemos averiguarlo con la orden
uname -r
Hecho esto, nos dirigimos a ‘src’ porque toca compilar y generar el módulo
cd LiME/src make
Tras esta orden, se ha compilado y se ha generado un nuevo fichero, con nombre ‘lime-versiondekernel-generic’, con extensión ‘.ko’, “Kernel Objet”. En mi caso es ‘lime-3.16.0-77-generic.ko’.
Vale. Ya tenemos la herramienta lista para ser usada. Fácil, ¿Verdad?
Pero, ¿Ahora qué? ¿Adquisición en local o en remoto? Pues depende del caso, podría interesar adquirir la memoria en local, o por el contrario, debiéramos proceder en remoto. Personalmente, si puedo, trabajo en remoto y me evito sustos innecesarios.
Vamos a volcar la memoria de las dos formas.
Para realizar el volcado de la memoria en modo local, basta con ejecutar
sudo insmod lime-3.16.0-77-generic.ko “path=/home/marcos/Evidencias/MemLub1404 format=raw”
Verificamos que se ha generado correctamente el fichero del volcado, a través de
ls -l /home/marcos/Evidencias
Ahora vamos con la adquisición en remoto, que es mi método favorito. La adquisición remota se realiza en dos fases, la ejecución de LiME en la máquina objeto de la extracción y la ejecución de nc o de ncat en la máquina forense.
Para ello, igual que en caso anterior, clonamos la herramienta en el sistema objeto de la extracción de memoria, mediante
git clone https://github.com/504ensicsLabs/LiME.git
Hecho esto, seguimos igual que en caso anterior, compilando con
cd LiME/src make
Vale. Estamos listos para trabajar.
Lo primero que tenemos que saber es la dirección IP de la máquina. Para ello ejecutamos un
ifconfig
Tras averiguar la IP de la máquina, procedemos con LiME, que permanece a la escucha, con
sudo insmod LiME/src/lime-3.16.0-77-generic.ko “path=tcp:4444 format=raw”
Hecho esto, mientras la máquina objeto de la extracción de memoria permanece a la escucha, tenemos que irnos a la máquina forense, la que va a adquirir el volcado.
En este punto, tenemos dos opciones para realizar el volcado. A través de nc, (netcat), o a través de ncat, (nmap). Vamos a realizarlo con los dos.
Para el caso de ncat debemos instalar nmap y ejecutar ncat para realizar así la extracción a través de
sudo apt-get install nmap
ncat 192.168.1.33 4444 > MemLubuntu1404
Para el caso de nc debemos instalar netcat y ejecutar nc para realizar así la extracción a través de
sudo apt-get install netcat
nc 192.168.1.33 4444 > MemLubuntu1404.raw
Y con esto, se adquiere un volcado de memoria RAM en Linux.
Ahora bien, ¿Ya está? ¿Eso es todo? como este proceso suele ser largo, y Linux da muchísimo juego, yo tengo por costumbre ejecutar algunas órdenes más.
¿Qué es lo que quiero y qué es lo que hago?
Como soy un paranoico de los tiempos, la primera orden que doy es time; después, realizo el volcado de la memoria; después, realizo un backup del fichero generado, (no me gusta marcharme del sitio sin una copia de la adquisición hecha); después, calculo la firma en SHA-1; después, muestro en pantalla ese cálculo; y por último, realizo una captura de pantalla de todo este proceso, que adjunto al informe pericial. Todo ello con
time ncat 192.168.1.33 && cp MemLubuntu1404 MemLubuntu1404.bak && ls -l && sha1sum MemLubuntu1404 MemLubuntu1404.bak > HashMemLubuntu.txt && cat HashMemLubuntu.txt
Después de esto, me voy a tomar un café y a hacer algo de networking, y cuando vuelvo, me encuentro con todo hecho.
Esto es todo, por ahora. Nos leemos en la siguiente entrada. Se despide este minion, entregado y leal, de vosotros… por ahora.
Un comentario en «Volcado de memoria #RAM en #Linux – #LiME»
Para evitarse el paso de tener que mirar qué kernel nos corresponde para instalar linux-headers, podemos usar la orden ‘sudo apt-get install linux-headers-$(uname -r)’ en lugar de emplear ‘uname -r’ y ‘sudo apt-get install linux-headers’
Los comentarios están cerrados.