Широковещательные протоколы NetBIOS over TCP/IP, LLMNR и mDNS (Multicast DNS) используются для разрешения имен в Windows сетях, в которых отсутствует (недоступен) DNS сервер (обычно это домашние или небольшие офисные/SOHO сети). В корпоративных сетях с DNS серверами, эти протоколы обычно не нужны. Более того, эти широковещательные протоколы легко могут использоваться злоумышленниками для реализации спуфинг, relay и MITM атак, позволяющих перехватить учетные данных пользователей в локальной подсети (в т.ч. можно получить хэши NTLM). Разберемся, как отключить протоколы LLMNR, NetBIOS и mDNS в доменной сети Windows вручную и через GPO.
Широковещательные протоколы LLMNR, NetBIOS и mDNS в Windows сетях
DNS является предпочтительным методом разрешения имен в Windows сетях. Если в сети отсутствуют DNS сервера, используются альтернативные разрешающие протоколы в следующем порядке:
- MulticastDNS (mDNS)
- Link-Local Multicast Name Resolution (LLMNR)
- NetBIOS (NBNS)
Протокол LLMNR (механизм широковещательного разрешения имен) присутствует во всех версиях Windows, начиная с Vista и позволяет IPv6 и IPv4 клиентам разрешать имена соседних компьютеров без использования DNS сервера за счет широковещательных запросов в локальном сегменте сети L2. Этот протокол также автоматически используется при недоступности DNS (в рабочих группах Windows этот протокол используется для сетевого обнаружения/Network Discovery). Для передачи данных используется порт UDP/5355.
Протокол NetBIOS over TCP/IP или NBT-NS (UDP/137,138;TCP/139) – это широковещательный протокол, предшественник LLMNR, используется в локальной сети для публикации и поиска ресурсов. Поддержка NetBIOS over TCP/IP в Windows по умолчанию включена для всех интерфейсов.
В Windows можно вывести статистику протокола NetBIOS и текущих подключений TCP/IP по NBT с помощью команды nbtstat. Чтобы по IP адресу получить имя компьютера, выполните:
nbtstat -A 192.168.31.90

Утилита через NetBIOS обнаружила в локальной сети компьютер и вернула его имя. Можно получить из кэша NetBIOS все записи о соседних компьютерах в локальных сети:
nbtstat -c
Сетевой протокол Multicast DNS (mDNS) доступен начиная с версии Windows 10 1703 ( в Windows Server с версии 2019). Позволяет разрешать имена хостов в IP-адреса в небольших локальных сетях без использования центрального DNS-сервера. Уникальность имен в пределах локальной сети обеспечивается присваиванием суффикса .local . Предполагалось, что mDNS должен полностью заменить устаревшие протоколы NetBIOS и LLMNR. Для разрешения имен используется многоадресная рассылка UDP пакетов на порт 5353. mDNS также широко используется для автоматического обнаружения сетевых принтеров и других служб в локальной сети.
Протоколы NetBIOS, LLMNR и mDNS позволяют компьютерам в рабочей группе найти друг друга по именам при недоступности DNS сервера. В доменных сетях эти протоколы можно отключить.
Отключение протокола LLMNR с помощью GPO
В доменной среде широковещательные запросы LLMNR на компьютерах и серверах домена можно отключить с помощью групповой политики. Для этого:
- В консоли
GPMC.mscсоздайте новую или отредактируйте имеющуюся политику GPO, которую нужно применить ко всем рабочим станциям и серверам; - Перейдите в раздел Computer Configuration -> Administrative Templates -> Network -> DNS Client;
- Включите политики Turn off multicast name resolution и Turn off smart multi-homed name resolution, изменив их значения на Enabled

- Дождитесь обновления параметров GPO на клиентах или обновите их вручную командой
gpupdate /force.
Можно отключить LLMNR в Windows, создав эти параметры в реестре с помощью PowerShell:
New-Item "HKLM:SOFTWAREPoliciesMicrosoftWindows NT" -Name DNSClient -Force
New-ItemProperty "HKLM:SOFTWAREPoliciesMicrosoftWindows NTDNSClient" -Name EnableMultiCast -Value 0 -PropertyType DWORD -Force
New-ItemProperty "HKLM:SOFTWAREPoliciesMicrosoftWindows NTDNSClient" -Name DisableSmartNameResolution -Value 1 -PropertyType DWORD -Force
Отключение протокола NetBIOS over TCP/IP в Windows
Отключить NetBIOS можно в настройках сетевого адаптера:
- Откройте свойства сетевого подключения в панели
ncpa.cpl - Выберите протокол TCP/IPv4 и откройте его свойства;
- Нажмите кнопку Advanced, затем перейдите на вкладку WINS и выберите опцию Disable NetBIOS over TCP (Отключить NetBIOS через TCP/IP);
- Сохраните изменения.

Если у вас на компьютере несколько сетевых интерфейсов (или отдельных VLAN), нужно будет отключить NetBIOS в свойствах каждого их них.
Проверьте статус NetBIOS over TCP/IP для сетевых адаптеров из командной строки:
ipconfig /all |find "NetBIOS"
NetBIOS over Tcpip. . . . . . . . : Disabled

Можно отключить поддержку NetBIOS для конкретного сетевого адаптера через реестр. Для каждого сетевого адаптера компьютера есть отдельная ветка с его TCPIP_GUID внутри HKLMSYSTEMCurrentControlSetServicesNetBTParametersInterfaces.
Чтобы отключить NetBIOS для конкретного сетевого адаптера, нужно открыть его ветку и изменить значение параметра NetbiosOptions на 2 (по умолчанию значение – 0).

На клиентах домена, получающих IP адреса с DHCP сервера на Windows Server, вы можете отключить NetBIOS через отдельную DHCP опцию.
- Для этого откройте консоль
dhcpmgmt.mscи выберите настройки зоны Scope Option (или сервера – Server Options); - Перейдите на вкладку Advanced, в выпадающем списке Vendor class выберите Microsoft Windows 2000 Options;
- Включите опцию 001 Microsoft Disable Netbios Option и измените ее значение на 0x2.

Как отключить NetBIOS через GPO?
В редакторе групповых политик или новых административных ADMX шаблонов GPO для Windows нет отдельного параметра, позволяющего отключить протокол NETBIOS over TCP/IP на компьютере. Чтобы отключить NETBIOS для всех адаптеров компьютера воспользуйтесь таким логон скриптом PowerShell.
$regkey = "HKLM:SYSTEMCurrentControlSetservicesNetBTParametersInterfaces"
Get-ChildItem $regkey |foreach { Set-ItemProperty -Path "$regkey$($_.pschildname)" -Name NetbiosOptions -Value 2 -Verbose}
Можно использовать более простой код с WMI запросом:
Get-WmiObject -Class Win32_NetworkAdapterConfiguration | % {$_.SetTcpipNetbios(2)}
Сохраните этот код в файл disableNetbios.ps1, скопируйте его в каталог вашей GPO и запускайте на клиентах через Computer Configuration -> Policies -> Windows Settings -> Scripts -> Startup -> PowerShell Scripts.

Затем откройте командную строку и проверьте, что NetBIOS отключен для ваших сетевых адаптеров (кроме туннельных интерфейсов):
wmic nicconfig get caption,index,TcpipNetbiosOptions

Отключаем mDNS в Windows
Для отключения протокола mDNS в Windows, нужно создать на компьютере параметр EnableMDNS со значением 0 в ветке реестра HKLMSYSTEMCurrentControlSetServicesDnscacheParameters.
Можно создать этот параметр командой:
REG ADD "HKLMSYSTEMCurrentControlSetServicesDnscacheParameters" /v " EnableMDNS" /t REG_DWORD /d "0" /f
Либо применить параметр реестра через Group Policy Preferences (Computer Configuration > Preferences > Windows Settings > Registry)
- Action: Update
- Hive: HKEY_LOCAL_MACHINE
- Key Path: SYSTEMCurrentControlSetServicesDnscacheParameters
- Value name: EnableMDNS
- Value type: DWORD
- Value data: 0

Также в GPO можно создать правило Windows Defender Firewall, которое будет блокировать входящий трафик mDNS на клиентах. Можно отключить правило mDNS (UDP-In) только для доменного профиля, чтобы ноутбуки пользователей при работе за пределами домена (офиса) могли обнаруживать в сети соседние устройства через mDNS.

Чтобы проверить, что на компьютере отключены NetBIOS, LLMNR и mDNS, выполните команды:
netstat -nao | FIND /i ":137 "
netstat -nao | FIND /i ":5353 "
netstat -nao | FIND /i ":5355 "

Если эти протоколы разрешения имен отключены, команды не должны вернуть открытых портов.

Добавить комментарий