Naabu: Escáner de Puertos Rápido

 https://www.onlinetis.com/es/

Naabu: Escáner de Puertos Rápido

Si estás usando Kali Linux para auditorías de red o recompensas por errores (bug bounty), Naabu es una de esas herramientas que no te pueden faltar. Básicamente, es un escáner de puertos escrito en Go que se enfoca en ser increíblemente rápido y fiable.

Aquí tienes un resumen de qué es, por qué se usa y cómo empezar a manejarlo:


¿Qué es Naabu?

A diferencia de herramientas clásicas como Nmap, que hacen muchísimas cosas (detección de OS, scripts, etc.), Naabu tiene una misión principal: encontrar puertos abiertos de la forma más rápida posible.

Es desarrollado por ProjectDiscovery y está diseñado para funcionar muy bien en combinación con otras herramientas (como subfinder o httpx) mediante el uso de "pipes" o tuberías en la terminal.

Características principales:

  • Velocidad: Realiza escaneos asíncronos extremadamente rápidos.

  • Pasivo y Activo: Puede consultar servicios como Shodan para ver puertos abiertos sin siquiera tocar el objetivo.

  • Fácil de integrar: La salida se puede exportar en formato JSON para automatizar procesos.

  • Manejo de duplicados: Evita escanear lo mismo varias veces de forma inteligente.


Instalación en Kali Linux

Como es un binario en Go, lo más sencillo es descargarlo directamente si ya tienes Go configurado:

Bash
go install -v github.com/projectdiscovery/naabu/v2/cmd/naabu@latest

Nota: Asegúrate de tener /root/go/bin o ~/go/bin en tu variable $PATH.


Comandos básicos para empezar

Aquí tienes los ejemplos más comunes para que los pruebes ahora mismo:

  1. Escaneo simple de un dominio:

    naabu -host google.com

  2. Escaneo de puertos específicos (o los 1000 más comunes):

    naabu -p 80,443,8080 -host 192.168.1.1

    (Si quieres todos los puertos, usa -p -)

  3. Escaneo en modo pasivo (sin enviar paquetes al objetivo):

    naabu -host target.com -passive

  4. Combinación con otras herramientas (El "Pentesting Pipeline"):

    echo target.com | subfinder | naabu

    (Esto busca subdominios y automáticamente les escanea los puertos)


¿Nmap o Naabu?

No es que uno sea mejor que el otro, sino que tienen propósitos distintos:

  • Naabu: Úsalo primero para identificar qué está vivo en una red gigante de forma masiva.

  • Nmap: Úsalo después de Naabu sobre los puertos encontrados para hacer una enumeración profunda (versiones de servicios, scripts de vulnerabilidades, etc.).

Tip de experto: Naabu permite enviar los resultados directamente a Nmap usando el flag -nmap-cli.

 

Configurar las API keys en Naabu es fundamental si quieres aprovechar el modo pasivo. Este modo permite descubrir puertos abiertos consultando bases de datos externas (como Shodan, Censys o BinaryEdge) sin enviar un solo paquete directamente al objetivo, lo que te hace "invisible" ante los firewalls o sistemas de detección de intrusos (IDS).

Aquí te explico cómo hacerlo paso a paso:


1. Ubicación del archivo de configuración

La primera vez que ejecutas Naabu, la herramienta crea automáticamente un archivo de configuración en tu carpeta de usuario.

  • Ruta en Linux/Kali: ~/.config/naabu/config.yaml

Si el archivo no existe, simplemente ejecuta naabu una vez en la terminal y se generará.

2. Edición del archivo config.yaml

Para añadir tus llaves, abre el archivo con tu editor favorito (como nano o mousepad):

Bash
nano ~/.config/naabu/config.yaml

Busca la sección que dice sources o busca directamente los nombres de los servicios. El archivo tiene una estructura similar a esta:

YAML
# Configuración de proveedores externos
shodan:
  - API_KEY_AQUÍ
censys:
  - API_ID:API_SECRET
binaryedge:
  - API_KEY_AQUÍ

Importante: Algunos servicios requieren un par de credenciales (como Censys, que pide ID y Secret separados por dos puntos :), mientras que otros solo piden un token único.

3. ¿Dónde conseguir las API Keys?

La mayoría de estos servicios tienen un plan gratuito (Community) que es suficiente para empezar:

ServicioUtilidadWeb para registro
ShodanEl buscador de dispositivos más famoso.shodan.io
CensysExcelente para certificados y hosts.censys.io
BinaryEdgeMuy bueno para escaneos de internet.binaryedge.io
FOFAAlternativa potente (muy popular en Asia).fofa.info

4. Cómo usar el modo pasivo tras configurar

Una vez que hayas guardado el archivo config.yaml con tus llaves, puedes lanzar el escaneo pasivo. Naabu consultará automáticamente a todos los proveedores que tengan una llave válida configurada.

Usa el siguiente comando:

Bash
naabu -host target.com -passive

Ventajas de este método:

  1. Sigilo total: No hay interacción directa con la IP de la víctima.

  2. Ahorro de tiempo: Obtienes resultados instantáneos de escaneos que otros ya realizaron por ti.

  3. Resultados históricos: A veces puedes ver puertos que estuvieron abiertos recientemente aunque ahora estén filtrados por un firewall temporal.


Verificación rápida

Si quieres estar seguro de que Naabu está leyendo tus llaves correctamente, puedes usar el flag de "verbose" para ver qué servicios está consultando:

Bash
naabu -host target.com -passive -v

 

La verdadera magia de estas herramientas de ProjectDiscovery surge cuando las usas juntas. Lo mejor de todo es que casi todas comparten el mismo sistema de configuración.

Si ya configuraste las llaves para Naabu, te alegrará saber que Subfinder (para encontrar subdominios) usa un archivo casi idéntico. Aquí te explico cómo dejar listo tu "arsenal" de reconocimiento:


1. Configurar Subfinder (El Rey de los Subdominios)

Subfinder es el compañero perfecto de Naabu. Para configurar sus API keys (que son las mismas de Shodan, Censys, etc., más algunas específicas como Chaos o GitHub):

  • Archivo de configuración: ~/.config/subfinder/provider-config.yaml

  • Comando para editar: nano ~/.config/subfinder/provider-config.yaml

Estructura del archivo:

YAML
shodan:
  - API_KEY_AQUÍ
binaryedge:
  - API_KEY_AQUÍ
censys:
  - ID:SECRET
github:
  - TU_TOKEN_DE_GITHUB

2. Configurar Httpx (El Filtro de Supervivencia)

Httpx no suele necesitar API keys porque su trabajo es "tocar" los dominios encontrados para ver si tienen una web activa (HTTP/HTTPS), qué título tienen y qué servidor usan.

Es el paso intermedio obligatorio antes de lanzar herramientas de ataque como SQLMap o Nuclei.


3. El "One-Liner" Maestro (Tu flujo de trabajo)

Ahora que tienes las llaves, puedes ejecutar una cadena de comandos (Pipeline) que haga en 1 minuto lo que a mano tardarías horas.

Copia y guarda este comando (cámbialo por tu objetivo):

Bash
subfinder -d objetivo.com -all -silent | naabu -silent | httpx -title -status-code -tech-detect

¿Qué está pasando aquí?

  1. subfinder: Encuentra todos los subdominios usando tus API keys.

  2. naabu: Recibe esos subdominios y escanea qué puertos tienen abiertos.

  3. httpx: De los puertos abiertos, te dice cuáles son webs, qué tecnologías usan (React, Apache, Nginx) y si devuelven un código 200 (OK) o 403 (Prohibido).


Tabla de llaves "Must-Have" (Imprescindibles)

Si quieres resultados profesionales, asegúrate de tener al menos estas tres en tus archivos de configuración:

HerramientaPor qué es importanteCosto
ChaosBase de datos masiva de ProjectDiscovery.Gratis (con registro)
VirusTotalEncuentra subdominios que otros no ven.Gratis (límite diario)
GitHubBusca subdominios en código fuente público.Gratis (creando un Token)

Un pequeño consejo de seguridad

[!IMPORTANT]

Nunca compartas tus archivos .yaml de la carpeta ~/.config/ ni los subas a GitHub por error. Si alguien roba tus llaves de Shodan o Censys, podría gastar tus créditos o bloquear tu cuenta.

 

Crear un script de Bash te ahorrará muchísimo tiempo y evitará que tengas que escribir comandos largos cada vez. Este script organizará todo en carpetas, usará tus API keys configuradas y te dará un resumen limpio.

Copia este código en un archivo llamado recon.sh:

Bash
#!/bin/bash

# --- Configuración de Colores ---
GREEN='\033[0;32m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# --- Variables ---
DOMAIN=$1
DATE=$(date +%Y-%m-%d_%H-%M)
OUT_DIR="recon_$DOMAIN"

if [ -z "$DOMAIN" ]; then
    echo -e "${BLUE}Uso: ./recon.sh dominio.com${NC}"
    exit 1
fi

# Crear directorio de resultados
mkdir -p "$OUT_DIR"
echo -e "${GREEN}[+] Iniciando reconocimiento para: $DOMAIN${NC}"
echo -e "${GREEN}[+] Los resultados se guardarán en: $OUT_DIR${NC}"

# 1. Subfinder: Enumeración de subdominios
echo -e "${BLUE}[*] Buscando subdominios con Subfinder...${NC}"
subfinder -d "$DOMAIN" -all -silent -o "$OUT_DIR/subdominios.txt"

# 2. Naabu: Escaneo de puertos (modo pasivo + activo rápido)
echo -e "${BLUE}[*] Escaneando puertos abiertos con Naabu...${NC}"
naabu -list "$OUT_DIR/subdominios.txt" -passive -rate 1000 -silent -o "$OUT_DIR/puertos.txt"

# 3. Httpx: Verificación de servicios web y tecnologías
echo -e "${BLUE}[*] Analizando servicios HTTP vivos con Httpx...${NC}"
cat "$OUT_DIR/puertos.txt" | httpx -title -status-code -tech-detect -silent -o "$OUT_DIR/web_info.txt"

# --- Resumen Final ---
echo -e "---"
echo -e "${GREEN}[V] Reconocimiento finalizado.${NC}"
echo -e "Subdominios encontrados: $(wc -l < "$OUT_DIR/subdominios.txt")"
echo -e "Puertos/Hosts activos: $(wc -l < "$OUT_DIR/puertos.txt")"
echo -e "Resultados detallados en: $OUT_DIR/web_info.txt"

Cómo preparar y usar el script:

  1. Dale permisos de ejecución:

    Abre tu terminal en la carpeta donde guardaste el archivo y escribe:

    chmod +x recon.sh

  2. Ejecútalo contra un objetivo:

    ./recon.sh ejemplo.com

  3. ¿Qué obtendrás?

    El script creará una carpeta llamada recon_ejemplo.com con tres archivos:

    • subdominios.txt: Todos los nombres encontrados.

    • puertos.txt: Lista de IP:Puerto o Dominio:Puerto.

    • web_info.txt: El "tesoro". Aquí verás qué webs responden, si son un WordPress, un panel de login, etc.


Un detalle importante:

Para que naabu y subfinder funcionen perfectamente dentro del script, asegúrate de que los binarios estén en tu PATH. Si al ejecutarlo te dice "command not found", puedes solucionarlo moviendo los binarios a la carpeta de sistema:

Bash
sudo cp ~/go/bin/* /usr/local/bin/

 

Añadir Nuclei es como darle "dientes" a tu script. Mientras que las herramientas anteriores solo miran, Nuclei ataca (de forma controlada) para decirte: "Oye, este servidor tiene una vulnerabilidad crítica".

Aquí tienes el script actualizado. He añadido una sección para Nuclei que utiliza plantillas actualizadas de la comunidad.

Script de Reconocimiento + Escaneo de Vulnerabilidades (recon_full.sh)

Bash
#!/bin/bash

# --- Colores ---
GREEN='\033[0;32m'
BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m'

DOMAIN=$1
DATE=$(date +%Y-%m-%d_%H-%M)
OUT_DIR="recon_$DOMAIN"

if [ -z "$DOMAIN" ]; then
    echo -e "${RED}Uso: ./recon_full.sh dominio.com${NC}"
    exit 1
fi

mkdir -p "$OUT_DIR"
echo -e "${GREEN}[+] Iniciando Recon Completo: $DOMAIN${NC}"

# 1. Subfinder (Pasivo)
echo -e "${BLUE}[*] Buscando subdominios...${NC}"
subfinder -d "$DOMAIN" -all -silent -o "$OUT_DIR/subdominios.txt"

# 2. Naabu (Puertos)
echo -e "${BLUE}[*] Escaneando puertos...${NC}"
naabu -list "$OUT_DIR/subdominios.txt" -passive -silent -o "$OUT_DIR/puertos.txt"

# 3. Httpx (Filtro Web)
echo -e "${BLUE}[*] Verificando servicios HTTP...${NC}"
cat "$OUT_DIR/puertos.txt" | httpx -silent -o "$OUT_DIR/urls_vivas.txt"

# 4. Nuclei (Vulnerabilidades) - NUEVO PASO
echo -e "${RED}[!] Lanzando Nuclei sobre los objetivos encontrados...${NC}"
# Solo escaneamos vulnerabilidades críticas, altas y medias para no generar mucho ruido
nuclei -list "$OUT_DIR/urls_vivas.txt" -severity critical,high,medium -silent -o "$OUT_DIR/vulnerabilidades.txt"

# --- Resumen ---
echo -e "${GREEN}--- RESULTADOS ---${NC}"
echo -e "Subdominios: $(wc -l < "$OUT_DIR/subdominios.txt")"
echo -e "URLs Vivas: $(wc -l < "$OUT_DIR/urls_vivas.txt")"
echo -e "Vulnerabilidades detectadas: ${RED}$(wc -l < "$OUT_DIR/vulnerabilidades.txt")${NC}"
echo -e "Revisa el archivo: $OUT_DIR/vulnerabilidades.txt"

¿Por qué Nuclei es tan potente?

Nuclei funciona mediante plantillas (templates) escritas en YAML que se actualizan casi a diario por la comunidad de ciberseguridad.

  • Detección de CVEs: Encuentra fallos específicos que acaban de salir (como el famoso Log4j).

  • Misconfigurations: Detecta si alguien dejó un archivo .env, .git o un panel de administración sin contraseña.

  • Tecnologías: Sabe exactamente cómo probar un panel de SAP, una instancia de Jira o un servidor Jenkins.

Antes de ejecutarlo:

Asegúrate de tener Nuclei instalado y las plantillas actualizadas:

  1. go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest

  2. nuclei -update-templates (Esto descarga miles de pruebas de seguridad a tu PC).


Un último consejo de "Hacker Ético":

Este script es muy potente. Úsalo solo en entornos donde tengas permiso por escrito (como programas de Bug Bounty o auditorías contratadas). Escanear masivamente infraestructuras sin permiso puede meterte en problemas legales.

Entradas populares de este blog

Hacking y ciberseguridad en kali linux con Fping

Hacking y ciberseguridad en kali linux con atk6-thcping6

Como utilizar Fierce en kali linux