Storm Worm: 4 000 писем про «шторм» за ночь и разбор полётов на почтовом шлюзе
Червь Storm Worm рассылается через почту под темой про ураган в Европе. Разбираем всплеск на шлюзе, правим порог RBL и добавляем проверку MIME-типов вложений.
Червь Storm Worm в январе 2007 формирует крупный ботнет, распространяясь через почтовые вложения с темой про ураган в Европе
В пятницу вечером мы отправились домой с чистой совестью. В понедельник утром открыли очередь карантина на почтовом шлюзе и обнаружили там несколько тысяч заблокированных писем. Тема у большинства из них крутилась вокруг «шторма в Европе», «230 погибших» и прочих вариаций на тему реального январского урагана Kyrill, который как раз тогда прошёлся по Западной Европе. Внутри каждого письма - вложение с именем вроде Full Clip.exe или Video.exe. Это был Storm Worm.
Хорошая новость: шлюз заблокировал большую часть. Плохая: стало понятно, что правила настроены недостаточно жёстко, и несколько писем всё же прошло к пользователям до того, как мы успели отреагировать.
Что произошло на шлюзе
У нас на шлюзах стоит Postfix + SpamAssassin с несколькими RBL. Схема, которую мы описывали раньше, отработала не с первого удара. Storm Worm рассылался с огромного числа IP-адресов - часть из них в пятницу ещё не попала в блок-листы, часть появилась там только к утру субботы. В итоге первая волна писем шла через адреса, которые SpamAssassin ещё не считал подозрительными.
Порог для RBL у нас был выставлен консервативно: нужно было попасть сразу в несколько списков, чтобы письмо получило высокий score. Одиночное попадание в SORBS или CBL давало меньше очков, чем требовалось для автоматической блокировки. Для обычного спама это оправданно - снижает ложные срабатывания. Для массовой рассылки с ботнета, где тысячи новых IP появляются одновременно, такая настройка слишком мягкая.
Что поправили
Разбирались весь понедельник. По итогу сделали два изменения.
Первое - порог RBL. Снизили минимальный score для одиночного попадания в список. Теперь письмо с IP из CBL или SORBS попадает под подозрение уже само по себе, без накопления очков от других признаков. Да, это немного увеличивает риск ложных срабатываний - но мы живём с мониторингом карантина и можем быстро вытащить нужное письмо. Лучше лишний раз проверить очередь, чем пропустить .exe к пользователю.
Второе - MIME-проверка вложений прямо на шлюзе. SpamAssassin умеет смотреть на MIME-тип, но у нас это не было настроено агрессивно. Добавили правило: письмо с вложением, у которого Content-Type: application/octet-stream или application/x-msdownload, автоматически идёт в карантин вне зависимости от score. Плюс - проверка расширения из имени файла: .exe, .scr, .pif, .bat и .com внутри архивов первого уровня тоже блокируются.
Это не ракетная наука - мы обсуждали похожие меры ещё после Nyxem в прошлом году. Но тогда ограничились только вложениями без архивов. Storm Worm использовал именно .exe напрямую, и правило бы сработало. Решили наконец дожать.
Что с пользователями
Несколько писем до пользователей дошло - это факт. Мы прошлись по логам и выявили ящики, куда они попали. Сработал антивирус на рабочих станциях - вложения, которые успели открыть, были заблокированы при запуске. Ни одной реальной инсталляции мы не нашли. Повезло, и не только нам.
Тем не менее мы разослали клиентам короткое уведомление: что произошло, что мы сделали, что делать если пользователь всё же что-то открыл. Никакой паники, просто информация. По нашему опыту, молчание в таких случаях хуже, чем честный разбор ситуации.
Что интересно в самом черве
Storm Worm - это не просто массовая рассылка. Он строит ботнет с peer-to-peer архитектурой на основе Overnet/eDonkey-подобного протокола. Зараженные машины не подключаются к единому командному серверу - они общаются децентрализованно. Это делает его устойчивее к попыткам заблокировать C&C-адрес: нет единой точки отказа, нет одного IP который можно внести в блок-лист.
Для нас как операторов шлюзов это означает: традиционные блок-листы по IP командных серверов здесь не работают. Фильтрация нужна на входе - по репутации отправителя и по содержимому вложений - а не на этапе попытки связи с центром управления.
Масштаб рассылки, судя по тому что мы видели на шлюзах, весьма серьёзный. Несколько тысяч писем за уикенд только в наш адрес - это говорит о большом числе уже скомпрометированных машин, которые занимаются рассылкой. Среди них наверняка есть домашние компьютеры клиентов или их сотрудников, которые мы не контролируем.
В рамках сопровождения инфраструктуры мы теперь добавили мониторинг аномалий по входящему потоку писем - резкий рост числа вложений одного типа или тем одного паттерна должен поднимать алерт дежурному. Это то, чего не хватило нам в пятницу: шлюз справился, но мы узнали об атаке только в понедельник, а не в пятницу вечером.
Правила обновили, алерты настроены. Следующую волну - а она будет, Storm Worm уже мутирует по разным данным - встретим не в понедельник утром.