NBTScan: Escaneo de Red NetBIOS
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:
nbtscan 192.168.1.0/24
2. Escanear una IP específica
Para obtener detalles de un solo objetivo:
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):
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:
nbtscan -s : 192.168.1.0/24
Tabla de Resultados Comunes
Cuando ejecutas el comando, verás columnas como estas:
| Columna | Significado |
| IP Address | La dirección IP del equipo encontrado. |
| NetBIOS Name | El nombre de red del equipo (Hostname). |
| Server | Indica si el equipo actúa como servidor (File server, etc.). |
| User | El nombre del usuario logueado (si el equipo lo permite). |
| MAC Address | La 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ódigo | Tipo | Significado |
| <00> | Único | Workstation Service: Es un equipo estándar conectado a la red. |
| <03> | Único | Messenger Service: El equipo puede recibir mensajes de alerta. |
| <06> | Único | RAS Server: Indica que tiene un servicio de acceso remoto. |
| <20> | Único | File Server: ¡Este es clave! El equipo tiene recursos compartidos (archivos o carpetas). |
| <1B> | Único | Domain 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ódigo | Tipo | Significado |
| <00> | Grupo | Domain/Workgroup: El nombre del grupo de trabajo al que pertenece. |
| <1C> | Grupo | Domain Controllers: Identifica que la máquina es un Controlador de Dominio. |
| <1D> | Grupo | Master 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:
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:
Cracking (Fuerza Bruta): Usar herramientas como
John the RipperoHashcatpara adivinar la contraseña original.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
| Herramienta | Acción | Ruido en la red |
| NBTScan | Pasiva/Activa: Solo pregunta "quién eres". | Bajo (Escaneo rápido). |
| Responder | Ataque (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:
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:
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ña | Tiempo estimado | Probabilidad |
| "password123" | Segundos | Muy Alta |
| "Nombre+Año" (Juan2024) | Minutos | Alta |
| "F3l!x_99#2!?" | Días/Semanas | Muy 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.txten 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
| Vulnerabilidad | Protocolo Abusado | Solución Recomendada |
| Envenenamiento | LLMNR / NBT-NS | Desactivar ambos protocolos vía GPO. |
| SMB Relay | SMB (Puerto 445) | Forzar SMB Signing (Requerido). |
| Crackeo de Hash | NTLMv2 | Usar 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:
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:
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.15dice ser el dueño de todos los nombres inexistentes que se consultan, esa es la IP del atacante.
Comparativa de Detección
| Método | Dificultad | Efectividad |
| Ping falso | Muy Baja | Alta (para confirmación rápida). |
| Wireshark | Media | Muy Alta (proporciona pruebas). |
| IDS (Snort/Suricata) | Alta | Excelente (automatizado). |
¿Qué hacer si detectas a alguien?
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.Aislar el puerto: Si tienes switches gestionables, apaga el puerto donde está conectado el atacante.
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):
sudo apt install python3-scapy
2. El Script de Detección (detect_responder.py)
Copia este código en un archivo:
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):
sudo python3 detect_responder.py
¿Qué hace exactamente este script?
Genera un nombre "cebo": Crea algo como
HONEY-A7B29C1X.Lanza la pregunta: Envía un paquete a la red preguntando "¿Quién es HONEY-A7B29C1X?".
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".
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.