Este blog es solo para fines educativos y de análisis técnico en CTFs. No promueve actividades maliciosas ni el uso indebido de herramientas descritas.
Entrada

Cómo instalar Volatility 2 y Volatility 3 en Linux, Windows y Docker

Instrucciones necesarias para poder instalar Volatility 2 y Volatility 3 en sistemas Linux, Windows y en Docker.

Cómo instalar Volatility 2 y Volatility 3 en Linux, Windows y Docker

Introducción

Volatility es una de las herramientas más potentes y utilizadas para el análisis forense de memoria RAM, esencial para abordar retos CTFs basados en forense.

En este post, te guiaré paso a paso para instalar Volatility 2 y Volatility 3 en los sistemas operativos basados en Linux, como en Windows. Estas instrucciones te permitirán preparar tu entorno de trabajo para realizar análisis avanzados de memoria, aprovechando las funcionalidades que ofrece cada versión.

Además, dejaré una serie de recursos complementarios asociados a cómo realizar dumpeos de memoria RAM de nuestro sistema operativo y cómo instalar FTK Imager.

Instalación en Linux (Kali)

Para este apartado, he utilizado un sistema Linux basado en Debian, más concretamente en Kali Linux. Es por ello que puedo garantizar la correcta instalación tanto en Kali Linux, como Parrot Os entre otros.

Instalar Volatility 2

Para comenzar con la instalación, primero tenemos que instalar las dependencias básicas. Para ello ejecutaremos los siguientes comandos.

1
2
3
4
5
6
7
8
9
10
11
12
    sudo apt update
    sudo apt-get install dwarfdump pcregrep libpcre2-dev -y
 
	# Solo si no tenemos python2.7, para ello ejecutar $ python2.7 y comprobar.
    sudo apt install -y python2.7
    sudo apt install -y python-setuptools build-essential python2.7-dev


    # Instalamos pip2 en nuestro dispositivo.
    wget https://gist.githubusercontent.com/anir0y/a20246e26dcb2ebf1b44a0e1d989f5d1/raw/a9908e5dd147f0b6eb71ec51f9845fafe7fb8a7f/pip2%2520install -O run.sh 
    chmod +x run.sh 
    ./run.sh 

Una vez tenemos las dependencias instaladas correctamente, instalamos Volatility 2.0 de la siguiente manera.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    pip install pipcrypto distorm3

	# Si falla la instalación de distorm3 y pycryptodome, hacer lo siguiente:
        python2 -m pip install pip==20.3.4
        pip2 install pycryptodome
    
        git clone https://github.com/gdabah/distorm.git
        cd distorm
        python2 setup.py build
        python2 setup.py install
 
 
    git clone https://github.com/volatilityfoundation/volatility.git
    chmod +x volatility/vol.py
    sudo mv volatility /opt

    vol.py –info

Instalar Volatility 3

Volatility 3.0 suele ser más fácil de instalar debido a que no utilizamos Python 2 ya que los paquetes se encuentran la mayoría obsoletos y son difíciles de instalar.

En este caso, basta con seguir los siguientes comandos para instalarlo directamente.

1
2
3
4
5
6
7
8
9
10
11
12
13
    git clone https://github.com/volatilityfoundation/volatility3.git
    cd volatility3
    pip3 install -r requirements.txt
    
    # Muy importante para poner la version correcta si no, tendremos este error # FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.8', para ello:
    sudo cp /usr/bin/pip3 /usr/bin/pip3.8
    python3 vol.py -h
    mv vol.py vol3.py
    cd ..
    cp -r /volatility3 /opt

    vol.py –info
    

Creación de Aliases

Para trabajar más cómodamente con Volatility, recomiendo realizar unos enlaces simbólicos conectados con ambos ejecutables, de este modo podremos ejecutar los binarios en cualquier parte de nuestro sistema.

Para ello, ejecutaremos los siguientes comandos.

1
2
3
4
5
6
7
    # Aliases para Volatility 2
    sudo ln -s /opt/volatility/vol.py /usr/bin/vol.py   
    sudo ln -s /opt/volatility/vol.py /usr/bin/volatility2
    
    # Aliases para Volatility 3
    sudo ln -s /opt/volatility3/vol3.py /usr/bin/vol3.py
    sudo ln -s /opt/volatility3/vol3.py /usr/bin/volatility3

Instalación en Windows

Instalar Volatility 3 (Windows)

Para instalar Volatility 3.0 en Windows, tendremos que instalar primero Python3 desde la página oficial y en la instalación, tenemos que seleccionar todas las pestañas de los módulos a instalar, posteriormente comprobaremos en cmd que se ha instalado correctamente.

1
2
    python3 --version
    pip --version

Posteriormente, nos descargaremos Volatility3 desde el github oficial “download zip” descomprimimos y nos quedamos con la ruta exacta.

Por último, abrimos la cmd en modo administrador y ejecutamos los siguientes comandos.

1
2
3
    cd <ruta>
    pip install -r requirements.txt
    python3 vol.py --info

Instalación en Docker

Para quienes prefieren usar Volatility mediante contenedores Docker y evitar instalaciones complejas, aquí dejo un resumen muy útil para trabajar con Volatility 2 y Volatility 3 usando Docker.

Volatility 2 con Docker

Puedes descargar la imagen oficial con:

1
docker pull blacktop/volatility

Y para facilitar su uso, puedes crear un alias (en PowerShell o en tu terminal Bash) para ejecutar Volatility 2 de forma rápida:

1
alias "vol2"="docker run --rm -v $(pwd):/data blacktop/volatility"

Para dumpear archivos específicos con Volatility 2, por ejemplo desde un volcado de memoria, ejecuta:

1
vol2 -f /data/memory.raw --profile=Win7SP1x86_23418 dumpfiles -Q 0x000000003f4551c0 -D ./output

Este comando dumpea archivos basándose en una dirección virtual concreta y los guarda en la carpeta ./output del directorio actual.

Volatility 3 con Docker

Para Volatility 3 también hay imagen Docker oficial, que incluye soporte para plugins en rutas específicas.

Descarga la imagen con:

1
docker pull sk4la/volatility3

Y define un alias para facilitar su uso, por ejemplo:

1
vol3='docker run -v /home/yoshl:/data -v /opt/vol_plugings/vol3/:/plugins sk4la/volatility3'

Extra: Cómo copiar archivos desde el contenedor Docker

Gracias a la comunidad, una forma sencilla de sacar archivos desde el contenedor sin tener que realizar dumpeos repetitivos es usando:

1
docker cp <containerId>:/path/docker/file.ext /path/host/file.exe

Uso típico con Volatility 3 y Docker

Para usar Volatility 3 con volúmenes sincronizados, primero crea un directorio output para guardar los resultados:

1
mkdir output

Luego, ejecuta el comando (adaptando nombres de archivos y rutas):

1
vol3 -f /workspace/santaclaus.bin -o /workspace/output/ windows.dumpfiles --virtaddr 0xa48df8fb42a0

Aquí, -o es para especificar la carpeta de salida, que debe estar mapeada al contenedor. Este proceso se llama mapping, donde igualamos un directorio de la máquina host con uno dentro del contenedor Docker, lo que facilita acceder a los archivos generados.

ProTip: Cómo usar Volatility 3 para identificar el perfil de Windows y mejorar Volatility 2

Cuando trabajamos con imágenes de memoria muy grandes (más de 50 GB), el plugin clásico imageinfo de Volatility 2 puede tardar horas para determinar el perfil correcto de Windows, lo que dificulta el análisis.

Una solución práctica es aprovechar Volatility 3 para extraer información directamente del registro de Windows, en particular de la hive de Software, que contiene datos sobre la versión del sistema, evitando el uso lento de imageinfo. Par ello, tenemos que seguir los pasos que se mencionan a continuación.

1º Extraer información del registro con Volatility 3

Utilizando el plugin windows.registry.printkey.PrintKey de Volatility 3, podemos obtener detalles del build y versión de Windows con el siguiente comando:

1
vol3 -f memdump.mem windows.registry.printkey.PrintKey --key "Microsoft\Windows NT\CurrentVersion"

Esto mostrará información como:

  • ProductName: Windows 10 Pro
  • CurrentBuildNumber: 19043

2º Elegir el perfil adecuado para Volatility 2

Conociendo el build exacto o aproximado, podemos listar los perfiles disponibles en Volatility 2 y seleccionar uno que coincida o sea superior:

1
vol.py --info | grep Win10

Luego elegimos el perfil más cercano, por ejemplo, Win10x64_19041, que suele funcionar bien para un build 19043.

Nota: Si no tienes el número exacto, elige uno igual o superior para obtener resultados más precisos y evitar errores.

Beneficios de este método

  • Evitas que Volatility 2 pierda horas ejecutando imageinfo.
  • Aprovechas la potencia de Volatility 3 para análisis rápidos.
  • Mejoras la precisión en el análisis con Volatility 2 al usar el perfil correcto.

Esta técnica puede resultarnos de gran ayuda si contamos con retos basados en imágenes muy pesadas.

Instalación de herramientas alternas

A continuación, se muestran una serie de herramientas totalmente complementarias a Volatility, por si en algún momento se necesitan, ya sea para hacer dumpeos de RAM o para otras funcionalidades independientes.

Instalar FTK Imager

Para instalar FTK Imager, nos vamos a la página oficial (debemos rellenar un formulario previamente) y lo descargamos. Una vez descargado, lo ejecutamos.

Dumpeos de memoria con LIME

La herramienta LIME realiza dumpeos de la memoria RAM de nuestro propio ordenador. Esta herramienta es muy antigua y a veces puede resultar más complicado de instalar. En caso de tener varias dificultades, recomiendo instalar AVML ya que es una herramienta que actualmente cuenta con un soporte más presente que LIME.

Para instalar esta herramienta, ejecutaremos los siguientes comandos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
	git clone https://github.com/504ensicsLabs/LiME.git
 
    cd LiME/src/
 
    make 
 
	# Si hay error tal que 
		#make -C /lib/modules/6.8.11-amd64/build M="/root/LiME/src" modules
		#make[1]: *** /lib/modules/6.8.11-amd64/build: No existe el fichero o el directorio.  Alto.
		#make: *** [Makefile:35: default] Error 2
 
		apt search linux-headers
		sudo apt install linux-headers-6.10.9-amd64
 
		sudo apt install linux-image-amd64
		sudo reboot
 
    insmod ./lime*ko “path=/tmp/dump.mem format=lime”
 
    ls -l /tmp/dump.mem # memory dump
 
 	cd ../../
	mv LiME/ /opt

Dumpeos de memoria con AVML

AVML también realiza dumpeos de memoria de nuestro propio ordenador. Para instalarla tendremos que realizar los siguientes comandos.

1
2
3
4
5
6
	cd /opt
    wget https://github.com/microsoft/avml/releases/download/v0.11.2/avml
 
    chmod +x avml
 
    sudo ./avml memory.raw
Esta entrada está licenciada bajo CC BY 4.0 por el autor.