Pull to refresh
1772.46
Timeweb Cloud
То самое облако

Code Red. Годовщина эпидемии сетевого червя

Reading time4 min
Views3K


Утро 15 июля 2001 года для аналитиков компании eEye Digital Security Марка Мэифрета, Райана Перми и Райли Хассела выдалось непростым. Ребята как раз допивали очередную порцию газировки Code Red Mountain Dew, когда в лабораторию стали поступать предупреждения о массовом распространении нового компьютерного червя. Не мудрствуя лукаво, парни назвали вредонос в честь своего любимого напитка – “Code Red”. Так эта угроза получила свое имя, которое многим жертвам червя запомнилось надолго — буквально за несколько дней Code Red захватил Интернет.

Как выяснилось позже, распространение червя началось еще 13 июля 2001 года. Малварь использовала уязвимость веб-сервера Internet Informatiom Server, заключающуюся в классическом переполнении буфера. Несмотря на то, что за месяц до описываемых событий корпорация Microsoft выпустила заплатку для этой уязвимости, далеко не все администраторы вовремя установили обновление. Указанное обстоятельство и послужило основной причиной полномасштабной эпидемии.

Уязвимость скрывалась в библиотеке idq.dll, в которой был реализован функционал ISAPI — службы индексирования Windows 2000 Server. В частности, эта библиотека отвечала за обработку административных скриптов (с расширением .ida) и файлов запросов данных — Internet Data Queries (*.idq). В модуле, связанном с обработкой входящих URL-запросов, и обнаружилась ошибка переполнения буфера, вызвав которую, злоумышленник мог выполнить на сервере произвольный код.

Червь устанавливал соединение с HTTP-портом 80 на компьютере со случайно выбранным IP-адресом (в те времена очень немногие серверы использовали HTTPS) и отправлял туда GET- запрос следующего вида:

/default.ida?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff[…] HTTP/1.0

Если на целевой машине был запущен IIS, обрабатывающая запрос библиотека idq.dll воспринимала все, что идет после последней литеры “N”, как шелл-код, и благополучно запускала его. В те времена Windows не использовала механизм ASLR (Address Space Layout Randomisation), поэтому все загруженные в память библиотеки на всех машинах под управлением этой ОС использовали одно и то же адресное пространство. Ошибка в idq.dll направляла поток выполнения вредоносного кода в произвольное место памяти по выбору злоумышленника. Кроме того, Windows 2000 не поддерживала DEP (Data Execution Prevention), поэтому любой помещаемый в стек код мог выполняться вслепую, даже если стек предназначен для хранения данных, а не кода. Чем и воспользовались вирусописатели. Несмотря на то, что уязвимость присутствовала в компоненте службы индексирования, для ее использования совершенно не требовалось, чтобы сама служба была запущена на атакуемом хосте. Содержавшая ошибку библиотека автоматически загружалась в память при старте IIS, и соответствующее обращение к серверу в любом случае вызывало удаленное выполнение кода.

По большому счету, червю было плевать, запущен ли на атакуемом хосте IIS, и является ли он вообще веб-сервером. Запрос либо обрабатывался, либо нет. В логах многих серверов, работавших под управлением Apache, админы позже обнаруживали тот самый странный запрос с большим количеством символов “N”. Более того, само тело червя целиком содержалось в передаваемом запросе — малвари не нужно было заботиться о стабильности соединения, не требовалось скачивать или запускать какие-то исполняемые файлы, устанавливать связь с управляющим сервером или предпринимать какие-либо дополнительные действия. При выполнении кода из GET-запроса сервер заражался мгновенно и червь начинал действовать.

Запустившись на зараженном веб-сервере, Code Red в первую очередь дефейсил расположенный там сайт: на его главной странице появлялась надпись «HELLO! Welcome to www.worm.com! Hacked By Chinese!».



Следующие действия червя зависели от текущего числа. С 1 по 19 число каждого месяца вредонос занимался исключительно самораспространением: он опрашивал доступные в Интернете серверы, отправлял на них соответствующий запрос. Для этого на зараженном хосте создавалось 99 параллельных потоков, в каждом из них формировался список новых компьютеров-жертв, которым отправлялись HTTP-запросы.

С 20 по 27 число Code Red выполнял DDoS-атаки по списку намертво зашитых в нем IP-адресов, среди которых присутствовал адрес сайта Белого Дома. Именно поэтому исследователь Кеннет Д. Эйхман, первым обнаруживший способ борьбы с червем, в благодарность был приглашен на прием в спасенный им от атак вредоноса Белый Дом.

C 28 числа и до конца месяца малварь не делала вообще ничего — даже компьютерным червям нужны выходные.

Хотя массовое распространение червя было зафиксировано 15 июля 2001 года, своего пика оно достигло через 4 дня — 19 июля было заражено более 359 тыс. серверов. Позже, когда администраторы все-таки начали устанавливать на свои серверы рекомендованные Microsoft обновления безопасности, эпидемия понемногу пошла на убыль, хотя чуть позже появилась вторая версия Core Red, имевшая другую полезную нагрузку и использовавшая в GET-запросе символы “X” вместо “N”.

Из всей этой истории можно сделать два важных вывода. Первый — что своевременная установка патчей, которая была так важна 21 год назад, не потеряла своей актуальности и сейчас. Второй — то, что Code Red не шифровал файлы на дисках, не воровал пароли и не уничтожал данные, можно назвать чистым везением. Именно благодаря относительной «безобидности» червя эпидемия обошлась без серьезных последствий. А ведь они могли бы быть намного более печальными, если бы злоумышленники преследовали иные цели.

Tags:
Hubs:
Total votes 8: ↑7 and ↓1+10
Comments0

Articles

Information

Website
timeweb.cloud
Registered
Founded
Employees
201–500 employees
Location
Россия
Representative
Timeweb Cloud