dfVFS: Forense Digital en Kali
dfVFS: Forense Digital en Kali
dfVFS (Digital Forensics Virtual File System) es una biblioteca de Python desarrollada por Google (como parte del proyecto Log2Timeline/Plaso) que proporciona una interfaz genérica para acceder a diferentes tipos de sistemas de archivos y formatos de almacenamiento forense.
En Kali Linux, es una herramienta esencial para investigadores que necesitan analizar imágenes de disco sin montar manualmente cada partición.
Instalación en Kali Linux
Kali Linux suele incluir muchos paquetes de forense en sus repositorios oficiales. Puedes instalar la biblioteca para Python 3 usando el gestor de paquetes apt:
sudo apt update
sudo apt install python3-dfvfs
Si necesitas la versión más reciente o estás trabajando en un entorno virtual (venv), también puedes instalarla vía pip:
pip install dfvfs
¿Para qué sirve dfVFS?
Imagina que tienes una imagen de disco compleja (por ejemplo, un archivo .E01 que contiene un volumen LVM, que a su vez contiene una partición ext4). Normalmente, tendrías que usar varias herramientas para "capa por capa" llegar a los archivos.
dfVFS lo hace automáticamente mediante una abstracción de "Path Specs" (especificaciones de ruta). Permite leer:
Formatos de imagen: Raw (dd), EWF (EnCase), VMDK, VHD.
Contenedores: Cifrado BitLocker, LUKS, volúmenes APFS, LVM, VSS (Shadow Copies).
Sistemas de archivos: NTFS, FAT, ext2/3/4, HFS+, APFS.
Ejemplo básico de uso en Python
Aquí tienes un esquema de cómo se vería un script básico para listar archivos en una imagen usando dfVFS:
from dfvfs.helpers import volume_scanner
from dfvfs.resolver import resolver
# Configurar el escáner de volúmenes
scanner = volume_scanner.VolumeScanner()
path_specs = scanner.GetPathSpecs(["imagen_forense.ad1"])
# Resolver la ruta y abrir el sistema de archivos
for path_spec in path_specs:
file_entry = resolver.Resolver.OpenFileEntry(path_spec)
print(f"Directorio raíz: {file_entry.name}")
for sub_entry in file_entry.sub_entries:
print(f" - {sub_entry.name}")
Componentes principales
Path Spec: Un objeto que describe cómo llegar a un dato (ej. "está en el sector X, dentro del archivo Y, usando el sistema de archivos Z").
Resolver: El motor que interpreta los Path Specs para abrir archivos o directorios.
File Entry: La representación de un archivo o carpeta dentro del sistema virtual.
¿Por qué usarlo en lugar de montar la imagen?
Seguridad: No montas el sistema de archivos en tu kernel, lo que reduce riesgos si el sistema de archivos está corrupto o es malicioso.
Automatización: Es ideal para crear herramientas de búsqueda masiva o triaje forense.
Soporte Multiplataforma: Puedes analizar un sistema APFS (Apple) desde Kali Linux fácilmente.