08.01.2004

Сравнительный анализ трех разновидностей "червей"

"Черви" постоянно развиваются, оптимизируя скорости своего распространения. Сегодня существует две разновидности вирусов, потому что "черви" эффективно работающие в глобальном Интернет, обычно очень плохо распространяются в локальной сети. Поэтому, быстрее всего распространяемые Интернет "черви", например Code Red и SQL Slammer, являются гораздо менее эффективными при полной дискредитации локальной сети, чем вирусы отдающие преимущество локальной адресации, что было доказано вирусом W32.Blaster. Теперь возможно создание гибридного вируса, который случайным образом выбирал сеть, а затем последовательно её сканировал.

 
Дэниел Хансон, Бартек Костанеки, Ричард Джагодзинский, Джейсон Мельник,
 перевод Securitylab.ru (c)

Введение

Предпосылки

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

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

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

Обсуждение видов "червей" и стратегий их распространения продолжается уже в течения ряда лет, но в основном только за последние три года было признано истинное значение действия таких вирусов в большинстве областей сетевой защиты и обнаружения вирусов. Настоящее признание черви получили после атаки вируса Code Red в июле 2001 года. Также, в дополнение к размножению, Code Red выполнил DDos атаку на одном IP подключенном в Белом Доме. Со времени атаки вируса Code Red, разработка комплексных стратегий инфицирования дошла до уровня, когда в январе 2003 года червь W32.SQLExp достиг всемирного распространения гораздо быстрее, чем его смогло бы остановить любое человеческое вмешательство.

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

Значение того, как ведет себя вирус в изолированных, частных секторах Internet становиться важным, когда мы узнаем, что в большинстве организаций нет достаточного количества публичных IP адресов, и поэтому в них используются частные сети (к примеру: 10.Х.Х.Х, 172.16.Х.Х, 192.168.Х.Х). В таких сетях большинство подключенных к Интернет компьютеров используются в обход устройств трансляции сетевых адресов. Поскольку такие компьютеры напрямую не подключены к Интернет, то заражение "червями" происходит из дискредитированных внутренних хостов, и поэтому распространение вирусов в частных сетях может быть достаточно серьезной проблемой. Такая же проблема может возникнуть, если в организации есть публичные IP адреса, но отсутствует должная межсетевая защита. Ранее большинство людей считало, что у них была проведена межсетевая защита, а их хосты были достаточно защищены, но как показали вирусы W32.SQLExp и Blaster это было заблуждением.

Факторы, влияющие на распространение "червей"

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

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

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

Для чего нужен анализ старых "червей"?

Черви, начиная с самого первого Code Red, дают нам отличную возможность исследования различных стратегий и уязвимостей, необходимую для создания удачного вируса. В то время как каждый из вирусов использовал различные стратегии, с различными скоростями распространения, все они достигли реальной степени успеха, часто используя малейшие уязвимости для проникновения через существующие системы защиты. Анализ действия этих вирусов и проверка существующих защитных стратегий позволит организациям защитить себя от подобных нападений в будущем.

Какие виды "червей" мы будем анализировать.

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

Семейство вирусов Code Red I

Вирусы подобные Code Red атакуют порты узлов широко использующих открытые http службы. Эти вирусы эксплуатировали уязвимость в Microsoft IIS, позволяющую выполнение случайного кода с привилегиями под которыми, как правило, работает IIS сервер (обычно LocalSystem). 

Уязвимость, эксплуатируемая вирусами подобными Code Red, происходит при обработке *.ide файлов, используемых службами индексации (Indexing Services). Переполнение происходит при обработке запроса, обычно в форме URL закодированного 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)

Этот "червь", известный также под названиями 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 (удаленный вызов процедур - средство передачи сообщений, которое позволяет распределенному приложению вызывать сервис различных компьютеров в сети; обеспечивает процедурно-ориентированный подход в работе с сетью; применяется в распределенных объектных технологиях, таких как, DCOM, CORBA, Java RMI). DCOM дает возможность программному обеспечению на удаленных системах запрашивать компоненты с хоста, в тоже время не выполняя эти компоненты. RPC используется многими средствами управления системой в Windows сетях и по умолчанию установлены практически на всех системах Windows.

В августе 2003, была найдена уязвимость в DCOM, позволяющая перезаписывать стек деформированным пакетом. Ошибка происходит при обработке пути в network/file-системе для DCOM запроса. Разработка эксплойта, устойчиво работающего на различных пакетах программ и версиях языков, занял некоторое время, но как только был готов универсальный эксплойт, появилась возможность для устойчивой работы вируса.

Сам "червь" включал в себя этот эксплойт, а для передачи вирусного кода на инфицированные системы, использовал другие средства, включая TFTP. По сравнению с вирусами Code Red и W32.SQLExp, W32.Blaster был очень простым, что было удивительно, но очень эффективно.

Конфигурация сети

Чтобы иметь возможность для сравнения и сопоставления результатов действия вирусов и путей доступа этих вирусов к сетям, необходимо установить "типичную" сетевую конфигурацию, состоящую из различных систем наиболее часто используемых для получения доступа "червями". В нашей статье мы будем рассматривать сеть, логически сегментируемую в DMZ, защищенную списками доступа (ACL) маршрутизатора, а во внутренней сети установлена межсетевая защита и используется сетевая и портовая трансляция адресов (NAT/PAT) в дополнение к использованию прокси большого количества протоколов изнутри сети в Интернет. Ниже представлен вид базовой топологии сети.

Анализ Code Red v1 и v2

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

Наблюдение за распространением пробных SYN пакетов, посылаемых вирусом Code Red 2, показало нам скорость инфицирования сервера до 11 пакетов в секунду. Для нашего исследования мы предпримем случайную выборку адресов со скоростью 11 пакетов в секунду для каждого уникального адреса.

В нашем примере, Интернет доступ к 80 порту был заблокирован всем системам в корпоративной сети, кроме Web служб, расположенных в DMZ. Из всех серверов поддерживающих Web службы (мы предполагаем, что на них были установлены все патчи), уязвим только хост и, выполняя прослушивание данного порта, мы можем минимизировать риск заражения вирусом. Также в 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 адреса одинакова для всего адресного пространства, но очень мала при заражении конкретного IP адреса или интервала адресов. "Червь" Code Red - это типичный пример вируса созданного для угрозы глобального заражения, и он не способен вызвать проблемы в локальной сети, при проникновении вируса через граничный хост.

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

W32.SQLExp

Червь W32.SQLExp является следующим поколением вирусов после Code Red, главное его преимущество заключается в скорости распространения. Как было сказано ранее многие показатели указывают на то, что этот вирус может заразить все уязвимые компьютеры в Интернет менее, чем за 20 минут. Это гораздо быстрее, чем скорость распространения вируса Code Red.

W32.SQLExp использует случайную адресную выборку, такую же, как и вирусы Code Red v.1 и v.2. Как было сказано в статье Тома Вогта "Моделирование и оптимизация алгоритмов распространения червей", это не самый лучший метод, но он был эффективен.

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

Размер вируса = 404 байтов UDP + 30 Ethernet кадра = 434 байта.

В 100 мегабитной коммутируемой дуплексной сети при 80% использовании (скромный подсчет) W32.SQLExp может посылать 23,041 пакета в секунду. В случае 1 гигабитной сети покрытие вирусом 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 гораздо более эффективен при дискредитации уязвимых хостов в локальной сети.

Как и с вирусом W32.SQLExp, лучшим подходом будет сегментация сети с мобильными хостами, сегментированными в другой внутренней сети. Но в таком случае существует один недостаток - если на одном из серверов, выполняющих Exchange найдется неизвестная уязвимость, то 135 порт будет незащищен и "червь" сможет проникнуть через систему межсетевой защиты.

Выводы

"Черви" постоянно развиваются, оптимизируя скорости своего распространения. Сегодня существует две разновидности вирусов, потому что "черви" эффективно работающие в глобальном Интернет, обычно очень плохо распространяются в локальной сети. Поэтому, быстрее всего распространяемые Интернет "черви", например Code Red и SQL Slammer, являются гораздо менее эффективными при полной дискредитации локальной сети, чем вирусы отдающие преимущество локальной адресации, что было доказано вирусом W32.Blaster. Теперь возможно создание гибридного вируса, который случайным образом выбирал сеть, а затем последовательно её сканировал.

или введите имя

CAPTCHA