- •1.3.1.2. По цели. С точки зрения защиты, атаки можно рассматривать, как направленные на конкретные составляющие безопасности - конфиденциальность, целостность и доступность.
- •1.3.1.3. По характеру взаимодействия с жертвой. Относительно характера взаимодействия злоумышленника с системой все удаленные атаки можно разделить на "интерактивные" и "безусловные".
- •I am in a harry, I promise you will love it! Attachment: gone.Scr
- •1.3.3.2. Отказ в обслуживании
- •1.3.3.3. Маскировка
- •1.3.3.4. Атаки на маршрутизацию
- •1.3.3.5. Атаки на серверы: cgi и http
- •1.3.3.6. Атаки на клиентов: ActiveX, Java и другие
- •1.3.3.7. Переполнение буфера.
1.3. Удаленные атаки
1.3.1. Классификация удаленных атак. В нашей классификации удаленными атаками называются такие атаки, реализация которых не требует иных контактов злоумышленника с атакуемым объектом, кроме собственно средств реализации самой атаки. Здесь имеется в виду, что злоумышленник не обязан физически присутствовать во время атаки или перед ней на объекте или системе, вступать в контакты с ее пользователями и т. д. Теоретически он может вообще не иметь никаких знаний об объекте атаки до ее начала. Также подразумевается, что атакуемая система (для простоты - компьютер) имеет коммуникационное соединение какого-либо рода (чаще всего подключение к компьютерной сети либо устройство доступа "точка-точка" - модем) и на ней запущены соответствующие коммуникационные сервисы.
Мы постараемся не повторять там, где без этого возможно обойтись, элементы атак предыдущего раздела, хотя в реальной жизни они чаще всего будут совмещены. Например, предварительная обработка пользователя методами социальной инженерии, затем получение файла паролей путем удаленной атаки, локальный взлом паролей на станции злоумышленником и продолжение удаленной атаки с новыми знаниями.
1.3.1.1. По сценарию. С точки зрения атакующего разделим атаки следующим образом (данная классификация позволяет определить возможный сценарий атаки по имеющимся начальным признакам):
- атаки без предварительного сбора информации об атакуемом объекте и без направленности на конкретный объект, т. е. злоумышленник не знает ничего о потенциальной жертве (атакуемом объекте), более того, он даже может не знать, кто станет его жертвой. Злоумышленник готовит некий автоматизированный модуль (программу, скрипт, компоненту), которая распространяется им без какой-либо конкретной цели атаки. Данный модуль, попав к жертве, в условия, в которых он сможет функционировать, сообщит о результатах своей деятельности злоумышленнику, либо выполнит свою задачу автономно, без информирования создателя. К данному типу атак относятся распространение компьютерных вирусов и троянских программ, в случаях, когда они не учитывают специфику работы атакуемого (имеющиеся у него системы и службы, их особенности и т. п.), а носят некий более или менее универсальный характер.
- атаки без предварительного сбора информации, но направленные на конкретный объект. В этом случае атакующий чаще всего использует некий имеющийся у него набор средств, каждое из которых направлено на использование конкретной уязвимости (набора уязвимостей). Злоумышленник последовательно применяет их к жертве в надежде, что одно из них сработает.
- атаки с предварительным сбором информации. В этом случае атакующий производит предварительно анализ атакуемой системы, например, выясняет, какие службы запущены на ней путем сканирования портов. После этого он выбирает службу, уязвимую с наибольшей вероятностью или наиболее подходящую по имеющимся средствам.
- атаки со сбором информации во время атаки. Здесь атакующий, обнаружив уязвимость у жертвы, немедленно производит атаку на данную уязвимость. В этом смысле процесс сбора информации и процесс атаки практически не разорваны во времени.
1.3.1.2. По цели. С точки зрения защиты, атаки можно рассматривать, как направленные на конкретные составляющие безопасности - конфиденциальность, целостность и доступность.
- атаки на доступность являются наиболее просто реализуемыми хотя бы потому, что атаковать можно не саму целевую систему, а, например, устройства и средства коммуникации к ней. Кроме того, почти всегда проще сломать систему, чем забраться внутрь, и тем более заставить ее работать по своим правилам.
- атаки на конфиденциальность сложнее в реализации и обнаружении. Так как информация из системы только копируется, оставляя саму систему в исходном состоянии (за исключением случаев, когда для успеха атаки на конфиденциальность необходимо провести атаку на целостность или доступность), обнаружить ее можно только если ведется подробный регистрационный журнал либо если система настроена на сигнализацию о несанкционированном или подозрительном доступе.
- атаки на целостность могут различаться как атаки на целостность данных и на целостность самой системы (в последнем случае это может быть предварительной атакой перед атакой на конфиденциальность или доступность, или атакой на целостность данных). Наиболее неприятный случай — это успешная реализация атаки на целостность системы, так как в этом случае система начинает вести себя так, как нужно атакующему и, следовательно, перестает быть доверенной системой. Для возвращения ее в доверенное состояние приходится обычно производить переустановку системы заново. Однако и атака на целостность данных (вполне возможно — на целостность единственного документа) может принести к очень серьезным последствиям. Чаще всего в этом случае злоумышленник, как и в случае атаки на конфиденциальность, старается вести себя в атакованной системе как можно незаметнее, с тем чтобы внесенные им в документ изменения как можно дольше не были обнаружены и сыграли отведенную им роль.
1.3.1.3. По характеру взаимодействия с жертвой. Относительно характера взаимодействия злоумышленника с системой все удаленные атаки можно разделить на "интерактивные" и "безусловные".
- интерактивная атака отличается тем, что в ходе ее хотя бы раз возникает ситуация, когда ее дальнейшее успешное продолжение зависит исключительно от того, правильные или неправильные действия предпримет пользователь или администратор атакуемой системы, т. е. приложение интерактивных атак на автоматические станции невозможно. Классическими примерами подобного класса атак является:
- приглашение зайти на определенную страничку в Интернете, в теле которой злоумышленник заблаговременно разместил зловредную програму, автоматически выполняющуюся на компьютере, с которого идет ее просмотр (а ошибок в программном обеспечении (ПО), позволяющих это сделать, на сегодняшний день обнаружено порядка нескольких десятков);
- письмо, с приложенной к нему зловредной программой, но имеющей какое-либо деловое или "соблазнительное" название и описание;
- сообщение, адресованное пользователям якобы от администратора системы с требованием установить на своем компьютере новую антивирусную программу, выложенную им на каком-либо файл-сервере, и которая на самом деле является ни чем иным, как троянской программой.
Интерактивные удаленные атаки неразрывно связаны с социальной ин-жинерией, описанной ранее.
- безусловная атака совершенно не зависит от действий (или бездействия) оператора. Ее успех определяется только характеристиками установленного в системе аппаратного и программного обеспечения и его настройками.
1.3.2. Удаленный сбор информации о жертве.
1.3.2.1. Выяснение адресов. Известно, что самый надежный корабль - это тот, который стоит на берегу и никогда не выходит в море. Так же и самая безопасная информационная система — это компьютер, не имеющий никаких сетевых соединений, выключенный и запертый в сейф.
Но как только информационная система начинает функционировать, готовиться обмениваться информацией с другими системами (напомним, что пока рассматривается пассивная система, которая сама не инициирует отправку данных куда-либо вовне), она становится уязвимой. В большем или меньшем смысле, для определения этого и существует информационная безопасность.
Основным стандартом сетевой работы де-факто стал набор механизмов и протоколов, обозначаемых аббревиатурой TCP/IP, поэтому в основном речь идет именно об этой сетевой сфере. Но общие принципы могут быть прозрачно или с небольшими изменениями перенесены и на другие типы сетей.
Службы или сервисы, работающие в информационной системе, используют и предоставляют какие-либо информационные ресурсы, которые также могут быть использованы внешним субъектом, в том числе и несанкционированно. Для этого злоумышленнику необходимо иметь данные о том, какие службы/сервисы работают в системе. Но первое, что он должен узнать о самой системе - ее сетевой адрес.
Получение сетевого адреса (IP-адреса) или имени домена/хоста потенциальной жертвы уже дает злоумышленнику информацию, на основе которой он может начинать строить план атаки. Он может получить дополнительно альтернативным путем (без непосредственного обращения к системам жертвы) ряд сведений о ней, например, используя службу WHOIS. Дело в том, что, регистрируясь в Глобальной информационной сети, организация (например, ее провайдер) должна предоставить определенную информацию о себе - название, местоположение, возможно, имена и адреса электронной почты администраторов и т. п. Эту информацию можно найти, обратившись в соответствующую службу Глобальной сети. А это уже может послужить основой для формирования, например, списка типовых паролей на основе имен/фамилий, районов города, где расположена организация, городских телефонов и т. д.
Сетевой адрес - это параметр, уникально идентифицирующий хост в пределах сети (локальной или глобальной), и именно его нужно указывать автоматизированной программе, которая займется сбором информации о службах, запущенных на исследуемой системе.
1.3.2.2. Поиск уязвимостей. Поскольку на конкретной машине может быть (и почти всегда бывает) запущено более одного сервиса, то возникает необходимость после поступления пакета в адрес хоста определить, какой из служб он направлен. Эта функция возложена на операционную систему, которая анализирует небольшой числовой параметр транспортного уровня — логический порт, специально размещаемый в пакете отправляющей стороной для этой цели. Так как за распределение пакетов между службами ответственна операционная система, то она же и занимается простейшими служебными сообщениями по поводу того, функционирует ли в данный момент тот или иной логический порт или нет. При этом о некоторых служебных пакетах (например, для протокола TCP о самом первом пакете - SYN - запросе на соединение) операционная система заботится сама. Поэтому удаленный субъект, исследующий систему, всегда имеет возможность получить полную информацию о запущенных на ней службах, даже если потенциально имелась бы возможность их скрывать - например, отвечать на запрос только в том случае, если его аутентичность проверена с помощью криптографической подписи.
За огромным количеством различных служб Интернет - сообществом закреплены фиксированные значения логических портов по умолчанию. Например, WWW-сервер, будучи установлен на любой машине, по умолчанию будет ожидать запросов на порт 80. Наиболее известные пары "номер логического порта/служба" для протокола TCP следующие: 21 - FTP, 23 - Telnet, 25 - SMTP, 80 - HTTP, 110 - РОРЗ.
Например, если такое исследование обнаружило подтверждение установления связи с хостом - потенциальной жертвой по порту 23, то с высокой степенью вероятности можно утверждать, что там функционирует сервис Telnet, который обладает для злоумышленника рядом привлекательных свойств. Например, позволяет выполнять команды в режиме удаленного терминала и не шифрует никакие данные (в том числе и пароли) при передаче. Почему речь идет только о высокой степени вероятности работы сервиса? Потому, что на самом деле хост-жертва может быть лишь приманкой для взломщика (англ. honey-pot), и вместо реального Telnet там функционирует программа-имитатор.
Автоматизированные программы поиска уязвимостей разнятся по своей функциональности и назначению. Наиболее простые - это действительно просто сканеры портов, которые последовательно пытаются установить связь с удаленным хостом по имеющемуся списку портов и выдают отчет о выявленных открытых портах. Более проработанные программы могут на основе информации, хранимой в своей базе знаний, пытаться обнаружить параметры, указывающие на то, что та или иная известная уязвимость в конкретной службе не была устранена. Наиболее ужасные (для жертвы) программы могут при обнаружении признаков уязвимости инициировать соответствующую атаку вплоть до ее полного успешного завершения. Необходимо добавить, что такие программы бывают свободно распространяемыми и коммерческими.
Специалист по безопасности должен быть осведомлен о таких программах (их последних модификациях), тем более что независимые эксперты периодически проводят их сравнения по различным параметрам и публикуют результаты в изданиях, посвященных безопасности, в том числе и в Интернете.
До этого момента разговор шел только о наличии работающей службы на атакуемом хосте, но на самом деле очевидно, что успех атаки зависит в значительной степени от того, как реализована работа службы:
- как написано программное обеспечение, реализующее работу службы;
- какие настройки работы программного обеспечения установлены.
Указанное означает, что помимо потенциальных ошибок, заложенных в самой природе работы протокола или стандарта, уязвимости могут скрываться в некорректной реализации или настройке, т. е., говоря, например, о FTP-сервере, необходимо отметить не только уязвимость самого протокола FTP, но и то, какое конкретно программное обеспечение поддерживает этот сервер, а также, какие настройки сервера установлены — например, разрешены ли доступ анонимным пользователям или команда PUT.
Составление полного списка известных уязвимостей практически невозможно, поскольку сведения о новых ошибках в реализации и уязвимостях поступают чуть ли не ежедневно. Рассмотрим наиболее известные.
Без сомнения первой широко известной сетевой уязвимостью явилась неустраненная функция debug в программе приема/отправления электронной почты sendmail, которую использовал знаменитый червь Моррисона. Уязвимость позволяла исполнять код, содержащийся в полученном программой письме. Дата обнаружения уязвимости - ноябрь 1988 года. Одним (но, конечно, не определяющим) из признаков работы программы sendmail на хосте можно считать функционирование сервиса протокола SMTP.
А вот, например, бюллетень об уязвимости в одном из самых популярных современных почтовых серверов Microsoft Exchange 5.5. Бюллетень имеет номер MS02-037 и уведомляет о том, что ошибка в реализации разбора параметров одной из команд протокола SMTP позволяет при некоторых дополнительных условиях выполнить в потоке почтового сервера свой программный код. Это дает возможность получить полное управление над службой почтового сервера и, при неправильно сконфигурированных настройках безопасности Microsoft Windows, над всем компьютером.
Эти два примера приведены, как достаточно разнесенные во времени, но имеющие схожие условия проявления уязвимостей. На наш взгляд, это демонстрирует потенциальную неиссякаемость источников уязвимостей с развитием программного обеспечения, особенно в связи с ориентацией программного обеспечения на предоставление максимального количества услуг и удобства для пользователей.
Сообщения об обнаруженных уязвимостях регулярно публикуются уполномоченными организациями, например CERT - Computer Emergency Response Team (Команда реагирования по вопросам компьютерной безопасности), адрес сайта в Интернете — http://www.cert.org, в том числе и с техническими описаниями сущности потенциальной атаки. Ознакомление с такими материалами должно быть задачей одного или даже нескольких технических специалистов из подразделения информационной безопасности. Наиболее опасные сервисы (сервис управления сетевыми устройствами SNMP и сервис удаленного терминала Telnet) являются одновременно и самыми распространенными.
Таблица 11.2. Наиболее уязвимые интернет-сервисы |
||
Рейтинг |
Сервис |
Уязвимые инсталляции,% |
1 |
RPC |
93,4 |
2 |
SMTP |
61,1 |
3 |
Finger |
59,6 |
4 |
TFTP |
57,4 |
5 |
HTTP |
42,4 |
6 |
DNS |
35,0 |
7 |
FTP |
33,0 |
8 |
NFC |
30,2 |
9 |
SNMP |
27,1 |
10 |
X-Windows |
23,0 |
Предполагая SNMP-сервис наиболее распространенным, a RPC — наиболее уязвимым, и принимая во внимание, что оба этих сервиса предназначены для управления, авторы очень рекомендуют ограничить использование любой организацией этих сервисов через Интернет.
До сих пор речь шла об открытых портах как о показателях функционирования штатных сервисов, потенциальные уязвимости которых можно использовать. Однако по ряду открытых портов можно сделать вывод о том, что хост уже взломан, т. е., что на нем была использована имеющаяся уязвимость. Это происходит в тех случаях, когда злоумышленник или автоматическая программа взлома уже установили на хост-жертву троянскую программу. В большинстве случаев взломщики низкой и средней квалификации пользуются широко распространенными троянскими программами и не меняют в их настройках номер порта управления. Например, наличие открытого порта 31337 говорит о том, что на хосте присутствует известная троянская программа Back Orifice — инструмент удаленного администрирования хоста.
В этом случае при соответствующей квалификации любой злоумышленник, обнаруживший установленную троянскую программу, а не только тот, кто реально взломал систему, может получить практически полный доступ к данному хосту со всеми вытекающими последствиями. Список портов управления, занимаемых по умолчанию наиболее распространенными в последние годы троянскими программами, приведен в приложении 2.
Другой вариант поиска путей реализации атак — получение данных об операционной системе, установленной на удаленном хосте. Поскольку сетевая операционная система — это набор различных служб, логично предположить, что каждая операционная система, соответственно, имеет набор уязвимостей. Таким образом, достоверное определение операционной системы на хосте потенциальной жертвы позволяет злоумышленнику начать поиск уязвимостей из предопределенного списка, характерного для данной операционной системы. Одним из методов определения операционной системы удаленного хоста является анализ реакции IP-стека системы (набора сервисов обработки сетевых пакетов по уровням) на специальном образом сформированные некорректные пакеты (англ. system IP-footprint или system IP-fingerprint). Различные операционные системы будут по-разному реагировать на получение таких пакетов, в том числе отвечать на них в уникальном для данного семейства стиле. Наиболее известным примером удаленного анализатора операционной системы, работающим на основе отправки некорректных сетевых пакетов, является программа nmap.
1.3.3. Наиболее распространенные классы удаленных атак.
1.3.3.1. Вирусы и троянские программы. Как уже указывалось в главе 2, вирусы и троянские программы (трояны) функционально похожи, и многие из зловредных программ в настоящее время несут в себе черты и тех и других, поэтому как пример удаленной атаки рассмотрим их совместно. Теоретически и вирус и троянская программа могут быть примером и локальной атаки (когда злоумышленник сам находится за консолью управления атакуемой системы), но этот случай не так интересен, как удаленная атака "в чистом виде".
Для того чтобы начать свои деструктивные действия, вирус/троянская программа должны быть доставлены на атакуемый хост, и далее, в зависимости от реализации кода и используемой уязвимости, возможны два варианта развития событий.
- Внедрение вируса/троянской программы произойдет только после некоторых действий пользователя.
- Внедрение произойдет автоматически, используя уязвимость одного из работающих сервисов.
На самом деле оба случая довольно трудно различимы, так как даже во втором случае автоматическое срабатывание, возможно, будет вызвано некими действиями (либо, наоборот, бездействием) пользователя за некоторое время до поступления деструктивного субъекта на хост, т. е. например, пользователь неверно сконфигурировал настройки определенной службы либо вовремя не произвел обновление уязвимого модуля, что и послужило причиной успеха атаки. В чистом виде успех атаки совершенно без участия пользователя может быть только в случае серьезной уязвимости в службе, допущенной скорее всего разработчиком при проектировании или реализации службы. Такие атаки встречаются реально не очень часто, но тем не менее возможны.
Большую же часть успешных попаданий вирусов/троянских программ на хост обуславливают соответствующие действия пользователя, поэтому интересны именно такие случаи.
Пользователь может выступать либо активной, либо пассивной стороной. Яркий пример активных действий — ситуация, когда пользователь сам загружает на свой хост программное обеспечение или другой объект, который может скрывать деструктивный код — с дискеты, компакт-диска, по сети. Пассивный вариант действий атакуемого пользователя — он получает предложение от некоего субъекта к загрузке кода (письмо, переданная дискета, диск и т. п.). В этом случае успех или неуспех реализации атаки будет зависеть от того, насколько легкомысленно пользователь отнесется к такой загрузке.
Теперь попробуем еще раз перечислить возможные причины потенциального успеха атаки вируса/троянской программы и дать общие рекомендации (рис. 11.1).
1. Ошибки в работе сервиса. Наиболее сложный вид атак, так как может быть произведен без участия самого пользователя. Решение — быть постоянно осведомленным о новостях по безопасности производителя сервиса, о новостях с основных форумов и он-лайн служб безопасности.
2. Несвоевременное обновление ПО. Различают два вида таких ошибок.
• Несвоевременное обновление соответствующих модулей самого сервиса. Решение — подписка на регулярную рассылку информации об имеющихся обновлениях сервиса.
• Несвоевременное обновление модулей системы защиты сервисов (например, антивирусного программного обеспечения). Решение — приобретать лицензионные системы защиты с соответствующей поддержкой производителем обновления систем.
3. Ошибки в конфигурации. Подобные ошибки довольно трудно предупреждать, так как они требуют серьезной квалификации администратора сервиса. В качестве общей рекомендации можно высказать следующее:
не давать сервису в функционировании больше прав и возможностей, чем это нужно для выполнения работы. Скажем, если FTP-сервер предназначен только для публикации материалов, нет необходимости оставлять поддержку команды PUT.
Загрузка пользователем постороннего программного обеспечения или других контейнеров зловредных программ (документов и таблиц с макросами, скриптов, компонент и т. п.). Наилучшей рекомендацией в данном случае, конечно, был бы полный запрет на любую загрузку перечисленных объектов, однако по производственной задаче такие загрузки могут быть необходимыми. В этом случае возможны следующие варианты.
• Служба безопасности должна иметь отдельный "полигон" (компьютер или набор компьютеров) для проверки посторонних информационных объектов. На этот "полигон" пользователи соответственно направляют подозрительные или незнакомые информационные объекты.
• Если создание подобного "полигона" невозможно, то его аналог придется создать на своем хосте. Последовательность действий в этом случае такова. Следует обеспечить ограничение распространения возможного ущерба — отключить компьютер от сети. Затем создать учетную запись тестового пользователя с минимальными привилегиями, необходимыми для исследования информационного объекта. При этом особое внимание обратить на то, чтобы права этой учетной записи на доступ к критическим разделам (системные каталоги и файлы, другие важные объекты) были минимальными — скажем, только на чтение, а полный контроль или даже право на запись на жесткий диск имелось бы только для ограниченного (проще всего, одного) каталога, в котором и проводить исследование. Далее, необходимо зарегистрироваться на хосте от имени этого тестового пользователя и получить доступ к исследуемому объекту (переписать его на жесткий диск, вставить дискету и т. д.), произвести его проверку имеющимися средствами защиты — скажем, антивирусным программным обеспечением. Перед запуском исполняемой части объекта на выполнение рекомендуется посчитать и записать все процессы, выполняемые в текущий момент на хосте, с тем чтобы можно было обнаружить новые несанкционированные процессы. Кроме того, если есть возможность, запустить службу аудита — регистрации попыток записи и другой работы с критическими разделами, либо сосчитать и сохранить на независимом устройстве контрольные суммы системных и наиболее важных пользовательских файлов. После этого можно произвести запуск исполняемой части и протестировать ее функциональность, получить и скопировать необходимую информацию и т. д. Затем остановить выполнение модуля и проанализировать имеющиеся результаты (новые процессы, новые и модифицированные файлы на диске, журнал аудита). По указанным источникам можно сделать определенные выводы об опасности или безопасности исследуемого объекта.
Чтобы отвлечься от теоретических рассуждении, приведем примеры некоторых нашумевших вирусов 2001 года по бюллетеням CERT.
Вирус Курниковой {Anna Kournikova VBS malicious code) — февраль 2001 года. В качестве основных жертв названы пользователи Microsoft Outlook, которые не произвели соответствующих обновлений по безопасности для своего приложения.
Пользователи получали письмо следующего формата:
SUBJECT: "Here you have, ;o)"
BODY:
Hi:
Check This! ATTACHMENT: "AnnaKournikova.j pg.vbs"
Самое неприятное заключалось в том, что письмо приходило от адресата, с которым пользователь обычно состоял в переписке и которого более или менее знал. Кроме того, если в настройках системы был установлен флажок Скрыть расширения файлов, то пользователь мог не увидеть, что вложенный в письмо файл — это скрипт на языке Visual Basic. Если пользователь пытался открыть присоединенный файл, то происходило следующее.
Код создавал в реестре следующий ключ:
HKEY_CURRENT_USER\Software\OnTheFly="Worm made with Vbswg 1.50b"
Далее копировал себя в c:\wiNDOws\AnnaKournikova.jpg.vbs
После этого он пытался послать отдельное письмо с тем же скриптом по всем адресам, обнаруженным в адресной книге. Затем, чтобы предотвратить повторную рассылку, вирус создает ключ:
HKEY_CURRENT_USER\Software\OnTheFly\mailed=l
Широкое распространение вируса может привести к сбоям в работе почтовых серверов.
Вирусу Красный Код (Code Red worm) посвящено несколько сообщений CERT, так как вирус модифицировался злоумышленниками. Первые сообщения датируются июлем 2001 года. Основное воздействие вирус оказал на веб-серверы IIS 4.0 и IIS 5.0, используя атаку на переполнение буфера в динамической библиотеке (DLL) службы индексирования (IIS Indexing Service). Деструктивное действие развивалось следующим образом.
Производилось сканирование хоста-жертвы на наличие открытого порта 80 (протокол HTTP). При обнаружении высылалась соответствующим образом сформированная строка (HTTP GET-запрос), которая и приводила к переполнению буфера в обрабатывающем ее сервисе, в результате чего атакуемый хост исполнял деструктивный код.
Код проверял на хосте наличие каталога с: \notworm, при обнаружении прекращал выполнение, в противном случае начинал порождать процессы по сканированию случайного набора IP-адресов других жертв. Если на атакованном хосте по умолчанию был установлен английский язык, то после запуска 100 процессов сканирования и установленного промежутка времени, все страницы на сервере заменялись на сообщение:
HELLO! Welcome to http://www.worm.com! Hacked By Chinese! (Привет! Добро пожаловать на http://www.worm.com!. Взломано Китайцем).
Если же английский не являлся языком по умолчанию, то вирус просто продолжал сканирование.
Кроме замены страниц и некоторого падения производительности, мог быть получен и следующий ущерб. Так как каждое новое порождение вируса использовало тот же самый генератор случайных чисел для формирования списка IP-адресов, могло оказаться, что конкретный адрес попадал в большое количество списков и массовое сканирование приводило к отказу в обслуживании (описание таких атак см. разд. "Отказ в обслуживании" данной главы).
Вторая версия вируса Code Red II появилась в августе 2001 года и требовала на хосте-жертве, кроме IIS, еще и установленный Indexing Server 2.0. Вирус использовал тот же механизм переполнения буфера, однако дальнейшее развитие атаки происходило по-другому. Вирус сканировал тот же 80 порт, предполагая наличие веб-сервера. Если устанавливалось успешное соединение, тогда посылался специально сформированный HTTP GET-запрос для переполнения буфера в Службе индексирования (Indexing Server). При успешной реализации, атака имела следующие результаты в зависимости от конфигурации хоста-жертвы.
О Windows 2000 с US 4.0 или US 5.0 и Indexing Server был скомпрометирован на системном уровне и оставлял лазейку для дальнейшего управления системой злоумышленником.
П На NT с IIS 4.0 или US 5.0 с Indexing Server останавливалась работа веб-сервера.
D DSL-маршрутизаторы Cisco 600-й серии прекращали форвардинг пакетов.
Во всех случаях попытка проникновения вируса могла быть идентифицирована при наличии в регистрационном журнале IIS следующих строк.
Для первой версии:
GET /default.ida?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN N^WNNNNN^ЩNNNNNNNNN^таNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNШNNNNNNNNNNNNNNNNNNNNNN^TO№^NNNN^INNNNNNNNNNNNNNNNNNNNNNNN^Л^ГNNN NNNNNNNNNNNNNNNNNNNNNN%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9 090%u6858%ucbd3%u7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u00 78%u0000%u00=a
Для второй версии:
GET /default.ida?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
XXXXXXXXXXXXXXXXXXXXXX%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9 090%u6858%ucbd3%u7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u00 78%u0000%u00=a
Вирус Нимда (Админ наоборот) (\V32/Nimda worm), сентябрь 2001 года. Вирус распространялся одним из следующих способов:
О от клиента клиенту через электронную почту;
П от клиента клиенту через незащищенные разделенные сетевые ресурсы;
О от веб-сервера клиенту через скомпрометированные веб-сайты;
О от клиента веб-серверу путем сканирования уязвимостей в IIS 4.0/5.0;
П от клиента веб-серверу через использование лазеек, оставленных другими вирусами (например, Code Red II).
Основной результат деятельности вируса — изменение веб-документов (htm, html, asp и др.) и исполняемых файлов, а также потенциально возможный отказ в обслуживании по причине массовой рассылки электронных писем и масштабного сканирования сети.
Распространение вируса через электронную почту происходит следующим образом. Клиент получает письмо, состоящее из двух частей (MIME тип "multipart/alternative"). Первая часть определена, как MIME тип "text/html", но не содержит текста, вторая часть определена, как MIME тип "audio/x-wav", но содержит присоединенный бинарный исполняемый файл readme, exe . Некоторые почтовые приложения автоматически запускают на выполнение присоединенный файл с таким МШЕ-типом при открытии или предварительном просмотре письма. Также вирус может быть инициирован неосторожным пользователем, запустившим присоединенный файл. Обычно длина этого файла была 57 344 байта.
Адреса, по которым рассылался вирус, собирались автоматически из следующих источников: из файлов htm и html в каталоге для веб-кэша пользователя, из содержимого электронных писем пользователя через службу MAPI.
Кроме того, вирус сканировал IP-адреса хостов в поиске уязвимых серверов US — лазеек, оставленных другими вирусами и не закрытых соответствующими обновлениями уязвимостей. Адреса для сканирования выбирались следующим образом по отношению ко времени сканирования:
О 50% времени сканировались адреса с теми же двумя первыми октетами, что и скомпрометированный хост;
П 25% времени сканировались адреса с тем же первым октетом;
D 25% времени сканировались случайно выбранные адреса.
Зараженный хост пытался отправить копию кода по протоколу TFTP (69 порт протокола UDP) на обнаруженный сервер IIS. Запущенный на сервере вирус в каждой доступной директории размещал свою копию с расширением emi или nws, а к html или asp файлам добавлял JavaScript код.
Дополнительно он открывал доступ по сети к диску С (разделенный ресурс — sharing — для "с: \"), создавал учетную запись guest и добавлял ее в группу администраторов. Кроме того, он изменял копии исполняемых бинарных файлов, добавляя в них троянскую программу, вызывающую код вируса на исполнение.
Сканирующую активность вируса возможно было определить по наличию в регистрационном журнале веб-сервера для порта 80 TCP следующих записей:
GET /scripts/root.exe?/c+dir
GET /MSADC/ root. exe ? / c+di r
GET /c/winnt/systeni32/cmd.exe?/c+dir
GET /d/winnt/system32/cmd.exe?/c+dir
GET /scripts/..%5c../winnt/system32/cmd.exe?/c+dir
GET /_vti_bin/..%5c../..%5c../..%5c../winnt/system32/cmd.exe?/c+dir
GET / mem bin/..%5c../..%5c../..%5c../winnt/system32/cmd.exe?/c+dir
GET /msadc/..%5c../..%5c../..%5c/..\xcl\xlc../..\xcl\xlc../..\xcl\xlc../w innt/system32/cmd.exe?/c+dir
GET /scripts/..\xcl\xlc../winnt/system32/cmd.exe?/c+dir
GET /scripts/..\xc0/../winnt/system32/ond.exe?/c+dir ;E:7 scripts/. .\xc0\xaf. ./winnt/systein32/cmd.exe?/c+dir GET /scripts/.,\xcl\x9c../winnt/system32/cmd.exe?/c+dir GET /scripts/.Л35с../winnt/system32/cmd.exe?/c+dir GET /scripts/..%35c../winnt/system32/cmd.exe?/c+dir GET /scripts/..%5c../winnt/system32/cmd.exe?/c+dir GET /scripts/..%2f../winnt/system32/cmd.exe?/c+dir Вирус Покойник. (W32\Goner worm), декабрь 2001 года. Уязвимые системы — Windows системы с установленными приложениями MS Outlook, MS Office, ICQ. Распространяется по электронной почте или при передаче ICQ файла. Представляется в виде программы-заставки (screen saver) — gone.scr, инициируется при запуске на исполнение. Электронное письмо имеет следующий вид:
Subj ect: Hi! Body: How are you ?
When I saw this screen saver, I immediately thought about you