Вы находитесь на странице: 1из 16

Para la memoria, rabillos de pasas

Anlisis de una imagen de memoria RAM en Linux con


Volatility Framework

Entrando en materia
Volatiliqu?
Volatility Framework es un conjunto de herramientas open source,
implementado en Python bajo GNU/GPL, para la extraccin de
recursos digitales de muestras de memorria RAM, archivos de
hibernacin, .vmem , vbox core dumps...
Las
tcnicas
de
extraccin
se
realizan
completamente
independiente del sistema que est siendo inspeccionado, orientado
tanto a usuarios como profesionales, este framework soporta
volcados RAM de 32 y 64 bits de Windows, Linux, Mac, y Android.
Muy usado actualmente pare el anlisis de malware.

Entrando en materia
Herramientas complementarias
LiME (Linux Memory Extractor) se utiliza para la adquisicin de la
memoria voltil en dispositivos Linux y los basados en Linux , como
Android. Se ejecuta como mdulo del kernel.
/dev/mem Lectura restringida de memoria en Linux.
/dev/crash En los sistemas Red Hat (Fedora, CentOS, Scientific... ),
el
driver
crash
puede
ser
cargado
para
crear
un
pseudo-dispositivo /dev/crash que da acceso a la memoria fsica.
PMDump es otra herramienta que le permite volcar el contenido de
la memoria de un proceso, est diseada para Windows.
mdd es un programa para adquirir una imagen de la memoria un
Windows en ejecucin.

Entrando en materia
Herramientas complementarias
Windows Memory Reader sencilla aplicacin para capturar el
contenido de la memoria RAM de un equipo, dejando recopilar
informacin de un equipo encendido.
Mac Memory Reader es la alternativa para Mac para capturar el
contenido de la memoria RAM. Los resultados se almacenan en un
binario Mach-O o RAW.
Goldfish es otra herramienta de anlisis directo en Mac OS X.
dmd es como era conocido LiME en la plataforma Android.

Preparando el entorno
Los perfiles
Necesarios siempre para el anlisis de cualquier imagen, adaptados
a cada sistema operativo. Interactan entre el framework y la
imagen. En si, es una archivo zip que contiene informacin sobre la
estructura de datos del sistema (no 100% exacta) y datos sobre
registros de debugging.
Para la creacin de un perfil en Linux es necesario el kernel
originario, y el mapa de memoria normalmente ubicado en /boot
correspondiente al kernel. En un futuro se espera tener una serie de
perfiles genricos de Linux para agilizarlo, ya que para Windows los
hay en casi todas sus versiones.
Uso de nm en el caso de no disponer del fichero de smbolos
(System.map-3.5.2-3.fc17.x86_64).

Preparando el entorno
Nos centramos en Linux
En nuestra caso vamos a crear un perfil de versin...
# apt-get install dwarfdump linux-source linux-headers-$(uname -r)
# apt-get install build-essential gcc make
$ cd volatility/tools/linux
$ make
$ head module.dwarf
# zip volatility/plugins/overlays/linux/debian7x64.zip \
volatility/tools/linux/module.dwarf /boot/System.map-3.2.0-10-generic

Si usaemos LiME.
#
#
#
#
$

svn checkout http://lime-forensics.googlecode.com/svn/trunk/ lime


cd lime/src && make
insmod lime.ko path=/tmp/ram.lime format=lime
insmod lime.ko path=tcp:4444 format=lime
nc localhost 4444 > ram.lime

Al turrn

LIVE

DEMO

Al turrn
Nos centramos en Linux
Ficheros a utilizar
- Evidence.mem
+ Profile.zip
- System.map
- module.dwarf

Volatility Framework
GNUDebugger
strings
...

Al turrn
HISTFILE en memoria, anti-forencics
$
$
$
$
$

rm ~/.bash_history -rf
history -c
export HISTFILESIZE=0
export HISTSIZE=0
unset HISTFILE

## Ms rpido ##
$ rm ~/.bash_history
$ ln /dev/null ~/.bash_history -sf

Al turrn
HISTFILE en memoria, anti-forencics
$ gdb /bin/bash
GNU gdb blah...
blah
This GDB was configured as "x86_64-linux-gnu".
Reading symbols from /bin/bash...(no debugging symbols found)...done.
(gdb) disassemble history_list
Dump of assembler code for function history_list:
0x00000000004a5030 <+0>:
0x00000000004a5037 <+7>:

End of assembler dump.


(gdb) q

mov
retq

0x248469(%rip),%rax

# 0x80fab1c

Extra
Plugins
Algunos mdulos de los disponibles para Linux:
Shells
volshell - Shell en Python que interacciona con el framework.
Deteccin de malware
malfind2 - Automatiza el proceso de encontrar y extraer cdigo
inyectado en otros procesos.
orphan_threads - Detecta hilos ocultos en el sistema.
usermode_hooks2 - Detecta funciones del tipo rootkit en procesos
de usuarios.
kernel_hooks - Detecta funciones de rootkit en los drivers/kernel.

Extra
Plugins
Recuperacin de datos
cryptoscan - Encuentra palabras de paso de TrueCrypt.
moddump - Volcado de los mdulos cargados.
ethscan - Volcado de datos procedentes de lo dispositivos de red.
keyboardbuffer - Extrae el buffer del teclado usado por la BIOS,
que puede contener el password de la BIOS entre otros.
Enumeracin de procesos
suspicious - Identifica procesos sospechosos.
Formato de salida
pstree - Crea un rbol de procesos almacenados en memoria.
vol2html - Convierte la salida de Volatility a HTML.
SQLite - Almacena la salida de Volatility en una DB sqlite3.

Extra
Third-party Plugins 2.0

Extra
Documentacin
Documentos, papers y ejemplos de la comunidad (Doc Oficial):
https://code.google.com/p/volatility/wiki/VolatilityDocumentationProject

Mtodos de adquisicin de imgenes:


https://code.google.com/p/volatility/wiki/AddressSpaceReference

Cheatsheet del Framework:


https://volatility.googlecode.com/files/CheatSheet_v2.3.pdf

Listado de comandos, para todas las plataformas:


http://www.aldeid.com/wiki/Volatility

Extra
Documentacin
Web del proyecto:
https://code.google.com/p/volatility/

Blog con demos:


http://volatility-labs.blogspot.com/

Finalizando
Ruegos, dudas y preguntas

Вам также может понравиться