Главная » Файлы » Учеба » Общее [ Добавить материал ]

ЗИКС (НГУ) - Лабораторная 2 Анализ уязвимости IP сетей
[ Скачать с сервера (177.1 Kb) ] 10.01.2014, 17:59
SYN-флуд — одна из разновидностей сетевых атак типа отказ от обслуживания, которая заключается в отправке большого количества SYN-запросов (запросов на подключение по протоколу TCP) в достаточно короткий срок
Согласно процессу «трёхкратного рукопожатия» TCP, клиент посылает пакет с установленным флагом SYN (synchronize). В ответ на него сервер должен ответить комбинацией флагов SYN+ACK (acknowledges). После этого клиент должен ответить пакетом с флагом ACK, после чего соединение считается установленным.
Принцип атаки заключается в том, что злоумышленник, посылая SYN-запросы, переполняет на сервере (цели атаки) очередь на подключения. При этом он игнорирует SYN+ACK пакеты цели, не высылая ответные пакеты, либо подделывает заголовок пакета таким образом, что ответный SYN+ACK отправляется на несуществующий адрес. В очереди подключений появляются так называемые полуоткрытые соединения (TCP соединение, в котором состояния двух его участников становятся несинхронизированными вследствие сбоев или преднамеренных действий одного из участников), ожидающие подтверждения от клиента. По истечении определенного тайм-аута эти подключения отбрасываются. Задача злоумышленника заключается в том, чтобы поддерживать очередь заполненной таким образом, чтобы не допустить новых подключений. Из-за этого легитимные клиенты не могут установить связь, либо устанавливают её с существенными задержками.
Атака основывается на уязвимости ограничения ресурсов операционной системы для полуоткрытых соединений, описанной в 1996 году группой CERT[1], согласно которой очередь для таких подключений была очень короткой (например, в Solaris допускалось не более восьми подключений), а тайм-аут подключений — достаточно продолжительным (по RFC 1122 — 3 минуты)

Реализация
Для реализации подходит как unix, так и windows-платформы. Программа должна запускаться с правами root и администратора соответственно. Под unix много готовых реализаций, например, synk4.c. Специализированные для координированых DDoS-атак реализации найти сложнее, но при минимальных навыках программирования можно доработать существующие или создать свои.
Кроме стандартных сырых сокетов (позволяют собирать TCP/IP-пакеты, вручную контролируя каждый бит заголовка и отправляя в сеть нестандартные пакеты), D0minat0r из Nerf нашел очень красивый способ реализации SYN flood под linux,  на win не работает. Linux позволяет отправлять пакеты к любому адресу, в т.ч. не принадлежащему локальному хосту
Реализации под windows встречаются реже, из-за расхожего мифа о невозможности генерации сырых пакетов в этой OS. На самом деле, win98 поддерживает сырые сокеты уровня до заголовка IP, а win2k и XP - и заголовок тоже (опция IP_HDRINCL), т.е. реализация атаки под win2k и XP отличается от юниксовской лишь несколькими строчками.
Для реализации DOS атаки была выбрана программа «Low Orbit lon Cannon»
 
Данная программа имеет простой пользовательский интерфейс. Для атаки был выбран сайт gorod.dp.ua. Атака проводилась по протоколу ТСР. В ходе атаки не было достигнуто отказа работы сайта, но по увеличению исходящего трафика мы видим исходящие запросы.
Данная программа автоматически определяет  IP адрес сервера по привычному для пользователя именному обозначению сайта.
Зашита от атаки
Очередь соединений - большая структура памяти, используемая для обработки поступающих пакетов с набором флага SYN до момента установления соединения между клиентом и сервером. Операционная система распределяет часть системной памяти для каждого поступающего соединения. Мы знаем, что каждый tcp порт может обрабатывать только определенное количество поступающих запросов. Очередь соединений управляет количеством полуоткрытых подключений, способных одновременно обрабатываться операционной системой. Когда количество поступающих соединений достигнет максимального уровня, все последующие запросы будут отклонены операционной системой.
Обнаружение большого количества соединений в состоянии SYN RECEIVED скорее всего означает, что хост подвергся SYN атаке. Кроме того, исходные IP адреса, этих пакетов могут быть фиктивными. Для ограничения эффективности SYN атак возможно включение некоторых встроенных защитных механизмов. Иногда можно использовать методы типа увеличения размера очереди соединений и уменьшения времени хранения незавершенных соединений в распределяемой памяти (в очереди соединений).
При SYN атаке, мы можем изменить размер очереди задач для поддержки большего количества полуоткрытых соединений так, чтобы не отклонять доступ к серверу легальным клиентам. В некоторых операционных системах, размер очереди задач очень маленький, поэтому производители рекомендуют увеличение этого значения, в случае если система подверглась SYN атаке.
Увеличение размера очереди задач требует, чтобы система резервировала дополнительные ресурсы памяти для входящих соединений. Если в системе отсутствует достаточное количество свободной памяти для этой операции, то пострадает производительность системы.
Необходимо уменьшить полное время хранения полуоткрытых соединений в очереди. Когда сервер получает запрос, он немедленно посылает пакет с набором флагов SYN и ACK, помещает это полуоткрытое соединение в очередь, а затем ожидает от клиента пакет с флагом ACK. Если сервер не получает ответа от клиента, то он еще несколько раз передает ответный пакет (с флагами SYN и ACK), (количество ответов зависит от установок операционной системы), давая клиенту возможность для пересылки ACK пакета. Ясно, что в случае фиктивности исходного IP адреса клиента, ACK пакет никогда не прибудет. После нескольких минут ожидания сервер удаляет это полуоткрытое соединение. Мы можем ускорить процесс удаления соединений в состоянии в SYN RECEIVED из очереди соединений, изменяя время первой перепередачи и общего количества перепередач.
Другая методика защиты от SYN атак заключается в отключении некоторые параметров TCP, которые всегда активны в течение процесса установления связи сервера с клиентом. Некоторые из этих параметров автоматически выключаются механизмами, описанными в первом разделе (SynAttackProtect и Syncookies).

В Linux системах, осуществлен механизм SYN cookies, который включается следующим способом:

* ECHO 1 >/proc/sys/net/ipv4/tcp_syncookies

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

Защита SYN cookies особенно полезна, в случае, когда система подверглась SYN атаке, а исходные IP адреса пакетов - фиктивные (SYN спуфинг). Этот механизм позволяет структурировать пакеты с набором флагов SYN и ACK, которые имеют специально обработанный "начальный номер последовательности” (ISN), называемый cookie. Значение cookie это не псевдослучайное число, сгенерированное системой, а результат действия хеш-функции. Это значение генерируется хеш-функцией в зависимости от следующей информации: IP-адрес источника, порт источника, IP адрес получателя, порт получателя плюс некоторые секретные значения. В ходе SYN атаки, когда заполняется очередь соединений, система вместо отклонения запроса, генерирует ответ, посылая клиенту пакет с cookie. Когда сервер получает пакет с набором флажка ACK (последняя стадия процесса установления соединения с клиентом), тогда он проверяет значение cookie. Если это значение правильно, то сервер создает подключение, даже в случае если нет никакого соответствующего элемента в очереди соединений. В этом случае мы знаем, что это легальное соединение, и что исходный IP адрес не фиктивный. Важно обратить внимание на то, что механизм работы SYN cookie, вообще не использует очередь соединений, так что теперь мы не должны изменять её размер.

Также необходимо обратить внимание на то, что механизм SYN cookies работает только когда опция CONFIG_SYNCOOKIES установлена в ходе компиляции ядра системы.

Возможно использование специализированных программных средств:
    Межсетевой экран Aker имеет механизм, назначение которого - препятствовать проведению SYN атак. Принцип его действия заключается в следующем:
1.    Когда защищаемому серверу посылается пакет с запросом на установление соединения (пакет с SYN-флагом, описанный в предыдущем разделе), межсетевой экран регистрирует его в таблице и позволяет пакету пройти. (Естественно, что пакет будет пропущен только в случае, если это разрешено правилами фильтрации, описанными администратором.).
2.    После прихода ответа сервера о подтверждении запроса на соединение (пакет с SYN и ACK-флагами) межсетевой экран посылает пакет серверу с подтверждением соединения, а также посылает ответный пакет клиенту. С этого момента в межсетевом экране активизируется внутренний таймер, который отсчитывает период времени, в течение которого должен прибыть пакет с подтверждением от клиента.
3.    Если запрос о соединении нормальный, то в течение установленного промежутка времени клиент пришлет ответный пакет с подтверждением соединения. Получив этот пакет, межсетевой экран будет считать  запрос об установлении соединения нормальным и остановит таймер.
4.    Если клиент не отвечает в течение максимально разрешенного промежутка времени, межсетевой экран пошлет специальный пакет серверу, что приведет к удалению информации о соединении.
Применение описанной процедуры для какого-либо сервера позволяет межсетевому экрану препятствовать заполнению очереди запросов на соединение, поскольку все соединения будут устанавливаться сразу после того, как ответные пакеты сервера достигнут межсетевого экрана и будут удалены из очереди; следовательно, SYN атака не сможет быть реализована


Скачать с сервера

Категория: Общее | Добавил: Пользователь
Просмотров: 415 | Загрузок: 49 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Все материалы на сайте выложены с целью ознакомления!