Ghost AcademyGhostOffensive · Ghost Academy
GhostOffensiveMódulo 04Con laboratorio

Escaneo y enumeración de vulnerabilidades

Con el reconocimiento hecho sabes qué empresa tienes delante. Ahora toca averiguar qué ofrece exactamente cada servicio y qué debilidades conocidas tiene. Este módulo trata de descubrir y enumerar, no de explotar: la explotación viene después.

Objetivos de la unidad

1. Qué significa realmente "puerto abierto"

Antes de escanear conviene entender qué te está diciendo nmap. Un escaneo TCP interpreta la respuesta al saludo (SYN) del objetivo:

EstadoQué respondió el objetivoQué significa
openSYN/ACKHay un servicio escuchando y aceptando conexiones
closedRST (reset)La máquina responde, pero no hay nada escuchando en ese puerto
filteredNada, o un mensaje ICMPUn cortafuegos descarta el paquete: no sabes si hay servicio detrás

La distinción closed vs filtered es la que más gente pasa por alto y la más informativa: si todo un rango sale filtered, hay un cortafuegos delante; si sale closed, la máquina está viva pero ese puerto no se usa. Eso ya te dice cosas de la arquitectura antes de tocar ningún servicio.

2. Escanear con criterio

No existe un único escaneo correcto: se combinan varios, de menor a mayor coste, y se ajusta la temporización (-T0 muy lento y sigiloso, hasta -T5 agresivo) y la intensidad según lo que el encargo permita.

ObjetivoOpción de nmapCuándo
Todos los puertos TCP, rápido-p- --min-rate 2000Siempre primero
Identificar servicio y versión-sVSolo sobre los puertos abiertos
Scripts de enumeración-sC o --script <nombre>Cuando ya sabes el servicio
Servicios UDP-sUUDP es lento y se olvida: elige puertos concretos
Guardar resultados-oA nombreSiempre (evidencia + no repetir)

Flujo recomendado, en dos tiempos: primero todos los puertos (barato por puerto, pero son 65535), y después -sV y scripts solo sobre los abiertos. Así lo caro (identificar versión, correr scripts) se hace sobre un puñado de puertos, no sobre 65535.

kali@lab
$ nmap -p- --min-rate 2000 objetivo -oA fase1 # barrido completo
kali@lab
$ nmap -sV -sC -p 22,80,445 objetivo -oA fase2 # detalle en los abiertos
kali@lab
$ nmap -sU -sV -p 161 objetivo # UDP siempre aparte

Sobre el sigilo: nada de esto es invisible. Un -p- a --min-rate 2000 es un cañonazo que cualquier IDS registra. En un red team real se escanea despacio y de forma dirigida; en una auditoría con alcance acordado, la velocidad manda. Sé consciente de en cuál de los dos estás.

3. Servicios que no se dejan identificar

Si nmap -sV marca un servicio con signo de interrogación (por ejemplo cbt?) significa que respondió pero nmap no lo reconoce a partir de su base de firmas. No es un callejón sin salida: te conectas a mano y hablas con él.

kali@lab
$ nc objetivo 7777 # conectar en crudo y probar HELP, INFO, ?

Muchos servicios internos se describen solos ante un HELP o un ?. Ese diálogo manual es una habilidad que distingue al que enumera de verdad del que solo lee la salida de una herramienta.

Paciencia: el sondeo de versiones de un servicio desconocido prueba decenas de mensajes y puede tardar varios minutos por puerto. Se acota con --version-light, o directamente lo haces a mano.

4. Enumerar la web

La web es casi siempre la superficie más rica. Cuatro frentes:

kali@lab
$ gobuster dir -u http://objetivo -w /usr/share/dirb/wordlists/common.txt -x php,txt,bak -q
kali@lab
$ nikto -h http://objetivo

Detalle práctico: fíjate en los códigos de estado. Un 403 Forbidden no es un "no existe": confirma que la ruta existe pero está protegida, lo que a veces es más interesante que un 200.

5. Enumerar servicios de archivos y gestión

Cada protocolo tiene su forma de soltar información. Los más rentables:

kali@lab
$ smbclient -L //objetivo -N # sesión nula: listar recursos
kali@lab
$ snmpwalk -v2c -c public objetivo # volcar el árbol SNMP
kali@lab
$ nmap --script ssl-cert -p 443 objetivo # leer el certificado

6. Escaneo de vulnerabilidades: la máquina frente a las manos

Un escáner de vulnerabilidades (Nessus, OpenVAS, Nuclei) automatiza la comparación de lo que encuentra contra una base de fallos conocidos. Es rápido y da cobertura amplia, pero tiene dos límites que hay que tener siempre presentes:

La regla: el escáner es un punto de partida que ensancha, no la respuesta. El criterio humano es lo que convierte una lista de avisos en un ataque.

7. De la versión a la vulnerabilidad

Cuando conoces producto y versión, buscas si tiene fallos publicados. Las fuentes son las bases de datos de exploits (Exploit-DB, consultable offline con searchsploit) y las fichas oficiales de vulnerabilidades, identificadas con un código CVE y puntuadas por gravedad con CVSS.

kali@lab
$ searchsploit apache 2.4.49
kali@lab
$ searchsploit -x multiple/webapps/50383.sh # leer el exploit y sus requisitos

Antes de dar un CVE por aplicable, comprueba: la versión exacta (muchos productos tienen exploits para rangos distintos), las condiciones previas (¿necesita autenticación? ¿una configuración concreta?), y la plataforma. Es exactamente el trabajo del módulo 9, y adaptar el exploit encontrado, el del módulo 10.

8. Priorizar y documentar

Al terminar, no tienes "una lista de puertos": tienes un conjunto de hallazgos que hay que ordenar por dónde atacar primero. El criterio es impacto × facilidad, no el número de avisos ni su color en el informe del escáner. Un FTP anónimo con credenciales dentro vale más que diez avisos "medios" de cabeceras ausentes.

Documenta cada hallazgo con su evidencia (el comando y su salida): es la base del informe final y tu memoria de trabajo para las fases siguientes.

Para profundizar
🧰 Herramientas relacionadas (Ghost Academy)

Guías y laboratorios ya publicados en Ghost Academy sobre las herramientas de este módulo:

Nmap: guía completa · Nmap en Kali · Enum4linux · NetExec · Nuclei · OpenVAS · WhatWeb

Laboratorio: Helios Systems

⬇ Descargar laboratorio (ZIP)

Descomprime, lee el LEEME.md y lanza startlab.sh. Hay servicios TCP y UDP, con 8 flags GO{...}. Verifícalas en http://localhost:8181/verificador, donde también encontrarás el reto de la versión a la CVE.

Aplica esta unidad y recuerda: no todo está en su puerto habitual, y no todo es TCP.

¿Atascado o ya terminado? La solución paso a paso revela todas las flags. Úsala cuando lo hayas intentado.

Autoevaluación

  1. Diferencia entre un puerto closed y uno filtered: ¿qué te dice cada uno sobre la máquina y su red?
  2. ¿Por qué se escanean todos los puertos antes de lanzar -sV y los scripts?
  3. ¿Qué significa que nmap marque un servicio con ? y qué haces a continuación?
  4. ¿Por qué un escaneo TCP completo no te dice nada sobre SNMP?
  5. ¿Qué diferencia hay entre un falso positivo y un falso negativo de un escáner de vulnerabilidades, y por qué importan las dos?
  6. Un escáner dice que un servidor es vulnerable por su versión. ¿Qué tres cosas compruebas antes de darlo por bueno?
  7. ¿Por qué un 403 Forbidden en un descubrimiento por diccionario puede ser más interesante que un 200?