Курс лекций по дисциплине "Защита информационных процессов в компьютерных системах"
Вид материала | Курс лекций |
- Курс лекций по дисциплине " основы компьютерных технологий" Часть I. Microsoft Word, 432.92kb.
- Конспект лекций по дисциплине информатика для студентов заочного отделения, 649.48kb.
- В. А. Деденко Л. Г. Караваев В. А. Курс лекций, 48.22kb.
- Безопасность информационных технологий, 305.29kb.
- Курс лекций по дисциплине «информационные и коммуникационные технологии в образовании», 1679.08kb.
- Элективный курс Арифметические и логические основы построения компьютера ( 9 класс,, 150.98kb.
- Учебная программа по дисциплине администрирование в информационных системах растягаев, 136.99kb.
- Лекция Защита информации в компьютерных системах, 105.02kb.
- Курс лекций по дисциплине история экономических учений москва 2008, 5434.7kb.
- Завгородний В. И. Защита информации в компьютерных системах. Электронное издание, 13.73kb.
Одновременное использование технологий внедрения и методов социальной инженерии
Достаточно часто компьютерными злоумышленниками используются сразу оба метода. Метод социальной инженерии — для привлечения внимания потенциальной жертвы, а технический — для увеличения вероятности проникновения заражённого объекта в систему.
Одним из примеров является рассылка спама с темой «Привет» и текстом «Посмотри, что про тебя пишут». За текстом следовала ссылка на некую веб-страницу. При анализе выяснилось, что данная веб-страница содержит скрипт-программу, которая, пользуясь определенной уязвимостью в Internet Explorer, загружает на компьютер пользователя троянскую программу LdPinch, предназначенную для воровства различных паролей.
Противодействие антивирусным программам
Поскольку цель злоумышленников — внедрить вредоносный код в компьютеры-жертвы, то для этого им необходимо не только вынудить пользователя запустить заражённый файл или проникнуть в систему через какую-либо уязвимость, но и незаметно обойти установленный антивирусный фильтр. Поэтому не удивительно, что злоумышленники целенаправленно борются с антивирусными программами. Используемые ими технические приёмы весьма разнообразны, но чаще всего встречаются следующие:
Упаковка и шифрование кода. Значительная часть (если не большинство) современных компьютерных червей и троянских программ упакованы или зашифрованы тем или иным способом. Более того, злоумышленниками создаются специально для этого предназначенные утилиты упаковки и шифровки. Например, вредоносными оказались абсолютно все встретившиеся в интернете файлы, обработанные утилитами CryptExe, Exeref, PolyCrypt и некоторыми другими.
Для детектирования подобных червей и троянцев антивирусным программам приходится либо добавлять новые методы распаковки и расшифровки, либо добавлять сигнатуры на каждый образец вредоносной программы, что снижает качество детектирования, поскольку не всегда все возможные образцы модифицированного кода оказываются в руках антивирусной компании.
Мутация кода. Разбавление троянского кода «мусорными» инструкциями. В результате функционал троянской программы сохраняется, но значительно меняется её «внешний вид». Периодически встречаются случаи, когда мутация кода происходит в режиме реального времени — при каждом скачивании троянской программы с заражённого веб-сайта. Т.е. все или значительная часть попадающих с такого сайта на компьютеры образцы троянца — разные. Примером применения этой технологии является почтовый червь Warezov, несколько версий которого вызвали значительные эпидемии во второй половине 2006 г.
Скрытие своего присутствия. Rootkit-технологии, обычно используемые в троянских программах. Осуществляется перехват и подмена системных функций, благодаря которым зараженный файл не виден ни штатными средствами операционной системы, ни антивирусными программами. Иногда также скрываются ветки реестра, в которых регистрируется копия троянца, и другие системные области компьютера. Данные технологии активно используются, например, троянцем-бэкдором HacDef.
Остановка работы антивируса и системы получения обновлений антивирусных баз (апдейтов). Многие троянские программы и сетевые черви предпринимают специальные действия против антивирусных программ — ищут их в списке активных приложений и пытаются остановить их работу, портят антивирусные базы данных, блокируют получение обновлений и т.п. Антивирусным программам приходится защищать себя адекватными способами — следить за целостностью баз данных, прятать от троянцев свои процессы и т.п.
Скрытие своего кода на веб-сайтах. Адреса веб-страниц, на которых присутствуют троянские файлы, рано или поздно становятся известны антивирусным компаниям. Естественно, что подобные страницы попадают под пристальное внимание антивирусных аналитиков — содержимое страницы периодически скачивается, новые версии троянских программ заносятся в антивирусные обновления. Для противодействия этому веб-страница модифицируется специальным образом — если запрос идёт с адреса антивирусной компании, то вместо троянского скачивается какой-нибудь иной, «безвредный» файл.
Атака количеством. Генерация и распространение в интернете большого количества новых версий троянских программ за короткий промежуток времени. В результате антивирусные компании оказываются «завалены» новыми образцами, на анализ которых требуется время, что даёт злоумышленному коду дополнительный шанс для успешного внедрения в компьютеры.
Эти и другие методы используются злоумышленниками для противодействия антивирусным программам. При этом их активность растёт год за годом, и сейчас можно говорить о настоящей «гонке технологий», которая развернулась между антивирусной индустрией и индустрией вирусной. Одновременно растёт количество хакеров-индивидуалов и преступных групп, а также их профессионализм. Всё это вместе значительно увеличивает сложность и объём работы, необходимой антивирусным компаниям для разработки средств защиты достаточного уровня.
2.5.Эксплойты
Эксплойт - это приложение или последовательность команд, предназначенная для реализации каких-либо уязвимостей операционной системы или специализированного программного обеспечения.
Наиболее распространенная в настоящее время на подключенных к интернету компьютерах операционная система Microsoft Windows содержит множественные опасные уязвимости. Чаще всего хакерами используются уязвимости в IIS, MS SQL и Internet Explorer, а также системах обработки файлов и сервисах сообщений самой операционной системы. Перечень найденных уязвимостей регулярно публикуется в Интернете на специализированных сайтах.
2.6. Программы для автоматизированного подбора пароля (brute force)
3. Классификация сетевых атак
Существует множество критериев, по которым можно классифицировать сетевые атаки. Приведем некоторые из них.
3.1. Классификация по уровню модели OSI
1) Атаки на физическом уровне – используют физические особенности каналов передачи информации.
Примеры:
- установка злоумышленником передатчика, заглушающего сигнал от Wi-Fi точки доступа, с целью нарушить работу беспроводной сети;
- установка злоумышленником точки доступа, сигнал от которой будет мощнее, чем сигнал от точки доступа атакуемой сети (чтобы заставить беспроводных клиентов подключиться к точке доступа злоумышленника и похитить какую-либо информацию);
- съём информации с кабеля посредством анализа электромагнитного излучения;
- нарушение физической целостности кабелей и оборудования
и т.д.
2) Атаки на канальном уровне – используют информацию из заголовка канального уровня
Примеры:
- MAC spoofing - подделка MAC-адреса в отправляемых пакетах (например, с целью незаконного подключения к беспроводной сети, если точка доступа использует проверку клиентов по их MAC адресам);
- взлом протокола шифрования беспроводных сетей WEP
и т.д.
3) Атаки на сетевом уровне – используют протоколы сетевого уровня (IP, ICMP, ARP, протоколы маршрутизации).
Примеры:
- IP spoofing - подделка IP-адреса в отправляемых пакетах (как правило, используется для прохода через брандмауэр и получения несанкционированного доступа к компьютеру. Также может использоваться злоумышленником для маскировки своего истинного IP-адреса, с целью обеспечить свою безопасность от преследования);
- ARP spoofing (рассматривалось в разделе 2.1);
- ICMP Redirect (атака будет рассмотрена далее);
- Атака на протоколы маршрутизации (будет рассмотрена далее);
- Атака «отказ в обслуживании» типа ICMP flood (будет рассмотрена далее)
и т.д.
4) Атаки на транспортном уровне - используют протоколы транспортного уровня (TCP, UDP).
Примеры:
- сканирование с целью выявления открытых портов;
- Атаки «отказ в обслуживании» типа TCP flood, UDP flood (будут рассмотрены далее);
- Атака TCP Hijacking (будет рассмотрена далее)
и т.д.
5) Атаки на прикладном уровне
Это самая многочисленная группа атак. К ним относятся внедрение вирусов и троянских программ на атакуемый компьютер, использование уязвимостей ОС и прикладных программ, подбор паролей, атаки на веб-приложения типа XSS (Cross-Site Scripting) и SQL Injection (будут рассмотрены далее) и т.д.
3.2. Классификация по типу
По типу все атаки подразделяются на активные и пассивные. К пассивной атаке относится прослушивание некоммутируемой сети с помощью сниффера, без применения каких-либо дополнительных методов и средств (таких, как, ARP spoofing). В этом случае злоумышленник не предпринимает никаких активных действий, не вмешивается в работу атакуемой системы, а просто наблюдает за передаваемым трафиком. Соответственно, все остальные атаки, требующие от злоумышленника вмешательства в работу атакуемого компьютера, относятся к классу активных атак.
3.3. Классификация по местоположению злоумышленника и атакуемого объекта
Можно выделить следующие разновидности:
1) злоумышленник и атакуемый объект находятся внутри одного сегмента локальной сети (например, районной локальной сети провайдера или корпоративной локальной сети организации). Компьютеру злоумышленника и атакуемому объекту присваиваются IP-адреса из одного диапазона.
В этом случае злоумышленнику проще всего осуществить атаку.
2) злоумышленник и атакуемый объект находятся в разных сегментах одной локальной сети, соединенных маршрутизатором. Компьютеру злоумышленника и атакуемому объекту присваиваются IP-адреса из разных диапазонов (например, 192.168.1.1 и 192.168.2.2).
Сложность осуществления атаки при таком расположении атакующего и жертвы выше, чем в первом случае.
3) злоумышленник и атакуемый объект находятся в разных локальных сетях, соединенных через Интернет. Это наиболее сложный для злоумышленника случай, поскольку благодаря технологии NAT внутренняя структура атакуемой сети не видна, а виден только внешний IP-адрес.
4) Атака осуществляется из локальной сети на сервер с внешним IP-адресом.
С одной стороны, проведение такой атаки кажется довольно простым делом, поскольку сервер имеет внешний IP-адрес, общедоступен и обязан принимать и обслуживать запросы от клиентских приложений. С другой стороны, сервер почти всегда хорошо защищен с помощью межсетевых экранов и систем обнаружения вторжений, имеет мощное аппаратное обеспечение и, как правило, обслуживается целой командой грамотных специалистов по ИТ-безопасности.
4. Атаки типа spoofing
Слово «spoofing» переводится как «обман», «подделка». Существует несколько разновидностей спуфинга.
1) IP-spoofing - подмена реального IP-адреса ложным в отправляемых пакетах.
Предположим, в локальной сети имеется хост А, предоставляющий другому хосту В из этой же локальной сети определенный сервис (например, доступ по протоколу telnet). Для других хостов этот сервис недоступен; хосты А и В идентифицируют друг друга по IP-адресам.
Злоумышленник на узле Х, находящийся в той же сети и желающий получить такой сервис, должен имитировать узел В. Для этого он присваивает себе IP-адрес хоста B. В том случае, когда хост В выключен, это присвоение выполняется простой заменой IP-адреса в свойствах сетевого соединения. Атакуемый хост А принимает запрос от злоумышленника и отвечает на него.
В случае, когда хост В включен, злоумышленник не может просто присвоить себе чужой IP-адрес, так как это вызовет конфликт одинаковых адресов. Ему придется подменить IP адрес источника в отправляемом пакете.
Однако здесь возникает определенная сложность. Дело в том, что хост А, перед тем, как ответить на запрос от злоумышленника, должен определить MAC-адрес, на который он будет отправлять свой ответ. Как известно, для определения MAC-адреса используются ARP-запросы. Но на ARP-запрос от компьютера А ответит компьютер В (потому что именно его IP адрес будет указан в ARP-запросе). Таким образом, хост А отправит свой ответ на хост В, а не злоумышленнику.
Чтобы решить эту проблему, злоумышленник X может отправить на А ложный ARP-ответ, в котором будет сопоставлен IP (B) и MAC (X).
Схема проведения атаки приведена на рисунке.
Применение IP spoofing для получения несанкционированного доступа к ресурсу
Довольно часто подобная атака применяется в районных локальных сетях с целью получения несанкционированного доступа в Интернет (если фильтрация пользователей происходит по IP-адресам). В этом случае в роли хоста А, предоставляющего некий сервис, выступает шлюз локальной сети, а в роли злоумышленника – пользователь, желающий получить бесплатный доступ в Интернет.
Другой пример - межсетевой экран организации может запрещать какой-либо группе пользователей выход в Интернет в рабочее время или блокировать доступ к определенным сайтам (в то время как другой группе пользователей, например администраторам, этот доступ может быть разрешен). Если фильтрация пользователей производится по их IP-адресам, то, присвоив себе на время чужой IP-адрес, пользователь может получить доступ к желаемым ресурсам.
В том случае, когда злоумышленник и хост В находится за пределами локальной сети, атака резко усложняется. Это связано с тем, что злоумышленник не сможет получать ответы от атакуемого компьютера А. По-прежнему ничто не мешает ему отправлять в адрес А сфальсифицированные пакеты от имени В, но ответные пакеты А будет отправлять узлу В, минуя злоумышленника. В некоторых случаях этого может быть достаточно для успешного осуществления атаки: хакер будет передавать на атакуемый хост А определенные команды, которые тот будет выполнять, полагая, что они исходят от В.
Однако существует определенная сложность, связанная с тем, что злоумышленник не получает ответов от А.
Как правило, взаимодействие между хостами осуществляется посредством протокола TCP. Перед тем, как начать обмен данными, необходимо установить соединение, то есть обменяться тремя служебными сегментами. Также, TCP присваивает каждому сегменту определенный порядковый номер.
Узел Х от имени В отправляет в А сегмент с битом SYN, где указывает свой начальный порядковый номер ISN(В). Узел А отвечает узлу В SYN-сегментом, в котором подтверждает получение предыдущего сегмента, и устанавливает свой начальный номер ISN(A). Этот сегмент злоумышленник никогда не получит.
Здесь возникает две проблемы: 1) узел В, получив от А ответ на SYN-сегмент, который он никогда не посылал, отправит узлу А сегмент с битом RST (сброс соединения), тем самым сводя к нулю усилия злоумышленника. 2) узел Х все равно не сможет отправить в А следующий сегмент (как раз это должен быть сегмент с данными), потому что в этом сегменте узел Х должен подтвердить получение SYN-сегмента от А. Но злоумышленник не может подтвердить его получение – он не знает знает номера ISN(A), потому что соответствующий сегмент ушел к узлу В.
Первая проблема решается относительно просто: злоумышленник проводит против узла В атаку типа «отказ в обслуживании» с тем расчетом, чтобы узел В не был способен обрабатывать сегменты, приходящие из А. Например, можно поразить узел В шквалом SYN-сегментов от несуществующих узлов. Впрочем, к облегчению злоумышленника, может оказаться, что узел В просто выключен.
Для решения второй проблемы злоумышленник должен уметь предсказывать значения ISN(A). Если операционная система узла А использует какую-либо функцию для генерации значений ISN (например, линейную зависимость от показания системных часов), то последовательно открыв несколько пробных соединений с узлом А и проанализировав присылаемые в SYN-сегментах от А значения ISN, злоумышленник может попытаться установить эту зависимость опытным путем.
Хорошая реализация TCP должна использовать случайные числа для значений ISN (более подробное обсуждение этого вопроса можно найти в RFC-1948). Несмотря на кажущуюся простоту этого требования, проблема с угадыванием номеров ISN остается актуальной и по сей день.
Описанная выше ситуация с “угадыванием” порядковых номеров TCP-сегментов носит название «Перехват TCP-сессии», или «TCP Hijacking», и является довольно сложной и нетривиальной задачей.
Если в качестве транспортного протокола используется UDP, то проблемы с подбором порядковых номеров сегментов не существует. Протокол UDP не использует установку соединения и не нумерует сегменты, поэтому злоумышленник должен только сфабриковать пакет, адресованный от узла В узлу А, и отправить ее по назначению.
IP-spoofing также часто используется как составная часть более сложной атаки, где важно замаскировать свою личность, свой истинный IP-адрес.
Методы борьбы:
Применение дополнительных методов аутентификации. Это означает, что для получения доступа к ресурсу необходимо не только иметь соответствующий IP-адрес, но и предъявить правильный логин и пароль. В этом случае IP-spoofing отказывается неэффективным.
Фильтрация RFC 2827. Многие провайдеры пресекают попытки спуфинга чужих сетей из своей сети. Это делается следующим образом: отсекается исходящий трафик, если адрес источника не является внутренним адресом сети, т.е. был заменен. Эта мера не защищает свою собственную сеть от спуфинга - она только не позволяет атаковать чужие сети.
2) MAC-spoofing - подделка MAC-адреса в отправляемых пакетах (например, с целью незаконного подключения к беспроводной сети, если точка доступа использует проверку клиентов по их MAC-адресам). Подделка MAC-адреса может быть осуществлена чрезвычайно просто – сменой MAC-адреса в свойствах сетевого адаптера, либо путем использования генератора пакетов.
Смена MAC-адреса сетевого адаптера
2) ARP-spoofing – отправка ложного ARP-ответа на атакуемый компьютер, с целью перехвата трафика (рассматривался в п. 2.1).
3) ICMP-Spoofing.
При этом подделываются пакеты протокола ICMP. В частности, используется при DoS-атаке ICMP Smurf (будет рассмотрена далее).
5. Атаки, обеспечивающие несанкционированный обмен данными
Данный класс атак направлен на то, чтобы преодолеть межсетевой экран (firewall) и получить несанкционированный доступ к атакуемому компьютеру внутри локальной сети.
5.1. Туннелирование
Схема проведения атаки «Туннелирование»
Предположим, злоумышленник хочет отправить данные с узла Х узлу А, находящемуся за пределами его сети, однако правила фильтрации на маршрутизаторе запрещают отправку пакетов узлу А. В то же время разрешена отправка пакетов узлу В, также находящемуся за пределами охраняемой сети.
Злоумышленник использует узел В как ретранслятор пакетов, направленных в А. Для этого он создает пакет, направленный из Х в В. В качестве данных этот пакет несет другой IP-пакет, направленный из Х в А. Фильтрующий маршрутизатор пропускает сформированный пакет, поскольку он адресован разрешенному узлу В, а IP-модуль узла В извлекает из него вложенный пакет. Видя, что вложенный пакет адресован не ему, узел В отправляет его по назначению, то есть узлу А.
Описанная операция называется туннелированием.
Очевидно, что туннелирование может использоваться и в обратном направлении, то есть, для проникновения из Интернета внутрь охраняемой сети. При этом узел Х находится в Интернете, а узлы А и В — в охраняемой сети и узлу В разрешено получение датаграмм из внешних сетей.
Защита от туннелирования.
В заголовке кажого IP-пакета есть поле Protocol, предназначенное для того, чтобы указать – заголовок какого протокола следует за IP-заголовком. Как правило, после IP-заголовка следует заголовок TCP (в этом случае в поле Protocol помещается значение 6), UDP (Protocol = 17) или ICMP (Protocol = 1). В том случае, когда один IP-пакет вложен в другой IP-пакет, в поле Protocol будет стоять значение 4. Соответственно, для защиты от туннелирования следует запретить маршрутизатору транслировать во внешнюю сеть (или получать из внешней сети) пакеты с полем Protocol=4.
5.2. Атака крошечными фрагментами (Tiny Fragment Attack)
Различные сети имеют различный максимальный размер кадра. Это число зависит от скоростных характеристик и вероятности возникновения ошибки при передаче.
При передаче пакета из сети с большим размером кадра в сеть с меньшим размером кадра может возникнуть необходимость во фрагментации пакета (т.е. разбиения его на части), поскольку целый пакет может просто “не влезть” в поле данных кадра. Фрагментацию выполняет маршрутизатор.
Пакет разбивается на фрагменты, в IP-заголовке каждого фрагмента указывается ID (число, одинаковое для всех фрагментов одного пакета) и Fragment Offset, т.е. смещение фрагмента. Первый фрагмент имеет смещение = 0. Смещение считается 8-байтовыми порциями: если длина первого фрагмента = 8 байт, то для второго сегмента Fragment Offset = 1, если 16 байт – то 2, если 32 байта – то 4 и т.д. ID и Fragment Offset используются для того, чтобы собрать из фрагментов целый пакет на приемной стороне.
Нефрагментированный пакет:
IP-заголовок
Данные
Фрагментированный пакет:
IP-заголовок
ID = 1234
Fragment Offset = 0
Часть данных
IP-заголовок
ID = 1234
Fragment Offset = 1
Часть данных
8 байт
В случае, когда на вход межсетевого экрана поступает фрагментированный пакет, он производит досмотр только первого фрагмента пакета (первый фрагмент определяется по значению поля IP-заголовка Fragment Offset=0). Если первый фрагмент не удовлетворяет условиям пропуска, он уничтожается. Остальные фрагменты можно безболезненно пропустить, не затрачивая на них вычислительные ресурсы фильтра, поскольку без первого фрагмента пакет все равно не может быть собран на узле назначения.
При конфигурировании межсетевого экрана, как правило, разрешаются «исходящие» соединения (которые устанавливаются компьютерами внутренней сети с внешними компьютерами Интернет). Но запрещаются «входящие» соединения (устанавливаемые внешними компьютерами, находящимися в Интернете, с внутренними компьютерами локальной сети).
Для решения этой задачи на межсетевом экране запрещается пропуск TCP-сегментов, поступающих из внешней сети и имеющих установленный бит SYN при отсутствии бита ACK. Сегменты без бита SYN беспрепятственно пропускаются в охраняемую сеть, покольку они могут относиться к соединению, уже установленному ранее по инициативе внутреннего компьютера.
Рассмотрим, как злоумышленник может использовать фрагментацию, чтобы обойти это ограничение, то есть, передать SYN-сегмент из внешней сети во внутреннюю.
Фрагментация пакета при проведении Tiny Fragment Attack
Злоумышленник формирует искусственно фрагментированный IP-пакет с TCP-сегментом внутри. При этом первый фрагмент пакета имеет минимальный размер поля данных — 8 байт. В поле данных IP-пакета находится TCP-сегмент, начинающийся с TCP-заголовка. В первых 8 байтах TCP-заголовка находятся номера портов отправителя и получателя и поле Sequence Number, но значения флагов не попадут в первый фрагмент. Значения флагов (в том числе флаг SYN, выделено красным) попадут во второй фрагмент. Межсетевой экран пропустит первый фрагмент пакета, а остальные фрагменты он проверять не будет. Таким образом, пакет с SYN-сегментом будет успешно доставлен на узел назначения и после сборки передана модулю TCP.
Схема проведения Tiny Fragment Attack
Для защиты от этой атаки межсетевому экрану, естественно, не следует проверять содержимое всех фрагментов пакетов — это быстро поглотит все его вычислительные ресурсы. Достаточно реализовать один из двух следующих подходов:
1) не пропускать пакеты с Fragment Offset=0, размер поля данных которых меньше определенной величины, достаточной, чтобы вместить все «интересные поля»;
2) не пропускать пакеты с Fragment Offset=1: наличие такого пакета означает, что TCP-сегмент был фрагментирован с целью скрыть определенные поля заголовка и что где-то существует первый фрагмент с 8 байтами данных. Несмотря на то, что в данном случае первый фрагмент будет пропущен, узел назначения не сможет собрать пакет, так как фильтр уничтожил второй фрагмент.
Отметим, что поскольку в реальной жизни никогда не придется фрагментировать пакет до минимальной величины, риск потерять легальные пакеты, применив предложенные выше методы фильтрации, равен нулю.
6. Атаки, обеспечивающие перехват данных
6.1. Ложное сообщение ICMP Redirect
Смысл этой атаки состоит в навязывании атакуемому хосту ложного маршрутизатора.
Предположим, что некий хост локальной сети А отправляет свои пакеты в Интернет через маршрутизатор G1. Однако маршрутизатор G1 может решить, что пакеты в данное место назначения следует отправлять через другой маршрутизатор – через G2. В этом случае он отправляет хосту А сообщение ICMP Redirect, в котором указывает адрес G2. Хост А, получив сообщение ICMP Redirect, начинает отправлять свои пакеты через маршрутизатор G2. В реальной жизни этот механизм может использоваться для балансировки загрузки маршрутизаторов.
Рассмотрим, как сообщение ICMP Redirect может быть использовано злоумышленником для перехвата трафика.
Атакующий, находящийся в одной сети с атакуемым хостом, действует следующим образом. Он отправляет атакуемому хосту А ложное сообщение ICMP Redirect, якобы от имени маршрутизатора локальной сети G. В этом сообщении он указывает свой адрес (X) как адрес нового маршрутизатора, через которого хост А теперь должен отправлять трафик в Интернет.
Получив сообщение ICMP Redirect, якобы от G, атакуемый хост начинает отправлять свой интернет-трафик через злоумышленника Х. Х изучает этот трафик, извлекает из него конфиденциальную информацию, после чего пересылает его настоящему маршрутизатору G для дальнейшей отправки в Интернет.
Отметим, что трафик из Интернета в А будет по-прежнему направляться маршрутизатором непосредственно хосту А, минуя злоумышленника. Несмотря на такой «половинчатый» перехват, злоумышленник может просматривать и модифицировать данные, направляемые из А в Интернет. Более того, злоумышленник может вообще не пересылать пакеты в Интернет, а отвечать на них сам, фабрикуя пакеты от имени узла в Интернете.
Схема проведения атаки ICMP Redirect
Таким образом, для создания ложного сообщения Redirect с целью перехвата трафика между хостами А и хостом в Интернете злоумышленник должен находиться в одной IP-сети с А и знать адрес маршрутизатора, через который А отправляет пакеты в Интернет. Если в сети имеется единственный шлюз, то он и является искомым маршрутизатором.
Для устранения возможности описываемой атаки необходимо отключить на хосте обработку сообщений Redirect. Это действие выглядит совершенно разумным, особенно для хостов в сетях с единственным шлюзом, и может быть выполнено с помощью брандмауэра.
Вообще говоря, для пользователя атакуемого узла не составит особого труда раскрыть замысел злоумышленника:
1) полученное сообщение Redirect отобразится в виде неожиданно появившейся строки в таблице маршрутизации хоста А, направляющей данные для хоста В через узел Х.
2) Кроме того, утилита traceroute скорее всего покажет дополнительный промежуточный узел на пути к В.
К сожалению, пользователи обычно не заглядывают в таблицу маршрутов и не запускают traceroute, если поведение сетевых программ не вызывает у них подозрений, поэтому злоумышленник имеет хорошие шансы остаться незамеченным.
6.2. Ложное сообщение DHCP
В некоторых случаях навязывание ложного маршрутизатора может быть произведено с помощью протокола DHCP. Фальсификация сообщений протокола DHCP будет успешна, если хост конфигурирует себя через этот протокол. В ответ на запрос DHCPDISCOVER злоумышленник оперативно возвращает хосту подложное сообщение DHCPOFFER, где в числе дополнительных параметров указывает себя в качестве маршрутизатора по умолчанию. Чтобы опередить предложение от легитимного сервера, злоумышленник может рассылать DHCPOFFER непрерывно, чтобы сделавший запрос хост получил предложение немедленно. В этом случае также происходит «половинчатый» перехват.
6.3. Атака на протоколы маршрутизации
Если злоумышленник хочет перехватить трафик между узлами сети Р и узлами сети Q, и при этом не находится ни в одной из сетей P или Q, но расположен на пути между ними, он может попытаться ввести в заблуждение маршрутизаторы. Маршрутизаторы не реагируют на сообщения ICMP Redirect, поэтому для успешной атаки необходимо, чтобы они использовали какой-либо протокол маршрутизации. В этом случае злоумышленник может сформировать подложные сообщения протокола маршрутизации с целью переключения требуемых маршрутов на себя.
7. Атаки отказа в обслуживании (DoS)
7.1. Общие принципы и концепции DDoS атак
(D)DoS-атака - сокращение от (Distributed) Denial of Service Attack, (распределённый) отказ в обслуживании. Атака DDoS представляет собой тип атаки, результатом которой может явиться выход из строя или замедление скорости работы системы путем истощения ее ресурсов, таким образом легитимные (правомерные) пользователи компьютерной системы не смогут получить доступа к ресурсам, предоставляемых этой системой, или этот доступ будет затруднен.
Особенностью данного вида атаки является то, что злоумышленники не ставят своей целью незаконное проникновение в защищенную компьютерную систему с целью кражи или уничтожения информации. Цель данной атаки - парализовать работу атакуемой системы или информационного ресурса.
Интересно, что изначально программное обеспечение для реализации DDoS создавалось с целью использования для экспериментов по изучению пропускной способности сетей и их устойчивости к внешним нагрузкам.
Первые сообщения о DoS-атаках относятся к 1996 году. Но всерьез об этой проблеме заговорили в конце 1999 года, когда были выведены из строя веб-серверы таких корпораций, как amazon, yahoo, cnn, ebay, e-trade и ряда других. Спустя год, в декабре 2000-го ситуация повторилась: серверы крупнейших корпораций были атакованы по технологии DDoS при полном бессилии сетевых администраторов.
В октябре 2002 года предвестником будущих крупномасштабных атак стала мощная атака DDoS, которая затронула 9 из 13 корневых серверов DNS, важнейшие системы, служившие “картой” практически для всех Интернет-коммуникаций.
На сегодняшний день распределенные атаки типа отказ в обслуживании (DDoS) – это реальная и растущая угроза, с которой сталкиваются компании во всем мире. Эти атаки чрезвычайно сложны для самых популярных на сегодняшний день инструментов выявления, способны быстро истощить ресурсы компании, выбранной в качестве жертвы, а убытки от них могут исчисляться сотнями тысяч, если не десятками миллионов долларов недополученной прибыли.
Успешная атака DDoS вызывает самые разнообразные последствия. Существенно ухудшается быстродействие сайтов, что вызывает обоснованное недовольство клиентов и других пользователей. Нарушаются обязательства по договорам обслуживания и приходится возвращать существенные деньги за неоказанные услуги. Страдает репутация компании – на нее ложится темное пятно, иной раз несмываемое. Неполученные прибыли, падение производительности, рост расходов на IT, судебные издержки – вот лишь некоторый перечень возможных последствий. Цифры поистине ошеломляющие. По оценке Forrester, IDC, и прогнозам Yankee Group убытки от 24-часового перерыва в работе для крупной компании в сфере электронной коммерции приближаются к US$30 млн. Серия атак DDoS на Amazon, Yahoo, eBay и другие крупные сайты в феврале 2000 года, по оценкам Yankee Group, принесла совокупные убытки в размере US$1,2 млрд. А в январе 2001 года Microsoft из-за атаки DDoS на ее сайт потеряла около US$500 млн. всего за несколько дней. Очевидно, что компании должны защитить себя от этих разрушительных атак, обеспечив надежную защиту различных уязвимых точек.
Цели злоумышленника при проведении DoS атаки.
- Кража информации – В некоторых случаях хакеры запускают атаки DDoS в качестве отвлекающего маневра и просматривают конфиденциальную клиентскую или корпоративную информацию, например, номера кредитных карт или объекты интеллектуальной собственности.
- Шантаж – Хакер предлагает остановить (или не инициировать) атаку DDoS в обмен на наличные. Первоначально попытки шантажа предпринимались в отношении оффшорных компаний, занимающихся азартными играми, но в последнее время они распространились и на фирмы, входящие в список Fortune 500.
- Манипулирование биржевыми ценами – В определенных сферах бизнеса недоступность веб сайтов приводит к падению биржевых цен. В некоторых случаях хакеры запускают атаку DDoS, чтобы получить прибыть от трейдинговых операций в течение дня.
- Недобросовестная конкуренция – Недавний случай: компания, занимающаяся розничной продажей кирпича и строительных смесей, наняла компьютерного консультанта, чтобы запустить атаку DDoS против конкурента, предлагающего свои услуги через Интернет.
Общая схема осуществления DDoS-атаки
Во время атаки DDoS большое количество хостов посылают разрешенные по форме, хотя и злонамеренные по сути, запросы на обслуживание на один целевой объект. Целью может служить любой ресурс, связанный с сетью Интернет, включая серверы DNS, сервисы электронной почты, онлайновые приложения или интерфейсы маршрутизации. В худшем случае, сталкиваясь с лавиной запросов, либо веб сервер, либо маршрутизатор, расположенный у вышестоящего оператора связи, выходят из строя и весь трафик останавливается. Обычно DoS атаки направлены на исчерпание критичных системных ресурсов, таких как вычислительные мощности, оперативная память, дисковое пространство или пропускная способность каналов связи. Если какой-то из ресурсов достигнет максимальной загрузки, приложение целиком будет недоступно.
Чаще происходит перенасыщение канала связи и оборудования, в результате чего возможен пропуск лишь части трафика – как от благонадежных, так и от злоумышленных пользователей.
Схематически DDoS-атака выглядит следующим образом: на выбранный в качестве жертвы сервер обрушивается огромное количество ложных запросов со множества компьютеров, расположенных в разных сетях страны. В результате сервер тратит все свои ресурсы на обслуживание этих запросов и становится практически недоступным для обычных пользователей. Циничность ситуации заключается в том, что пользователи компьютеров, с которых направляются ложные запросы, могут даже не подозревать о том, что их машина используется хакерами. Программы, установленные злоумышленниками на этих компьютерах, принято называть "зомби". Этими «зомби»-хостами неумышленно становятся миллионы незащищенных компьютеров, которые выходят в Интернет через широкополосные постоянно-активные соединения. Известно множество путей "зомбирования" компьютеров - от проникновения в незащищенные сети, до использования программ-троянцев. Этот подготовительный этап является для злоумышленника наиболее трудоемким.
Чаще всего злоумышленники при проведении DDoS-атак используют трехуровневую архитектуру, которую называют "кластер DDoS". Общая схема такого кластера изображена на рисунке.
Схема организации кластера DDOS
Такая иерархическая структура содержит:
- управляющую консоль (их может быть несколько), т.е. именно тот компьютер, с которого злоумышленник подает сигнал о начале атаки;
- главные компьютеры. Это те машины, которые получают сигнал об атаке с управляющей консоли и передают его агентам-"зомби". На одну управляющую консоль в зависимости от масштабности атаки может приходиться до нескольких сотен главных компьютеров;
- агенты - непосредственно сами "зомбированные" компьютеры, своими запросами атакующие узел-мишень. Определенные здесь агенты входят в состав бот-сетей. Бот-сеть – это специально созданная распределенная группа зараженных компьютеров (ботов), контролируемая злоумышленниками.
Проследить такую структуру в обратном направлении практически невозможно. Максимум того, что может определить атакуемый, это адрес агента. Специальные мероприятия в лучшем случае приведут к главному компьютеру.
DoS-атаки можно условно поделить на три группы:
- атаки большим числом формально корректных, но, возможно, сфальсифицированных пакетов, направленные на истощение ресурсов узла или сети;
- атаки специально сконструированными пакетами, вызывающие общий сбой системы из-за ошибок в программах;
- атаки сфальсифицированными пакетами, вызывающими изменения в конфигурации или состоянии системы, что приводит к невозможности передачи данных, сбросу соединения или резкому снижению его эффективности.
7.2. DDoS атаки, основанные на протоколе TCP и UDP
1) TCP SYN Flood
При проведении такого рода атаки выдается большое количество запросов на открытие TCP-соединений с атакуемым узлом, которому, в результате, приходится расходовать все свои ресурсы на то, чтобы отслеживать эти частично открытые соединения.
Вспомним, что происходит при установлении TCP-соединения. Происходит так называемое трёхуровневое рукопожатие. Убрав из схемы трёхуровневого рукопожатия шаг номер 3, можно реализовать атаку TCP SYN Flood.
Тогда на втором шаге удаленная система посылает нам SYN/ACK пакет и заносит пакет в очередь (другое название очереди – буфер полуоткрытых соединений). Добавление пакета в очередь означает, что если в течение установленного интервала времени система не получит подтверждения того, что данный пакет дошел до адресата (шаг №3 и есть это подтверждение), то данный пакет будет считаться потерянным и потому будет послан снова. Если подтверждение в виде SYN/ACK пакета будет получено, то пакет будет удален из очереди.
Представим, что произошла попытка установки еще одного соединения - и новый пакет из шага №2 добавляется в очередь. А потом ещё одна попытка и еще один пакет. Очередь имеет свои известные пределы, поэтому рано или поздно должно произойти ее переполнение. После чего удаленная система перестает реагировать на всякие попытки установления соединения.
После истечения некоторого времени система удаляет пакеты из очереди. Однако ничего не мешает атакующему послать новую серию запросов, чтобы вновь заполнить буфер атакуемой системы, тем самым и далее поддерживая её в нерабочем состоянии.
Этот вид DOS атаки очень распространён, практически все известные порталы в свое время страдали от подобных атак. И скорее всего еще будут страдать, поскольку полностью защититься от атаки SYN-flood невозможно, а сама атака сложна только тем, что для ее проведения результативной атаки необходимы командные действия.
2) TCP flood
Это вид атаки, при котором с атакуемой системой устанавливается множество TCP соединений, что приводит к связыванию её системных ресурсов. При этом виде атаки происходят все три стадии установления TCP соединения, но никаких данных после этого не пересылается, а происходит установление следующего соединения и т.д.
3) Reflection SYN flooding
TCP соединение требует, чтобы любая TCP служба, которая получает SYN пакет, ответила SYN/ACK пакетом.
На определённые сервера в сети (называемые “отражателями”) посылаются SYN-пакеты с исходным IP адресом, указывающим на атакуемую машину. Сервер или маршрутизатор, который получает эти поддельные SYN пакеты, посылает SYN/ACK ответы на атакуемый хост. Компьютер, который отправляет SYN/ACK пакет, ожидает на него ACK-ответ, а при его отсутствии посылает ещё несколько SYN/ACK пакетов. Поэтому "отражатели" отправят в три или четыре раза больше SYN/ACK пакетов по сравнению числом полученных. Это также означает, что SYN/ACK пакеты продолжат атаковать целевой сервер в течение минуты или двух даже после того, как злоумышленник прекратил нападение.
4) UDP flood
Атака состоит в отправке на атакуемую систему очень большого количества UDP-сообщений. Данная атака наиболее эффективна в том случае, если на атакуемой машине запущен сервис, работающий по протоколу UDP (например, DNS сервер).
7.3. DDoS атаки, основанные на протоколе ICMP
1) ICMP flood
Атака состоит в отправке на атакуемую систему очень большого количества ICMP-сообщений.
2) ICMP smurf
Основана на протоколе ICMP, похожа на TCP Reflection.
Злоумышленник направляет несколько сфальсифицированных сообщений ICMP Echo Request (запросов) от имени жертвы по широковещательному адресу сетей, которые выступают в роли отражателей. Большое число узлов, находящихся в сетях-отражателях и поддерживающих обработку широковещательных Echo-запросов, одновременно отправляет ICMP Echo Reply (ответы) на атакуемый узел. В результате атаки сеть, в которой находится жертва, и сам атакуемый узел становятся недоступными для остальных пользователей. Более того, если атакуемая организация оплачивает услуги провайдера Интернета пропорционально полученному трафику, ее расходы могут существенно возрасти.
Для атакуемого узла и его сети не существует адекватных способов защиты от этой атаки. Очевидно, что блокирование ICMP-сообщений маршрутизатором на входе в атакуемую сеть не является удовлетворительным решением проблемы, поскольку при этом канал, соединяющий организацию с провайдером Интернета, остается подверженным атаке, а именно он, как правило, является наиболее узким местом при работе организации с Интернетом. И поскольку ICMP-сообщения были доставлены провайдером на маршрутизатор организации, они подлежат оплате.
Атаку smurf можно обнаружить путем анализа трафика на маршрутизаторе или в сети (большое количество сообщений ICMP Echo Reply). Признаком атаки является также полная загрузка внешнего канала и сбои в работе хостов внутри сети.
7. 4. Ложные DHCP-клиенты
Атака состоит в создании злоумышленником большого числа сфальсифицированных запросов от различных несуществующих DHCP-клиентов. Если DHCP-сервер выделяет адреса динамически из некоторого пула, то все адресные ресурсы могут быть истрачены на фиктивных клиентов, вследствие чего легитимные хосты не смогут сконфигурироваться и лишатся доступа в сеть.
Для защиты от этой атаки администратору следует поддерживать на DHCP-сервере таблицу соответствия MAC- и IP-адресов (если это возможно); сервер должен выдавать IP-адреса в соответствии с этой таблицей.
7.5. Атаки специально сконструированными пакетами, вызывающие общий сбой системы из-за ошибок в программах
DoS-атаки этой группы не связаны с какими-либо проблемами протоколов стека TCP/IP, а используют ошибки в их программной реализации. Эти ошибки сравнительно просто исправить. Здесь будет представлен краткий обзор наиболее известных атак, имея в виду, почти все из них представляют лишь исторический интерес. С другой стороны нет никаких гарантий того, что не будут обнаружены новые ошибки. Все описываемые ниже атаки приводят к общему сбою уязвимой системы. Для защиты от них необходимо использовать последние версии операционных систем и следить за обновлениями к ним.
1. Ping of death
Атака состоит в посылке на атакуемый узел фрагментированной датаграммы, размер которой после сборки превышает максимальный разрешенный размер датаграммы (65 535 байт).
2. Land
Атака состоит в посылке на атакуемый узел SYN-сегмента TCP, у которого IP-адрес и порт отправителя совпадают с адресом и портом получателя.
3. Teardrop
Присылается несколько фрагментов одного пакета. Как известно, данные первого и второго фрагмента могут частично дублировать друг друга – такие фрагменты называются накладывающимися. При сборке пакета второй фрагмент накладывается на первый, и его данные записываются поверх предыдущего фрагмента.
Предположим, что сначала на хост приходит фрагмент А с длиной 120, а затем фрагмент В со смещением 40 и длиной 160, то есть фрагменты накладываются, что вполне разрешено.
Модуль IP вычисляет длину той части фрагмента В, которая не накладывается на А: (40+160) – 120 = 80, и копирует последние 80 октетов фрагмента В в буфер сборки.
Предположим, злоумышленник сконструировал фрагмент В так, что тот имеет смещение 40, а длину 72. Вычисление длины перекрытия дает отрицательный результат: (40+72) – 120 = -8. С учетом представления отрицательных чисел в машинной арифметике это интерпретируется как 65528, и программа начинает записывать 65 528 байтов в буфер сборки, переполняя его и затирая соседнюю область памяти.
Рекомендации по защите от (D)DoS-атак
Угрозу DoS-атак можно снизить несколькими способами.
1) Во-первых, необходимо сконфигурировать функции анти-спуфинга на маршрутизаторах и межсетевых экранах. Они заключаются в том, чтобы блокировать исходящий из сети трафик, если адрес источника не является внутренним адресом сети, т.е. был заменен (RFC 2827). Такая фильтрация не позволит злоумышленнику проводить DoS-атаки на чужие сети с использованием подмены адреса источника.
2) Во-вторых, необходимо включить и правильно сконфигурировать функции анти-DoS на маршрутизаторах и межсетевых экранах. Эти функции ограничивают число полуоткрытых каналов, не позволяя перегружать систему.
3) Также рекомендуется при угрозе DoS-атаки ограничить объем проходящего по сети некритического трафика. Обычно ограничивается объем трафика ICMP, так как он используется сугубо для диагностических целей. Однако на сегодняшний день в атаках DDoS, как правило, используются корректные действующие протоколы, которые необходимы для работы в сети Интернет. Поэтому фильтрация протоколов становится менее эффективным средством защиты.