Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Кибератаки в подробностях: спуфинг пакетов

Оригинал: Cyber Attacks Explained: Packet Spoofing
Автор: Prashant Phatak
Дата публикации: 28 Декабря 2011 г.
Перевод: А.Панин
Дата перевода: 27 Ноября 2012 г.

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

Спуфинг по определению является мистификацией или обманом кого-либо (слово происходит от английского слова "spoof", в переводе означающего мистификация - прим.пер.). Для понимания механизма осуществления атаки при помощи спуфинга пакетов, нам необходимо исследовать в подробностях структуру IP-пакета. Многие кибератаки основываются на дефектах, допущенных при проектировании фундаментальных механизмов функционирования сетей и спуфинг не является исключением. Рассмотрите рисунок 1.

Структура Ethernet-фрейма и IP-пакета
Рисунок 1: Структура Ethernet-фрейма и IP-пакета

Как известно, стандартный Ethernet-фрейм представляет из себя область данных с различными заданными полями, такими, как MAC-адреса источника и назначения, поле контрольной суммы, поля синхронизации (preambles) и другие поля. В случае протокола TCP/IP, TCP-пакет дополняет IP-дейтаграмму и они находятся в стандартном Ethernet-фрейме. TCP-пакет содержит информацию о постоянном соединении, в то время, как IP-пакет содержит информацию о исходном и целевом адресе и порте. Задачей различных уровней OSI является объединение данных из этих пакетов.

Как мы упоминали в прошлой статье, соединение в TCP/IP устанавливается при помощи трехэтапного рукопожатия (SYN, SYN-ACK, ACK). Это рукопожатие служит для установления соединения между двумя сетевыми картами, которые затем используют последовательности пакетов и подтверждения о доставке пакетов для отправки или получения данных. Этот процесс обмена данными обычно заканчивается рукопожатием FIN/FIN-ACK.

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

Атака при помощи спуфинга пакетов
Рисунок 2: Атака при помощи спуфинга пакетов

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

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

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

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

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

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

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

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

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

Типы атак с применением спуфинга пакетов

Зная основы осуществления спуфинга пакетов, давайте подробнее рассмотрим методы осуществления атак. На техническом уровне существуют два типа спуфинга "слепой" спуфинг ("blind" spofing) и "неслепой" спуфинг ("non-blind" spoofing). Как мы обсудили ранее, порядковые номера пакетов и номера подтверждений лежат в основе передачи данных, поэтому их подмена является важным требованием при осуществлении атак.

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

Расширенной версией этой атаки является атака перехвата с участием человека (man-in-the-middle), при которой перехватываются данные всей сессии для их расшифровки и похищения.

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

Подмена номеров портов (IP port spoofing)

При этом типе атаки номер исходного порта модифицируется с целью ввести в заблуждение устройства NAT и межсетевые экраны, а также скрыть свое присутствие в сети. Межсетевые экраны, не обслуживаемые должным образом могут использовать устаревшие правила, согласно которым могут быть открыты определенные порты на узлах с известными IP-адресами. Данный вид атаки использует это обстоятельство.

Эта достаточно серьезная атака, так как злоумышленник может находиться за пределами сети и при этом иметь доступ к внутреннему трафику.

Подмена записей ARP (ARP spoofing)

Поскольку спуфинг подразумевает модификацию или создание пакетов, современные взломщики не ограничиваются только подменой IP-полей. В этом типе атаки, также известном как ARP poisoning, атакующий отправляет измененные ARP-пакеты в локальную сеть для ассоциации MAC-адреса своей сетевой карты с IP-адресом целевой системы.

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

Подмена записей DNS (DNS spoofing)

Эта атака также известна как DNS poisoning и она приводит к более серьезным последствиям. В данном случае сервер доменных имен подвергается воздействию, приводящему к изменению записей, соответствующих именам доменов с целью перенаправления на узел злоумышленника с заданным IP-адресом. Это приводит к тому, что Web- и email-трафик отправляется на узел злоумышленника. Эта атака проводится путем создания нескольких пакетов с измененными значениями полей IP-адреса, порта и типа службы.

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

Атаки на Email- и Web-службы (Email and Web spoofing)

Говоря о 7 уровне OSI, следует упомянуть, что аналогичная техника применяется также и для создания поддельных адресов электронной почты, Web-запросов и гиперссылок. Обычно это делается с целью вброса и распространения вредоносного программного обеспечения (вирусов и троянов) среди пользователей. Помните, что спуфинг применяется при организации атак отказа в обслуживании, так как злоумышленник всегда хочет остаться незамеченным.

Защита систем, основанных на свободном программном обеспечении

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

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

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

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

Свободные системы на основе Linux поставляются со встроенной, но мало известной возможностью, называемой проверкой исходного адреса (source address verification). Это функция ядра, которая при включении позволяет отбрасывать пакеты, которые выглядят так, как будто пришли из внутренней сети, но на самом деле это не так. Последние версии ядра, поставляемые в составе таких дистрибутивов, как Ubuntu и CentOS, поддерживают эту возможность, а в том случае, если ваш дистрибутив не поддерживает эту возможность, пришло время обновиться. Модификация файла hosts.conf и добавление в него параметра nospoof on является еще одним уровнем защиты, который следует попробовать применить.

В плане определения наличия атаки для небольших сетей на основе Linux существует отличная утилита под названием arpwatch, которая очень полезна. Она отслеживает IP и MAC-адреса, записывает все изменения и может использоваться со сценариями для уведомления администраторов о возможной атаке. Сценарии могут использоваться также для исследования системного журнала и поиска аномалий в плане измененных исходных адресов.

Заключение

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

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