Mostrando entradas con la etiqueta Memoria. Mostrar todas las entradas
Mostrando entradas con la etiqueta Memoria. Mostrar todas las entradas

viernes, 16 de septiembre de 2016

Volcado de memoria #RAM en #Linux - #LiME

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.

Marcos

viernes, 2 de septiembre de 2016

Volcado de memoria #RAM en #Windows - #OSForensics


Hola secuaces:

Cuando se procede a la recolección de evidencias se hace necesario conocer y seguir una serie de buenas prácticas. Para ello, se dispone de una guía, muy cortita pero muy importante. Se trata de la RFC 3227, que lleva por título “Guidelines for Evidence Collection and Archiving”, (Directrices para la recolección y archivo de la Evidencia). Os recomiendo encarecidamente su lectura.

En el punto 2 - “Guiding Principles during Evidence Collection”, (Principios rectores durante la recolección de evidencia), en su párrafo 11, (el último de ese punto), dice “Proceed from the volatile to the less volatile”, (Proceder desde la volátil a la menos volátil).

Para cumplir esa 'norma', en su punto 2.1 se establece un orden de volatilidad, donde figura la memoria.

En el punto 3.2 - “Collection Steps”, (Pasos de recolección), en su último párrafo, dice “Where feasible you should consider generating checksums andcryptographically signing the collected evidence, as this may make it easier to preserve a strong chain of evidence”, (Cuando sea factible, deberías considerar la generación de checksums y firmar criptográficamente las pruebas recogidas, ya que esto, podría hacer que sea más fácil preservar una fuerte cadena de custodia).

¿Por qué hago referencia a estos puntos? Porque, cuando se recogen evidencias, se hace necesario calcular su huella digital. Y si se realiza esta operación con la misma herramienta con la que se ha recogido la evidencia, mejor que mejor. Aquí es donde entra en juego OSForensics.

Existen decenas de utilidades para realizar el volcado de la memoria, (ya habló el compañero Naxhack5 en su entrada "Análisis Forense II - Adquisición de memoria RAM" de algunas de ellas), y existen algunas más para el cálculo de la firma digital. Una ventaja que tiene OSForensics es que realiza ambas.

Visto esto, entramos en materia.

OSForensics, de PassMark, es una completa suite para el análisis informático forense. Ofrece múltiples funciones y varias herramientas forenses libres, tales como: OSFMount, OSFClone, ImageUSB, etc. Ofrece también la posibilidad de integrarlo con otras herramientas, como Volatility o RegRipper y WinPE.

Cuando pruebo alguna herramienta, me gusta leer el contenido de la página. Los manuales y las FAQ han sido hechas para leerse ;)

¿Cuánto cuesta OSForensics? Mucho, aunque posiblemente sea una de las más asequibles, en lo referente a suites forenses comerciales. Pero dispone de una versión gratuita, eso sí, con limitaciones.

Tras realizar su descarga desde el sitio oficial, procedemos a su instalación, como cualquier otra herramienta de Windows. Con cinco ‘Next’, un ‘Install’, un ‘Next’ y un ‘Finish’.


Tras su instalación, y apertura del programa, se presenta la ventana que nos indica si queremos seguir usando la versión gratuita o si queremos actualizar a la versión profesional. Como soy pobre, le indico que quiero continuar con la versión gratuita.


Si ahora nos vamos al final del menú que hay en el lado izquierdo de la aplicación y clicamos en ‘About’ veremos qué versión estamos usando de este software. (Me gusta comprobar con qué versiones estoy trabajando).


Visto esto, es hora de instalar esta suite en el Dispositivo USB.

Para ello, en el menú de la pantalla principal de la aplicación, nos dirigimos a ‘Install to USB’


Ahora se nos presenta una ventana, donde elegimos el tipo de instalación, el dispositivo, (o la ruta local), y si queremos instalar la versión gratuita o la profesional.


Comienza la copia de la aplicación en la ruta que hayamos elegido y nos comunica que ha terminado satisfactoriamente.


Una vez que ha finalizado, nos dirigimos a la ruta donde se ha realizado la instalación y comprobamos que se ha hecho de forma correcta. (Soy un poco meticuloso).


Estamos listos para actuar. Volvemos a abrir la aplicación, desde el dispositivo externo, y nos dirigimos a ‘Memory Viewer’.


Ahora clicamos en ‘Dump Physical Memory’.


Se nos abrirá una nueva ventana donde debemos elegir el nombre y la ruta del fichero que se va a generar tras el volcado de memoria.


Una vez que le demos a ‘Guardar’ comenzará el volcado en la ruta indicada. Sobra decir que, mientras se realiza el volcado, NO SE TOCA NADA, ¿Verdad?


Una vez que ha finalizado la adquisición de la memoria, verificamos que se ha volcado correctamente.


Comprobada la generación del fichero, procedemos a calcular su firma digital en SHA-1, clicando en “Verify / Create Hash”.


Y cuando finaliza el cálculo del Hash, se nos muestra en pantalla. Ahora, o lo copiamos a un fichero de texto, o realizamos una captura de pantalla. Yo, personalmente, soy muy amigo de las capturas de pantalla.


Esto es todo, por ahora. Nos leemos en la siguiente entrada. Se despide este minion, entregado y leal, de vosotros… por ahora.

Marcos

Google Analytics