ADG Оставить заявку
Блог Информационная безопасность 4 мин чтения

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 уже мутирует по разным данным - встретим не в понедельник утром.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.