Eliminando ruido: Desactivar Broadcast NetBIOS
Si cuentan con una red Windows seguramente detecten que la red está sobrecargada de paquetes inútiles y hasta peligrosos.
Uno de los tantos protocolos que molestan en extremo enviando broadcast a lo tonto es NetBIOS.
NetBIOS es un protocolo que podría considerarse de la edad de piedra, pero que Microsoft ha mantenido por compatibilidad hacia atrás y que seguramente seguiremos viendo por muchos años más. El problema es que, al ser un protocolo tan viejo, es especialmente inseguro y ruidoso.

Para el que no tenga ni medio de idea de lo que estoy hablando, NetBIOS se utiliza para asignar nombres y workgroups a las workstations y proveer una capa de sesión sobre la cual pueden funcionar otros protocolos.
El caso más familiar es el de las carpetas compartidas en Windows. La compartición de directorios utiliza el protocolo (SMB), el cual solía funcionar sobre la capa NetBIOS, y aunque las versiones actuales (llamada CIFS) pueden funcionar directamente sobre TCP/IP (en el port 445), Windows sigue utilizando la resolución de nombres de NetBIOS (llamada WINS) para encontrar máquinas en la red.
Todo el protocolo es un quilombo monumental y no podría explicarlo en pocas líneas, así que si les interesa, les recomiendo leer el excelente artículo CIFS Explained.

A lo que quiero llegar, es que, en una red Windows todas las máquinas tienen un nombre NetBIOS y utilizan el servicio WINS para encontrar a otras máquinas en la red. El funcionamiento de WINS pueden pensarlo como el de un server DNS. Cuando una máquina desea enviar paquetes a otra, consulta por su nombre NetBIOS, si lo encuentra, envía los paquetes.
La resolución NetBIOS se puede realizar de diferentes formas, dependiendo de la configuración de la máquina. Las formas de resolución se llaman tipos de nodos. Existen 5 tipos de nodo:
- B-node (broadcast) - la máquina envía la consulta en forma de broadcast, es decir, a todas las máquinas de la red.
- P-node (peer-peer) - la máquina envía la consulta al servidor WINS configurado previamente. Si no existe servidor WINS o si no puede contactarlo, o el servidor no conoce el nombre que buscamos, la consulta termina.
- M-node (mixed) - es una combinación de los nodos B y P, donde primero se consulta en forma de broadcast y si no se obtiene respuesta satisfactoria, se consulta al servidor WINS.
- H-node (hybrid) - funciona al revés que M. En este caso primero se envía la consulta al servidor WINS, si este no puede resolver, entonces se consulta en forma de broadcast.
- Microsoft enhanced B-node - actúa como el modo B, pero si se puede resolver el nombre, entonces se consulta a un archivo llamado Lmhosts, el cual es configurado a mano por el administrador.

Como pueden observar, tenemos combinaciones de sobra para la resolución. En una red controlada por Active Directory la resolución se lleva a cabo por DNS, y si esta falla, se realiza una resolución NetBIOS utilizando un servidor WINS.
El problema es que los servidores y workstation vienen configurados por defecto para utilizar el tipo de nodo H, es decir, se consulta primero por WINS y si falla se hace broadcast. Ahora, si en nuestra red, nuestro servidor WINS no conoce un dado nombre, entonces ninguna máquina debería conocerlo! Este sistema se presta para diversos ataques de mitm haciendo spoofing de nombres NetBIOS como el que se muestra en el blog skullsecurity. Además, éste sistema provoca que circulen por la red paquetes inútiles, dado que nadie responderá (no debería...).
Lo que motivó la creación de este post es el comportamiento particular de Exchange (servidor de mails de MS), el cual intenta resolver las direcciones de mail utilizando éste sistema DNS-WINS-Broadcast, por lo que nombres desconocidos acarrean broadcasts continuos. Claro que el intento por resolver nombres arbitrarios es un indicador de algún malware en la red... pero vamos por partes =)

Entonces, qué hacemos con este sistema anticuado?
Tenemos dos opciones. Por un lado MS está tratando de eliminar el uso de NetBIOS y pasar a CIFS sobre TCP/IP con resolución DNS. Para esto, simplemente debemos desactivar NetBIOS. El problema es que muchas aplicaciones antiguas necesitan de éste protocolo, así que esta opción es poco adecuada en muchos casos.
Deshabilitar el uso de NetBIOS es tan simple como:
1- Ir a "Control Panel" -> "Network Connections" -> elegir la conexión y dar Click derecho y elegir properties.
2- Seleccionar Internet Protocol (TCP/IP).
3- Clickear en Advanced.
4- Seleccionar el tab WINS Address.
5- Seleccionar Disable NetBIOS over TCP/IP.

Si no podemos eliminar el uso de NetBIOS por alguna justificada razón, algo que sí podemos hacer es eliminar el uso de Broadcast en caso que el servidor WINS no pueda resolver.
Para eliminar el broadcast tendremos que setear el tipo de nodo NetBIOS como P (peer-peer). El tipo de nodo que tenemos seteado actualmente se puede ver ejecutando ipconfig /all y viendo la línea Node Type.
Procediendo con el cambio de tipo de nodo, debemos elegir una de dos opciones:
- Cambiar la opción de tipo de nodo en el servidor DHCP, donde utilizaremos la opción 46 y cambiaremos el valor a 2 (P-node). Los otros valores posibles son (1 Microsoft-enhanced B-node), 4 (M-node) y 8 (H-node).
- Cambiar el valor HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netbt\Parameters\NodeType del registro y colocar 2 (P-node).


Referencias

- Chapter 11 - NetBIOS over TCP/IP
- TCP/IP in Windows 2000 Professional
- NetBIOS Name Resolution Overview

2 comentarios:

Armando Polledo dijo...

tengo una red en donde los broadcast son muy elevados, como hago la depuracion de estos sin tener que ir maquina por maquina desactivando el netbios ??

d3m4s1@d0v1v0 dijo...

Armando, nosotros lo desactivamos utilizando una opción del servidor DHCP (DHCP montado sobre Windows, claro). Otra forma es distribuir un paquete que modifique la clave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netbt\Parameters\NodeType del registro, existen diversos programas que podes utilizar para ello.

Publicar un comentario