Gestión de Entornos de Trabajo (Workspaces)

Durante la ejecución de auditorías de seguridad o pruebas de penetración complejas, la segregación de datos es un requisito fundamentalPage 1 para mantener la integridad y organización del proyecto. Metasploit Framework integra una funcionalidad nativa denominada Workspaces (Espacios de Trabajo), diseñada para crear contenedores lógicos que aíslan la información de cada evaluación.

Un workspace funciona como una base de datos independiente que almacena todos los artefactos recolectados durante una auditoría: hosts, servicios, puertos abiertos, vulnerabilidades identificadas, credenciales obtenidas y sesiones activas. Su uso es una práctica estándar en entornos profesionales para evitar la contaminación cruzada de datos entre distintos objetivos o clientes.


Administración de Workspaces mediante Comandos

La gestión de los espacios de trabajo se realiza a través del comando workspace, utilizando diferentes modificadores para realizar acciones específicas.

1. Listado de Workspaces Disponibles

Para visualizar todos los espacios de trabajo existentes, se ejecuta el comando workspace sin argumentos. El workspace activo se resalta con un asterisco (*).

  • Comando: workspace

  • Ejemplo de Salida:

    msf6 > workspace
      default
    * pentest_cliente_a
      pentest_cliente_b

    En este caso, pentest_cliente_a es el contexto de trabajo actual.

2. Creación de un Nuevo Workspace

Para crear un nuevo entorno lógico, se utiliza el modificador -a (add) seguido del nombre deseado. Inmediatamente después de su creación, Metasploit cambia el contexto a este nuevo workspace.

  • Sintaxis: workspace -a <nombre_workspace>

  • Ejemplo :

    msf6 > workspace -a red_corporativa
    [*] Added workspace 'red_corporativa'
    [*] Workspace: red_corporativa

    A partir de este momento, todos los datos, como la importación de un escaneo de Nmap (db_import scan.xml), se almacenarán exclusivamente en red_corporativa.

3. Cambio del Contexto de Trabajo

Para cambiar entre workspaces existentes, simplemente se ejecuta el comando workspace seguido del nombre del espacio de trabajo al que se desea cambiar.

  • Sintaxis: workspace <nombre_workspace>

  • Ejemplo :

    msf6 > workspace default
    [*] Workspace: default

    Esta acción redirige todas las operaciones subsecuentes al workspace default, aislando el trabajo del entorno red_corporativa.

4. Eliminación de un Workspace

El modificador -d (delete) se utiliza para eliminar permanentemente un espacio de trabajo y toda la información que contiene.

⚠️ Advertencia: Esta operación es irreversible. Eliminar un workspace resultará en la pérdida de todos los hosts, servicios, credenciales y demás datos asociados a él. Se recomienda realizar una copia de seguridad (db_export) antes de proceder.

  • Sintaxis: workspace -d <nombre_workspace>

  • Ejemplo :

    msf6 > workspace -d red_corporativa
    [*] Deleted workspace 'red_corporativa'
    [*] Switched back to workspace 'default'

Flujo de Trabajo Operativo

A continuación se muestra un escenario práctico que simula la gestión de dos evaluaciones de seguridad paralelas.

Paso 1: Crear workspaces para dos clientes distintos.

msf6 > workspace -a cliente_banco
[*] Added workspace 'cliente_banco'
[*] Workspace: cliente_banco

msf6 > workspace -a cliente_retail
[*] Added workspace 'cliente_retail'
[*] Workspace: cliente_retail

Paso 2: Cambiar al contexto del primer cliente e importar datos.

msf6 > workspace cliente_banco
[*] Workspace: cliente_banco

msf6 > db_import nmap_banco.xml
[*] Importing 'nmap_banco.xml'
...
msf6 > hosts
Hosts
=====
address       mac                name           os_name      os_flavor   os_sp  purpose  info  comments
-------       ---                ----           -------      ---------   -----  -------  ----  --------
192.168.1.10                      router.local   Linux        Ubuntu      18.04  server
192.168.1.15   0A:1B:2C:3D:4E:5F   ws01.local     Windows      10          Pro    client

Paso 3: Cambiar al segundo cliente para verificar el aislamiento.

msf6 > workspace cliente_retail
[*] Workspace: cliente_retail

msf6 > hosts
Hosts
=====
address  mac  name  os_name  os_flavor  os_sp  purpose  info  comments
-------  ---  ----  -------  ---------  -----  -------  ----  --------

Como se puede observar, la base de datos del workspace cliente_retail está vacía, demostrando la correcta segregación de los datos importados en el workspace cliente_banco.

Última actualización