Червь Blaster и патчи, которые ставили «когда-нибудь»
Blaster прошёлся по непропатченным Windows-сетям в августе 2003. Рассказываем, как это выглядело изнутри, почему спас не антивирус, а патч и сегментация, и какой регламент мы завели.
червь Blaster (MSBlast) кладёт непропатченные Windows-сети, август 2003
На прошлой неделе нам звонили чаще обычного, и почти всегда с одной и той же картинкой: у людей ни с того ни с сего выскакивает окошко про то, что система сейчас перезагрузится, идёт обратный отсчёт с шестидесяти секунд, и машина уходит в ребут. Через пару минут - снова. Работать невозможно, документ не досохранить, 1С не закрыть нормально. Сначала грешили на кривое обновление, потом на железо, а на деле это был червь. Его к тому моменту уже называли Blaster, он же MSBlast, и он к середине августа положил изрядную часть Windows-сетей, до которых дотянулся.
Что важно понять про эту заразу: она не про антивирус и не про то, что кто-то открыл не то письмо. Blaster лез не через почту и не через флешку. Он использовал дыру в самой Windows - в службе, которая слушает сеть и отвечает за удалённые вызовы (это называется DCOM RPC, если по буквам). Дыра была такая, что заражённая машина могла достучаться до соседней прямо по сети, без единого клика со стороны жертвы. Никто ничего не запускал. Просто у тебя есть уязвимая Windows, она торчит в сеть - и через какое-то время к ней приходят.
Самое неприятное тут - как оно расползается. Одна заражённая машина начинает долбиться по всем адресам вокруг, ищет такие же непропатченные системы и лезет в них. Внутри одной плоской сети, где всё в одном сегменте и все видят всех, это как чихнуть в набитом лифте: пары минут хватает, чтобы легло всё, что можно было заразить. У пары контор, куда мы приехали, картина была именно такая - зараза гуляла по офису сама, от машины к машине, и добивать её по одной было бессмысленно, пока рядом стоят ещё десять таких же и снова плюются пакетами.
Теперь про то, чего червь на самом деле стоил. Обиднее всего, что заплатка от Microsoft вышла за месяц с лишним до эпидемии. Дыру закрыли ещё в июле, патч лежал в открытом доступе, ставился он спокойно. То есть по-хорошему всё это можно было не ловить вообще. Но у большинства обновления жили в режиме «поставим когда-нибудь»: то не до того, то боятся, что патч чего-нибудь сломает, то просто некому этим заниматься. И вот это «когда-нибудь» аккуратно совпало с моментом, когда червь пошёл гулять. Люди годами относились к обновлениям как к назойливому окошку, которое надо закрыть, - и разом получили счёт за такое отношение.
Что реально помогло, когда мы гасили это по офисам. Не антивирус - он у половины стоял и честно ничего не поймал, потому что ловить, по сути, было нечего: файла-вредителя, который можно опознать по сигнатуре, тут почти нет, есть сетевая атака на живую службу. Помогли три простые вещи, и все три - не про магию.
- Первое: временно закрыть на периметре и на машинах те самые сетевые порты, через которые червь ходит, чтобы он перестал лезть от машины к машине.
- Второе: разбить плоскую сеть - хотя бы грубо, отделить то, что можно, чтобы зараза из одного угла не доставала до другого. Это и есть сегментация: не одна большая комната, где все дышат друг на друга, а несколько с закрытыми дверьми.
- Третье, и главное, - поставить наконец тот июльский патч на всё, до чего дотягиваемся, и тогда машина просто перестаёт быть уязвимой, и червю не за что зацепиться.
Порядок тут был именно такой: сперва перекрыть распространение, потом чистить и патчить в изоляции, а не наоборот. Если начать лечить одну машину, пока она стоит в общей сети, её снова заразят соседи быстрее, чем ты успеешь её перезагрузить. Мы это на первом же объекте прочувствовали и дальше уже не наступали на грабли.
Из этой недели мы для себя вынесли не «поставьте антивирус получше», а вещь скучнее и полезнее. Обновления - это не когда захотелось, а по расписанию. После Blaster мы завели простой регламент по тем сетям, что держим на сопровождении: раз в неделю смотрим, какие заплатки безопасности вышли; критичные ставим не «когда-нибудь», а в ближайшее окно, но сперва на одну-две тестовые машины, чтобы убедиться, что ничего не отвалилось, и только потом на остальные. Плюс держим в голове карту, что и куда в сети смотрит, - чтобы в следующий раз не выяснять географию офиса на бегу под перезагружающиеся компьютеры.
Отдельно проговариваем это с новыми заказчиками, когда смотрим их инфраструктуру на входе. Обычно всё упирается не в деньги: патч бесплатный, порты закрываются за вечер. Упирается в то, что до первой такой недели обновления и разбиение сети кажутся занудством, на которое жалко времени, - ровно как с бэкапами, про которые мы уже писали в феврале. Blaster в этом смысле оказался дорогим, но доходчивым учителем: он ничего нового про безопасность не сказал, просто выставил счёт всем, кто откладывал очевидное. Мы предпочли бы усвоить это подешевле, но вышло как вышло.
- 1С на файловой шаре, и почему она тормозит к пятнице · 11 февраля 2003