> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/ejpt-notes/pruebas-de-penetracion-de-host-y-red/metasploit-framework-msf/metasploit/descripcion-general-del-marco-de-metasploit/arquitectura-del-marco-de-metasploit.md).

# Arquitectura del marco de Metasploit

## 🧱 ¿Qué es un módulo en Metasploit?

En el contexto de **Metasploit**, un **módulo** es un fragmento de código diseñado para realizar una tarea específica dentro del framework.

El **Framework de Metasploit** cuenta con un conjunto de **librerías internas** que permiten ejecutar estos módulos **sin necesidad de escribir el código desde cero**, facilitando así el proceso de explotación o enumeración.

***

## 🧩 Tipos de módulos en Metasploit

| Tipo de Módulo | Descripción                                                                                           |
| -------------- | ----------------------------------------------------------------------------------------------------- |
| **Exploit**    | Módulo que explota una vulnerabilidad específica. Generalmente se combina con un *payload*.           |
| **Payload**    | Código malicioso que se entrega al objetivo tras una explotación exitosa. Ejemplo: una reverse shell. |
| **Encoder**    | Codifica el payload para evadir detección por antivirus. Ejemplo: `shikata_ga_nai` para Windows.      |
| **NOPS**       | Instrucciones de no operación que aseguran la estabilidad y el tamaño correcto del payload.           |
| **Auxiliary**  | Módulos que realizan funciones auxiliares como escaneo de puertos, sniffing o fuerza bruta.           |

***

## 💣 Tipos de Payload en Metasploit

Metasploit proporciona **dos tipos principales de payloads** que pueden usarse junto con un exploit:

#### 1. Payload *No Escalonado* (Non-Staged)

* El payload completo se envía junto con el exploit.
* Más sencillo, pero menos flexible.

#### 2. Payload *Escalonado* (Staged)

* Se envía en dos partes:
  * **Stager**: establece una conexión inversa con el atacante.
  * **Stage**: una vez conectados, se descarga y ejecuta la segunda parte del payload.

***

## 🧪 Stagers y Stages

| Componente | Descripción                                                                                        |
| ---------- | -------------------------------------------------------------------------------------------------- |
| **Stager** | Abre una conexión con el atacante y prepara el sistema objetivo para recibir el *stage*.           |
| **Stage**  | Parte funcional del payload (como Meterpreter), que se descarga después de establecer la conexión. |

***

## 🧠 Payload Meterpreter

**Meterpreter** (abreviatura de *Meta-Interpreter*) es un payload avanzado que se ejecuta directamente en memoria del sistema comprometido, lo que lo hace **difícil de detectar**.

#### Funcionalidades principales:

* Se comunica a través de un socket del stager.
* Proporciona un **intérprete de comandos interactivo**.
* Permite:
  * Navegar por el sistema de archivos.
  * Ejecutar comandos del sistema.
  * Capturar teclas (*keylogger*).
  * Subir/descargar archivos.
  * Y mucho más.

***

## 📁 Estructura del sistema de archivos de Metasploit

Metasploit organiza sus archivos de forma clara, separando los módulos en distintas carpetas según su funcionalidad.

#### 📌 Ubicación de los módulos en sistemas Linux:

* Módulos principales:

  ```
  /usr/share/metasploit-framework/modules
  ```
* Módulos personalizados del usuario:

  ```
  ~/.msf4/modules
  ```
