Экстренное торможение в борьбе против вирусов

4 июль, 2004 - 23:00Сергей Митилино
До последнего времени все внимание антивирусной индустрии было приковано к двум ключевым вопросам: как вовремя подготовить обновление для своих продуктов и как побыстрее доставить его клиентам. Мэтт Уильямсон, Джонатан Гриффин (Jonathan Griffin), Энди Норман (Andy Norman) и Джейми Твикросс (Jamie Twycross) предложили иной подход, а именно: использование механизма замедления распространения компьютерного вируса.

Некоторые представители класса "червей", а именно Code Red, Nimda, SQL Slammer и иже с ними, отличались высокой скоростью заражения компьютеров. В некоторых случаях, по имеющимся данным, инфицированный узел демонстрировал частоты инициализации соединений с другими узлами на уровне 850 попыток в секунду. При этом среднее время, необходимое поставщику антивирусного ПО для подготовки и рассылки патча с новой сигнатурой, -- около 2 часов. К моменту, когда зараженный компьютер будет идентифицирован и "обезврежен", базирующийся на нем экземпляр "червя" успеет породить впечатляющую популяцию.

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

Уильямсон с коллегами разработал методику, получившую название virus-throttling. Определив искусственный лимит на частоту установления соединений с новыми узлами, можно препятствовать эпидемии, не влияя на работу обычных приложений. Ведь даже активно занимающийся серфингом пользователь инициирует лишь несколько соединений в секунду (учитывая мультипотоковость современных броузеров). А если верить данным, приведенным в одной из статей Уильямсона, типичный трафик демонстрирует частоту соединений с новыми узлами на уровне 0,5--1 попытка в секунду.

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

Ограничивать частоту установления соединений необходимо очень осторожно, добиваясь максимального результата при минимальных потерях. Чтобы узнать, является ли запрашиваемое соединение новым, т. е. адресованным новому узлу, нужно хранить историю последних подключений. Длительность истории и количество свежих записей в ней определяют чувствительность фильтра.

Но зачастую вопрос состоит не в том, как вычислить потенциально опасное соединение, а в том, что с ним делать. Просто отбросить непозволительно, поскольку это приведет к потере данных или ошибкам вроде Connection Timed Out. Соединения, которые попали в число превысивших допустимый частотный порог, помещаются в отдельную очередь. Вернее сказать, в очереди оказывается, соб-ственно, запрашиваемый узел, и любое подключение, чьей конечной точкой он является, помещается во временный кэш. Как только период задержки истекает, запрещенный узел помечается как доступный и все задержанные запросы передаются на обработку. Также любые последующие соединения с этим узлом не являются предметом рассмотрения для алгоритма до тех пор, пока он не будет стерт из истории.

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

Чтобы подкрепить теоретическую базу практическим опытом, ученые в течение пяти месяцев собирали данные о собственном серфинге в Internet. Затем они несколько раз пропустили их через фильтр, варьируя его параметры. Выяснилось, что при расширении истории соединений до пяти эффект "новых узлов" почти не оказывает влияния на работу компьютера. В такой ситуации количество подключений с отсутствующими в разрешительном списке узлами падает ниже 10%.

Была измерена и частота установления соединений с новыми узлами. В среднем она равнялась 1--2 cps (connections per second -- подключений в секунду) с пиковыми показателями до 4 cps в рабочие часы. Исследователи изменяли допустимую частоту, и ее приемлемое значение оказалось на уровне 1--2 cps. При этих оптимальных настройках менее 1% от общего количества запросов система отложила, и для них была выставлена незначительная задержка. Забавно, но, согласно собранным статистическим данным, выявлена тенденция блокирования хостов рекламных компаний. Ведь именно реклама обычно является чужеродным элементом на типичной Web-странице и хранится на другом сервере.

Далее тщательно были изучены другие девять протоколов (помимо HTTP), использующих специфические порты. Это, наверное, самая интересная часть исследования. Семь из них имеют хорошую локализацию и при длине истории, равной пяти записям, демонстрируют резкое снижение количества соединений по новым адресам, но выпадают из общей схемы два -- это Windows naming (netbios) и file sharing. Даже при доведении количества записей в истории до 20 частота обращений к новым узлам оказалась чрезвычайно высокой (на уровне 40 и 90 cps соответст-венно).

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

Фильтр неплохо проявил себя на ПК, эксплуатировавшихся людьми, несомненно, высокообразованными, но не применяющими современных программ вроде Skype, Gnutella и Kazaa. Они не использовали даже ICQ и прочие Internet-пейджеры, которые поддерживают прямые соединения между компьютерами.

Более неприятной для разработчиков первого реального фильтра окажется попытка распространения технологии на серверы. Особенно если последние применяют push-методику доставки информации клиентам. Обеспеченные мощными каналами связи и работающие по принципу 24x7 узлы являются основными источниками инфекции в Internet. Оставьте без защиты хотя бы один сервер, и он заразит тысячи компьютеров и других серверов.

Фильтр также не способен противостоять "червю", который будет распространяться медленно и скрытно. Не обнаруживая себя на ПК пользователей, он сможет незаметно инфицировать большую часть Глобальной Сети и потом вполне легитимно с точки зрения технологии "торможения" провести в час X скоррелированную атаку на избранную цель или просто отформатировать винчестеры компьютеров-носителей.

Если кто-то вознамерится написать вирус, действующий по алгоритму Flash-"червя" ("И целого мира мало...") и изначально обладающий полной "картой In-ternet", т. е. списком уязвимых узлов, то фильтр окажет на него ничтожно слабое влияние. Первоначально предполагалось, что Flash worm должен поразить все доступные для него ПК в Internet за 15 секунд. Применив к нему ограничение на количество подключений к новым узлам на уровне 1 cps, Уильямсон в своей статье вывел новое время "захвата власти над миром" -- 100 секунд. Слишком быстро!

Хотя не стоит отчаиваться. Ведь даже реверсная методика торможения неплохо работает на реальных приложениях. А это несколько сложнее -- подойти к проблеме с другого конца. Речь идет о сетевых фильтрах, установленных на Web-серверах с целью пресечения DDOS-атак. Пару месяцев назад Network World провела тестирование так называемых rate-based IPS -- систем, ограничивающих доступ к серверу со стороны злонамеренных клиентов. Например, Attack Mitigator от Top Layer Networks способен отслеживать запросы, которые оставляют соединения открытыми. Как только их количество достигает заданной пользователем величины, все новые запросы от таких узлов начинают помещаться в кэш. После чего на обработку серверу передаются только завершенные подключения.

Другая испытанная система, IPS 4000, способна идентифицировать источники перегрузки ваших серверов и "затормозить" их запросы на некоторое время. Если за этот период в их поведении ничего не меняется, программа отдает "нарушителей" в руки пользователя-администратора.

Подводя итоги, можно констатировать, что идея ограничения частоты установления соединений приобретает популярность. В том или ином виде она будет полезна в борьбе и с Internet-"червями", и с организаторами массированных (DDOS) атак на Web-серверы. Также очевидно, что данная технология требует более детализированной проработки и даже после этого connection throttling не станет панацеей.