Библиотека сайта rus-linux.net
Кибератаки в подробностях: создание пакетов
Оригинал: Cyber Attacks Explained: Packet CraftingАвтор: Prashant Phatak
Дата публикации: 1 мая 2012 г.
Перевод: А.Панин
Дата перевода: 16 декабря 2012 г.
В предыдущих статьях серии ( 1, 2, 3, 4) мы рассмотрели классические сценарии эксплуатации уязвимостей сетевой инфраструктуры. Эта статья продолжает серию и описывает технически более сложный тип атак, которые могут негативно отразиться на работе сетей из-за трудности их идентификации. Создание пакетов является часто используемым и при этом технически сложным методом эксплуатации уязвимостей, поэтому администраторам сетей важно знать о нем как можно больше и понимать методы защиты инфраструктуры от атак, основанных на этом методе. Мы также рассмотрим вопрос защиты систем, основанных на свободном программном обеспечении.
Что понимается под созданием пакетов?
Создание по определению подразумевает процесс искусных манипуляций для получения результата. Как мы знаем, все инструменты, используемые системными администраторами для оценки безопасности своих сетей, являются и благом и напастью. Это объясняется тем, что те же самые инструменты могут использоваться взломщиками для писка уязвимостей и их эксплуатации в своих целях. Техника создания пакетов не является исключением из этого правила, а поскольку она лежит в основе технически сложного метода эксплуатации уязвимостей, ее применение сложно обнаружить и установить.
Давайте рассмотрим TCP-пакет и его поля в подробностях с целью лучшего понимания техники атак с использованием создания пакетов. Рассмотрите Рисунок 1, на котором показан стандартный Ethernet-фрейм вместе с TCP/IP-пакетом, передаваемым внутри него.
Рисунок 1: Стандартный Ethernet-фрейм и TCP/IP-пакет
Ethernet-фрейм содержит множество полей, которые обычно используются для поддержания соединения уровня 2 OSI, в то время, как пакеты TCP и IP содержат поля с данными, относящиеся к более высоким уровням. Часть пакета, относящаяся к протоколу TCP, предоставляет гарантию успешной передачи, в то время, как IP-пакет содержит адреса и номера портов источника и адресата.
Как упоминалось в предыдущих статьях серии, процесс обмена данными по протоколу TCP/IP содержит этап трехэтапного рукопожатия (SYN, SYN-ACK, ACK), на котором происходит создание канала для передачи данных между двумя сетевыми картами. Данные передаются между ними по этому каналу, а завершение передачи происходит при помощи рукопожатия FIN/FIN-ACK.
В прошлых статьях также освещался тот факт, что каждое из полей этих пакетов может подвергнуться модификации взломщиками для их целей. IP-адреса и номера портов модифицируются чаще всего при проведении атак отказа в обслуживании или использовании спуфинга пакетов, а также при осуществлении проникновений в системы. На этом этапе важно понять, что модифицироваться могут не только эти поля, а фактически каждый флаг и значение каждого поля TCP-пакета и нижележащего Ethernet-фрейма может быть модифицировано или задано с целью проникновения в систему.
Обратите внимание на то, что техники создания пакетов и техники спуфинга пакетов часто ошибочно ошибочно отождествляются; однако, эти техники очень различаются в плане результата. Спуфинг пакетов используется взломщиками для сокрытия идентификационных данных и факта присутствия в сети. Спуфинг пакетов используется в первую очередь для получения информации о сети, включающей в себя список открытых портов, выполняющихся на узлах служб, активных узлов в сети, и.т.д., а в ходе проведения атаки целевой узел не в состоянии отследить атакующего.
С другой стороны, атаки на основе создания пакетов заходят дальше, позволяя определить наличие, функциональность и точность задания правил межсетевого экрана и систем обнаружения проникновений. Создание пакетов требует глубоких знаний в области TCP-пакетов и принципов их работы, являясь техникой атаки, основанной в большей степени на ручной модификации данных, нежели на программной. Это обстоятельство делает технику создания пакетов технически сложным путем взлома сетей.
Процесс создания пакетов
Процесс создания пакетов является задачей по методичному проникновению в сетевую инфраструктуру. Рассмотрите Рисунок 2, который отображает четыре отдельных шага, предпринимаемые в ходе проведения атаки, основанной на создании пакетов.
Рисунок 2: Четыре шага, предпринимаемые в ходе атаки на основе создания пакетов
Давайте подробно разберемся с каждым из этих шагов.
Сборка пакета (Packet assembly)
Это первый шаг в процессе создания пакетов, при котором атакующий решает, какую сеть нужно взломать, пытается получить максимальное количество информации о возможных уязвимостях и генерирует или изготавливает пакеты для отправки. Эти пакеты проверяются на корректность данных большей частью для того, чтобы удостовериться в том, что атака будет максимально "незаметна" в сети и не будет идентифицирована.
Например, создаваемый пакет может иметь подмененный исходный адрес и случайный номер последовательности TCP. Сборка пакета не обязана проводиться с нуля; пакет, передаваемый по сети, может быть захвачен и его содержимое может быть модифицировано с целью проведения атаки.
Редактирование пакета (Packet editing)
На этом шаге предпринимается первая попытка отправки собранного пакета для тестирования и исправления недоработок на основе полученных данных перед переходом к следующему шагу. В процессе редактирования пакета главной задачей обычно является получение как можно большего объема информации при отправке минимального количества пакетов в сеть.
Например, для тестирования того, как межсетевой экран отвечает на измененные пакеты, может быть создан простой пакет с несуществующим исходным IP-адресом и установленным битом в поле ACK. В идеальном случае межсетевой экран должен отбросить такой пакет.
Отправка пакета (Packet playing)
Как только удается создать корректный пакет или поток пакетов, они отправляются в сеть и производится сборка пакетов, отправленных в ответ, для проведения последующего исследования и установления зависимостей. На этом шаге проводится сама атака. Если ожидаемый результат не достигнут, взломщики переходят к предыдущему шагу и редактируют пакет для изменения сценария атаки.
Анализ пакета (Packet analysing)
На этом шаге происходит сборка и декодирование пакетов, отправленных в ответ целевой сетью. Взломщики могут использовать для этой цели простые снифферы пакетов или осуществить запись принятых пакетов в файл для последующего исследования. На этом шаге взломщики либо получают доказательство того, что проникновение произведено успешно, либо по крайней мере получают исходные данные для внесения корректировок или изменения методов атаки.
Техники создания пакетов
Как мы увидели выше, идея, на которой основываются атаки с применением техники создания пакетов, заключается в попытке симуляции атаки и наблюдении за поведением различных сетевых устройств с целью получения информации об уязвимостях. Техника создания пакетов обычно используется для преодоления межсетевых экранов и устройств обнаружения проникновений, но также может использоваться и для проведения атак на web-сервера и другие сетевые приложения. Теперь давайте обсудим некоторые стандартные техники атак с созданием пакетов.
Фрагментация пинг-пакетов (Ping fragmentation)
В этом типе вместо стандартного ICMP пинг-пакета создается пакет из более чем 65535 байт, что является максимальной разрешенной длиной пакета. Это приводит к тому, что удаленная система отвечает эхо-ответом, длина которого также превышает стандартную, что впоследствии приводит к отказу в обслуживании.
В одном из вариантов атаки у пакетов также устанавливается ACK-флаг для того, чтобы сбить с толку целевую систему, в другом варианте атаки вместо превышения длины пакета каждый раз отправляется разное количество байт для нарушения работы системы.
Манипуляция флагами пакетов (Packet flag manipulation)
Как мы упоминали ранее, TCP-пакет состоит из множества полей. Одно из полей содержит флаги в битовом представлении, которые могут устанавливаться программно. Например, флаг SYN может быть установлен и пакет может быть отправлен по сети для установления действительного TCP-соединения. Это корректный путь начала рукопожатия TCP; однако, удаленная система может быть сбита с толку отправкой RST или FIN-пакета.
Устаревшие межсетевые экраны известны свей восприимчивостью к FIN-атакам, так как они не могут устанавливать подлинность FIN-пакетов. В других случаях модифицированный SYN-ACK- или ACK-пакет может привести к аналогичным последствиям.
Дублирование пакетов (Packet duplication)
В этом случае взломщики захватывают потоки пакетов и просто снова отправляют их в сеть. Это сбивает с толку целевую систему, которая предполагает, что предыдущая сессия не получила ответа или не была завершена. Типичным примером этой атаки является дублирование ACK- или FIN-пакетов без модификаций их содержимого. Этот метод обычно используется для проведения атак отказа в обслуживании.
Манипуляция полем протокола (Protocol manipulation)
Это наиболее часто используемый метод тестирования уязвимостей межсетевого экрана. При атаке одновременно устанавливаются флаги протоколов TCP и UDP для того, чтобы обойти правила межсетевого экрана. Если межсетевой экран относится к современным, он идентифицирует этот пакет как измененный злоумышленником и просто отбросит его.
Тем не менее, в случае устаревших межсетевых экранов при том условии, что установлены правила для обработки TCP- и UDP-пакетов, эти правила исполняются одновременно, что приводит к ошибке и отключению межсетевого экрана. В другом варианте ни TCP, ни UDP флаги не устанавливаются вообще - это воздействует на свитчи, работающие на уровне 3 OSI.
Создание полуоткрытых соединений (Half open packets)
В этом методе атакующий инициирует соединение с целевой системой при помощи пакета SYN. Целевая система отвечает пакетом SYN-ACK; однако, взломщик не отвечает, а вместо этого создает SYN-пакет с подмененным исходным IP-адресом. Процесс продолжается до тех пор, пока целевая система не исчерпает ресурсы, став жертвой атаки отказа в обслуживании.
Защита систем на основе свободного программного обеспечения
Как было сказано ранее, атаку с применением техники создания пакетов достаточно сложно нейтрализовать. Несмотря на это существуют способы защиты сетей, работающих под управлением свободного программного обеспечения. Простой и корректный метод заключается в самостоятельном использовании инструментов для создания пакетов с целью тестирования инфраструктуры. Первым шагом является изучение структуры сети и создание сценариев для тестирования критических для безопасности сети компонентов: межсетевых экранов, маршрутизаторов, систем обнаружения проникновений, и.т.д.
Такие инструменты, как Hping и TCPReplay могут использоваться для создания пакетов и отправки их в сеть для получения статистических данных и записи ответов систем в журнал. Сниффер и анализатор пакетов, такой, как Wireshark, может быть также использован для этой цели. Межсетевые экраны и системы обнаружения проникновений, основанные на свободных технологиях, должны тестироваться на восприимчивость к атакам в диапазоне от 2 до 7 уровня OSI. Регулярное проведение таких тестов и обновление идентификаторов уязвимостей для систем обнаружения проникновений является приемлемым путем защиты.
Для защиты web-серверов, основанных на свободных технологиях, должен быть использован межсетевой экран с фильтрацией на последнем, 7 уровне OSI, способный проводить исследование пакетов и укомплектованный для определения и сдерживания атак отказа в обслуживании. Дистрибутивы Linux не содержат встроенных модулей безопасности для борьбы с атаками, использующими техники создания пакетов. Поэтому для поддержания инфраструктуры в безопасности по ее периметру должна быть развернута правильно спроектированная система защиты.
Создание пакетов является хорошей техникой аудита вашей сети; однако, эта техника может быть использована злоумышленниками для проникновения в сеть с помощью эксплуатации уязвимостей. Правильная настройка межсетевых экранов, свитчей и маршрутизаторов помогает защитить сети от атак с применением техник создания пакетов. Атака обычно направлена из внешней сети во внутреннюю корпоративную локальную сеть, что требует правильно спроектированной системы защиты по периметру сетевой инфраструктуры.