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

UnixForum





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

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

Оригинал: Cyber Attacks Explained: Network Sniffing
Автор: Prashant Phatak
Дата публикации: 30 января 2012 г.
Перевод: А.Панин
Дата перевода: 7 декабря 2012 г.

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

Использование сниффера в сетях, работающих по протоколу TCP/IP подразумевает захват, декодирование, исследование и интерпретацию данных, передающихся в пакетах по сети. Целью атак с использованием сниффера является похищение информации, обычно такой, как идентификационные номера пользователей, данные о функционировании сети, номера кредитных карт и.т.д. Использование сниффера считается типом "пассивной" атаки, при котором атакующие не могут быть замечены в сети. Это обстоятельство затрудняет определение наличия данной атаки и, поэтому, этот тип атаки является опасным.

Как мы узнали из предыдущих статей серии, пакет TCP/IP содержит информацию, необходимую для соединения двух сетевых интерфейсов. Он содержит такие поля с информацией об исходном и целевом IP-адресах, номерах портов, номере пакета и типе протокола. Каждое из этих полей является необходимым для функционирования различных уровней сетевого стека и особенно приложений, относящихся к прикладному уровню (уровню 7 OSI), обрабатывающих принятые данные.

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

Для понимания того, для чего взломщики используют снифферы, нам следует знать о том, какие данные они могут получить из сети. Рисунок 1 иллюстрирует уровни OSI и ту информацию, которой взломщик может завладеть на каждом уровне, успешно использовав сниффер.

Распределение уровней OSI
Рисунок 1. Распределение уровней OSI

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

Как используют сниффер?

В ходе атак, заключающихся в захвате пакетов, используются снифферы, являющиеся либо программным обеспечением с открытым исходным кодом, либо коммерческим программным обеспечением. Грубо говоря, существуют три пути перехвата трафика в сети, показанные на рисунке 2.

Направления атак с использованием сниффера
Рисунок 2: Направления атак с использованием сниффера

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

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

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

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

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

Захват данных в локальной сети (LAN sniff)

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

Захват информации об используемых протоколах (Protocol sniff)

Этот метод подразумевает захват данных, относящихся к различным протоколам, используемым в сети. Сначала создается список протоколов на основе захваченных данных. Этот список в будущем может использоваться для захвата данных, относящихся к отдельным протоколам. Например, если данных, относящихся к протоколу ICMP не было обнаружено во время захвата, считается, что этот протокол заблокирован. Однако, если при захвате обнаружены UDP-пакеты, отдельный сниффер для UDP-трафика начинает использоваться для захвата и расшифровки трафика, относящегося к Telnet, PPP, DNS и другим приложениям.

Захват ARP-трафика (ARP sniff)

В ходе этого популярного метода атаки злоумышленник захватывает как можно больший объем данных для создания таблицы соответствия IP-адресов MAC-адресам. Эта таблица впоследствии может быть использована для подмены ARP-записей (APR poisoning), спуфинг-атак или для эксплуатации уязвимостей маршрутизатора.

Похищение TCP-сессий (TCP session stealing)

Этот метод заключается в простом захвате трафика между IP-адресом отправителя и адресата, проходящего через сетевой интерфейс в promiscous-режиме. Такие подробности, как номера портов, типы служб, порядковые номера TCP и сами данные интересуют взломщиков в первую очередь. После захвата достаточного количества пакетов, опытные взломщики могут самостоятельно создавать TCP-сессии, вводя в заблуждение узлы, являющиеся источником и адресатом пакетов, а также осуществлять атаку перехвата с участием человека (man-in-the-middle) в отношении активной TCP-сессии.

Захват данных приложений (Application-level sniffing)

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

Похищение паролей (Web password sniffing)

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

Определение наличия сниффера

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

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

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

Защита от снифферов

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

Отключение promiscous-режима на сетевых интерфейсах приводит к отключению большинства снифферов. Это действие может быть автоматизировано путем создания специального сценария и добавления его в качестве задачи cron для ежедневного выполнения или контролироваться путем создания политики доступа к настройкам сетевой карты на уровне узла.

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

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

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

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

Давайте рассмотрим несколько снифферов для того, чтобы знать, какие программы для захвата пакетов используются в мире свободного программного обеспечения в наши дни. Linux-cистемы используют утилиту tcpdump, являющуюся прекрасным сниффером, поставляемым в комплекте системы и позволяющим захватывать и сохранять TCP-пакеты. В качестве сторонних инструментов с открытым исходным кодом следует упомянуть программу Wireshark (Ethereal), очень популярную из-за своего графического интерфейса и возможностей фильтрации и отображения захваченных пакетов. Утилиты Sniffit, Dsniff и Ettercap подобны названным выше, но предназначены для других целей. Например, утилита DSniff обладает мощными возможностями перехвата SSL-трафика.

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

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