Широковещательные протоколы NetBIOS over TCP/IP и LLMNR являются устаревшими и в большинстве современных сетей они используются только для совместимости с legacy версиями Windows. Оба протокола подвержены спуфингу и атакам MITM. В том же Metasploit есть готовые модули, позволяющие легко использовать уязвимости в широковещательных протоколах NetBIOS и LLMNR для перехвата учетных данных пользователей в локальной подсети (в т.ч. можно получить хэши NTLMv2). Для повышения безопасности необходимо отключать эти старые протоколы в доменной сети. Разберемся, как отключить протоколы LLMNR и NetBIOS в Windows 10/Windows 2016 вручную или через групповые политики.
Протокол LLMNR
LLMNR (UDP/5355, Link-Local Multicast Name Resolution — механизм широковещательного разрешения имен) – протокол присутствует во всех версиях Windows, начиная с Vista и позволяет IPv6 и IPv4 клиентам разрешать имена соседних компьютеров без использования DNS сервера за счет широковещательных запросов в локальном сегменте сети L2. Этот протокол также автоматически используется при недоступности DNS (в рабочих группах Windows этот протокол используется для сетевого обнаружения/Network Discovery). Соответственно, при работающих DNS-серверах в домене, этот протокол абсолютно не нужен.
Протокол NetBIOS over TCP/IP
Протокол 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
Протоколы NetBIOS и LLMNR позволяют компьютерам в локальной сети найти друг друга при недоступности DNS сервера. Возможно они и нужны в рабочей группе, но в доменной сети оба этих протокола можно отключить.
Отключение протокола LLMNR с помощью GPO
Можно отключить LLMNR на компьютере Windows локально через реестр с помощью следующей команды PowerShell:
New-Item "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT" -Name DNSClient -Force
New-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" -Name EnableMultiCast -Value 0 -PropertyType DWORD -Force
В доменной среде широковещательные запросы LLMNR на компьютерах и серверах домена проще отключить с помощью групповой политики. Для этого:
- В консоли
GPMC.msc
создайте новую или отредактируйте имеющуюся политику GPO, применяемую ко всем рабочим станциям и серверам; - Перейдите в раздел Computer Configuration -> Administrative Templates -> Network -> DNS Client;
- Включите политику Turn off smart multi-homed name resolution, изменив ее значение на Enabled;
- Дождитесь обновления параметров GPO на клиентах или обновите их вручную командой
gpupdate /force
.
Отключение протокола NetBIOS over TCP/IP в Windows 10
Вы можете отключить NetBIOS в Windows вручную:
- Откройте свойства сетевого подключения;
- Выберите протокол TCP/IPv4 и откройте его свойства;
- Нажмите кнопку Advanced, затем перейдите на вкладку WINS и выберите опцию Disable NetBIOS over TCP (Отключить NetBIOS через TCP/IP);
- Сохраните изменения.
Если у вас на компьютере несколько сетевых интерфейсов (или отдельных VLAN), нужно будет отключить NetBIOS в свойствах каждого их них.
Вы можете проверить статус NetBIOS over TCP/IP для сетевых адаптеров из командной строки Windows:
ipconfig /all |find "NetBIOS"
NetBIOS over Tcpip. . . . . . . . : Disabled
Отключить поддержку NetBIOS для конкретного сетевого адаптера можно и из реестра. Для каждого сетевого адаптера компьютера есть отдельная ветка с его TCPIP_GUID внутри HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces.
Чтобы отключить 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 через групповые политики?
В редакторе групповых политик или последней версии административных шаблонов для Windows 10/Windows Server 2019 нет отдельного параметра, позволяющего отключить протокол NETBIOS over TCP/IP для всех сетевых адаптеров компьютера. Чтобы отключить NETBIOS для всех адаптеров компьютера воспользуйтесь таким логон скриптом PowerShell.
$regkey = "HKLM:SYSTEM\CurrentControlSet\services\NetBT\Parameters\Interfaces"
Get-ChildItem $regkey |foreach { Set-ItemProperty -Path "$regkey\$($_.pschildname)" -Name NetbiosOptions -Value 2 -Verbose}
Сохраните этот код в файл disableNetbios.ps1, скопируйте его в каталог вашей GPO и запускайте на клиентах через Computer Configuration -> Policies -> Windows Settings -> Scripts -> Startup- > PowerShell Scripts.
Затем откройте командную строку и проверьте, что NetBIOS отключен для ваших сетевых адаптеров (кроме туннельных интерфейсов):
wmic nicconfig get caption,index,TcpipNetbiosOptions