С 12 мая 2017 года в СМИ стали появляться сообщения о новом и достаточно серьёзном зловреде.
Его называют по разному – и WanaCrypt0r 2.0, и WannaCrypt, и WCry. В более-менее стандартизированной номенклатуре – Ransom:Win32.WannaCrypt.
Кратко про ситуацию и что предпринимать.
Причина заражения
В семействе ОС Windows обмен файлами в LAN-сетях практически полностью реализуется протоколом SMB. Данный протокол разработан фирмой IBM (в сотрудничестве с 3Com) в 1983 году, используется в OS/2, и оттуда уходит в состав сетевого стека Microsoft, более известного как “семейство протоколов и сервисов LAN Manager”.
Протокол SMBv1 живёт достаточно долго. Работает плохо и неэффективно – но не потому что он плохой, а потому что предназначался для универсальных задач – от сетевой печати до общего доступа к COM-портам – и поверх любых сетевых протоколов. То есть должен был он работать в следующей схеме:
- Какой-то протокол сетевого уровня (IP, IPX, AppleTalk)
- NetBIOS поверх транспортного протокола (в варианте IP – NetBT, NetBIOS Transport over TCP, используется 139й порт)
- Запросы и ответы SMBv1
Всё это было снабжено большим количеством команд, долгими и многофазными согласованиями каждой мелочи, поэтому КПД протокола был откровенно не самым лучшим. Тянется это с Windows for Workgroups 3.11 до Windows XP / Server 2003.
В Windows 2000 Microsoft проводит первичную оптимизацию и запускает SMBv1 поверх “чистого” IP, снижая задачи прослойки NetBIOS и уменьшая overhead протоколов, чем улучшает соотношение “заголовки / данные”. Вы знаете этот вариант по открытому порту TCP 445. Но этот вариант работает параллельно с классическим, не являясь его заменой.
Начиная с ядра NT 6.0, где Microsoft первый раз серьёзно переписывает сетевой стек, появляется протокол SMBv2.
Он значительно упрощается в части количества команд, в него также начинает добавляться новый функционал. Данный процесс продолжается и после, выходят версии 2.1, 3.0, 3.0.2 и в текущих Windows Server 2016 / Windows 10 – SMB 3.1.1.
Microsoft двигает стандарт и дальше, публикуя свои открытые спецификации – их потом реализуют в сторонних продуктах типа Samba (пять лет по открытой документации реализовывали стандарт) и Apple (Apple делает свою копию Microsoft’овского SMBv2).
В результате на текущий момент на борту ОС от Microsoft обычно работает полный зоопарк – три версии SMB поверх двух сетевых портов (TCP 139 и TCP 445).
И вот в самой старой, ещё IBM’овской реализации SMBv1, была обнаружена уязвимость.
Матчасть здорового человека
Патч закрытия критической уязвимости в SMBv1 был выпущен 14 марта 2017 года, то есть 2 месяца назад: MS17-010.
Ссылки на патчи для различных ОС есть здесь: KB 4013389.
Какова реальная картинка с заражением?
Вот здесь можно посмотреть на ситуацию с заражением Ransom:Win32.WannaCrypt в реальном масштабе времени.
Как выглядит заражение?
Например вот так выглядит заражённый информационный стенд Сбербанка:
(кликните для увеличения до 960 px на 1280 px)Ruslan V. Karmanovrk@atraining.ruУчебный центр Advanced Traininginfo@atraining.ruhttps://www.atraining.ru/
Как выглядит вирус?
По сообщениям ряда СМИ, вирус-вымогатель, работающий на международном уровне, требующий денег с различных организаций и государств, выглядит так:
(кликните для увеличения до 480 px на 270 px)Ruslan V. Karmanovrk@atraining.ruУчебный центр Advanced Traininginfo@atraining.ruhttps://www.atraining.ru/
Но нет точной уверенности, что он может что-то зашифровать.
Если всё плохо
Утилита, которая достанет ключ, при помощи которого можно расшифровать файлы – https://github.com/gentilkiwi/wanakiwi. Важная особенность – компьютер не должен быть ни разу перезагружен после появления окна WannaCry. Если это произошло, то утилита не поможет.
Штатные меры, которые не были использованы
Протокол SMBv1 может быть выключен полностью во всех сетях, где нет ОС младше Windows Vista и устаревших принтеров.
Как минимум, возможен переход на Direct SMB даже в случае Windows 2000 / XP / 2003, что уже упростит работу и снизит потенциальный attack surface.
Выключить SMBv1 можно и через PowerShell:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
И через реестр:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
, параметр SMB1
типа DWORD = 0
Можно также удалить сам сервис, отвечающий за SMBv1 (да, за него лично отвечает отдельный от SMBv2 сервис):
sc.exe config lanmanworkstation depend=bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start=disabled
Все указанные методы не приведут к потере функционала передачи файлов поверх сети – они лишь отключат супер-древний (34 года ему) вариант протокола SMB.
Действия на современных ОС
Если у вас Windows Server 2012 R2 / Windows 8.1 / старше, то дело ещё проще – вы можете целиком удалить компонент “старые возможности LAN Manager”, в который входит сервис Computer Browser и SMBv1. Это делается штатно, через удаление компонентов ОС.
Действия на устаревших ОС
Microsoft уже не поддерживает ОС линейки NT 5.x – Windows Server 2003 и Windows XP. Однако для такого случая выпущены патчи для Windows Server 2003, Windows XP SP2 и SP3.
Предотвращение подобных проблем как класса
Можно также, в случае отсутствия необходимости открывать кому-то снаружи доступ к файлам на локальной системе, отключить на сетевом интерфейсе привязку к сервису File and Printer sharing, просто сняв галку:
(кликните для увеличения до 363 px на 469 px)Ruslan V. Karmanovrk@atraining.ruУчебный центр Advanced Traininginfo@atraining.ruhttps://www.atraining.ru/
Ну или вообще удалить этот сервис, если нет задачи предоставлять доступ к ресурсам данной системы по протоколу SMB (обычно для домашних компьютеров это самый практичный выход).
Хочу детальнее разобраться в этом вопросе
Желание разово и хорошо прояснить для себя функционирование одного из основных LAN-протоколов – весьма правильное. SMB не рассматривается в упрощённых авторизованных курсах Microsoft, но мы на данную тему проводим вебинар по детальному изучению протокола SMB, на котором можно будет разобраться во всех тонкостях – от SMBv1 до современного SMB 3.1.1. Для обладателей нашей клубной карты – подписки Knowledge Assurance – посещение этого вебинара бесплатно.
Вопросы
Большой вопрос, почему всё это не было сделано на данный момент в сетях, подвергшихся заражению (их список только увеличивается).
Ещё больший вопрос – как за 2 месяца корпоративные системы, обладающие букетом возможностей обновления – от Windows Update и WSUS до Microsoft System Center с его ConfMgr – не установили патч, закрывающий критическую уязвимость включённого по умолчанию протокола. Какая квалификация у персонала, который это администрирует, у архитекторов, которые делали и подписывали дизайн сети с такой системой управления обновлениями, у безопасников, которые должны отслеживать текущую ситуацию с используемыми компонентами и их безопасностью.
Самый большой вопрос – как уязвимость в протоколе прожила 30 с лишним лет, хотя исходник был и у IBM, и у Microsoft. Вроде как у этих фирм коллективы тестировщиков и разработчиков разные. Исходный код SMBv1 был отдан IBM в опенсорсный проект Samba и прошёл аудит – и там тоже находят и тоже в марте 2017 года оставшиеся с тех же лет уязвимости. То есть вся эта уйма людей, адресно занятых аудитом, что со стороны корпораций США, что со стороны “американского сертифицированного открытого ПО” – все они удивительно синхронно просмотрели одни и те же древние уязвимости в SMBv1. Товарищ Сноуден имеет на этот счёт весьма закономерные вопросы и заготовленные ответы – которые после официального заявления президента фирмы Microsoft, в котором он в явном виде указывает на причину происходящего, выглядят ещё более удручающе.
Впрочем, все эти вопросы – риторические.