05 julio 2012

Volcado de memoria en Linux con LiME 1.1

Pese a que personalmente nunca me he tenido que enfrentar a un caso real de un forense en el que la solución se encontrase únicamente en el contenido de la memoria de un sistema Linux, es imprescindible conocer las herramientas y los mecanismos que son usados para este propósito. ¡Nunca se sabe cuando será la primera vez!

Cuando se deshabilitó el uso de dispositivos como /dev/kmem o se restringió su acceso, como en el caso de /dev/mem, por los altos riesgos que suponían en seguridad en comparación a lo poco usados que eran en la práctica.  No quedó más remedio que recurrir a /proc/kcore con formato core o a herramientas especificadas diseñadas para hacer volcados de memoria. Esto implica copiarlas y ejecutarlas en el sistema, contaminando una parte de la evidencia, pero salvo se hagan otro tipo de técnicas como los cold boot attacks o los dumps con firewire, no queda más remedio.

Entre el software para volcado de memoria está crash para distribuciones basadas en RedHat o módulos de kernel como fmem

LiME es otra de estas utilidades, desarrollada con el objetivo de ser ampliamente compatible con múltiples  arquitecturas Linux, incluidas plataformas móviles Android. Acaba de ser publicada la versión 1.1, que permite la adquisición en distintos formatos (lime, raw y padded) y el envío del volcado por red mediante un port-forward de adb.

Su uso es sencillo, se compila en un sistema con el mismo kernel y se copia el módulo (fichero ko) resultante a cualquier ruta del sistema del que se desea volcar la memoria. El dump se ejecutará cuando el módulo sea cargado usando los parámetros que recibe como argumentos.


Para crear una copia en el fichero /tmp/ram.raw en formato raw:

insmod /tmp/lime.ko “path=/tmp/ram.raw format=raw” 

Y para realizar la copia por red en una estación de trabajo:

insmod /tmp/lime.ko “path=tcp:4444 format=lime” 

En el PC donde se hará la copia, usando ncat de Nmap:

C:\Users\aramosf>ncat 192.168.0.210 4444 >ram.lime