lunes, 6 de octubre de 2014

VOLCADOS DE MEMORIA Y VOLATILITY: UN [MUY]BREVE RECORRIDO.

¿VOLCADOS DE MEMORIA?, ¿VOLATILITY?

El volcado de memoria consiste básicamente en una fotografía de la información contenida en la memoria RAM en un momento dado descargada en un archivo.



Volatility, por otro lado, es un conjunto de herramientas desarrolladas en Python enfocadas para la extracción y análisis de información contenida en volcados de memoria RAM.

Para jugar con Volatility primero debemos tener un volcado de la memoria. Las herramientas para realizar esto pueden ser varias y un excelente resumen se encuentra aquí, una contribución de @hecky@bu5t3r5. Aun así, aprovecho el espacio para comentarles muy brevemente mi experiencia con tres de ellas; FTK Imager, DumpIt y Winpmem. Las tres son relativamente sencillas de usar, siendo muchísimo mas rápidas para generar el volcado DumpIt y Winpmem, ademas de no requerir instalación a diferencia de FTK Imager ya que funcionan desde consola. La gracia de esta ultima es que permite incluir en el volcado el archivo pagefile.sys que es básicamente el contenedor de la memoria virtual y puede usarse para leer los volcados de las anteriores (igual puede usarse WinHex o cualquier editor hexadecimal de su preferencia).


Para el volcado en dispositivos Android podemos acudir a LiME, aunque eso es algo que examinare en otra entrada.

En caso de que no se quiera hacer el volcado de memoria o simplemente se desee jugar con escenarios mas variados  e interesantes, el sitio de Volatility ofrece algunas "muestras gratis" para descargar y analizar ejemplos de volcados con malware aquí. Fuera del análisis de malware, el volcado permite también extraer contraseñas de correo y Truecrypt  entre otros datos.

INSTALANDO VOLATILITY.

La instalación con Python basta solo con descargar el archivo, descomprimir  e ingresar en consola:

python setup.py install

Si estamos ejecutando la versión de Python de Volatility sobre Windows 8 nos puede lanzar el siguiente error:


En Linux no ofreció ninguna resistencia:


En Windows 8 pese a que marque el error mostrado da la impresión de no da problemas mayores y aun así permite su ejecucion, como sea, prefiero no estar viendo ese error cada ves que lo lanzo por lo que podemos proceder a instalar distorm3 en nuestra PC descargando la versión que ser requiera aquí. Una vez instalado, podemos volver a ejecutarlo mostrándose libre de errores:



Si no tiene interés en manejarlo usando Python, siempre puede usarse el standalone para Windows que no dio ningún problema para ejecutarlo y cuya instalación basta con descomprimirlo y ejecutarlo:



Originalmente el ejecutable se llama volatility-2.4.standalone.exe, pero, por cuestiones practicas simplemente recorte el nombre. 

Antes de iniciar a jugar necesitamos sacar el perfil del SO de la memoria que descargamos usando el siguiente comando  nos arrojara ya sea el perfil o perfiles probables a usar, en este caso usare el volcado de memoria realizado a una NoteBook con Windows 7. Una vez obtenido el perfil  (Win7SP1x86 para este casopodemos empezar nuestro análisis con Volatility::

python vol.py -f "<ruta del volcado de memoria>" imageinfo


El siguiente ejemplo nos muestra la lista de procesos ejecutándose al momento de sacar el volcado:

python vol.py --profile=Win7SP1x86 pslist -f "<ruta del volcado de memoria>"



Podemos también visualizar la lista de credenciales para un posterior ataque de fuerza bruta (no se visualiza por razones obvias pero... prueben el comando :P):


python vol.py --profile=Win7SP1x86 -f "<ruta del volcado de memoria>"hashdump


Adicional a lo anterior Volatility ofrece muchas otras opciones, entre ellas visualizar:

- Puertos conectados
- DLLs cargadas por proceso
- Puertos abiertos
- Historial de Internet Explorer
- Ficheros cargados por procesos


RESUMEN.

El potencial de análisis de los volcados de memoria es bastante interesante. Estos ejemplos son meramente rudimentarios y lo que se observa aquí son ejemplos, ademas de pequeños, algo limitados en gran parte por que mi conocimiento en este campo es realmente escaso y aun no e experimentado con la parte mas interesante de esto, el estudio de malware- apenas estoy empezando a explorar el análisis de los volcados de memoria y el uso de Volatility. La pagina de Code Google tiene amplia documentación  al respecto por lo que aun tengo un largo camino por recorrer. Trate de concentrar en esta entrada el concepto básico y suficientes enlaces como para un buen inicio esperando sea tan útil para ustedes como lo sera para mi.

REFERENCIAS.

-https://code.google.com/p/volatility/
-https://github.com/volatilityfoundation/volatility
-https://code.google.com/p/volatility/downloads/detail?name=CheatSheet_v2.3.pdf
-http://volatility-labs.blogspot.mx/
-https://code.google.com/p/volatility/downloads/list
-https://code.google.com/p/volatility/wiki/CommandLineProcessing
-http://digital-forensics.sans.org/blog/2009/08/10/memory-forensics-a-practical-example/
-http://www.flu-project.com/2013/09/volatility-framework-obteniendo-el_103.html
-http://conexioninversa.blogspot.mx/2009/02/forensics-con-volatility.html
-http://www.seguridadx.com/volatility/
-http://www.sahw.com/wp/archivos/2011/11/02/analisis-avanzado-de-memoria-de-sistemas-microsoft-windows-con-volatility/
-https://code.google.com/p/volatility/wiki/VolatilityIntroduction
-http://code.google.com/p/distorm/downloads/list
-http://code.google.com/p/volatility/issues/detail?id=515
-https://code.google.com/p/volatility/wiki/CommandReference23
-https://code.google.com/p/volatility/wiki/CommandReference
-http://bugbu5t3r5.blogspot.mx/2014/10/herramientas-de-volcado-de-memoria.html?spref=tw
-http://www.securitybydefault.com/2012/07/volcado-de-memoria-en-linux-con-lime-11.html
-https://code.google.com/p/volatility/wiki/VolatilityDocumentationProject
-https://github.com/504ensicsLabs/LiME/blob/master/README.md
-http://www.hackplayers.com/2013/05/extrayendo-passwords-en-memoria-de-truecrypt.html

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.