В частности, обсуждался вопрос: можно ли использовать высокую скорость распространения червей для борьбы с другими вредоносными программами.
Когда происходит атака с помощью червя, вы неожиданно сталкиваетесь с противником, который может быстро перемещаться и запускаться со все возрастающего числа машин. Распространение червя очень трудно остановить.
Привлекательная мысль, бороться с огнем при помощи огня – запускать античервя для остановки червя. Наиболее естественный способ сделать это, поместить античервя в очередное обновление, закрывающее соответствующую дыру в системе безопасности.
Однако надо помнить, что даже если вы сразу узнали, какие уязвимости использует червь, и как предотвратить их использование, как вы успеете изготовить античервя за то время, в которое это еще целесообразно делать? Как вы сможете опередить червя (Blaster достиг пика своего распространения в течение, примерно, 6 часов; SQL Slammer достиг такой скорости буквально за несколько минут; Witty тоже развил такую скорость в течение считанных минут)?
Также необходимо помнить и о некоторых этических моментах. Как вы предотвратите распространение античервя за пределы зоны вашей ответственности? Какие вы дадите гарантии того, что обновление действительно работает и червь остановлен? Как вы остановите античервя?
Хосе Назарио придерживается того мнения, что античерви – малоэффективное средство для борьбы с настоящими червями. Nachi или Welchia не смогли остановить быстрого распространения червя Blaster.
Он считает, что вы можете сами победить червя. Вам принадлежит сеть, вам принадлежат компьютеры этой сети. У вас есть законный непосредственный доступ ко всему. Как только вы засекли червя, вы можете выполнить ряд специальных действий для того, чтобы остановить распространение червя, используя правила файервола, контрольные списки доступа маршрутизатора или даже виртуальной локальной сети (VLAN). Также вы можете использовать агентов для установки обновлений, отключать службы или сразу же изолировать зараженные компьютеры.
Такой подход удовлетворяет требованиям, которые были сформулированы выше: вы не выходите за границы зоны вашей ответственности, контролируете установку обновлений, вовремя прекращаете деятельность по блокировке червя, когда видите, что он изолирован или уничтожен.
Может показаться, что автоматическая установка обновлений проигрывает античервям по некоторым показателям. Во-первых, по пропускной способности. Если у вас 100 (а может и 500) миллионов пользователей Windows, желающих установить 200-мегабайтный пакет обновлений, какая пропускная способность должна у вас быть? И сколько часов (дней? недель?) вам нужно все их обновлять? Античервь может использовать преимущества пользовательского канала.
На самом деле проведение обновлений сейчас достаточно эффективно. И Microsoft, и Apple, и многие крупные поставщики антивирусного ПО используют для проведения обновлений географически и топологически распределенные центры. Поэтому все не так уж страшно, как может показаться из таких приблизительных оценок.
Кроме того, существует и вопрос времени. Загрузка 200-мегабайтного файла означает быть в сети и подвергаться угрозе в течение многих минут (или часов). Что, если в это время на компьютер попытается проникнуть червь?
Эффективное обновление может быть распространено в течение нескольких часов или дней. За всего лишь одним исключением (червь Witty), ни один античервь не может быть изготовлен и выпущен так быстро. Время между появлением червя и раскрытием уязвимости, которую червь использует, в среднем, составляет примерно 4 недели.
Другая тема, затронутая в интервью, касалась современных способов борьбы с червями. Windows XP-SP2 представила поддержку небезызвестного NX-бита, имеющегося в современных процессорах. Вот что говорят их производители:
Бит Отмены Выполнения Intel (Execute Disable Bit, EDB) "может помочь предотвратить заражение вирусами и червями, которые используют переполнение буфера. Таким образом, в целом, повышает безопасность системы."
Улучшенная Защита от Вирусов AMD (Enchanced Virus Protection, EVP) "является превентивной мерой, способствующей быстрой локализации вируса и его уничтожению из системной памяти."
Следует ли производителям программного обеспечения обратить пристальное внимание на использование NX-бита и такие методы, как рандомизация адресов и смещений, как например, StackGap OpenBSD?
Будучи убежденным сторонником многоуровневых систем безопасности Хосе Назарио полагает, в частности, что на нижнем уровне защита системы должна обеспечиваться NX-битом, рандомизированными адресами стека и т.д. Некоторые из этих методов отлично справляются с простыми атаками, а будучи используемыми в совокупности, способны отразить и более сложные атаки.
Так же не следует забывать про такие вещи, как невыполняемый стек из второго пакета обновлений Windows XP. Некоторое ПО перестает работать после установки SP2, вот почему люди так медленно его внедряют. Прозрачное для понимания ПО - очень сложная штука, поэтому нельзя предусмотреть всех этих неувязок. Некоторые программы начинают сбоить, даже если вы немного поменяли систему. Однако, использование стека с запретом выполнения является одним из ключевых моментов, помогающих справиться с широким диапазоном атак.
Существует некоторое число атак, от которых не может спасти даже невыполняемый стек, в частности, атаки типа "format string". Внедряя различные способы защиты, включая рандомизацию памяти и дыры в адресном пространстве, вы можете справиться и с атаками такого типа.
Теперь вспомните, что многие черви для атаки используют переполнение буфера. Это медленно, но эффективно. Если у червя есть немного адресного пространства для проверки или подход для раскрытия способа рандомизации стека (например, утечка информации о начальном значении генератора случайных чисел, вроде значения удаленных часов), то он опять-таки сможет воспользоваться этой уязвимостью для проникновения и распространения.
Кроме того, применение таких способов защиты может чрезвычайно затруднить работу отладочных и диагностических средств, так что вам надо быть уверенными в том, что все средства допускают эти способы. Когда у вас миллионы строк кода и тысячи приложений, от которых зависят многие люди и компании, вы не можете легко проделать такие изменения. OpenBSD проделала изменения постепенно, контролируя процесс, но на это им потребовалось около года. Для системы типа Windows внесение изменений потребует гораздо больше объединенных усилий.
Одной из интересных разработок последних лет стала концепция принудительного ограничения частоты установления сетевых соединений, разработанная в лаборатории компании Hewlett-Packard в Великобритании. Хотя из-за этой штуки и перестает работать nmap в Windows XP SP2, но зато снижается эффективность распространения червей за счет запрета сканирования портов и частых попыток установить соединение. Черви могут распространяться, но значительно медленнее. Опять мы видим, как еще одно решение в области безопасности изменяет ситуацию к лучшему, но не является полным решением проблемы.
Эти механизмы остановят широкий класс червей, использующих уязвимости для выполнения произвольного кода. Но они не смогут противостоять таким вещам, как атаки с подбором пароля или трояны. В этом случае может помочь выполнение подписанного кода, но оно зависит от человека, принимающего решение, насколько он осведомлен обо всех возможностях выбора, и насколько полной и правильной информацией он располагает. Не всегда конечно, но и в этом случае черви имеют возможности для распространения.
Для своевременного реагирования на проникновение червя подойдет любая сеть, имеющая достаточное количество специальных средств контроля. Среди этих средств могут быть управляемые коммутаторы, поддерживающие уровень IP или контрольные списки доступа VLAN, агенты, закрывающие порт в случае возникновения какого-то вредоносного события (например, было распознано переполнение буфера) и т.д. Можно даже везде поставить специальные модули-файерволы. Главное, что надо запомнить - вредоносные события не всегда приходят извне; черви могут появляться и изнутри.
Это как подводная лодка с перемычками. У вас есть внешняя обшивка, предохраняющая от воды, а так же несколько внутренних дверей, которые в случае утечки могут изолировать поврежденный отсек. Вам надо изолировать, по возможности, тот участок сети, в котором возник червь.
В некоторых случаях, обнаружить червя можно по ненормальному количеству трафика, им порождаемого, например, SQL Slammer. Во многих других случаях, однако, происходят каскадные изменения поведения сети. Все большее число узлов начинает вести себя одинаково: сканирует, атакует... Даже если они не ведут себя агрессивно, все равно такое изменение в поведении заметно.
Обычно червь проявляется не аномально высоким уровнем трафика, а изменением поведения узлов сети. Для проникновения большинство червей используют одинаковый набор методов. Некоторые сетевые червей берут случайный IP-адрес и, начиная с него, сканируют сеть. Многие новые черви используют технику, при которой они берут адреса в локальной (для червя) зоне и случайный адрес, с которого начинают сканирование. Некоторые черви (например, SQL Slammer и Witty) просто пробуют случайный адрес.
Под случайным подразумевается генератор псевдослучайных чисел, в котором, зачастую, в качестве начального значения используется локальное системное время, идентификатор процесса и т.д. Это далеко не случайные числа (см. Статью "Toward Understanding Distributed Blackhole Placement" в формате PDF), но их вполне достаточно для распространения большинства червей.
Многие черви уровня приложений, например, черви, использующие обмен мгновенными сообщениями, и черви, осуществляющие массовую рассылку электронных писем, часто просто используют адреса машин, взятые из списка контактов. Это помогает им в их деятельности.
Чтобы избежать попадания на те же машины или для заражения только локальной сети и ее узлов, применяются такие стратегии: использование списков зараженных машин, хэширование и распределенные хэш-таблицы. Одним из факторов успеха существования червей является то, что они пытаются попасть на некоторый узел сети из разных мест. Это дает им возможность обойти файерволы и другие механизмы, обеспечивающие безопасность.
К червю сложно применить понятие "невидимка" из-за способа его распространения и того, что все новые жертвы начинают новые атаки. Однако существуют некоторые простые способы для червя стать менее заметным. Черви вроде RBot и NeseBot распространились очень широко, прежде чем их вычислили, поскольку скорость их распространения была относительно низкой (по сравнению с червями Nimda и Blaster), и они использовали различные способы проникновения. Трудно выследить червя за работой, если причины его появления остаются до конца невыясненными. К тому времени, когда это семейство червей было обнаружено, черви распространились уже на тысячи компьютеров.
Некоторые черви создаются с целью создания сетей-зомби для запуска последующих атак или рассылки спама. Поскольку они зачастую атакуют машины только из определенного диапазона IP-адресов, то не получают широкого распространения и в итоге... остаются необнаруженными.