сравнительный анализ трех разновидностей червей
Сегодня использование злонамеренного кода типа вирусов, "червей" и "троянов" является одним из наиболее распространенных видов атак в Интернет. Все современные организации, использующие любые виды подключений к Интернет, должны быть готовы к отражению такого вида нападений.
Но начнем мы, пожалуй, с определений. При общих условиях, злонамеренный код описывается как любая несанкционированная пользователем активность, а более конкретные и специфические условия можно найти в технических описаниях.
Червь или саморазмножающийся вирус— это определенный вид злонамеренного кода, он отличается от остальных видов вирусов способностью самопроизвольного размножения /* imho не просто размножения, но экспансии на другие машины — прим. ред. */ без вмешательства пользователя. Традиционные вирусы требуют определенного взаимодействия с пользователем, будь-то запуск программы или загрузка какого-нибудь компонента с веб сайта, а вот черви способны к размножению вообще без каких-либо взаимодействий с пользователем или системой. Наиболее часто они используются для поиска хостов, на которых запущены уязвимые службы и для эксплуатации этих уязвимостей. Классические черви наиболее опасны тем, что не требуют никаких действий от пользователя, поэтому в случае удачной атаки, вирус будет очень быстро распространяться по Сети, при этом ему будут безразличны время и регион распространения. Но бывают и своеобразные «получерви», которые требуют некоторого вмешательства пользователя (первый запуск пришедшего, скажем, по почте, бинарника), но всю дальнейшую «работу» выполняют сами.
Обсуждение видов червей и стратегий их распространения продолжается уже в течение многих лет, со времен нашумевшего червя, написанного в 1988 году Робертом Моррисом младшим, но только за последние пару лет признано истинное значение действия таких вирусов в большинстве областей сетевой защиты и обнаружения вирусов. Настоящее признание черви получили после атаки вируса Code Red в июле 2001 года. Также, в дополнение к размножению, Code Red провел DDoS-атаку на один из хостов, имеющий отношение к Белому Дому. Со времени атаки Code Red, разработка стратегий инфицирования дошла до уровня, когда в январе 2003 года червь W32.SQLExp достиг всемирного распространения гораздо быстрее, чем его смогло бы остановить любое человеческое вмешательство.
Одним из последствий действия этого вируса стало опубликование огромного количества исследований и проведение анализа различных уязвимостей, помогающих специалистам определять их защитную политику. При рассмотрении этих исследований можно выделить несколько особенностей. В большинстве проводимых исследований подразумевалось, что распространение вируса будет проходить глобально в Интернет, и практически не рассматривались варианты активности вируса в изолированных частных секторах Интернет, к примеру, в корпоративных сетях. Это упущение может быть критическим при глобальных угрозах заражения и попытках предусмотреть сценарии защиты от вирусного вторжения.
Да что SQLExp, недавнишний Mydoom вообще до смерти напугал обывателей, уверовавших в неминуемую «гибель Интернета» в результате деятельности этой зверушки.
Интересны и исследования на тему как ведет себя вирус в изолированных, частных секторах Internet. Известно, что в большинстве организаций нет достаточного количества публичных IP-адресов, и поэтому в них используются частные сети (к примеру: 10.Х.Х.Х, 172.16.Х.Х, 192.168.Х.Х). Поскольку такие компьютеры напрямую не подключены к Интернет, то заражение червями происходит из дискредитированных внутренних хостов, и поэтому распространение вирусов в частных сетях может быть достаточно серьезной проблемой. Такая же проблема может возникнуть, если в организации есть публичные IP-адреса, но отсутствует должная межсетевая защита. Ранее большинство людей считало, что у них достаточно развитая межсетевая защита и все хосты тоже достаточно защищены, но, как показали вирусы W32.SQLExp и Blaster, это было заблуждением.
что влияет на скорость распространения червей?
Многие исследователи интересовались факторами распространения вирусов, пытаясь выделить самые значимые из них и определить стратегии, которые вероятно будут использоваться авторами червей в будущем. Именно это и попытался описать Том Вогт в статье "Моделирование и оптимизация алгоритмов распространения червей". Вогт смоделировал сеть, чтобы проверить влияние различных стратегий на суммарную скорость распространения вируса. Исходя их этих тестов, Вогт выделил несколько факторов, имеющих наибольшее влияние на смоделированное распространение вируса.
Выборка по адресу:метод адресной выборки имеет огромное значение в скорости распространения вируса по Интернет. Различные методы могут включать полностью случайную выборку, случайную выборку с локальным предпочтением и последовательный опрос.
Метод поточной обработки:при одиночном потоке сканирования результатов, скорость размножения вируса гораздо более низкая, чем при многократном.
Метод предварительного сканирования:более эффективным способом является выполнение предварительного сканирования, перед пересылкой данных на хост, для определения, открыт ли на этом хосте требуемый порт.
Метод сканирования или инфицирования:заключается в использовании эффективных подпрограмм для уменьшения времени ожидания при инфицировании и сканировании результатов.
Вогт в своей статье описывает воздействие перечисленных факторов при учете глобального распространения вируса, но в тоже время мало уделяет внимания воздействию этих факторов в замкнутых, изолированных сетях, являющихся составной частью глобальных сетей.
для чего нужен анализ старых червей?
Черви, начиная с самого первого Code Red, дают нам отличную возможность исследования различных стратегий и уязвимостей, необходимую для создания удачного вируса. Хотя эти вирусы использовали различные стратегии, с различными скоростями распространения, все они достигли определенной степени успеха, часто используя малейшие уязвимости для проникновения через существующие системы защиты. Анализ действия этих вирусов и проверка существующих методов противодействия позволит организациям защитить себя от подобных нападений в будущем.
какие виды червей мы будем анализировать?
Выбор вирусов для проведения данного анализа был не легок, но в итоге мы остановились на червях, которые воздействовуют на серверные системы Windows, главным образом потому, что эти операционные системы очень распространены. И, опять же, очевиден факт, что именно Windows-системы подвергались наибольшему количеству атак со стороны "червей". Еще раз подчеркнем, речь пойдет только о «серверных» червях. End User’ские черви, распространяющиеся через почту, остяются за рамками нашего исследования.
семейство вирусов Code Red I
Эти вирусы эксплуатировали уязвимость в Microsoft IIS, позволяющую выполнение случайного кода с привилегиями, под которыми работает IIS сервер (обычно LocalSystem).
Уязвимость, эксплуатируемая вирусами подобными Code Red, происходит при обработке *.ide файлов, используемых службами индексации (Indexing Services). Переполнение происходит при обработке запроса (чаще URL-encoded, метод GET).
Сам червь начал свое распространение 12 июля 2001 года, но даже сейчас, спустя два с половиной года, он и его варианты остаются в Интернет достаточно сильной проблемой, т.к зараженные системы до сих пор пытаются размножать этот вирус. Кроме откровенно плохо администрируемых систем, с которыми все понятно, другой проблемой являются хосты, установленные с оригинальных носителей и инфицированные прежде, чем к ним могут быть загружены и применены патчи. Это достаточно серьезная проблема для домашних пользователей, но она не должна игнорироваться и администраторами, которые могут быстро переустановить систему, предоставляющую IIS-службы.
В Code Red I был недостаток в алгоритме адресной выборки, который был вскоре устранен во второй версии «червя» (Code Red version 2). Третий вирус Code Red II сильно отличался от оригинала и унаследовал от него только название. В данной статье не будет рассмотрен Code Red II, мы ограничимся анализом вирусов Code Red version 1 и 2.
Есть один интересный факт относительно действия семейства вирусов Code Red I — они существуют исключительно в памяти компьютера и на диск не записывается никакой информации, поэтому при перезагрузке инфекция пропадала из системы до следующиего заражения.
W32.SQLExp (также известный как SQL Slammer или SQL Sapphire)
Этот червь использовал для своего распространения одиночные UDP-датаграммы. Использование протокола UDP гарантировало, что червь мог распространяться по сети с огромной скоростью, превосходящей все известные до этого вирусы.
Вирус распространялся на системах, использующих Microsoft SQL Server. Он выполнял переполнение буфера в службе SQL Server Resolution Service, работающей на порте 1434 UDP. Переполнение могло запуститься с помощью одной UDP-датаграммы. Это означает, что единственным способом предохраниться от вируса, является удаление "преступного" пакета до того, как он достигнет атакуемой службы.
Посылая одиночную UDP-датаграмму на случайным образом выбранный хост, W32.SQLExp не был ограничен необходимостью ждать ответ на запрос сокета для продолжения своего распространения, вместо этого функция sendto() возвращала результат сразу после помещения данных в исходящую очередь. Как показали исследования Вогта, существенную часть времени вирус тратил на ожидание ответа от уязвимых или несуществующих хостов, а при использовании протокола UDP этот недостаток исчезал.
Различные исследования глобальной скорости распространения вируса (как теоретической, так и реальной), показали, что наибольшая часть уязвимых систем была заражена в течение первых 15 минут размножения вируса.
W32.Blaster
Целью нападения вируса W32.Blaster был DCOM (распределенная модель компонентных объектов) с помощью RPC. Напомним, что RPC (удаленный вызов процедур) — это средство передачи сообщений, которое позволяет распределенному приложению вызывать сервис различных компьютеров в сети; обеспечивает процедурно-ориентированный подход в работе с сетью; применяется в распределенных объектных технологиях, таких как, DCOM, CORBA, Java RMI). DCOM дает возможность программному обеспечению на удаленных системах запрашивать компоненты с хоста, в то же время не выполняя эти компоненты. RPC используется многими средствами управления системой в Windows-сетях и по умолчанию этот сервис установлен и запущен практически на всех системах Windows.
В августе 2003, была найдена уязвимость в DCOM, позволяющая перезаписывать стек деформированным пакетом. Ошибка происходит при обработке пути в network/file-системе для DCOM-запроса. Разработка эксплойта, устойчиво работающего на различных пакетах программ и версиях языков, занял некоторое время, но как только был готов универсальный эксплойт, появилась возможность для устойчивой работы вируса.
Сам червь включал в себя этот эксплойт, а для передачи вирусного кода на инфицированные системы, использовал другие средства, включая TFTP. По сравнению с вирусами Code Red и W32.SQLExp, W32.Blaster был очень простым, что было, с одной стороны, удивительно, с другой — очень эффективно.
собственно анализ
Итак, мы кратко познакомились с исследуемыми червями, теперь приступим к обещанному сравнительному анализу. Но для начала обсудим конфигурацию сети.
В нашей статье мы будем рассматривать сеть с выделенной DMZ (демилитаризованная зона), защищенной списками доступа (ACL) маршрутизатора. Во внутренней сети установлена межсетевая защита и используется сетевая и портовая трансляция адресов (NAT/PAT) в дополнение к использованию прокси-сервера для большого количества протоколов для выхода из внутренней сети в Интернет. На рис. 1 представлен вид базовой топологии сети.
Рисунок 1. Базовая топология сети
.
анализ Code Red v1 и v2
Вирусы Code Red первой и второй версий использовали подпрограмму случайной выборки адресов, хотя в первой версии был недостаток, заключающийся в том, что при каждой активизации вируса он пытался атаковать один и тот же список IP-адресов. Во второй версии червя этот недостаток был устранен и, следовательно, он мог поражать большее количество компьютеров, заражая хосты, пропущенные ранее первой версией.
Наблюдение за распространением пробных SYN-пакетов, посылаемых вирусом Code Red 2, показало нам скорость инфицирования сервера до 11 пакетов в секунду. Для нашего исследования мы предпримем случайную выборку адресов со скоростью 11 пакетов в секунду для каждого уникального адреса.
В нашем примере доступ к 80 порту извне был заблокирован ко всем системам в корпоративной сети, кроме веб-служб, расположенных в DMZ. Из всех серверов, поддерживающих веб-службы (мы предполагаем, что на них были установлены все патчи), уязвим только один хост. Также в DMZ имеется ряд других серверов (таких, как SQL-серверы, контроллеры доменов, мониторинговые системы), на которых был запущен уязвимый IIS, но благодаря граничной маршрутизации, они не были доступны из Интернет. Но даже при том, что эти серверы не доступны из Интернет, они все же уязвимы в случае проникновения червя через граничный маршрутизатор.
Сразу после атаки на уязвимый сервер и его заражения, запускается процедура сканирования. Зараженная машина случайный образом выбирает список IP-адресов и пытается соединиться с ними со средней скоростью 11 пакетов в секунду. Интервалом адресов для этого отбора является весь Интернет, и шанс, что этот хост заразит другие хосты в той же сети примерно 1 к 4.2 миллиардам. Для покрытия всего адресного интервала одним хостом, потребовалось бы как минимум 12 лет. Если подразумевать, что больше не существует уязвимых хостов, то скорость распространения вируса в локальной сети будет очень мала.
Для вычисления распространения вируса при случайной выборке адресов можно использовать следующую формулу:
AdressRange/(2 * VulnAddress * PropagationRate)
где:AdressRange— конечное адресное пространство, охваченное процедурой выборки; VulnAddress— количество уязвимых хостов в сети;PropagationRate— количество уязвимых хостов атакуемых зараженным компьютером в секунду.
В случае с вирусом Code Red v.2:
255*255*255*255/(2*100*11)
Использование такиго типа случайной выборки адресов, хотя и очень эффективно при глобальном распространении в Интернет, но абсолютно не действенно в локальной сети при проникновении вируса через межсетевую защиту. Очевидно, что вероятность заражения любого четырехбайтового IP-адреса одинакова для всего адресного пространства, но очень мала при заражении конкретного адреса или интервала адресов. Червь Code Red — это типичный пример вируса, созданного для глобального заражения, но не способного вызвать проблемы в локальной сети при проникновении вируса через граничный хост.
Для организаций, которые установили все возможные патчи на свои системы и правильно сконфигурировали фильтрацию в системах межсетевой защиты и граничных маршрутизаторах, Code Red и другие черви, в которых отсутствует оптимизируемый алгоритм распространения, не будут представлять серьезной угрозы, т.к исходящие соединения с Интернет из инфицированной системы распознавались бы системой прежде, чем вирус смог бы заразить внутренние хосты.
анализ W32.SQLExp
Червь W32.SQLExp является следующим поколением вирусов после Code Red, главное его преимущество заключается в скорости распространения. Как было сказано ранее, многие показатели указывают на то, что этот вирус может заразить все уязвимые компьютеры в Интернет менее чем за 20 минут. Это гораздо быстрее, чем скорость распространения вируса Code Red.
W32.SQLExp использует случайную адресную выборку, такую же, как и вирусы Code Red v.1 и v.2. Как было сказано в статье Тома Вогта "Моделирование и оптимизация алгоритмов распространения червей", это не самый лучший метод, но все таки он был эффективен.
Размер вируса — 404 байтов UDP + 30 Ethernet кадра = 434 байта.
В 100 мегабитной коммутируемой дуплексной сети при 80% использовании (скромный подсчет) W32.SQLExp может посылать 23,041 пакета в секунду. В случае гигабитной сети покрытие вирусом 4,2 миллиардов адресов заняло бы около 5 часов.
Используя ту же формулу, как и для вируса Code Red и принимая, что в сети 150 уязвимых хостов, получаем:
255*255*255*255/2*150*23,041
Т.е. в среднем проходит 612 секунд между получением доступа вирусом W32.SQLExp к защищенной сети через 100 мегабитную сеть и вторичным заражением. Очевидно, что как только будет заражен другой хост, данный интервал уменьшается вдвое.
анализ W32.Blaster
Вирус W32.Blaster имеет очень низкую скорость распространения и из-за этого многие подвергали сомнению возможную глобальную опасность этого вируса. Низкая скорость вируса Blaster особенно очевидна при сравнении со скоростью распространения W32.SQLExp.
Blaster использует способ размножения, заключающийся в выборе адреса близкого к адресу инфицированного хоста. Вирус генерирует случайное число по модулю 20, и если результат больше или равен 12, то происходит сканирование локальных адресов, если меньше 12, то выбирается случайная сеть для начала сканирования. После выбора исходной точки, вирус начинает последовательное сканирование, увеличивая каждый раз IP-адрес на единицу. Эта схема работает до перезапуска, после чего снова происходит генерация случайного числа по модулю 20.
В статье Тома Вогта отмечено, что последовательное сканирование чрезвычайно неэффективно при глобальном размножении червя. А вот в заражении хостов локальной сети Blaster «преуспел» больше всех описанных нами червей.
выводы
Черви постоянно развиваются, оптимизируя скорости своего распространения. Черви, эффективно работающие в глобальном Интернет, обычно очень плохо распространяются в локальной сети. И наоборот. Теперь можно ожидать создания гибридного вируса, который более или менее случайным образом выбирал бы сеть, а затем последовательно ее сканировал.
Дэниел Хансон, Бартек Костанеки, Ричард Джагодзинский, Джейсон Мельник, перевод с английского Securitylab.ru, перевод с русского на русский Alice D. Saemon.
Сетевые решения. Статья была опубликована в номере 01 за 2004 год в рубрике save ass…