🔓 Desactiva NetBIOS en Windows y cierra 3 puertos peligrosos

hace 2 meses

Desactiva NetBIOS en Windows y cierra 3 puertos peligrosos

Table of Contents

NetBIOS en Windows: 5 ataques reales y cómo bloquearlo

NetBIOS es uno de esos protocolos de red que llevan décadas activos en Windows sin que la mayoría de usuarios sepan que existen, y mucho menos que pueden representar una puerta de entrada para los atacantes. En Seguridad en mi PC documentamos cómo este protocolo, activo por defecto en Windows 10 y Windows 11, es uno de los primeros vectores que un auditor de seguridad explota en redes corporativas mal protegidas, precisamente porque nadie lo deshabilitó. Si quieres conocer todas las medidas para endurecer tu sistema, visita nuestra sección de configuración defensiva y protocolos seguros en Windows, donde cubrimos desde la configuración del firewall hasta la desactivación de protocolos heredados como este.

💡 Resumen rápido

🔓 NetBIOS: qué es, por qué es peligroso y cómo deshabilitarlo en Windows

Es un protocolo de red obsoleto de los años 80 que sigue activo por defecto en Windows 10 y Windows 11. Expone nombres de equipos, usuarios y recursos compartidos de la red, facilitando ataques de enumeración, robo de credenciales NTLM y movimiento lateral dentro de redes corporativas.

  • Puertos que usa: UDP 137, UDP 138 y TCP 139 y cómo bloquearlos
  • 5 tipos de ataques: enumeración, suplantación, MitM, LLMNR poisoning y fuerza bruta
  • Cuándo es especialmente peligroso: WiFi públicas, puertos abiertos y redes sin segmentar
  • Cómo deshabilitarlo: método gráfico (Panel de control) y PowerShell en un comando
  • Tareas programadas automáticas que verifican y reaplican el hardening a diario
  • Medidas adicionales: firewall, actualizaciones, VPN y segmentación con VLANs

📅 2026 · 🕐 8 minutos de lectura

💡 Definición rápida NetBIOS: Protocolo de red desarrollado en los años 80 que permite a los dispositivos de una red local identificarse, comunicarse y compartir recursos usando nombres en lugar de IPs. Sigue activo por defecto en Windows 10 y Windows 11 y opera en los puertos UDP 137, UDP 138 y TCP 139. Tecnología obsoleta que ha sido reemplazada por DNS en redes modernas.

NetBIOS es un protocolo antiguo de red utilizado en Windows para permitir la comunicación entre equipos dentro de una red local, pero hoy en día puede suponer un riesgo de seguridad importante si no se deshabilita o configura correctamente. Su presencia silenciosa en millones de equipos lo convierte en uno de los vectores de ataque más explotados en redes Windows mal protegidas.

Para entender el contexto de amenazas en el que opera este protocolo, consulta nuestra guía sobre malware y virus informáticos y nuestra sección de ciberseguridad.


¿Qué es NetBIOS?

📌 ¿Qué es NetBIOS?

📌 ¿Qué es NetBIOS? Respuesta rápida: Es un protocolo de red de los años 80 que permite a los equipos de una red local identificarse por nombre, compartir archivos e impresoras y establecer sesiones de comunicación. Opera en los puertos UDP 137, 138 y TCP 139, y sigue activo por defecto en Windows 10 y 11 pese a estar obsoleto.

Es un sistema que permite a los dispositivos de una red local identificarse y compartir recursos como archivos o impresoras. Fue diseñado en una época en la que la seguridad no era una prioridad, lo que explica sus múltiples vulnerabilidades estructurales.

Se mantiene activo por defecto en:

  • Windows 10, habilitado por defecto en todas las versiones
  • Windows 11, activo salvo configuración manual en contrario
  • Entornos empresariales legacy, donde aún se usa para compatibilidad con sistemas antiguos
🚨 Dato crítico: Aunque sigue presente en millones de equipos, este protocolo es una tecnología obsoleta en redes modernas que ha sido reemplazada por DNS y otros protocolos más seguros, pero sigue activo por defecto sin que la mayoría de usuarios lo sepa.

¿Cómo funciona NetBIOS?

⚙️ ¿Cómo funciona NetBIOS?

⚙️ ¿Cómo funciona? Respuesta rápida: Opera en tres capas: resolución de nombres (identifica dispositivos por nombre en la red local), establecimiento de sesiones entre equipos y servicio de datagramas para comunicación sin conexión. Usa los puertos UDP 137, UDP 138 y TCP 139.

Funciona permitiendo que los dispositivos se comuniquen dentro de una red LAN mediante nombres en lugar de direcciones IP.

ServicioPuertoFunciónProtocolo
Name Service (NBNS)UDP 137Resolución de nombres de equipoUDP
Datagram ServiceUDP 138Comunicación sin conexiónUDP
Session ServiceTCP 139Transferencia de archivos e impresiónTCP
Referencia oficial: La documentación de Microsoft confirma que deshabilitarlo hace que el equipo deje de escuchar tráfico en estos puertos: Configurar TCP/IP con NetBIOS desactivado, Microsoft Learn.

🔍 ¿Cómo detectar si está activo en tu equipo?

🔍 ¿Cómo saber si está activo? Respuesta rápida: Abre una consola como administrador y ejecuta nbtstat -n. Si aparecen nombres registrados en una tabla, el protocolo está activo. También puedes comprobar los puertos abiertos con netstat -an | findstr "137 138 139" o revisar la pestaña WINS de las propiedades avanzadas del adaptador de red.
ComandoPara qué sirveResultado esperado si está activo
nbtstat -nMuestra los nombres locales registradosTabla con nombres tipo WORKSTATION <00>
nbtstat -cMuestra la caché de nombres remotosLista de nombres cacheados
netstat -an | findstr "137 138 139"Detecta puertos a la escuchaLíneas con LISTENING o UDP abiertas
Get-NetAdapterBinding -ComponentID ms_netbtConsulta PowerShell del estado del binding NetBTEnabled: True en los adaptadores activos
Test-NetConnection -Port 139 -ComputerName localhostVerifica si el puerto 139 acepta conexionesTcpTestSucceeded: True

🚨 Riesgos de seguridad de NetBIOS

🚨 ¿Por qué es peligroso? Expone nombres de equipos, usuarios activos y recursos compartidos de la red. Si está activo en redes públicas o sin segmentación, permite a un atacante realizar enumeración de equipos, ataques Man-in-the-Middle, robo de credenciales NTLM y movimiento lateral en el entorno corporativo.

Este protocolo puede ser peligroso porque expone información de red y facilita ataques si está activo en redes no seguras.

RiesgoDescripciónNivel de peligro
Exposición de informaciónNombres de equipos y usuarios visibles en la red🟠 Alto
Accesos no autorizadosPosible entrada a recursos compartidos sin contraseña🔴 Crítico
Ataques desde InternetSi los puertos 137-139 están abiertos en el router🔴 Crítico
Vulnerabilidades antiguasTecnología sin parches de seguridad modernos🟠 Alto
Movimiento lateralFacilita el desplazamiento del atacante dentro de la red🔴 Crítico

Tipos de ataques que explota NetBIOS

🎯 Tipos de ataques que explotan este protocolo

🎯 ¿Qué ataques lo explotan? Resumen: Los cinco vectores principales son enumeración de red, suplantación de identidad, ataques Man-in-the-Middle, LLMNR/NBT-NS Poisoning para capturar hashes NTLM, y fuerza bruta sobre recursos compartidos. Todos son comunes en auditorías de redes Windows mal configuradas.
AtaqueHerramienta típicaTécnica MITRE ATT&CKImpacto
Enumeración de rednbtscan, enum4linuxT1018 / T1046🟠 Alto
Suplantación de identidadResponder, InveighT1557.001🔴 Crítico
Man-in-the-MiddleEttercap, mitm6T1557🔴 Crítico
LLMNR/NBT-NS PoisoningResponderT1557.001🔴 Crítico
Fuerza bruta sobre SMBCrackMapExec, hydraT1110 / T1021.002🟠 Alto

🔓 1. Enumeración de red

Uno de los ataques más comunes consiste en utilizar este protocolo para recopilar información de la red. Un atacante puede obtener nombres de equipos, usuarios activos, recursos compartidos y la estructura completa de la red. Esta información es el punto de partida para preparar ataques más avanzados.

🎭 2. Suplantación de identidad

El atacante se hace pasar por otro dispositivo de la red para interceptar comunicaciones. Las consecuencias incluyen robo de credenciales, redirección de tráfico y acceso a recursos protegidos.

🕵️ 3. Interceptación de tráfico (Man-in-the-Middle)

El servicio puede usarse en ataques Man-in-the-Middle (MitM) para interceptar la comunicación entre dos dispositivos, capturar contraseñas, leer datos transmitidos y modificar la información enviada.

📡 4. LLMNR/NBT-NS Poisoning

El servicio NBNS puede ser explotado mediante técnicas de LLMNR/NBT-NS poisoning, que redirigen solicitudes de resolución de nombres hacia el atacante para capturar hashes de credenciales NTLM. Es uno de los vectores más utilizados en pentesting de redes Windows.

🔑 5. Fuerza bruta sobre recursos compartidos

Si existen carpetas compartidas sin protección adecuada, un atacante puede intentar acceder mediante fuerza bruta, uso de credenciales filtradas o acceso anónimo, lo que puede derivar en robo o modificación de archivos.

Muchos de estos ataques comienzan con técnicas de phishing para obtener acceso inicial a la red.


🧠 ¿Cuándo es especialmente peligroso?

🚨 Dato crítico: INCIBE advierte sobre los riesgos de mantener activos protocolos heredados como este en redes domésticas y empresariales. Es especialmente peligroso cuando está activo en redes públicas o mal configuradas.
Situación de riesgoMotivoRecomendación
WiFi públicasExpone el equipo a otros usuarios del entornoDeshabilitar el protocolo + usar VPN
Puertos abiertos en el routerPermite ataques desde InternetCerrar puertos 137, 138 y 139
Entornos sin segmentaciónFacilita el movimiento lateral del atacanteSegmentar la red con VLANs
Equipos sin actualizarVulnerabilidades conocidas sin parchearActivar Windows Update

📋 Checklist previo: qué comprobar antes de deshabilitarlo

Revisa estos 8 puntos antes de aplicar el hardening:

  • Inventario de impresoras de red para detectar modelos anteriores a 2010
  • Inventario de NAS y dispositivos de almacenamiento compatibles solo con SMB1
  • Lista de aplicaciones empresariales que localicen servidores por nombre del protocolo
  • Confirmación de que la resolución DNS funciona correctamente en la red
  • Revisión de GPOs activas si el equipo pertenece a un dominio AD
  • Copia de seguridad o punto de restauración del sistema antes de cambios
  • Permiso explícito del administrador de IT si es un equipo corporativo
  • Ventana de mantenimiento acordada si afecta a varios equipos en red

Cómo deshabilitar NetBIOS en Windows

🔐 Cómo deshabilitar NetBIOS en Windows

🔐 ¿Cómo deshabilitarlo en Windows? Pasos rápidos: Panel de control → Centro de redes → Propiedades del adaptador → IPv4 → Propiedades → Opciones avanzadas → pestaña WINS → seleccionar "Deshabilitar NetBIOS sobre TCP/IP" → Aceptar. Repite el proceso en cada adaptador de red activo.

Método 1, Interfaz gráfica (Panel de control)

  1. Ve a Panel de control → Red e Internet → Centro de redes y recursos compartidos
  2. Haz clic en el adaptador de red activo → Propiedades
  3. Selecciona Protocolo de Internet versión 4 (TCP/IPv4)Propiedades
  4. Haz clic en Opciones avanzadas → pestaña WINS
  5. Selecciona "Deshabilitar NetBIOS sobre TCP/IP"Aceptar

Método 2, PowerShell (todos los adaptadores de una vez)

$adaptadores = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.IPEnabled -eq $true }
foreach ($adaptador in $adaptadores) {
    $adaptador.SetTcpipNetbios(2)
}

Script completo: Deshabilitar y bloquear NetBIOS en Windows

🛠️ Script completo: Deshabilitar, bloquear y automatizar el hardening

A continuación encontrarás un script PowerShell completo y unificado que automatiza todo el hardening en un solo paso: deshabilita el protocolo sobre TCP/IP en todos los adaptadores de red activos, deshabilita también LLMNR (que sufre el mismo tipo de ataque de poisoning), bloquea los puertos UDP 137, UDP 138 y TCP 139 en el firewall de Windows y, lo más importante, crea tres tareas programadas automáticas que mantienen el hardening aplicado de forma permanente, incluso tras actualizaciones de Windows que pudieran revertir la configuración. Incluye también un script de reversión por si necesitas deshacer los cambios en algún entorno legacy.

⚠️ Antes de ejecutar: Este script modifica configuraciones de red, reglas del firewall y crea tareas programadas en el sistema. Es completamente reversible, pero si tu red depende de recursos compartidos legacy (impresoras antiguas, NAS antiguos, aplicaciones empresariales heredadas), revisa primero el apartado de riesgos. El script crea un log automático en C:\Logs\netbios-hardening.log. No ejecutes scripts de fuentes que no conozcas y lee siempre el código antes de pegarlo en PowerShell.

🕒 Tareas programadas que instala el script

El script instala tres tareas programadas en el Programador de tareas de Windows bajo la carpeta \SeguridadEnMiPC\NetBIOS-Hardening. Estas tareas trabajan juntas para garantizar que el hardening se mantenga activo de forma permanente, detectando automáticamente cualquier cambio no autorizado y reaplicando las medidas si fuera necesario.

💡 Todas las tareas se ejecutan como SYSTEM con privilegios máximos y no requieren interacción del usuario.
Tarea programadaCuándo se ejecutaQué haceRegistro en el log
NetBIOS-Verificacion-DiariaCada día a las 09:00Comprueba estado del protocolo, LLMNR y reglas de firewall. Si todo está correcto, solo escribe "OK" en el log.Siempre (estado OK o ALERTA)
NetBIOS-Reaplicar-HardeningCada día a las 09:05 (tras la verificación)Si la verificación detectó algún cambio, vuelve a aplicar todo el hardening: deshabilita el protocolo, LLMNR y recrea reglas de firewall.Solo cuando actúa (ALERTA + ACCIÓN)
NetBIOS-Refuerzo-ArranqueAl iniciar el equipo (boot)Reaplica el hardening al arrancar Windows, por si una actualización o un reinicio reinicializó los adaptadores de red.Siempre (confirmación de arranque)
💡 Por qué tres tareas y no una: La separación entre verificación y reaplicación evita escribir reiteradamente en el registro y el firewall cuando no es necesario (menor desgaste y trazabilidad más limpia). La tarea de arranque garantiza protección inmediata tras un reinicio, sin esperar a la ventana horaria. Este patrón triple es el mismo que usan soluciones de hardening corporativo como GPOs con LGPO.exe.

📥 Pasos para instalar y ejecutar el script

  1. Abre PowerShell como administrador: pulsa la tecla Windows, escribe PowerShell, haz clic derecho sobre Windows PowerShell y selecciona Ejecutar como administrador.
  2. Permite la ejecución de scripts en la sesión actual (no afecta a futuras sesiones):
    Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
  3. Crea el archivo del script: abre el Bloc de notas, pega el código que verás más abajo y guárdalo como Deshabilitar-NetBIOS.ps1 en tu carpeta de Descargas. Asegúrate de que el tipo de archivo sea Todos los archivos, no .txt.
  4. Navega a la carpeta donde lo guardaste desde PowerShell:
    cd $env:USERPROFILE\Downloads
  5. Ejecuta el script:
    .\Deshabilitar-NetBIOS.ps1
  6. Revisa el log generado en C:\Logs\netbios-hardening.log para verificar que todos los pasos se aplicaron correctamente y que las tres tareas programadas se crearon.
  7. Comprueba el resultado ejecutando nbtstat -n. Si está correctamente deshabilitado, devolverá el mensaje "No names in cache" o equivalente.
  8. Verifica las tareas programadas abriendo Programador de tareas → Biblioteca → SeguridadEnMiPC → NetBIOS-Hardening. Deben aparecer las tres tareas en estado Listo.
  9. Reinicia el equipo para que todos los cambios de red se apliquen completamente y la tarea de arranque se ejecute por primera vez.

💻 Script de hardening con tareas programadas (copia y pega)

# ============================================================
# Script: Deshabilitar, bloquear y automatizar NetBIOS
# Autor:  seguridadenmipc.com
# Compat: Windows 10 / 11 / Server 2019+
# Uso:    Ejecutar como administrador
# Incluye: 3 tareas programadas de verificacion y reaplicacion
# ============================================================

# 1. Verificar privilegios de administrador
if (-not ([Security.Principal.WindowsPrincipal] `
    [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(`
    [Security.Principal.WindowsBuiltInRole]::Administrator)) {
    Write-Host "[X] Ejecuta este script como Administrador." -ForegroundColor Red
    exit
}

# 2. Preparar log y carpeta de scripts persistentes
$logDir     = "C:\Logs"
$scriptsDir = "C:\ProgramData\SeguridadEnMiPC\NetBIOS"
if (-not (Test-Path $logDir))     { New-Item -ItemType Directory -Path $logDir     | Out-Null }
if (-not (Test-Path $scriptsDir)) { New-Item -ItemType Directory -Path $scriptsDir -Force | Out-Null }
$log = "$logDir\netbios-hardening.log"
Start-Transcript -Path $log -Append | Out-Null

Write-Host "=== Deshabilitar, bloquear y automatizar NetBIOS ===" -ForegroundColor Cyan
Write-Host "Fecha: $(Get-Date)" -ForegroundColor Gray

# 3. Deshabilitar NetBIOS sobre TCP/IP en todos los adaptadores activos
try {
    $adaptadores = Get-WmiObject Win32_NetworkAdapterConfiguration |
                   Where-Object { $_.IPEnabled -eq $true }
    foreach ($adaptador in $adaptadores) {
        $adaptador.SetTcpipNetbios(2) | Out-Null
        Write-Host "[OK] NetBIOS deshabilitado en: $($adaptador.Description)" -ForegroundColor Green
    }
} catch { Write-Host "[X] Error deshabilitando NetBIOS: $_" -ForegroundColor Red }

# 4. Deshabilitar LLMNR (mismo tipo de ataque de poisoning - T1557.001)
try {
    $regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient"
    if (-not (Test-Path $regPath)) { New-Item -Path $regPath -Force | Out-Null }
    Set-ItemProperty -Path $regPath -Name "EnableMulticast" -Value 0 -Type DWord -Force
    Write-Host "[OK] LLMNR deshabilitado." -ForegroundColor Green
} catch { Write-Host "[X] Error deshabilitando LLMNR: $_" -ForegroundColor Red }

# 5. Bloquear puerto UDP 137 (Name Service)
try {
    if (-not (Get-NetFirewallRule -DisplayName "BLOQUEO NetBIOS UDP 137" -ErrorAction SilentlyContinue)) {
        New-NetFirewallRule -DisplayName "BLOQUEO NetBIOS UDP 137" `
            -Direction Inbound -Protocol UDP -LocalPort 137 `
            -Action Block -Profile Any | Out-Null
    }
    Write-Host "[OK] Puerto UDP 137 bloqueado (entrante)." -ForegroundColor Green
} catch { Write-Host "[X] Error en firewall UDP 137: $_" -ForegroundColor Red }

# 6. Bloquear puerto UDP 138 (Datagram Service)
try {
    if (-not (Get-NetFirewallRule -DisplayName "BLOQUEO NetBIOS UDP 138" -ErrorAction SilentlyContinue)) {
        New-NetFirewallRule -DisplayName "BLOQUEO NetBIOS UDP 138" `
            -Direction Inbound -Protocol UDP -LocalPort 138 `
            -Action Block -Profile Any | Out-Null
    }
    Write-Host "[OK] Puerto UDP 138 bloqueado (entrante)." -ForegroundColor Green
} catch { Write-Host "[X] Error en firewall UDP 138: $_" -ForegroundColor Red }

# 7. Bloquear puerto TCP 139 (Session Service)
try {
    if (-not (Get-NetFirewallRule -DisplayName "BLOQUEO NetBIOS TCP 139" -ErrorAction SilentlyContinue)) {
        New-NetFirewallRule -DisplayName "BLOQUEO NetBIOS TCP 139" `
            -Direction Inbound -Protocol TCP -LocalPort 139 `
            -Action Block -Profile Any | Out-Null
    }
    Write-Host "[OK] Puerto TCP 139 bloqueado (entrante)." -ForegroundColor Green
} catch { Write-Host "[X] Error en firewall TCP 139: $_" -ForegroundColor Red }

# ============================================================
# 8. CREACION DE SCRIPTS AUXILIARES PARA TAREAS PROGRAMADAS
# ============================================================

# 8.1 Script de VERIFICACION (lectura, sin cambios)
$verificarScript = @'
$log = "C:\Logs\netbios-hardening.log"
$flag = "C:\ProgramData\SeguridadEnMiPC\NetBIOS\reaplicar.flag"
$alerta = $false
$detalle = @()

# Comprobar NetBIOS
$adaptadores = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.IPEnabled -eq $true }
foreach ($a in $adaptadores) {
    if ($a.TcpipNetbiosOptions -ne 2) {
        $alerta = $true
        $detalle += "NetBIOS activo en: $($a.Description)"
    }
}

# Comprobar LLMNR
$regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient"
$llmnr = Get-ItemProperty -Path $regPath -Name "EnableMulticast" -ErrorAction SilentlyContinue
if ($null -eq $llmnr -or $llmnr.EnableMulticast -ne 0) {
    $alerta = $true
    $detalle += "LLMNR no esta deshabilitado."
}

# Comprobar reglas de firewall
$reglas = @("BLOQUEO NetBIOS UDP 137","BLOQUEO NetBIOS UDP 138","BLOQUEO NetBIOS TCP 139")
foreach ($r in $reglas) {
    $regla = Get-NetFirewallRule -DisplayName $r -ErrorAction SilentlyContinue
    if (-not $regla -or $regla.Enabled -ne "True" -or $regla.Action -ne "Block") {
        $alerta = $true
        $detalle += "Regla firewall ausente o incorrecta: $r"
    }
}

# Escribir resultado
$fecha = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
if ($alerta) {
    Add-Content -Path $log -Value "[$fecha] [ALERTA] Cambios detectados en hardening NetBIOS:"
    $detalle | ForEach-Object { Add-Content -Path $log -Value "           - $_" }
    # Crear flag para que la tarea de reaplicacion actue
    New-Item -Path $flag -ItemType File -Force | Out-Null
    # Notificacion al Visor de Eventos
    New-EventLog -LogName Application -Source "NetBIOS-Hardening" -ErrorAction SilentlyContinue
    Write-EventLog -LogName Application -Source "NetBIOS-Hardening" -EntryType Warning -EventId 1001 `
        -Message ("Hardening NetBIOS alterado:`n" + ($detalle -join "`n"))
} else {
    Add-Content -Path $log -Value "[$fecha] [OK] Hardening NetBIOS intacto."
}
'@
$verificarPath = "$scriptsDir\Verificar-NetBIOS.ps1"
Set-Content -Path $verificarPath -Value $verificarScript -Encoding UTF8 -Force
Write-Host "[OK] Script de verificacion creado: $verificarPath" -ForegroundColor Green

# 8.2 Script de REAPLICACION (solo actua si existe la flag)
$reaplicarScript = @'
$log = "C:\Logs\netbios-hardening.log"
$flag = "C:\ProgramData\SeguridadEnMiPC\NetBIOS\reaplicar.flag"
$fecha = Get-Date -Format "yyyy-MM-dd HH:mm:ss"

if (-not (Test-Path $flag)) { exit }

Add-Content -Path $log -Value "[$fecha] [ACCION] Reaplicando hardening NetBIOS automaticamente..."

# Reaplicar NetBIOS
$adaptadores = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.IPEnabled -eq $true }
foreach ($a in $adaptadores) { $a.SetTcpipNetbios(2) | Out-Null }

# Reaplicar LLMNR
$regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient"
if (-not (Test-Path $regPath)) { New-Item -Path $regPath -Force | Out-Null }
Set-ItemProperty -Path $regPath -Name "EnableMulticast" -Value 0 -Type DWord -Force

# Reaplicar reglas de firewall
$reglasDef = @(
    @{Name="BLOQUEO NetBIOS UDP 137"; Proto="UDP"; Port=137},
    @{Name="BLOQUEO NetBIOS UDP 138"; Proto="UDP"; Port=138},
    @{Name="BLOQUEO NetBIOS TCP 139"; Proto="TCP"; Port=139}
)
foreach ($r in $reglasDef) {
    Remove-NetFirewallRule -DisplayName $r.Name -ErrorAction SilentlyContinue
    New-NetFirewallRule -DisplayName $r.Name -Direction Inbound -Protocol $r.Proto `
        -LocalPort $r.Port -Action Block -Profile Any | Out-Null
}

# Eliminar flag y notificar
Remove-Item -Path $flag -Force -ErrorAction SilentlyContinue
Add-Content -Path $log -Value "[$fecha] [OK] Hardening NetBIOS reaplicado correctamente."
New-EventLog -LogName Application -Source "NetBIOS-Hardening" -ErrorAction SilentlyContinue
Write-EventLog -LogName Application -Source "NetBIOS-Hardening" -EntryType Information -EventId 1002 `
    -Message "Hardening NetBIOS reaplicado automaticamente tras deteccion de cambios."
'@
$reaplicarPath = "$scriptsDir\Reaplicar-NetBIOS.ps1"
Set-Content -Path $reaplicarPath -Value $reaplicarScript -Encoding UTF8 -Force
Write-Host "[OK] Script de reaplicacion creado: $reaplicarPath" -ForegroundColor Green

# 8.3 Script de REFUERZO AL ARRANQUE (aplica siempre en boot)
$arranqueScript = @'
$log = "C:\Logs\netbios-hardening.log"
$fecha = Get-Date -Format "yyyy-MM-dd HH:mm:ss"

$adaptadores = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.IPEnabled -eq $true }
foreach ($a in $adaptadores) { $a.SetTcpipNetbios(2) | Out-Null }

$regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient"
if (-not (Test-Path $regPath)) { New-Item -Path $regPath -Force | Out-Null }
Set-ItemProperty -Path $regPath -Name "EnableMulticast" -Value 0 -Type DWord -Force

Add-Content -Path $log -Value "[$fecha] [BOOT] Refuerzo de hardening aplicado al arrancar."
'@
$arranquePath = "$scriptsDir\Arranque-NetBIOS.ps1"
Set-Content -Path $arranquePath -Value $arranqueScript -Encoding UTF8 -Force
Write-Host "[OK] Script de arranque creado: $arranquePath" -ForegroundColor Green

# ============================================================
# 9. CREACION DE LAS 3 TAREAS PROGRAMADAS
# ============================================================
$carpetaTareas = "\SeguridadEnMiPC\NetBIOS-Hardening"
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest

# Eliminar tareas previas si existen (idempotente)
$tareasPrevias = @("NetBIOS-Verificacion-Diaria","NetBIOS-Reaplicar-Hardening","NetBIOS-Refuerzo-Arranque")
foreach ($t in $tareasPrevias) {
    Unregister-ScheduledTask -TaskName $t -TaskPath $carpetaTareas -Confirm:$false -ErrorAction SilentlyContinue
}

# 9.1 Tarea: Verificacion diaria a las 09:00
try {
    $accion1   = New-ScheduledTaskAction -Execute "PowerShell.exe" `
                  -Argument "-NoProfile -ExecutionPolicy Bypass -File `"$verificarPath`""
    $trigger1  = New-ScheduledTaskTrigger -Daily -At 09:00
    $settings1 = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries `
                  -DontStopIfGoingOnBatteries -StartWhenAvailable
    Register-ScheduledTask -TaskName "NetBIOS-Verificacion-Diaria" `
        -TaskPath $carpetaTareas -Action $accion1 -Trigger $trigger1 `
        -Principal $principal -Settings $settings1 `
        -Description "Verifica diariamente el estado del hardening de NetBIOS y LLMNR." | Out-Null
    Write-Host "[OK] Tarea 1/3 creada: NetBIOS-Verificacion-Diaria (09:00)" -ForegroundColor Green
} catch { Write-Host "[X] Error creando tarea de verificacion: $_" -ForegroundColor Red }

# 9.2 Tarea: Reaplicacion diaria a las 09:05 (despues de la verificacion)
try {
    $accion2   = New-ScheduledTaskAction -Execute "PowerShell.exe" `
                  -Argument "-NoProfile -ExecutionPolicy Bypass -File `"$reaplicarPath`""
    $trigger2  = New-ScheduledTaskTrigger -Daily -At 09:05
    $settings2 = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries `
                  -DontStopIfGoingOnBatteries -StartWhenAvailable
    Register-ScheduledTask -TaskName "NetBIOS-Reaplicar-Hardening" `
        -TaskPath $carpetaTareas -Action $accion2 -Trigger $trigger2 `
        -Principal $principal -Settings $settings2 `
        -Description "Reaplica el hardening si la verificacion detecto cambios." | Out-Null
    Write-Host "[OK] Tarea 2/3 creada: NetBIOS-Reaplicar-Hardening (09:05)" -ForegroundColor Green
} catch { Write-Host "[X] Error creando tarea de reaplicacion: $_" -ForegroundColor Red }

# 9.3 Tarea: Refuerzo al arranque del equipo
try {
    $accion3   = New-ScheduledTaskAction -Execute "PowerShell.exe" `
                  -Argument "-NoProfile -ExecutionPolicy Bypass -File `"$arranquePath`""
    $trigger3  = New-ScheduledTaskTrigger -AtStartup
    $settings3 = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries `
                  -DontStopIfGoingOnBatteries -StartWhenAvailable
    Register-ScheduledTask -TaskName "NetBIOS-Refuerzo-Arranque" `
        -TaskPath $carpetaTareas -Action $accion3 -Trigger $trigger3 `
        -Principal $principal -Settings $settings3 `
        -Description "Reaplica el hardening de NetBIOS/LLMNR al arrancar Windows." | Out-Null
    Write-Host "[OK] Tarea 3/3 creada: NetBIOS-Refuerzo-Arranque (Boot)" -ForegroundColor Green
} catch { Write-Host "[X] Error creando tarea de arranque: $_" -ForegroundColor Red }

# ============================================================
# 10. Verificacion final
# ============================================================
Write-Host "`n--- Estado tras hardening ---" -ForegroundColor Yellow
try {
    nbtstat -n 2>&1 | Out-String | Write-Host
} catch { Write-Host "[!] nbtstat no disponible." -ForegroundColor Yellow }

Write-Host ""
Write-Host "[OK] Protocolo deshabilitado, puertos bloqueados y tareas programadas creadas." -ForegroundColor Green
Write-Host "     Tareas programadas en: Programador de tareas > SeguridadEnMiPC > NetBIOS-Hardening" -ForegroundColor Cyan
Write-Host "     Reinicia el equipo para aplicar todos los cambios." -ForegroundColor Cyan
Write-Host "     Log: $log" -ForegroundColor Gray
Stop-Transcript | Out-Null

↩️ Script de reversión (elimina las 3 tareas y reactiva el protocolo)

Si en algún momento necesitas reactivar el protocolo (por compatibilidad con impresoras antiguas, NAS legacy, aplicaciones empresariales que dependen de la resolución por nombre o un entorno corporativo que lo requiera), usa este script. Elimina primero las tres tareas programadas para que el hardening no se reaplique al siguiente disparador, restaura el protocolo y LLMNR a su configuración por defecto y borra las reglas de firewall y los scripts auxiliares.

Revertir el hardening devuelve al protocolo a su estado activo habitual sin dejar restos del sistema de vigilancia.

# ============================================================
# Revertir hardening NetBIOS: elimina tareas y restaura protocolo
# ============================================================

# 1. ELIMINAR PRIMERO las 3 tareas programadas
$carpetaTareas = "\SeguridadEnMiPC\NetBIOS-Hardening"
$tareas = @(
    "NetBIOS-Verificacion-Diaria",
    "NetBIOS-Reaplicar-Hardening",
    "NetBIOS-Refuerzo-Arranque"
)
foreach ($t in $tareas) {
    if (Get-ScheduledTask -TaskName $t -TaskPath $carpetaTareas -ErrorAction SilentlyContinue) {
        Unregister-ScheduledTask -TaskName $t -TaskPath $carpetaTareas -Confirm:$false
        Write-Host "[OK] Tarea $t eliminada." -ForegroundColor Green
    }
}

# 2. Reactivar NetBIOS sobre TCP/IP en todos los adaptadores activos
# Valor 0 = Default (usar la configuracion del servidor DHCP)
$adaptadores = Get-WmiObject Win32_NetworkAdapterConfiguration |
               Where-Object { $_.IPEnabled -eq $true }
foreach ($a in $adaptadores) {
    $a.SetTcpipNetbios(0) | Out-Null
    Write-Host "[OK] NetBIOS restaurado en: $($a.Description)" -ForegroundColor Green
}

# 3. Reactivar LLMNR (eliminar la entrada del registro)
$regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient"
if (Test-Path $regPath) {
    Remove-ItemProperty -Path $regPath -Name "EnableMulticast" -Force -ErrorAction SilentlyContinue
    Write-Host "[OK] LLMNR restaurado a configuracion por defecto." -ForegroundColor Green
}

# 4. Eliminar las 3 reglas de firewall
$reglas = @("BLOQUEO NetBIOS UDP 137","BLOQUEO NetBIOS UDP 138","BLOQUEO NetBIOS TCP 139")
foreach ($r in $reglas) {
    Remove-NetFirewallRule -DisplayName $r -ErrorAction SilentlyContinue
    Write-Host "[OK] Regla firewall eliminada: $r" -ForegroundColor Green
}

# 5. Eliminar scripts auxiliares persistentes
$scriptsDir = "C:\ProgramData\SeguridadEnMiPC\NetBIOS"
if (Test-Path $scriptsDir) {
    Remove-Item -Path $scriptsDir -Recurse -Force -ErrorAction SilentlyContinue
    Write-Host "[OK] Scripts auxiliares eliminados." -ForegroundColor Green
}

Write-Host ""
Write-Host "[OK] Hardening NetBIOS revertido completamente." -ForegroundColor Green
Write-Host "    NetBIOS y LLMNR estan ahora activos." -ForegroundColor Yellow
Write-Host "    Reinicia el equipo para que los cambios de red surtan efecto." -ForegroundColor Cyan
Write-Host "    Logs preservados en C:\Logs\netbios-hardening.log" -ForegroundColor Gray

Una vez ejecutado, el protocolo vuelve a estar disponible y la red local recupera la resolución por nombre, así como la compatibilidad con dispositivos antiguos.

⚠️ Riesgos y efectos reales del script

Antes de ejecutar este script conviene entender exactamente qué cambios aplica y qué funciones de Windows pueden verse afectadas. Está diseñado para ser completamente reversible y no toca funciones críticas del sistema, pero sí deshabilita protocolos heredados, modifica reglas del firewall y crea tres tareas programadas persistentes.

Antes de aplicar este hardening, conviene revisar qué dispositivos legacy tienes en la red local y si dependen del protocolo para funcionar.

Función del sistema¿Se ve afectada?Detalle técnico
Inicio de sesión local🟢 NoNo modifica LSASS, SAM ni políticas de cuenta
Inicio de Windows / arranque🟢 NoLas tareas se ejecutan tras el arranque, no lo bloquean
Conexión a internet (navegación, correo)🟢 NoSolo afecta a resolución de nombres en LAN, no a DNS
Resolución DNS estándar🟢 NoDNS sigue funcionando con normalidad
Compartir archivos por SMB con nombre DNS🟢 Sí (positivo)Sigue funcionando si usas FQDN o IP en lugar de nombre de equipo antiguo
Impresoras de red modernas🟢 NoLas impresoras post-2010 usan mDNS/Bonjour o IPP, no este protocolo
Impresoras / NAS legacy (pre-2010)🔴 Sí (a propósito)Pueden dejar de localizarse por nombre. Usar IP fija o FQDN
"Mis sitios de red" / Explorador en LAN🟡 ReducidoEl descubrimiento por nombre de equipo desaparece; sigue mDNS/SSDP
Aplicaciones empresariales legacy🟡 PosibleApps que localicen servidores por nombre del protocolo necesitarán configurarse con FQDN
Captura de hashes NTLM por Responder🟢 Sí (positivo)El vector LLMNR/NBT-NS Poisoning queda neutralizado
Edición posterior de configuración de red🟡 Requiere paso extraLas tareas reaplican el hardening; usar el script de reversión si necesitas editarlo
Carga de CPU / red (3 tareas)🟡 MínimaCada ejecución < 1 s; las 3 tareas suman < 5 segundos diarios

La tabla anterior demuestra que aplicar este hardening no afecta a ninguna función crítica del sistema operativo en redes modernas con DNS funcional.

🚨 Casos en los que NO debes ejecutar el script sin precauciones:
  • Si tu red depende de impresoras o NAS anteriores a 2010 que solo soportan SMB1 / NBNS para descubrimiento
  • Si tienes aplicaciones empresariales legacy que localizan servidores por nombre del protocolo en lugar de FQDN
  • Si estás en un dominio Active Directory antiguo donde la resolución por nombre legacy sigue siendo necesaria por compatibilidad con clientes Windows XP/2003 (consulta primero con IT)
  • Si tu equipo es gestionado por un EDR/XDR corporativo que ya monitoriza el hardening de protocolos heredados
  • Si usas software de inventario o gestión que dependa de nbtscan o enumeración por nombre de equipo
En todos estos casos, valida primero el impacto en un equipo de prueba antes de aplicar el hardening en producción.

En estos escenarios particulares, conviene migrar previamente la red a resolución por DNS y a SMB2/SMB3 antes de aplicar el hardening completo.

⚠️ Cómo verificar que las 3 tareas funcionan: Abre el Programador de tareas (Win+R → taskschd.msc), busca las tres tareas NetBIOS-* en la carpeta SeguridadEnMiPC → NetBIOS-Hardening y revisa el campo "Último resultado" (debe ser 0x0 = éxito) y la fecha de la última ejecución. También puedes consultar el log con Get-Content C:\Logs\netbios-hardening.log -Tail 30 para ver las últimas 30 líneas registradas.

Este chequeo te confirma en segundos si la vigilancia del hardening sigue activa y operativa.

En equipos domésticos con Windows 10 u 11 Home o Pro sin configuraciones especiales, este script es seguro y completamente reversible. Si el hardening ya está aplicado y nada lo modifica, las tareas terminan en milisegundos sin tocar nada. Solo si alguna actualización de Windows o un proceso revierte la configuración, las tareas detectan el cambio y lo restauran automáticamente.

Para usuarios sin entornos especiales, blindar este protocolo es una de las medidas con mejor relación esfuerzo/protección que existen frente a ataques de red local.


🔎 ¿Cómo verificar que el hardening está activo?

💡 ¿Cómo comprobar que NetBIOS está correctamente deshabilitado?

Ejecuta estos comandos en PowerShell como administrador para verificar el estado del protocolo, LLMNR, las reglas de firewall y las tres tareas programadas:

# Verificar el estado del protocolo en cada adaptador
Get-WmiObject Win32_NetworkAdapterConfiguration | `
  Where-Object { $_.IPEnabled -eq $true } | `
  Select Description, TcpipNetbiosOptions | Format-Table -AutoSize
# TcpipNetbiosOptions = 2 significa "Deshabilitado"

# Verificar que LLMNR esta deshabilitado
Get-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" `
  -Name "EnableMulticast" -ErrorAction SilentlyContinue
# EnableMulticast = 0 significa "LLMNR deshabilitado"

# Verificar que las 3 reglas de firewall existen y estan activas
Get-NetFirewallRule -DisplayName "BLOQUEO NetBIOS*" | `
  Select DisplayName, Enabled, Action | Format-Table -AutoSize

# Verificar las 3 tareas programadas
Get-ScheduledTask -TaskPath "\SeguridadEnMiPC\NetBIOS-Hardening\*" | `
  Select TaskName, State, LastRunTime, LastTaskResult | Format-Table -AutoSize

# Comprobar que los puertos NetBIOS estan cerrados
nbtstat -n
netstat -an | findstr "137 138 139"

Las tres tareas deben aparecer en estado Ready con LastTaskResult = 0. TcpipNetbiosOptions debe ser 2 en todos los adaptadores activos. EnableMulticast debe ser 0. Las tres reglas de firewall deben aparecer con Action = Block y Enabled = True. Si ejecutas nbtstat -n, debería mostrar "No names in cache" o similar.

Estos cinco comandos son la forma estándar de auditar este hardening y su sistema de vigilancia automatizada.


✅ Checklist de verificación post-instalación

Tras ejecutar el script, verifica estos 12 puntos:

  • 3 tareas programadas visibles en taskschd.msc bajo SeguridadEnMiPC → NetBIOS-Hardening
  • Estado "Ready" en las 3 tareas al ejecutar Get-ScheduledTask -TaskPath "\SeguridadEnMiPC\NetBIOS-Hardening\*"
  • LastTaskResult = 0 (0x0 = éxito) en las tareas ya ejecutadas
  • TcpipNetbiosOptions = 2 en todos los adaptadores de red activos
  • EnableMulticast = 0 en HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient (LLMNR deshabilitado)
  • 3 reglas de firewall con prefijo BLOQUEO NetBIOS activas y en modo Block
  • nbtstat -n devuelve "No names in cache" o equivalente
  • netstat -an | findstr "137 138 139" no muestra puertos en estado LISTENING
  • Log presente en C:\Logs\netbios-hardening.log sin errores críticos
  • Carpeta de scripts auxiliares creada en C:\ProgramData\SeguridadEnMiPC\NetBIOS
  • Conectividad a internet y resolución DNS funcionando con normalidad
  • Recursos de red críticos accesibles usando IP o FQDN en lugar de nombre de equipo antiguo

Si has marcado los doce puntos, tu equipo está protegido frente a los cinco vectores de ataque más comunes que explotan este protocolo.


🧰 Hardening complementario para reforzar la seguridad de red

Deshabilitar este protocolo y LLMNR es solo el primer paso. Para cerrar todos los vectores de ataque relacionados con resolución de nombres, descubrimiento de red y protocolos heredados, conviene aplicar también las siguientes medidas:

Completa el hardening de tu red con estas 12 medidas adicionales:

  • SMB1 deshabilitado (Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol)
  • SMB Signing obligatorio en cliente y servidor para evitar relay de NTLM
  • NTLMv2 forzado, bloqueando NTLMv1 y LM en directivas de seguridad local
  • Network Discovery deshabilitado en redes públicas y WiFi de cafeterías
  • Archivo HOSTS protegido contra modificaciones para evitar pharming: aplica nuestra guía del archivo HOSTS Windows con script de protección y 7 tareas programadas frente a pharming, bypass de antivirus y bloqueo de Windows Update
  • Firewall de Windows activo en los tres perfiles (dominio, privada, pública)
  • Windows Update en modo automático para parchear CVEs de SMB y servicios de red
  • VPN activa en redes WiFi públicas para encapsular todo el tráfico LAN
  • WPAD deshabilitado en navegadores (vector de ataque relacionado con WPAD Poisoning)
  • Segmentación con VLANs en entornos corporativos para limitar movimiento lateral
  • Monitorización de logs de eventos del firewall y detector de Responder en la red
  • Auditoría periódica con herramientas tipo nbtscan o nmap para detectar regresiones

Estas medidas convierten el equipo en un objetivo poco rentable para cualquier atacante de red local.


❓ Preguntas frecuentes sobre NetBIOS

¿Qué pasa si deshabilito NetBIOS y tengo impresoras o NAS antiguos?

👉 Los dispositivos pre-2010 que dependen exclusivamente de la resolución por nombre del protocolo pueden dejar de localizarse automáticamente. La solución es asignarles una IP fija y conectarse a ellos por IP o por nombre DNS si tu router actúa como servidor DNS local. Las impresoras modernas usan mDNS/Bonjour o IPP, que no dependen de este protocolo.

¿NetBIOS y SMB son lo mismo?

👉 No, son cosas distintas. SMB (Server Message Block) es el protocolo para compartir archivos e impresoras entre equipos Windows; NBT-NS es la capa antigua de resolución de nombres que SMB usaba históricamente para encontrarlos. Desde Windows 2000, SMB puede funcionar perfectamente sobre TCP/IP puro (puerto 445) sin necesidad del protocolo, por lo que deshabilitarlo no rompe el uso normal de SMB en una red moderna.

¿Cómo lo reactivo si lo necesito puntualmente?

👉 Ejecuta el script de reversión incluido en esta guía: elimina las tres tareas programadas, restablece el valor del protocolo a 0 (Default), reactiva LLMNR y borra las reglas de firewall. Si solo quieres reactivarlo en un adaptador concreto sin desinstalar todo el sistema, ve a Propiedades del adaptador → IPv4 → Opciones avanzadas → WINS y selecciona "Predeterminado" o "Habilitar NetBIOS sobre TCP/IP".

¿Funciona en Windows Server?

👉 Sí, es compatible con Windows Server 2019 y 2022. En servidores es incluso más recomendable mantener este hardening, ya que suelen ser objetivos prioritarios para movimientos laterales. Antes de aplicarlo, revisa si hay aplicaciones empresariales legacy, GPOs heredadas o roles de WINS que dependan del protocolo. En controladores de dominio modernos no es necesario activo si no quedan clientes Windows XP/2003.

¿Afecta al Explorador o a "Mis sitios de red"?

👉 Parcialmente. El descubrimiento de equipos en red local mediante este protocolo desaparece, así que algunos equipos pueden no aparecer automáticamente en el Explorador. Sin embargo, sigue funcionando el descubrimiento por SSDP/UPnP y WS-Discovery (servicio "Función de detección" de Windows), por lo que la mayoría de dispositivos modernos se siguen viendo. Para acceder a un recurso específico, usa \\IP-del-equipo\carpeta o \\nombre-DNS\carpeta.

¿Qué diferencia hay entre deshabilitarlo sobre TCP/IP y bloquear los puertos?

👉 Son medidas complementarias, no equivalentes. Deshabilitarlo sobre TCP/IP impide que el equipo genere o responda a tráfico del protocolo (más eficaz). Bloquear los puertos en el firewall impide que el equipo reciba tráfico desde la red, pero no detiene comunicaciones internas. El script aplica las dos medidas en paralelo para garantizar protección total: el protocolo no funciona ni saliendo ni entrando.

¿Por qué también se deshabilita LLMNR junto con NetBIOS?

👉 Porque LLMNR (Link-Local Multicast Name Resolution) sufre exactamente el mismo tipo de ataque de poisoning que NBT-NS, técnica MITRE ATT&CK T1557.001. Herramientas como Responder atacan los dos protocolos simultáneamente y deshabilitar solo uno deja la mitad de la puerta abierta. Por eso el hardening realmente efectivo siempre incluye deshabilitar ambos a la vez.

¿Las tres tareas programadas consumen recursos del sistema?

👉 No. Cada tarea ejecuta un script de unas pocas líneas que termina en menos de un segundo. La tarea de verificación lee el estado actual sin modificar nada (escritura mínima en log). La de reaplicación solo actúa si la verificación detectó un cambio (la mayoría de días no actúa). La de arranque se ejecuta una vez al iniciar Windows. Carga total al día: menos de 5 segundos de CPU, despreciable comparado con cualquier proceso de fondo del sistema.

¿Cómo sé si una herramienta legítima necesita NetBIOS?

👉 Tras aplicar el hardening, monitoriza el funcionamiento de tu equipo durante 1-2 semanas. Si alguna aplicación falla al conectar con un servidor o recurso, revisa primero si el problema es la resolución de nombres: si funciona reemplazando el nombre por la IP, casi seguro depende de este protocolo o LLMNR. En ese caso, configura la app para usar FQDN o IP fija, o ejecuta el script de reversión si la migración no es viable.

¿Esto afecta a las VPN o conexiones remotas?

👉 No directamente. Las VPN modernas (OpenVPN, WireGuard, IKEv2) crean su propio túnel y no dependen del protocolo. Sin embargo, si te conectas por VPN a una red corporativa antigua que sí lo usa internamente para localizar recursos, puede que algunos servidores no se vean por nombre tras conectarte. La solución es la misma: usar FQDN o IP fija para los recursos críticos.

¿Funciona en Windows 11 con Wi-Fi Direct activo?

👉 Sí. Wi-Fi Direct usa su propio mecanismo de descubrimiento (Wi-Fi Aware) que no depende de este protocolo. Deshabilitarlo no afecta a la conexión directa con dispositivos por Wi-Fi Direct (impresoras, móviles, Miracast). Tampoco interfiere con Bluetooth ni con AirDrop equivalentes en Windows.

¿Qué hago si la verificación detecta cambios constantemente?

👉 Si en el log aparecen entradas [ALERTA] con frecuencia, significa que algo en tu sistema está reactivando el protocolo. Las causas habituales son: una GPO corporativa que reescribe la configuración de red, un instalador de software legacy, un driver de adaptador antiguo o, en el peor caso, un malware. Revisa el Visor de eventos (eventos 1001 con fuente NetBIOS-Hardening) y haz un análisis completo con Windows Defender.

¿Puedo desplegar este hardening por GPO en una empresa?

👉 Sí, y es lo recomendable en entornos corporativos. La equivalencia GPO de cada paso es: Computer Configuration → Administrative Templates → Network → DNS Client → Turn off multicast name resolution = Enabled (LLMNR), opciones DHCP 1 y 2 para deshabilitar el protocolo en clientes DHCP, y reglas de firewall vía Windows Defender Firewall with Advanced Security. El script PowerShell de esta guía es ideal para equipos no gestionados por dominio.

¿Cómo desactivo las 3 tareas programadas si quiero hacer pruebas?

👉 Ejecuta el script de reversión incluido en esta guía: elimina las tres tareas (NetBIOS-Verificacion-Diaria, NetBIOS-Reaplicar-Hardening y NetBIOS-Refuerzo-Arranque), reactiva el protocolo y LLMNR y borra las reglas de firewall. Si solo quieres pausarlas temporalmente sin eliminarlas, abre el Programador de tareas y selecciona Deshabilitar en cada una de las tres.


🏁 Conclusión

NetBIOS es uno de esos protocolos heredados que llevan décadas activos en Windows sin que la mayoría de usuarios sepan que existen, y precisamente por eso es uno de los primeros vectores que un atacante explota en redes mal protegidas. Su presencia silenciosa permite enumeración de equipos, suplantación de identidad, ataques Man-in-the-Middle, captura de hashes NTLM mediante LLMNR/NBT-NS Poisoning y movimiento lateral en entornos corporativos.

Tomarse en serio este protocolo y deshabilitarlo correctamente es una de las decisiones de seguridad con mejor retorno para cualquier usuario de Windows en 2026.

La buena noticia es que protegerse es sencillo y gratuito: deshabilitarlo desde Panel de control o PowerShell, deshabilitar también LLMNR, bloquear los puertos UDP 137, UDP 138 y TCP 139 en el firewall y ejecutar el script con sus tres tareas programadas son medidas que cualquier usuario o administrador puede implementar en menos de 10 minutos. Las tres tareas programadas garantizan que el hardening permanezca activo de forma permanente, detectando automáticamente cualquier cambio no autorizado y reaplicando las medidas si fuera necesario, incluso tras actualizaciones de Windows que pudieran revertir la configuración.

Mantener controlado este protocolo es invertir minutos hoy para evitar que un atacante con Responder o nbtscan se haga con credenciales NTLM en cuestión de segundos.

🔐 Resumen de acciones recomendadas

  • ✅ Verifica con nbtstat -n si el protocolo está activo en tu equipo
  • ✅ Deshabilítalo en todos los adaptadores con PowerShell o desde Panel de control
  • ✅ Deshabilita también LLMNR para cerrar el vector de poisoning T1557.001
  • ✅ Bloquea los puertos UDP 137, UDP 138 y TCP 139 en el firewall de Windows
  • ✅ Instala el script con sus 3 tareas programadas (verificación, reaplicación y arranque)
  • ✅ Revisa periódicamente C:\Logs\netbios-hardening.log para detectar regresiones
  • ✅ Complementa el hardening deshabilitando SMB1 y forzando SMB Signing
  • ✅ En redes empresariales, despliega esta configuración mediante GPO sobre todas las estaciones

¿Sospechas que tu equipo está expuesto a través de este protocolo? Sigue los pasos de verificación de esta guía o aplica directamente el script con las tres tareas programadas. Tu seguridad digital es nuestra prioridad.

Comparte este artículo con quien administre redes Windows o tenga equipos en redes corporativas. Una sola estación con este protocolo y LLMNR activos puede comprometer credenciales de todo el dominio en cuestión de minutos.

Autor

Entusiasta de la seguridad informática con años de experiencia en protección de sistemas Windows y defensa contra amenazas digitales. Apasionado por la tecnología y la privacidad, comparto en este blog consejos prácticos, análisis detallados y guías paso a paso para que cualquier usuario pueda fortalecer la seguridad de su PC y su vida digital

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tu puntuación: Útil

Subir