Усиливаем безопасность. Переключаемся с протокола NTLMv1 на NTLMv2. Лучше, конечно, использовать Kerberos, но хорошего понемногу.
Недостатки протокола NTLMv1:
- слабое шифрование
- хранение хэша пароля в оперативной памяти в службе LSA, благодаря чему можно извлечь пароли из памяти Windows в открытом виде (!) с помощью утилит типа mimikatz и использовать хэш для дальнейших атак с помощью сценариев Pass-The-Hash
- отсутствие взаимной проверки подлинности клиента и сервера, что даёт возможность атаки перехвата данных NTLM и неавторизованного доступа к ресурсам сети
Часть этих недостатков исправлена в новой версии NTLMv2, которая использует более криптостойкие алгоритмы шифрования и позволяет предотвратить популярные атаки на NTLM. Начиная с Windows 7 / Windows Server 2008 R2 протоколы аутентфикации NTLMv1 и LM по умолчанию отключены.
Переключаемся с протокола NTLMv1 на NTLMv2 с помощью GPO. Переходим в консоль управления Group Policy Management (gpmc.msc), редактируем Default Domain Controllers Policy.
Редактируем политику. Computer Configuration → Policies → Windows Settings → Security Settings → Local Policies → Security Options. Нас интересует раздел Network Security: LAN Manager authentication level (Сетевая безопасность: уровень проверки подлинности LAN Manager).
Доступны опции (от менее безопасной к более безопасной):
- Send LM & NTLM responses
- Send LM & NTLM responses – use NTLMv2 session security if negotiated
- Send NTLM response only
- Send NTLMv2 response only
- Send NTLMv2 response only. Refuse LM
- Send NTLMv2 response only. Refuse LM& NTLM
По умолчанию в Windows 7 и выше используется настройка Send NTLMv2 response only (Отправлять только NTLMv2-ответ). При этой настройке клиентские компьютеры используют NTLMv2 аутентификацию, но контролеры домены принимают LM, NTLM, и NTLMv2 запросы.
Можно изменить значение политики на более безопасную опцию Send NTLMv2 response only. Refuse LM & NTLM. При этой политике контролеры домена будут отвергать запросы LM и NTLM.
То же самое можно сделать через ветку реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa с помощью параметра DWORD с именем LmCompatibilityLevel и значением от 0 до 5. Значение 5 соответствует значению политики Отправлять только NTLMv2-ответ. Отказывать LM и NTLM.