Databases

Las bases de datos en msfconsole se utilizan para hacer un seguimiento de los resultados. No es un misterio que durante evaluaciones de máquinas más complejas, o incluso de redes enteras, las cosas pueden volverse confusas y complicadas debido a la gran cantidad de resultados de búsqueda, puntos de entrada, problemas detectados, credenciales descubiertas, etc.

Aquí es donde entran en juego las bases de datos. Msfconsole tiene soporte incorporado para el sistema de bases de datos PostgreSQL. Con ello, tenemos acceso directo, rápido y fácil a los resultados de los escaneos, con la capacidad añadida de importar y exportar resultados en conjunto con herramientas de terceros. Las entradas de la base de datos también pueden utilizarse para configurar los parámetros de los módulos de explotación con los hallazgos ya existentes directamente.

Configuración de la Base de Datos

Primero, debemos asegurarnos de que el servidor PostgreSQL esté en funcionamiento en nuestra máquina host. Para ello, introduce el siguiente comando:

Estado de PostgreSQL

sherlock28@htb[/htb]$ sudo service postgresql status

Iniciar PostgreSQL

sherlock28@htb[/htb]$ sudo systemctl start postgresql

Después de iniciar PostgreSQL, necesitamos crear e inicializar la base de datos de MSF con msfdb init.

MSF - Iniciar una Base de Datos

sherlock28@htb[/htb]$ sudo msfdb init
[i] Database already started
[+] Creating database user 'msf'
[+] Creating databases 'msf'
[+] Creating databases 'msf_test'
[+] Creating configuration file '/usr/share/metasploit-framework/config/database.yml'
[+] Creating initial database schema
rake aborted!
NoMethodError: undefined method `without' for #<Bundler::Settings:0x000055dddcf8cba8>
Did you mean? with_options

<SNIP>

A veces, puede ocurrir un error si Metasploit no está actualizado. Esta diferencia que causa el error puede suceder por varias razones. A menudo, ayuda actualizar Metasploit nuevamente (apt update) para resolver este problema. Luego, podemos intentar reinicializar la base de datos de MSF.

Si la inicialización se omite y Metasploit nos informa que la base de datos ya está configurada, podemos volver a verificar el estado de la base de datos.

Si este error no aparece, lo que a menudo sucede después de una instalación nueva de Metasploit, entonces veremos lo siguiente al inicializar la base de datos:

Después de que la base de datos haya sido inicializada, podemos iniciar msfconsole y conectarnos a la base de datos creada simultáneamente.

MSF - Conectar a la Base de Datos Iniciada

Sin embargo, si ya tenemos la base de datos configurada y no podemos cambiar la contraseña del usuario de MSF, procedemos con los siguientes comandos:

MSF - Reinitiar la Base de Datos

Comprobando el Estado de la Base de Datos

Ahora estamos listos para continuar. Msfconsole también ofrece ayuda integrada para la base de datos, lo que nos brinda una buena visión general de cómo interactuar y usar la base de datos.

MSF - Opciones de Base de Datos

Comprobando el Estado de la Base de Datos

Usando la Base de Datos

Con la ayuda de la base de datos, podemos gestionar muchas categorías diferentes y hosts que hemos analizado. Alternativamente, la información sobre ellos que hemos interactuado usando Metasploit. Estas bases de datos pueden ser exportadas e importadas. Esto es especialmente útil cuando tenemos listas extensas de hosts, loot, notas y vulnerabilidades almacenadas para estos hosts. Después de confirmar que la base de datos está conectada correctamente, podemos organizar nuestros Workspaces.

Workspaces

Podemos pensar en los Workspaces de la misma manera que pensamos en carpetas en un proyecto. Podemos segregar los diferentes resultados de escaneo, hosts e información extraída por IP, subred, red o dominio.

Para ver la lista actual de Workspaces, usa el comando workspace. Agregar un switch -a o -d después del comando, seguido del nombre del workspace, añadirá o eliminará ese workspace de la base de datos.

Nota que el Workspace predeterminado se llama default y está actualmente en uso según el símbolo *. Escribe el comando workspace [nombre] para cambiar al workspace actualmente usado. Mirando nuestro ejemplo, creemos un workspace para esta evaluación y seleccionémoslo.

Para ver qué más podemos hacer con los Workspaces, podemos usar el comando workspace -h para el menú de ayuda relacionado con los Workspaces.

Importando Resultados de Escaneo

A continuación, supongamos que queremos importar un escaneo de Nmap de un host a nuestro Workspace de la base de datos para comprender mejor el objetivo. Podemos usar el comando db_import para esto. Después de que la importación se complete, podemos comprobar la presencia de la información del host en nuestra base de datos utilizando los comandos hosts y services. Ten en cuenta que el tipo de archivo .xml es preferido para db_import.

Escaneo Nmap Almacenado

Importando Resultados de Escaneo

Usando Nmap Dentro de MSFconsole

Alternativamente, podemos usar Nmap directamente desde msfconsole. Para escanear directamente desde la consola sin tener que poner en segundo plano o salir del proceso, utiliza el comando db_nmap.

Comando de Nmap

Después de realizar el escaneo, puedes listar los hosts y servicios descubiertos:

Copia de Seguridad de Datos

Después de finalizar la sesión, asegúrate de hacer una copia de seguridad de nuestros datos en caso de que ocurra algo con el servicio PostgreSQL. Para hacerlo, utiliza el comando db_export.

Esta información puede ser importada nuevamente en msfconsole cuando sea necesario.

Hosts

El comando hosts muestra una tabla de base de datos que se llena automáticamente con las direcciones de los hosts, nombres de host y otra información que encontramos durante nuestros escaneos e interacciones.

Servicios

El comando services funciona de manera similar al anterior y contiene una tabla con descripciones e información sobre los servicios descubiertos durante escaneos o interacciones.

Credenciales

El comando creds permite visualizar las credenciales recopiladas durante nuestras interacciones con el host objetivo.

Loot

El comando loot trabaja en conjunto con el comando anterior para ofrecer una lista de servicios y usuarios comprometidos. Loot se refiere a volcado de hashes de diferentes tipos de sistema, incluidos hashes, passwd, shadow, entre otros.

Last updated

Was this helpful?