Фрагментация данных
При передачи пакета данных протокола IP по сети может осуществляться деление этого пакета на несколько фрагментов. В последствии, при достижении адресата, пакет восстанавливается из этих фрагментов. Злоумышленник может инициировать посылку большого числа фрагментов, что приводит к переполнению программных буферов на приемной стороне и, в ряде случаев, к аварийному завершению системы.
Ping flood
Появился он потому, что программа "ping", предназначенная для оценки качества линии, имеет ключ для "агрессивного" тестирования. В этом режиме запросы посылаются с максимально возможной скоростью и программа позволяет оценить, как работает сеть при максимальной нагрузке. Данная атака требует от злоумышленника доступа к быстрым каналам в Internet. Вспомним, как работает ping. Программа посылает ICMP-пакет типа ECHO REQUEST, выставляя в нем время и его идентификатор. Ядро машины-получателя отвечает на подобный запрос пакетом ICMP ECHO REPLY. Получив его, ping выдает скорость прохождения пакета. При стандартном режиме работы пакеты высылаются через некоторые промежутки времени, практически не нагружая сеть. Но в "агрессивном" режиме поток ICMP echo request/reply-пакетов может вызвать перегрузку небольшой линии, лишив ее способности передавать полезную информацию. Естественно, случай с ping является частным случаем более общей ситуации, связанный с перегрузкой каналов. Например, злоумышленник может посылать множество UDP-пакетов на 19-й порт машины-жертвы, и если она, следуя общепринятым правилам, имеет на 19-м UDP-порту знакогенератор, отвечающий на пакеты строчками по 80 байт. Заметим, что злоумышленник может также подделывать обратный адрес подобных пакетов, затрудняя его обнаружение. Отследить его поможет разве что скоординированная работа специалистов на промежуточных маршрутизаторах, что практически нереально. Одной из вариантов атаки - посылать ICMP echo request-пакеты с исходным адресом, указывающем на жертву, на broadcast-адреса крупных сетей. В результате каждая из машин ответит на этот фальшивый запрос, и машина-отправитель получит больше количество ответов. Посылка множество broadcast-echo requests от имени "жертвы" на broadcast-адреса крупных сетей, можно вызвать резкой заполненение канала "жертвы". Приметы затопления - резко возросшая нагрузка на сеть (или канал) и повышение количество специфических пакетов (таких, как ICMP). В качестве защиты можно порекомендовать настройку маршрутизаторов, при которых они будут фильтровать тот же ICMP трафик, превышающие некоторую заданную заранее величину (пакетов/ед. времени). Для того чтобы убедиться, что Ваши машины не могут служить источником ping flood'а, ограничьте доступ к ping.
PingOfDeath или SSPing
Сущность его в следующем: на машину жертвы посылается сильно фрагментиpованный ICMP пакет большого pазмеpа (64KB). Реакцией Windows-систем на получение такого пакета является безоговорочное повисание, включая мышь и клавиатуру. Программа для атаки широко доступна в сети в виде исходника на C и в виде запускаемых файлов для некоторых версий Unix. Любопытно, что в отличие от WinNuke жертвой такой атаки могут стать не только Windows машины, атаке подвержены MacOS и некоторые веpсии Unix. Преимущества такого способа атаки в том, что обычно firewall пропускает ICMP пакеты, а если firewall и настроен на фильтрацию адресов посылателей, то, используя нехитрые приемы spoofing, можно обмануть и такой firewall. Недостаток PingOfDeath в том, что для одной атаки надо переслать более 64KB по сети, что делает вообще его говоря малопpименимым для шиpокомасштабных дивеpсий.
UDP bomb
Передаваемый пакет UDP содержит неправильный формат служебных полей. Некоторые старые версии сетевого ПО приводят при получении подобного пакета к аварийному завершению системы.
SYN flood
Затопление SYN -пакетами - самый известный способ "забить" информационный канал. Вспомним, как работает TCP/IP в случае входящих соединений. Система отвечает на пришедший C-SYN - пакет S-SYN/C-ACK -пакетом, переводит сессию в состояние SYN_RECEIVED и заносит ее в очередь. Если в течении заданного времени от клиента не придет S-ACK , соединение удаляется из очереди, в противном случае соединение переводится в состояние ESTABLISHED. Рассмотрим случай, когда очередь входных соединений уже заполнена, а система получает SYN -пакет, приглашающий к установке соединения. По RFC он будет молча проигнорирован. Затопление SYN -пакетами основано на переполнении очереди сервера, после чего сервер перестает отвечать на запросы пользователей. Самая известная атака такого рода - атака на Panix, нью-йоркского провайдера. Panix не работал в течение 2-х недель. В различных системах работа с очередью реализована по разному. Так, в BSD-системах, каждый порт имеет свою собственную очередь размером в 16 элементов. В системах SunOS, напротив, такого разделения и нет и система просто располагает большой общей очередью. Соответственно, для того, что бы заблокировать, к примеру, WWW-порт на BSD достаточно 16 SYN-пакетов, а для Solaris 2.5 их количество будет гораздо больше. После истечение некоторого времени (зависит от реализации) система удаляет запросы из очереди. Однако ничего не мешает злоумышленнику послать новую порцию запросов. Таким образом, даже находясь на соединение 2400 bps, злоумышленник может посылать каждые полторы минуты по 20-30 пакетов на FreeBSD-сервер, поддерживая его в нерабочем состоянии (естественно, эта ошибка была скорректирована в последних версиях FreeBSD). Как обычно, злоумышленник может воспользоваться случайными обратными IP-адресами при формировании пакетов, что затрудняет его обнаружение и фильтрацию его трафика. Детектирование несложно - большое количество соединений в состоянии SYN_RECEIVED, игнорирование попыток соединится с данным портом. В качестве защиты можно порекомендовать патчи, которые реализуют автоматическое "прорежение" очереди, например, на основе алгоритма Early Random Drop. Для того, что бы узнать, если к Вашей системе защита от SYN-затопления, обратитесь к поставщику системы. Другой вариант защиты - настроить firewall так, что бы все входящие TCP/IP-соединения устанавливал он сам, и только после этого перебрасывал их внутрь сети на заданную машину. Это позволит Вам ограничить syn-затопление и не пропустить его внутрь сети. Эта атака относится к атакам запрещения обслуживания, результатом которой является невозможность предоставления услуг. Атака обычно направлена на определённую, конкретную службу, например telnet или ftp. Она заключается в передаче пакетов установления соединения на порт, соответствующий атакуемой службе. При получении запроса система выделяет ресурсы для нового соединения, после чего пытается ответить на запрос (послать "SYN-ACK") по недоступному адресу. По умолчанию NT версий 3.5-4.0 будет пытаться повторить подтверждение 5 раз - через 3, 6, 12, 24 и 48 секунд. После этого еще 96 секунд система может ожидать ответ, и только после этого освободит ресурсы, выделенные для будущего соединения. Общее время занятости ресурсов - 189 секунд.
Smurf
Атака smurf заключается в передаче в сеть широковещательных ICMP запросов от имени компьютера-жертвы. В результате компьютеры, принявшие такие широковещательные пакеты, отвечают компьютеру-жертве, что приводит к существенному снижение пропускной способности канала связи и, в ряде случаев, к полной изоляции атакуемой сети. Атака smurf исключительно эффективна и широко распространена. Противодействие: для распознавания данной атаки необходимо анализировать загрузку канала и определять причины снижения пропускной способности.
Land
Атака Land использует уязвимости реализаций стека TCP/IP в некоторых ОС. Она заключается в передаче на открытый порт компьютера-жертвы TCP-пакета с установленным флагом SYN, причем исходный адрес и порт такого пакета соответственно равны адресу и порту атакуемого компьютера. Это приводит к тому, что компьютер-жертва пытается установить соединение сам с собой, в результате чего сильно возрастает загрузка процессора и может произойти "подвисание" или перезагрузка. Данная атака весьма эффективна на некоторых моделях маршрутизаторов фирмы Cisco Systems, причем успешное применение атаки к маршрутизатору может вывести из строя всю сеть организации. Противодействие: защититься от данной атаки можно, например, установив фильтр пакетов между внутренней сетью и Internet, задав на нём правило фильтрации, указывающее подавлять пакеты, пришедшие из Internet, но с исходными IP адресами компьютеров внутренней сети.
DNS flood
DNS flooding - это атака, направленная на сервера имён Internet. Она заключается в передаче большого числа DNS запросов и приводит к тому, что у пользователей нет возможности обращаться к сервису имен и, следовательно, обеспечивается невозможность работы обычных пользователей. Противодействие: для выявления данной атаки необходимо анализировать загрузку DNS сервера и выявлять источники запросов.
DNS spoofing
Результатом данной атаки является внесение навязываемого соответствия между IP адресом и доменным именем в кэш DNS сервера. В результате успешного проведения такой атаки все пользователи DNS севера получат неверную информацию о доменных именах и IP адресах. Данная атака характеризуется большим количеством DNS пакетов с одним и тем же доменным именем. Это связано с необходимостью подбора некоторых параметров DNS обмена. Противодействие: для выявления такой атаки необходимо анализировать содержимое DNS трафика.
IP spoofing (syslog)
Большое количество атак в сети Internet связано с подменой исходного IP адреса. К таким атакам относится и syslog spoofing, которая заключается в передаче на компьютер жертву сообщения от имени другого компьютера внутренней сети. Поскольку протокол syslog используется для ведения системных журналов, путем передачи ложных сообщений на компьютер-жертву можно навязать информацию или замести следы несанкционированного доступа. Противодействие: выявление атак, связанных с подменой IP адресов, возможно при контроле получения на одном из интерфейсов пакета с исходным адресом этого же интерфейса или при контроле получения на внешнем интерфейсе пакетов с IP адресами внутренней сети.
Навязывание пакетов
Злоумышленник отправляет в сеть пакеты с ложным обратным адресом. С помощью этой атаки злоумышленник может переключать на свой компьютер соединения, установленные между другими компьютерами. При этом права доступа злоумышленника становятся равными правам того пользователя, чье соединение с сервером было переключено на компьютер злоумышленника.
Sniffing - прослушивание канала (возможно только в сегменте локальной сети)
Практически все сетевые карты поддерживают возможность перехвата пакетов, передаваемых по общему каналу локальной сети. При этом рабочая станция может принимать пакеты, адресованные другим компьютерам того же сегмента сети. Таким образом, весь информационный обмен в сегменте сети становится доступным злоумышленнику. Для успешной реализации этой атаки компьютер злоумышленника должен располагаться в том же сегменте локальной сети, что и атакуемый компьютер.
WinNuke
Hаpяду с обычными данными пеpесылаемыми по TCP соединению cтандаpт пpедустатpивает также пеpедачу сpочных (Out Of Band) данных. Hа уpовне фоpматов пакетов TCP это выpажается в ненулевом urgent pointer. У большинства PC с установленным Windows пpисутствует сетевой пpотокол NetBIOS, котоpый использует для своих нужд 3 IP поpта: 137, 138, 139. Как выяснилось, если соединиться с Windows машиной в 139 поpт и послать туда несколько байт OutOfBand данных, то pеализация NetBIOS-а не зная что делать с этими данными попpосту подвешивает или пеpезагpужает машину. Для Windows 95 это обычно выглядит как синий текстовый экpан, сообщающий об ошибке в дpайвеpе TCP/IP и невозможность pаботы с сетью до пеpезагpузки ОC. NT 4.0 без сеpвис паков пеpезагpужается, NT 4.0 со втоpым сеpвис паком выпадает в синий экpан.
IP Hijacking
Метод является комбинацией 'подслушивания' и IP-spoofing'а. Необходимые условия - злоумышленник должен иметь доступ к машине, находящейся на пути сетевого потока и обладать достаточными правами на ней для генерации и перехвата IP-пакетов. Напомним, что при передаче данных постоянно используются sequence number и acknowledge number (оба поля находятся в IP-заголовке). Исходя из их значения, сервер и клиент проверяют корректность передачи пакетов. Существует возможность ввести соединение в "десинхронизированное состояние", когда присылаемые сервером sequence number и acknowledge number не будут совпадать с ожидаемым значениеми клиента, и наоборот. В данном случае злоумышленник, "прослушивая" линию, может взять на себя функции посредника, генерируя корректные пакеты для клиента и сервера и перехватывая их ответы. Метод позволяет полностью обойти такие системы защиты, как, например, одноразовые пароли, поскольку злоумышленник начинает работу уже после того, как произойдет авторизация пользователя. Есть два способа рассинхронизировать соединение. • Ранняя десинхронизация. Соединение десинхронизируется на стадии его установки. Злоумышленник прослушивает сегмент сети, по которому будут проходить пакеты интересующей его сессии. Дождавшись пакета S-SYN от сервера, злоумышленник высылает серверу пакет типа RST (сброс), конечно, с корректным sequence number, и, немедленно, вслед за ним фальшивый C-SYN-пакет от имени клиента Сервер сбрасывает первую сессию и открывает новую, на том же порту, но уже с новым sequence number, после чего посылает клиенту новый S-SYN-пакет. Клиент игнорирует S-SYN-пакет, однако злоумышленник, прослушивающий линию, высылает серверу S-ACK-пакет от имени клиента. Итак, клиент и сервер находятся в состоянии ESTABLISHED, однако сессия десинхронизирована. Естественно, 100% срабатывания у этой схемы нет, например, она не застрахована от того, что по дороге не потеряются какие-то пакеты, посланные злоумышленником. Для корректной обработки этих ситуаций программа должна быть усложнена. • Десинхронизация нулевыми данными. В данном случае злоумышленник прослушивает сессию и в какой-то момент посылает серверу пакет с "нулевыми" данными, т.е. такими, которые фактически будут проигнорированы на уровне прикладной программы и не видны клиенту (например, для telnet это может быть данные типа IAC NOP IAC NOP IAC NOP...). Аналогичный пакет посылается клиенту. Очевидно, что после этого сессия переходит в десинхронизированное состояние. ACK-буря Одна из проблем IP Hijacking заключается в том, что любой пакет, высланный в момент, когда сессия находится в десинхронизированном состоянии вызывает так называемый ACK-бурю. Например, пакет выслан сервером, и для клиента он является неприемлимым, поэтому тот отвечает ACK-пакетом. В ответ на этот неприемлимый уже для сервера пакет клиент вновь получает ответ. И так до бесконечности. К счастью современные сети строятся по технологиям, когда допускается потеря отдельных пакетов. Поскольку ACK-пакеты не несут данных, повторных передачи не происходит и "буря стихает". Как показали опыты, чем сильнее ACK-буря, тем быстрее она "утихомиривает" себя - на 10MB ethernet это происходит за доли секунды. На ненадежных соединениях типа SLIP - ненамного больше. Детектирование и защита Есть несколько путей. Например, можно реализовать TCP/IP-стек, который будут контролировать переход в десинхронизированное состояние, обмениваясь информацией о sequence number/acknowledge number. Однако в данном случае мы не застрахованы от злоумышленника, меняющего и эти значения. Поэтому более надежным способом является анализ загруженности сети, отслеживание возникающих ACK-бурь. Это можно реализовать при помощи конкретных средств контроля за сетью. Если злоумышленник не потрудиться поддерживать десинхронизированное соединение до его закрытия или не станет фильтровать вывод своих команд, это также будет сразу замечено пользователем. К сожалению, подавляющее большинство просто откруют новую сессию, не обращаясь к администратору. Стопроцентную защиту от данной атаки обеспечивает, как всегда, шифрование TCP/IP-трафика (на уровне приложений - secure shell) или на уровн протокола - IPsec). Это исключает возможность модификации сетевого потока. Для защиты почтовых сообщений может применяться PGP. Следует заметить, что метод также не срабатывает на некоторых конкретных реализациях TCP/IP. Так, несмотря на [rfc...], который требует молчаливого закрытия сесии в ответ на RST-пакет, некоторые системы генерируют встречный RST-пакет. Это делает невозможным раннюю десинхронизацию.
Сканирование TCP портов
Сканирование портов представляет собой известный метод распознавания конфигурации компьютера и доступных сервисов. Существует несколько методов TCP сканирования, часть из них называется скрытными (stealth), поскольку они используют уязвимости реализаций стека TCP/IP в большинстве современных ОС и не обнаруживаются стандартными средствами. Противодействие: противодействие можно осуществлять, например, передавая TCP пакеты с установленным флагом RST от имени сканируемого компьютера на компьютер злоумышленника.
Сканирование UDP портов
Другой вид сканирования портов основывается на использовании протокола UDP и заключается в следующем: на сканируемый компьютер передаётся UDP пакет, адресованный к порту, который проверяется на предмет доступности. Если порт недоступен то в ответ приходит ICMP сообщение о недоступности (destination port unreachable), в противном случае ответа нет. Данный вид сканирования достаточно эффективен. Он позволяет за короткое время сканировать все порты на компьютере-жертве. Противодействие: противодействовать сканированию данного рода возможно путём передачи сообщений о недоступности порта на компьютер злоумышленника.
Stealth-сканирование
Метод основан на некорректном сетевом коде, поэтому нельзя поручиться что он будет нормально работать в какой-либо конкретной обстановке. Используются TCP-пакеты с установленными ACK- и FIN-флагами. Их надо использовать, т.к. если такой пакет послать в порт при неоткрытом соединении, всегда возвратиться пакет с флагом RST. Существует несколько методов, использующих этот принцип: • Послать FIN-пакет. Если принимающий хост возвращает RST, значит порт неактивен, если RST не возвращается, значит порт активен. Данный метод работает в большинстве операционных систем. • Послать ACK-пакет. Если TTL возвращаемых пакетов меньше, чем в остальных полученных RST-пакетах, или если размер окна больше нуля, то скорее всего порт активен.
Пассивное сканирование
Сканирование часто применяется злоумышленниками для того, чтобы выяснить, на каких TCP-портах работают демоны, отвечающие на запросы из сети. Обычная программа-сканер последовательно открывает соединения с различными портами. В случае, когда соединение устанавливается, программа сбрасывает его, сообщая номер порта злоумышленнику. Данный способ легко детектируются по сообщениям демонов, удивленных мгновенно прерваным после установки соединением, или с помощью использования специальных программ. Лучшие из таких программ обладают некоторыми попытками внести элементы искусственного элемента в отслеживание попыток соединения с различными портами. Однако злоумышленник может воспользоваться другим методом - пассивным сканированием (английский термин "passive scan"). При его использовании злоумышленник посылает TCP/IP SYN-пакет на все порты подряд (или по какому-то заданному алгоритму). Для TCP-портов, принимающих соединения извне, будет возвращен SYN/ACK-пакет, как приглашение продолжить 3-way handshake. Остальные вернут RST-пакеты. Проанализировав данные ответ, злоумышленник может быстро понять, на каких портах работают программа. В ответ на SYN/ACK-пакеты он может также ответить RST-пакетами, показывая, что процесс установки соединения продолжен не будет (в общем случае RST-пакетами автоматический ответит TCP/IP-реализация злоумышленника, если он не предпримет специальных мер). Метод не детектируется предыдущими способами, поскольку реальное TCP/IP-соединение не устанавливается. Однако (в зависимости от поведения злоумышленника) можно отслеживать резко возросшее количество сессий, находящихся в состоянии SYN_RECEIVED. (при условии, что злоумышленник не посылает в ответ RST) прием от клиента RST-пакета в ответ на SYN/ACK. К сожалению, при достаточно умном поведении злоумышленника (например, сканирование с низкой скоростью или проверка лишь конкретных портов) детектировать пассивное сканирование невозможно, поскольку оно ничем не отличается от обычных попыток установить соединение. В качестве защиты можно лишь посоветовать закрыть на firewall все сервисы, доступ к которым не требуется извне.