NBTScan: Escaneo de Red NetBIOS

 

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

NBTScan: Escaneo de Red NetBIOS

NBTScan es una herramienta de línea de comandos clásica en Kali Linux diseñada para escanear redes IP en busca de información de nombres NetBIOS. Es fundamental cuando realizas auditorías en entornos Windows, ya que permite identificar nombres de equipos, grupos de trabajo y direcciones MAC de forma rápida.

Aquí tienes una guía práctica para dominarla:


¿Para qué sirve NBTScan?

A diferencia de un escaneo de puertos genérico, nbtscan se especializa en el protocolo NetBIOS sobre TCP/IP. Su objetivo principal es:

  • Descubrir nombres de host (PC-VENTAS, SERVIDOR-01).

  • Identificar el Nombre de Usuario que ha iniciado sesión (en algunos casos).

  • Listar las direcciones MAC de los dispositivos en el segmento de red.


Comandos Básicos y Ejemplos

1. Escanear un rango de red completo

Si quieres saber qué equipos Windows hay en tu red local:

Bash
nbtscan 192.168.1.0/24

2. Escanear una IP específica

Para obtener detalles de un solo objetivo:

Bash
nbtscan 192.168.1.50

3. Modo Detallado (Verbose)

Si necesitas ver los "servicios" o códigos NetBIOS que el equipo está anunciando (como si es un Controlador de Dominio o una impresora compartida):

Bash
nbtscan -v 192.168.1.50

4. Cambiar el formato de salida

Para generar un reporte fácil de leer o importar a otros scripts, puedes usar el flag -s para separar por columnas:

Bash
nbtscan -s : 192.168.1.0/24

Tabla de Resultados Comunes

Cuando ejecutas el comando, verás columnas como estas:

ColumnaSignificado
IP AddressLa dirección IP del equipo encontrado.
NetBIOS NameEl nombre de red del equipo (Hostname).
ServerIndica si el equipo actúa como servidor (File server, etc.).
UserEl nombre del usuario logueado (si el equipo lo permite).
MAC AddressLa dirección física de la tarjeta de red.

Nota de seguridad: Ten en cuenta que en redes modernas con Windows 10/11 y firewalls activos, NetBIOS suele estar bloqueado o desactivado por defecto. Si no obtienes resultados, es probable que los equipos estén filtrando el tráfico o usando solo mDNS/LLMNR.

 

Cuando activas el modo detallado (-v), NBTScan te muestra una serie de Sufijos NetBIOS (esos números entre corchetes después del nombre). Estos códigos son la clave para saber exactamente qué función cumple ese equipo en la red.

Aquí tienes el diccionario para descifrar los más importantes:

Códigos de Nombre de Equipo (Únicos)

Estos identifican servicios específicos ejecutándose en esa máquina:

CódigoTipoSignificado
<00>ÚnicoWorkstation Service: Es un equipo estándar conectado a la red.
<03>ÚnicoMessenger Service: El equipo puede recibir mensajes de alerta.
<06>ÚnicoRAS Server: Indica que tiene un servicio de acceso remoto.
<20>ÚnicoFile Server: ¡Este es clave! El equipo tiene recursos compartidos (archivos o carpetas).
<1B>ÚnicoDomain Master Browser: Indica que es el servidor principal de la red.

Códigos de Grupo (Group)

Estos identifican a qué grupo o dominio pertenece la máquina:

CódigoTipoSignificado
<00>GrupoDomain/Workgroup: El nombre del grupo de trabajo al que pertenece.
<1C>GrupoDomain Controllers: Identifica que la máquina es un Controlador de Dominio.
<1D>GrupoMaster Browser: El equipo encargado de mantener la lista de nombres de la red.

¿Por qué es útil para ti?

Si estás en una auditoría y ves un equipo con el código <20>, ya sabes que hay una superficie de ataque interesante: carpetas compartidas. Si ves un <1C>, has encontrado el "premio gordo": un servidor que gestiona usuarios y contraseñas.

Dato curioso: NetBIOS es un protocolo antiguo. Si ves muchos resultados, es una señal de que la red tiene configuraciones heredadas (legacy) que suelen ser más vulnerables a ataques como SMB Relay o Responder.

 

Si NBTScan es el radar para encontrar equipos, Responder es la caña de pescar.

En redes Windows, cuando un equipo intenta buscar a otro y no lo encuentra por DNS, empieza a "gritar" por la red usando protocolos antiguos como LLMNR y NBT-NS (el que rastrea NBTScan). Responder se hace pasar por el equipo que la víctima busca, engañándolo para que le envíe sus credenciales (hashes).

Aquí te explico cómo ponerlo en marcha en Kali:


Cómo usar Responder (Paso a Paso)

1. Iniciar el modo escucha

Responder ya viene preinstalado en Kali. Para activarlo en tu interfaz de red (normalmente eth0 o wlan0), usa:

Bash
sudo responder -I eth0 -rdv
  • -I eth0: Especifica tu tarjeta de red.

  • -r: Activa el filtrado de respuestas NetBIOS.

  • -d: Activa el filtrado de respuestas DHCP.

  • -v: Modo "verbose" (verás todo lo que pasa en tiempo real).

2. ¿Qué sucede después?

Una vez que Responder esté corriendo, solo tienes que esperar a que alguien en la red cometa un error, como:

  • Escribir mal una ruta de red (ej. \\servidor_falso).

  • Tener una impresora mal configurada buscando un servidor.

  • Un script que busque un recurso que ya no existe.

3. Captura del Hash

Cuando un equipo muerde el anzuelo, verás en tu pantalla algo como esto:

[SMB] NTLMv2-SSP Client: 192.168.1.50

[SMB] NTLMv2-SSP Hash: Administrador::DOMINIO:51...


¿Qué haces con ese Hash?

Lo que obtienes no es la contraseña en texto plano, sino un Hash NTLMv2. Tienes dos opciones principales:

  1. Cracking (Fuerza Bruta): Usar herramientas como John the Ripper o Hashcat para adivinar la contraseña original.

  2. SMB Relay: Si el equipo no tiene activado el "SMB Signing", puedes retransmitir ese hash a otra máquina de la red para ganar acceso sin siquiera saber la contraseña.


Comparativa: NBTScan vs Responder

HerramientaAcciónRuido en la red
NBTScanPasiva/Activa: Solo pregunta "quién eres".Bajo (Escaneo rápido).
ResponderAtaque (Envenenamiento): Miente para robar datos.Alto (Es detectable por antivirus/EDR).

Aviso de seguridad: Recuerda realizar estas pruebas siempre en entornos controlados o con permiso explícito, ya que "envenenar" el tráfico de red puede interrumpir servicios legítimos.

 

Una vez que Responder captura un hash, este se guarda automáticamente en una base de datos en tu máquina Kali (usualmente en /usr/share/responder/logs/).

Para "romper" ese hash y obtener la contraseña en texto plano, la herramienta estándar es John the Ripper.


Paso 1: Localizar el Hash

Responder guarda los registros con el nombre de la IP de la víctima. Por ejemplo:

SMB-NTLMv2-SSP-192.168.1.50.txt

Paso 2: Usar John the Ripper

El comando básico para intentar crackearlo usando el diccionario por defecto de Kali (rockyou.txt) es:

Bash
sudo john /usr/share/responder/logs/nombre_del_archivo.txt --wordlist=/usr/share/wordlists/rockyou.txt

¿Qué está pasando internamente?

John the Ripper toma cada palabra del diccionario, le aplica el algoritmo de hashing NTLMv2 y compara el resultado con el hash que capturaste. Si coinciden, ¡tienes la contraseña!


Paso 3: Ver los resultados

Si John termina o si quieres ver qué contraseñas ha logrado descifrar hasta ahora, usa el flag --show:

Bash
sudo john --show /usr/share/responder/logs/nombre_del_archivo.txt

Tabla de Probabilidades de Éxito

El éxito depende totalmente de la complejidad de la contraseña del usuario:

Tipo de ContraseñaTiempo estimadoProbabilidad
"password123"SegundosMuy Alta
"Nombre+Año" (Juan2024)MinutosAlta
"F3l!x_99#2!?"Días/SemanasMuy Baja (requiere GPU)

Un truco extra: Hashcat

Si tienes una tarjeta gráfica (GPU) potente, Hashcat es mucho más rápido que John the Ripper para procesar hashes NTLMv2. El comando sería algo como:

hashcat -m 5600 hash_capturado.txt /ruta/diccionario.txt

Dato importante: El archivo rockyou.txt en Kali viene comprimido por defecto. Si es la primera vez que lo usas, recuerda descomprimirlo con:

sudo gunzip /usr/share/wordlists/rockyou.txt.gz

 

Como profesional de seguridad o administrador de sistemas, saber cómo detener estos ataques es tan importante como saber ejecutarlos. El ataque de Responder se basa en abusar de la confianza y de protocolos antiguos.

Aquí tienes las 3 capas de defensa principales para blindar tu red:


1. Desactivar LLMNR y NetBIOS (La solución definitiva)

Si los equipos no "gritan" pidiendo ayuda por protocolos antiguos, Responder no tiene nada que escuchar.

  • LLMNR: Se desactiva mediante una GPO (Directiva de Grupo) en Windows:

    Configuración del equipo -> Plantillas administrativas -> Red -> Cliente DNS -> Desactivar resolución de nombres multidifusión.

  • NetBIOS sobre TCP/IP: Se desactiva en las propiedades de la tarjeta de red (IPv4 -> Avanzado -> WINS) o vía DHCP.


2. Forzar el Firmado de SMB (SMB Signing)

Esta es la defensa más potente contra el SMB Relay. Aunque un atacante capture el hash, si el "Firmado de SMB" está activado y es obligatorio, el servidor rechazará cualquier intento de conexión que no venga firmado digitalmente por el usuario real.

  • En Servidores: Suele estar activado por defecto en Controladores de Dominio.

  • En Equipos Cliente: Debes asegurar que la política Servidor de red de Microsoft: firmar digitalmente las comunicaciones (siempre) esté en Habilitado.


3. Implementar LAPS (Local Administrator Password Solution)

Muchos ataques tienen éxito porque los administradores usan la misma contraseña para todas las cuentas locales de los equipos.

  • LAPS genera una contraseña única y aleatoria para la cuenta de administrador local de cada equipo y la guarda en el Directorio Activo.

  • Si un atacante captura el hash de una máquina, no podrá usarlo para saltar a la siguiente (movimiento lateral).


Resumen de Contramedidas

VulnerabilidadProtocolo AbusadoSolución Recomendada
EnvenenamientoLLMNR / NBT-NSDesactivar ambos protocolos vía GPO.
SMB RelaySMB (Puerto 445)Forzar SMB Signing (Requerido).
Crackeo de HashNTLMv2Usar contraseñas largas (+14 caracteres) o MFA.

Consejo Pro: También puedes usar herramientas como Respounder (con 'u') o HoneyTokens. Son pequeñas trampas que detectan si alguien está usando Responder en tu red y te envían una alerta inmediata.

 

Detectar Responder es un excelente ejercicio de "Blue Teaming" (defensa). Como esta herramienta funciona "envenenando" peticiones, la forma de pillarla es poniéndole una trampa.

Aquí tienes las 3 formas más efectivas de detectar si alguien está usando Responder en tu red local ahora mismo:


1. El método del "Nombre Falso" (Manual y rápido)

Responder está diseñado para responder a cualquier consulta de red que no sea resuelta por DNS. Puedes detectarlo enviando una petición a un equipo que no existe.

Desde cualquier máquina Windows en la misma red, abre una terminal (cmd) y escribe:

DOS
ping un-nombre-que-no-exista-12345
  • Comportamiento normal: Windows intentará resolverlo y te dirá: "No se pudo encontrar el host".

  • Detección de Responder: Si obtienes una respuesta (aunque sea con error de tiempo de espera, pero resuelve una IP), alguien está envenenando la red. La IP que responda es la IP del atacante (su máquina Kali).


2. Usar herramientas de detección (Honeytokens)

Existen scripts diseñados específicamente para "cazar" a Responder enviando peticiones falsas continuamente y alertando si alguien responde.

En Kali Linux (usando Fingerprint):

Puedes usar herramientas como Net-DNS-Fingerprint o scripts simples en Python que busquen respuestas LLMNR/NetBIOS inusuales.

En Windows (PowerShell):

Puedes ejecutar este pequeño comando para ver si alguien responde a una consulta inexistente:

PowerShell
Resolve-DnsName -Name "equipo-fantasma-seguro" -LLMNROnly

Si este comando te devuelve una dirección IP en lugar de un error, tienes un intruso ejecutando Responder.


3. Monitorización de Tráfico con Wireshark

Si quieres pruebas irrefutables, abre Wireshark en tu máquina y aplica este filtro:

udp.port == 5355 || udp.port == 137

  • ¿Qué buscar? Busca paquetes LLMNR (puerto 5355) o NetBIOS (puerto 137) donde una sola dirección IP responda a muchas peticiones de diferentes nombres de host.

  • Si ves que la IP 192.168.1.15 dice ser el dueño de todos los nombres inexistentes que se consultan, esa es la IP del atacante.


Comparativa de Detección

MétodoDificultadEfectividad
Ping falsoMuy BajaAlta (para confirmación rápida).
WiresharkMediaMuy Alta (proporciona pruebas).
IDS (Snort/Suricata)AltaExcelente (automatizado).

¿Qué hacer si detectas a alguien?

  1. Identificar la MAC: A través de la IP detectada, obtén su dirección MAC (arp -a) para saber qué dispositivo físico es.

  2. Aislar el puerto: Si tienes switches gestionables, apaga el puerto donde está conectado el atacante.

  3. Audit de Logs: Revisa los logs de seguridad de Windows buscando el evento 4624 (Inicio de sesión) para ver si el atacante ya logró usar algún hash capturado.

 

Vamos a crear un "Honeypot" (trampa) sencillo en Python. Este script enviará una consulta por un nombre de host aleatorio y totalmente inexistente. Si alguien (Responder) contesta diciendo "Yo soy ese equipo", el script te dará la voz de alarma.

Para esto utilizaremos la librería scapy, que es el estándar para manipular paquetes en Python y Kali Linux.

1. Preparación

Primero, asegúrate de tener scapy instalado (en Kali ya viene por defecto):

Bash
sudo apt install python3-scapy

2. El Script de Detección (detect_responder.py)

Copia este código en un archivo:

Python
from scapy.all import *
import random
import string

def generar_nombre_aleatorio():
    # Crea un nombre de host absurdo que nadie tendría en su red
    return "HONEY-" + ''.join(random.choices(string.ascii_uppercase + string.digits, k=10))

def detectar_envenenamiento(pkt):
    # Si recibimos una respuesta LLMNR para nuestro nombre falso...
    if pkt.haslayer(LLMNRResponse):
        print(f"\n[!] ¡ALERTA! Posible Responder detectado.")
        print(f"[!] El equipo con IP {pkt[IP].src} dice ser {generar_nombre_aleatorio()}")
        print(f"[!] Dirección MAC del atacante: {pkt[Ether].src}")

def buscar_intruso():
    nombre_falso = generar_nombre_aleatorio()
    print(f"[*] Enviando cebo para: {nombre_falso}...")
    
    # Creamos un paquete de consulta LLMNR (Puerto UDP 5355)
    query = IP(dst="224.0.0.252")/UDP(sport=5355, dport=5355)/LLMNRQuery(id=0x1234, qd=LLMNRQuestion(qname=nombre_falso))
    
    # Enviamos el cebo y nos quedamos escuchando la respuesta
    send(query, verbose=False)
    sniff(filter="udp port 5355", prn=detectar_envenenamiento, timeout=5)

if __name__ == "__main__":
    print("--- Buscador de Responder/Envenenadores ---")
    while True:
        buscar_intruso()

3. Cómo ejecutarlo

Ejecuta el script con privilegios de superusuario (necesarios para manejar paquetes de red):

Bash
sudo python3 detect_responder.py

¿Qué hace exactamente este script?

  1. Genera un nombre "cebo": Crea algo como HONEY-A7B29C1X.

  2. Lanza la pregunta: Envía un paquete a la red preguntando "¿Quién es HONEY-A7B29C1X?".

  3. Analiza la respuesta: * En una red limpia, nadie responderá.

    • Si Responder está activo, su motor de "analizar-todo" dirá inmediatamente: "¡Yo soy HONEY-A7B29C1X! Envíame tus credenciales".

  4. Delata al atacante: El script captura esa respuesta y te muestra la IP y la MAC de la máquina Kali del atacante.


¿Qué tan efectivo es?

Es extremadamente efectivo. Un atacante que usa Responder suele tenerlo configurado en "Análisis Automático". Al momento que ejecutas este script, su herramienta morderá el anzuelo automáticamente y quedará al descubierto.

Consejo: Puedes dejar este script corriendo en una terminal en segundo plano mientras trabajas. Si alguien intenta algo raro en la red, lo sabrás al instante.

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