Боремся с вирусами и инфраструктурой, или отключение SMB v1


    В связи с недавной эпидемией шифровальщика WannaCry, эксплуатирующим уязвимость SMB v1, в сети снова появились советы по отключению этого протокола. Более того, Microsoft настоятельно рекомендовала отключить первую версию SMB еще в сентябре 2016 года. Но такое отключение может привести к неожиданным последствиям, вплоть до курьезов: лично сталкивался с компанией, где после борьбы с SMB перестали играть беспроводные колонки Sonos.


    Специально для минимизации вероятности «выстрела в ногу» я хочу напомнить об особенностях SMB и подробно рассмотреть, чем грозит непродуманное отключение его старых версий.


    SMB (Server Message Block) – сетевой протокол для удаленного доступа к файлам и принтерам. Именно он используется при подключении ресурсов через \servername\sharename. Протокол изначально работал поверх NetBIOS, используя порты UDP 137, 138 и TCP 137, 139. С выходом Windows 2000 стал работать напрямую, используя порт TCP 445. SMB используется также для входа в домен Active Directory и работы в нем.


    Помимо удаленного доступа к ресурсам протокол используется еще и для межпроцессорного взаимодействия через «именованные потоки» – named pipes. Обращение к процессу производится по пути \.\pipe\name.

    Первая версия протокола, также известная как CIFS (Common Internet File System), была создана еще в 1980-х годах, а вот вторая версия появилась только с Windows Vista, в 2006. Третья версия протокола вышла с Windows 8. Параллельно с Microsoft протокол создавался и обновлялся в его открытой имплементации Samba.


    В каждой новой версии протокола добавлялись разного рода улучшения, направленные на увеличение быстродействия, безопасности и поддержки новых функций. Но при этом оставалась поддержка старых протоколов для совместимости. Разумеется, в старых версиях было и есть достаточно уязвимостей, одной из которых и пользуется WannaCry.


    Под спойлером вы найдете сводную таблицу изменений в версиях SMB.
    Версия Операционная система Добавлено, по сравнению с предыдущей версией
    SMB 2.0 Windows Vista/2008 Изменилось количество команд протокола со 100+ до 19
    Возможность «конвейерной» работы – отправки дополнительных запросов до получения ответа на предыдущий
    Поддержка символьных ссылок
    Подпись сообщений HMAC SHA256 вместо MD5
    Увеличение кэша и блоков записи\чтения
    SMB 2.1 Windows 7/2008R2 Улучшение производительности
    Поддержка большего значения MTU
    Поддержка службы BranchCache – механизм, кэширующий запросы в глобальную сеть в локальной сети
    SMB 3.0 Windows 8/2012 Возможность построения прозрачного отказоустойчивого кластера с распределением нагрузки
    Поддержка прямого доступа к памяти (RDMA)
    Управление посредством командлетов Powershell
    Поддержка VSS
    Подпись AES–CMAC
    Шифрование AES–CCM
    Возможность использовать сетевые папки для хранения виртуальных машин HyperV
    Возможность использовать сетевые папки для хранения баз Microsoft SQL
    SMB 3.02 Windows 8.1/2012R2 Улучшения безопасности и быстродействия
    Автоматическая балансировка в кластере
    SMB 3.1.1 Windows 10/2016 Поддержка шифрования AES–GCM
    Проверка целостности до аутентификации с использованием хеша SHA512
    Обязательные безопасные «переговоры» при работе с клиентами SMB 2.x и выше

    Считаем условно пострадавших


    Посмотреть используемую в текущий момент версию протокола довольно просто, используем для этого командлет Get–SmbConnection:



    Вывод командлета при открытых сетевых ресурсах на серверах с разной версией Windows.


    Из вывода видно, что клиент, поддерживающий все версии протокола, использует для подключения максимально возможную версию из поддерживаемых сервером. Разумеется, если клиент поддерживает только старую версию протокола, а на сервере она будет отключена – соединение установлено не будет. Включить или выключить поддержку старых версий в современных системах Windows можно при помощи командлета Set–SmbServerConfiguration, а посмотреть состояние так:


    Get–SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol


    Выключаем SMBv1 на сервере с Windows 2012 R2.



    Результат при подключении с Windows 2003.


    Таким образом, при отключении старого, уязвимого протокола можно лишиться работоспособности сети со старыми клиентами. При этом помимо Windows XP и 2003 SMB v1 используется и в ряде программных и аппаратных решений (например NAS на GNU\Linux, использующий старую версию samba).


    Под спойлером приведу список производителей и продуктов, которые полностью или частично перестанут работать при отключении SMB v1.
    Производитель Продукт Комментарий
    Barracuda SSL VPN
    Web Security Gateway backups
    Canon Сканирование на сетевой ресурс
    Cisco WSA/WSAv
    WAAS Версии 5.0 и старше
    F5 RDP client gateway
    Microsoft Exchange Proxy
    Forcepoint (Raytheon) «Некоторые продукты»
    HPE ArcSight Legacy Unified Connector Старые версии
    IBM NetServer Версия V7R2 и старше
    QRadar Vulnerability Manager Версии 7.2.x и старше
    Lexmark МФУ, сканирование на сетевой ресурс Прошивки Firmware eSF 2.x и eSF 3.x
    Linux Kernel Клиент CIFS С 2.5.42 до 3.5.x
    McAfee Web Gateway
    Microsoft Windows XP/2003 и старше
    MYOB Accountants
    NetApp ONTAP Версии до 9.1
    NetGear ReadyNAS
    Oracle Solaris 11.3 и старше
    Pulse Secure PCS 8.1R9/8.2R4 и старше
    PPS 5.1R9/5.3R4 и старше
    QNAP Все устройства хранения Прошивка старше 4.1
    RedHat RHEL Версии до 7.2
    Ricoh МФУ, сканирование на сетевой ресурс Кроме ряда моделей
    RSA Authentication Manager Server
    Samba Samba Старше 3.5
    Sonos Беспроводные колонки
    Sophos Sophos UTM
    Sophos XG firewall
    Sophos Web Appliance
    SUSE SLES 11 и старше
    Synology Diskstation Manager Только управление
    Thomson Reuters CS Professional Suite
    Tintri Tintri OS, Tintri Global Center
    VMware Vcenter
    ESXi Старше 6.0
    Worldox GX3 DMS
    Xerox МФУ, сканирование на сетевой ресурс Прошивки без ConnectKey Firmware

    Список взят с сайта Microsoft, где он регулярно пополняется.


    Перечень продуктов, использующих старую версию протокола, достаточно велик – перед отключением SMB v1 обязательно нужно подумать о последствиях.


    Все-таки отключаем


    Если программ и устройств, использующих SMB v1 в сети нет, то, конечно, старый протокол лучше отключить. При этом если выключение на SMB сервере Windows 8/2012 производится при помощи командлета Powershell, то для Windows 7/2008 понадобится правка реестра. Это можно сделать тоже при помощи Powershell:


    
    Set–ItemProperty –Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 –Type DWORD –Value 0 –Force
    

    Или любым другим удобным способом. При этом для применения изменений понадобится перезагрузка.


    Для отключения поддержки SMB v1 на клиенте достаточно остановить отвечающую за его работу службу и поправить зависимости службы lanmanworkstation. Это можно сделать следующими командами:


    sc.exe config lanmanworkstation depend=bowser/mrxsmb20/nsi 
    
    sc.exe config mrxsmb10 start=disabled
    

    Для удобства отключения протокола по всей сети удобно использовать групповые политики, в частности Group Policy Preferences. С помощью них можно удобно работать с реестром.



    Создание элемента реестра через групповые политики.


    Чтобы отключить протокол на сервере, достаточно создать следующий параметр:


    • путь: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters;


    • новый параметр: REG_DWORD c именем SMB1;


    • значение: 0.


    Создание параметра реестра для отключения SMB v1 на сервере через групповые политики.


    Для отключения поддержки SMB v1 на клиентах понадобится изменить значение двух параметров.


    Сначала отключим службу протокола SMB v1:


    • путь: HKLM:\SYSTEM\CurrentControlSet\services\mrxsmb10;


    • параметр: REG_DWORD c именем Start;


    • значение: 4.


    Обновляем один из параметров.


    Потом поправим зависимость службы LanmanWorkstation, чтоб она не зависела от SMB v1:


    • путь: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation;


    • параметр: REG_MULTI_SZ с именем DependOnService;


    • значение: три строки – Bowser, MRxSmb20 и NSI.


    И заменяем другой.


    После применения групповой политики необходимо перезагрузить компьютеры организации. После перезагрузки SMB v1 перестанет использоваться.


    Работает – не трогай


    Как ни странно, эта старая заповедь не всегда полезна – в редко обновляемой инфраструктуре могут завестись шифровальщики и трояны. Тем не менее, неаккуратное отключение и обновление служб могут парализовать работу организации не хуже вирусов.


    Расскажите, а вы уже отключили у себя SMB первой версии? Много было жертв?

    Метки:
    Сервер Молл 74,53
    Refurbished-серверы HP, Dell и IBM (Lenovo)
    Поделиться публикацией
    Комментарии 21
    • 0
      Для legacy систем можно поднять машину «камикадзе», где будет работать SMB1, а в остальной сети лучше отключить.
      • 0
        Вынести в отдельный vlan и чутко следить за трафиком из и в этот vlan.
      • 0
        На Windows 7 службу mrxsmb10 видно в реестре и через sc, но не видно через графический интерфейс (оснастка Services). Почему?
        • 0

          Потому что это не служба, а драйвер.

        • 0
          Здесь тоже описано:
          https://support.microsoft.com/ru-ru/help/2696547/how-to-enable-and-disable-smbv1-smbv2-and-smbv3-in-windows-and-windows
          • +1
            После отключения smbv1 принтеры Kyocera перестали складывать сканы в шару.
            • 0
              Попробуйте прошивку новую если есть
            • 0
              Ну да, а бд visual foxpro (да-да, мы некрофилы, поверьте — мотивированно) по smb 2.0+ при 1000+ пользователях отчего-то портит файлы, несмотря на все шаманства по отключению oplock и прочим радостям. Так что — нет, не отключили.
              • 0
                VFP, 1000+ users… 21 век… я понимаю, что оно работает, но это даже не некрофилия…
              • 0

                Хм, в вин10 такого командлета — Get–SmbConnection — не нашлось...

                • +2
                  а вы не копипасте:) копипастить команды из интернета вообще чревато.

                  get-smbconnection — сравните дефис.
                  • +2

                    Рукалицо, что еще сказать :)

                    • 0

                      Не смог по ссылке прочитать, банер хочет мой email, не закрыть. С таких сайтов сразу ухожу.

                • 0
                  Неужели регулярно устанавливать обновления настолько сложно, что легче ломать совместимость?
                  • 0

                    Один из серверов (DC в сети, где больше нет серверов) поймал на себя EternalRocks, который "патчит" уязвимость. Но вирь-патчер это сделал, не проверив версию ОС, в итоге сервер перестал принимать подключения — он был 2003R2 x64 SP1, и, получив в зависимости к lanmanserver отсутствующие в 2003й службы, радостно не сумел его запустить. Вот и все жертвы. :) (Что интересно, мы не нашли, кто в той сети ухитрился запустить у себя EternalRocks, но не запустил WannaCry или другой SMBv1.0 ломальщик. Правда, не очень-то и искали.)

                    • 0
                      Напишите еще о том «Как установить Windows 10».
                      • –1
                        Мне вот не очень понятно — микрософт написали код для smb и в нем есть ошибка.
                        Нашли её, начали использовать и т.д.
                        Теперь берем линукс — там писали код другие люди — и тоже ошибка в smb.
                        Что они код скопипастили? Или идой его смотрели в ассемблере?
                        • 0

                          Там совсем другая ошибка в SMB, в совсем другом месте. Общего между ними — только интервал между публикациями.

                          • –1
                            Понятно.
                            Интересно — после нахождения ошибки в линуксе
                            не было пересмотра другого кода того кто сделал ошибку
                            может он ещё где-то интересные ошибочки сделал
                            (хотя может под этим именем целый отдел работает и закладочки оставляет на будущее).
                        • –1
                          В табличке «версия 5.0 и старше» читается как 5+, якобынужно ставить именно старые версии. Версии — чем больше число, тем версия старше. Так что лучше исправить на «и старее» или еще лучше на «и более старые»

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое