> For the complete documentation index, see [llms.txt](https://oliver-3.gitbook.io/redteam-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://oliver-3.gitbook.io/redteam-notes/recursos/ejptv2-notas/2.-enumeracion-de-servicios.md).

# 2. Enumeración de servicios

Una vez identificados los puertos abiertos, se enumera cada servicio para obtener versiones, usuarios, configuraciones y posibles vectores de entrada. La versión de un servicio es clave porque permite

### Importar Nmap a Metasploit

Los resultados de nmap se pueden importar a Metasploit para correlacionar servicios con exploits.

```bash
# 1. Escanear con output XML
nmap -sS -sV -O -oX scan.xml 10.10.10.1

# 2. Iniciar PostgreSQL
sudo service postgresql start

# 3. Abrir Metasploit
msfconsole

# 4. Verificar conexión a la base de datos
msf6 > db_status

# 5. Crear workspace
msf6 > workspace -a nombre_proyecto
msf6 > workspace nombre_proyecto

# 6. Importar
msf6 > db_import /ruta/scan.xml

# 7. Ver resultados
msf6 > hosts
msf6 > services

# También se puede ejecutar nmap directamente desde MSF
msf6 > db_nmap -sV -O 10.10.10.1
```

Variables globales para no repetir parámetros entre módulos:

```bash
msf6 > setg RHOSTS 10.10.10.1
msf6 > setg RPORT 445
```

***

### FTP (puerto 21)

#### Qué es

FTP (File Transfer Protocol) es un protocolo para transferir archivos entre un cliente y un servidor. Usa el puerto 21 para comandos y el 20 para datos.

Relevancia para seguridad: transmite credenciales en texto plano, muchos servidores permiten acceso anónimo por mala configuración, y versiones viejas tienen vulnerabilidades con exploits públicos.

#### Enumeración

```bash
# Banner y versión
nmap -sV -p 21 10.10.10.1

# Scripts de enumeración FTP
nmap -p 21 --script=ftp-anon,ftp-bounce,ftp-syst 10.10.10.1

# Conexión manual para verificar acceso anónimo
ftp 10.10.10.1
# Usuario: anonymous
# Password: (vacío o cualquier email)
```

#### Metasploit

```bash
# Versión
use auxiliary/scanner/ftp/ftp_version

# Acceso anónimo
use auxiliary/scanner/ftp/anonymous

# Fuerza bruta
use auxiliary/scanner/ftp/ftp_login
set USER_FILE /usr/share/wordlists/users.txt
set PASS_FILE /usr/share/wordlists/rockyou.txt
```

La versión es importante: buscar en `search proftpd` o `searchsploit proftpd` para encontrar exploits.

***

### SSH (puerto 22)

#### Qué es

SSH (Secure Shell) es un protocolo de administración remota cifrado, sucesor de Telnet. Puerto TCP 22 por defecto. Obtener credenciales SSH significa acceso directo a una shell.

#### Enumeración

```bash
# Versión
nmap -sV -p 22 10.10.10.1

# Algoritmos y métodos de autenticación
nmap -p 22 --script=ssh2-enum-algos,ssh-auth-methods 10.10.10.1

# Fuerza bruta con Hydra
hydra -l usuario -P /usr/share/wordlists/rockyou.txt ssh://10.10.10.1
```

#### Metasploit

```bash
use auxiliary/scanner/ssh/ssh_version
use auxiliary/scanner/ssh/ssh_login
use auxiliary/scanner/ssh/ssh_enumusers
```

***

### SMB (puertos 139, 445)

#### Qué es

SMB (Server Message Block) permite compartir archivos, impresoras y recursos entre equipos en una red. Nativo de Windows. Puerto 139 (NetBIOS legacy) y 445 (SMB directo).

Uno de los servicios más atacados: versiones viejas tienen vulnerabilidades críticas (EternalBlue), muchos servidores permiten sesiones nulas, puede exponer archivos, usuarios, grupos y políticas.

#### Enumeración con Nmap

```bash
# Protocolo y versión
nmap -p 445 --script=smb-protocols 10.10.10.1

# Nivel de seguridad
nmap -p 445 --script=smb-security-mode 10.10.10.1

# Enumerar shares
nmap -p 445 --script=smb-enum-shares 10.10.10.1

# Shares con credenciales
nmap -p 445 --script=smb-enum-shares \
  --script-args smbusername=admin,smbpassword=pass 10.10.10.1

# Usuarios
nmap -p 445 --script=smb-enum-users 10.10.10.1

# Sistema operativo
nmap -p 445 --script=smb-os-discovery 10.10.10.1

# Usuarios logueados (puede funcionar sin credenciales si hay sesión de invitado)
nmap -p 445 --script=smb-enum-sessions 10.10.10.1

# Estadísticas del servidor
nmap -p 445 --script=smb-server-stats \
  --script-args smbusername=admin,smbpassword=pass 10.10.10.1

# Dominios
nmap -p 445 --script=smb-enum-domains \
  --script-args smbusername=admin,smbpassword=pass 10.10.10.1

# Grupos
nmap -p 445 --script=smb-enum-groups \
  --script-args smbusername=admin,smbpassword=pass 10.10.10.1

# Servicios
nmap -p 445 --script=smb-enum-services \
  --script-args smbusername=admin,smbpassword=pass 10.10.10.1
```

IPC$ con acceso de lectura/escritura indica sesiones nulas — se pueden enumerar usuarios y shares sin credenciales.

#### Herramientas específicas

```bash
# smbclient — listar shares
smbclient -L //10.10.10.1 -N

# Conectar a un share
smbclient //10.10.10.1/share_name -U usuario

# smbmap — shares y permisos
smbmap -H 10.10.10.1
smbmap -H 10.10.10.1 -u usuario -p password

# enum4linux — enumeración completa automatizada
enum4linux -a 10.10.10.1
```

#### Metasploit

```bash
use auxiliary/scanner/smb/smb_version
use auxiliary/scanner/smb/smb_enumusers
use auxiliary/scanner/smb/smb_enumshares
use auxiliary/scanner/smb/smb_login
```

***

### HTTP/HTTPS (puertos 80, 443)

#### Qué es

Servidor web que sirve contenido a navegadores. Principales: Apache, Nginx, Microsoft IIS. Puerto 80 (HTTP) y 443 (HTTPS). Vector de ataque más común porque casi toda organización tiene servicios web expuestos.

#### Enumeración

```bash
# Banner y versión
nmap -sV -p 80,443 10.10.10.1

# Scripts web
nmap -p 80 --script=http-headers,http-title,http-robots.txt,http-methods 10.10.10.1

# Fuzzing de directorios con gobuster
gobuster dir -u http://10.10.10.1 -w /usr/share/wordlists/dirb/common.txt

# Con extensiones
gobuster dir -u http://10.10.10.1 -w /usr/share/wordlists/dirb/common.txt -x php,txt,html,bak

# ffuf (más rápido)
ffuf -u http://10.10.10.1/FUZZ -w /usr/share/wordlists/dirb/common.txt

# Fuzzing de subdominios
ffuf -u http://10.10.10.1 -H "Host: FUZZ.target.com" \
  -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -fw 1

# nikto — escáner de vulnerabilidades web
nikto -h http://10.10.10.1
```

#### Metasploit

```bash
use auxiliary/scanner/http/http_version
use auxiliary/scanner/http/robots_txt
use auxiliary/scanner/http/dir_scanner
use auxiliary/scanner/http/files_dir
use auxiliary/scanner/http/http_login
```

***

### MySQL (puerto 3306)

#### Qué es

Sistema de gestión de bases de datos relacional de código abierto. Puerto TCP 3306. Si está expuesto, permite enumerar versiones, fuerza bruta de credenciales y dump de datos sensibles.

#### Enumeración

```bash
# Versión
nmap -sV -p 3306 10.10.10.1

# Scripts
nmap -p 3306 --script=mysql-info,mysql-enum 10.10.10.1

# Conexión directa
mysql -h 10.10.10.1 -u root -p
```

#### Metasploit

```bash
use auxiliary/scanner/mysql/mysql_version
use auxiliary/scanner/mysql/mysql_login
use auxiliary/scanner/mysql/mysql_hashdump
use auxiliary/scanner/mysql/mysql_schemadump
```

***

### RDP (puerto 3389)

#### Qué es

RDP (Remote Desktop Protocol) — protocolo propietario de Microsoft para acceso remoto con interfaz gráfica a Windows. Requiere cuenta válida y contraseña en texto claro.

#### Enumeración

```bash
nmap -sV -p 3389 10.10.10.1
nmap -p 3389 --script=rdp-enum-encryption 10.10.10.1

# Fuerza bruta
hydra -l administrator -P /usr/share/wordlists/rockyou.txt rdp://10.10.10.1

# Conexión
xfreerdp /u:usuario /p:password /v:10.10.10.1 /cert:ignore
```

***

### WinRM (puertos 5985, 5986)

#### Qué es

WinRM (Windows Remote Management) — administración remota de Windows via HTTP(S). Similar a SSH pero para Windows. Puerto 5985 (HTTP) y 5986 (HTTPS).

#### Enumeración

```bash
nmap -sV -p 5985,5986 10.10.10.1

# Fuerza bruta
crackmapexec winrm 10.10.10.1 -u administrator -p /usr/share/wordlists/rockyou.txt

# Ejecutar comandos
crackmapexec winrm 10.10.10.1 -u administrator -p password -x "whoami"

# Shell interactiva
evil-winrm -i 10.10.10.1 -u administrator -p password
```

***

### SMTP (puerto 25)

#### Qué es

SMTP (Simple Mail Transfer Protocol) — protocolo para enviar correo. Mal configurado puede permitir enumeración de usuarios válidos del sistema.

#### Enumeración

```bash
nmap -p 25 --script=smtp-enum-users 10.10.10.1

# Manual con netcat
nc 10.10.10.1 25
VRFY admin
VRFY root

# Automatizado
smtp-user-enum -M VRFY -U /usr/share/wordlists/users.txt -t 10.10.10.1
```

El comando VRFY pregunta al servidor si un usuario existe. Respuesta "252 User exists" confirma el nombre.

***

### SNMP (puerto 161, UDP)

#### Qué es

SNMP (Simple Network Management Protocol) — protocolo para monitorear dispositivos de red. Usa UDP 161. Usa "community strings" como autenticación. Las por defecto son `public` (lectura) y `private` (lectura/escritura). Sin cambiar, un atacante extrae usuarios, procesos, interfaces de red y software instalado.

#### Enumeración

```bash
# Detección
nmap -sU -p 161 --script=snmp-info,snmp-brute 10.10.10.1

# Extraer toda la información
snmpwalk -v2c -c public 10.10.10.1

# Fuerza bruta de community strings
onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt 10.10.10.1
```


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://oliver-3.gitbook.io/redteam-notes/recursos/ejptv2-notas/2.-enumeracion-de-servicios.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
