tickhack
BANNED
- Messages
- 66
- Reaction score
- 12
- Points
- 8
Please note, if you want to make a deal with this user, that it is blocked.
Атака SYN-flood
Denial-of-service (DoS), атаки отказа от обслуживания, стали опаснее и легче. DoS это разновидность сетевых атак (от червей до SYN flooding), цель которых сделать сервер недоступным для пользователей. ‘Distributed Reflection’ это новый вид DoS атак с использованием SYN flood'а. Его особенность в том, что на атакуемый сервер не посылаются миллионы SYN пакетов, они посылаются на router'ы или сервера и ответ приходит целевому серверу. А роутеров существует миллионы!
Чтобы понять как все это работает и почему это так важно давайте кое-что вспомним... Подтверждение TCP соединения происходит посредствам обмена тремя пакетами между двумя компьютерами, так называемое рукопожатие. Вот примерная схема:
* SYN клиент (web браузер, ftp клиент, etc.) входит в связь с сервером, посылая ему SYN пакет.
* SYN/ACK: Когда запрос о соединении(SYN пакет) получен на открытом порту сервера, тот подтверждает соединение посылая клиенту SYN/ACK пакет.
* ACK: Когда клиент получает подтверждение сервера SYN/ACK пакет для ожидаемой связи, то отвечает ACK пакетом.
Что происходит?
Традиционные "SYN flooding DoS" атаки работают по двум принципам:
* "one-on-one" одна машина отсылает достаточное количество SYN пакетов чтобы заблокировать доступ к серверу.
* "many-on-one" множество программ зомби, установленых на разных серверах, атакуют целевую машину SYN пакетами.
С использованием "reflection SYN flooding" посылаются пакеты, но с исходным IP адресом, указывающим на целевую машину. TCP соединение с использованием этих трех пакетов требует, чтобы любая TCP служба, которая получает SYN пакет, ответила SYN/ACK пакетом. Сервер или router, которые получают эти поддельные SYN пакеты, посылают SYN/ACK ответы на машину, указанную SYN пакетами с исходным адресом IP. Основной протокол Интернета и инфраструктура сети используются сами против себя!
В деталях
Любая TCP связь с сервером общего назначения может использоваться, чтобы "отразить" SYN пакеты. Вот короткий список наиболее популярных TCP портов: 22 (Secure Shell), 23 (Telnet), 53 (DNS) и 80 (HTTP/web). И фактически router'ы всего Интернета подтвердят TCP связь на 179 порту. Давайте оценим потенциал этой атаки:
* Она использует фундаментальный Интернет протокол коммуникаций;
* Машин, которые используют этот протокол, существует миллионы;
* чрезвычайно просто организовать атаку ‘SYN packet reflectors’.
Довольно легко может быть построен список, в котором будут перечислены router’ы и сервера, отвечающие на SYN пакеты. Имея большой список SYN "отражателей", каждый хакер может распределить поддельные SYN пакеты равномерно через весь набор роутеров/серверов в списке. Ни один из невинных "отражателей" не испытает существенной сетевой нагрузки. Роутеры вообще не сохраняют отчеты про пакеты с запросами на предварительное соединение, это делает отслеживание нападения чрезвычайно трудным.
"Отражатели"(роутеры и сервера) отправят в три или четыре раза большее количество SYN/ACK пакетов, чем число SYN пакетов которые они получат. TCP соединение, которое получает команду SYN, ожидает ACK ответ от машины на которую послало SYN/ACK пакет, поэтому компьютер посылается еще несколько SYN/ACK ответов через несколько минут. Эта особенность TCP протокола по существу умножает число злонамеренных SYN/ACK пакетов, посылаемых целевой машине на три или четыре. Это также означает, что flood SYN/ACK пакеты продолжат атаковать целевой сервер в течение минуты или двух даже после того, как нападавший отозвал нападение.
это одна из самых эффективных пакетных атак, дающая наибольший эффект с минимальными затратами. Она подменяет IP исходного соединения ложным, на который отвечающая сторона не в состоянии ответить. Установка TCP-соединения требует обмена тремя пакетами: первый с битом SYN (синхронизации) от пользователя, затем ответ SYN/ACK от Web-сервера, и, наконец, подтверждение ACK (от англ. ACKnowledge) от пользователя. В случае задержки в установке соединения, сервер посылает ответ SYN/ACK несколько раз, а затем переходит в режим ожидания, выделив ресурсы на возможное соединение.
Периоды повтора попытки и тайм-аута, в общем, могут занимать до трех минут на одно фиктивное соединение. Таким образом, даже небольшой поток SYN-пакетов, на которые невозможно ответить, может привести к переполнению сервера в небольшие сроки.
Программная реализация
Для реализации подходит как unix, так и windows-платформы. Программа должна запускаться с правами root и администратора соответственно. Под unix много готовых реализаций, например, synk4.c (искать поисковиками). Специализированные для координированных DDoS-атак реализации найти сложнее, но при минимальных навыках программирования можно доработать существующие или создать свои. Кроме стандартных сырых сокетов, D0minat0r из Nerf нашел очень красивый способ реализации SYN flood под linux, на других юниксоподобных не тестировалось, на win не работает.
Linux позволяет root'у биндить сокет к любому адресу, в т.ч. не принадлежащему локальному хосту. После этого можно вызывать connect() для этого сокета, и локальный хост пошлет SYN-пакет от адреса, к которому прибинжен сокет. Если сокет был в не блокирующем режиме, то сразу после connect() можно вызывать close(), и повторять операцию.
Реализации под windows встречаются реже, из-за расхожего мифа о невозможности генерации сырых пакетов в этой OS. На самом деле, win98 поддерживает сырые сокеты уровня до заголовка IP, а win2k и XP - и заголовок тоже (опция IP_HDRINCL), т.е. реализация атаки под win2k и XP отличается от юниксовской лишь несколькими строчками.
Механизмы защиты OS от SYN-flood
a) Стандартный таймаут. Полуоткрытые соединения по прошествии некоторого времени выбрасываются из буфера. При истощении буфера запросы клиентов на подключение будут проходить с вероятностью C1/C2, где C1 - количество SYN-пакетов от клиента, C2 - количество SYN-пакетов от всех остальных (включая атакующего). Даже при нагрузке на канал атакующего в 6 пакетов в секунду C1/C2 - примерно 1/100, т.е. служба выведена из строя на 99%.
б) Безлимитный буфер полуоткрытых соединений. При нагрузке на канал атакующего 100 Mб/сек и таймауту около минуты очередь полуоткрытых соединений будет занимать примерно 1 Гб памяти, что для крупных серверов не смертельно. Побочный эффект: атакуемый сервер отвечает трафиком, в 3 раза большим, чем трафик атакующего (говорят, что происходит DDoS с умножением в 4 раза), что может привести к истощению пропускной способности канала. Однако, при невозможности истощить ширину канала, защита от атаки будет абсолютной, ни одно клиентское соединение не будет отвергнуто.
в) Очистка наиболее старых полуоткрытых соединений. При переполнении буфера из него удаляется самое старое полуоткрытое соединение. Побочный эффект: если при атаке буфер заполняется за время t, то клиент не сможет подключиться во время атаки, если время подтверждения соединения больше t - его запрос тоже будет выброшен. Например, для нагрузки канала атакующего 4 Мбит/сек и длины буфера 512 (рекомендуемое значение для Win2K) время t - около 50 msec, что гарантированно отбросит все попытки подключения к серверу с диалапа и многие - с выделенных линий. Увеличивая размер буфера, защиту можно свести к предыдущему варианту.
г) SYN COOKIE. После истощения буфера информация, которая не помещается в буфер, отсылается клиенту, который якобы запросил ее. Если клиент - настоящий, то он возвращает информацию обратно, если поддельный - она теряется, причем механизм реализован в рамках RFC по TCP, т.е. его поддерживают и клиенты, не знакомые с этой технологией. Операционная система c SYN COOKIE, независимо от размера буфера полуоткрытых соединений, совершенно неуязвима для SYN-flood атак. Побочный эффект: запрет "больших окон".
Злонамеренные SYN-пакеты сложно выделять среди обычных, так как установка соединения - это необходимый элемент сетевого трафика. Атаку возможно предотвратить, изменяя количество повторных SYN/ACK ответов сервера, но существует опасность, что сервером будет отказано и в обычных соединениях.
Специалист компании Tech-Mavens Росс Оливер исследовал некоторые системы, представленные на рынке, на защищенность от SYN-атак. Результаты исследования были им представлены на симпозиуме по безопасности USENIX в Вашингтоне.
Наибольшую подверженность SYN-атакам показали брандмауэры CISCO PIX и Firewall-1 от Checkpoint, дополненные модулем SYNDefender. Тестовый сервер Оливера (Apache на Red Hat 7.1), оснащенный этими модулями отказывал в соединении при 500 SYN-запросах в секунду.
Самым защищенным от SYN-атак оказался коммутатор AppSafe от Top Layer, не встретивший никаких трудностей при числе запросов 22000 в секунду. Такое количество запросов было максимальным для системы Оливера.
Коммутатор разделяет "нормальный", "подозрительный" и "злонамеренный" траффик согласно правилам, которые задает администратор. Имеется также возможность отказывать в доступе "проблемным" IP-адресам на срок от 15 секунд до 7 дней.
Источник: xakep.ru
Denial-of-service (DoS), атаки отказа от обслуживания, стали опаснее и легче. DoS это разновидность сетевых атак (от червей до SYN flooding), цель которых сделать сервер недоступным для пользователей. ‘Distributed Reflection’ это новый вид DoS атак с использованием SYN flood'а. Его особенность в том, что на атакуемый сервер не посылаются миллионы SYN пакетов, они посылаются на router'ы или сервера и ответ приходит целевому серверу. А роутеров существует миллионы!
Чтобы понять как все это работает и почему это так важно давайте кое-что вспомним... Подтверждение TCP соединения происходит посредствам обмена тремя пакетами между двумя компьютерами, так называемое рукопожатие. Вот примерная схема:
* SYN клиент (web браузер, ftp клиент, etc.) входит в связь с сервером, посылая ему SYN пакет.
* SYN/ACK: Когда запрос о соединении(SYN пакет) получен на открытом порту сервера, тот подтверждает соединение посылая клиенту SYN/ACK пакет.
* ACK: Когда клиент получает подтверждение сервера SYN/ACK пакет для ожидаемой связи, то отвечает ACK пакетом.
Что происходит?
Традиционные "SYN flooding DoS" атаки работают по двум принципам:
* "one-on-one" одна машина отсылает достаточное количество SYN пакетов чтобы заблокировать доступ к серверу.
* "many-on-one" множество программ зомби, установленых на разных серверах, атакуют целевую машину SYN пакетами.
С использованием "reflection SYN flooding" посылаются пакеты, но с исходным IP адресом, указывающим на целевую машину. TCP соединение с использованием этих трех пакетов требует, чтобы любая TCP служба, которая получает SYN пакет, ответила SYN/ACK пакетом. Сервер или router, которые получают эти поддельные SYN пакеты, посылают SYN/ACK ответы на машину, указанную SYN пакетами с исходным адресом IP. Основной протокол Интернета и инфраструктура сети используются сами против себя!
В деталях
Любая TCP связь с сервером общего назначения может использоваться, чтобы "отразить" SYN пакеты. Вот короткий список наиболее популярных TCP портов: 22 (Secure Shell), 23 (Telnet), 53 (DNS) и 80 (HTTP/web). И фактически router'ы всего Интернета подтвердят TCP связь на 179 порту. Давайте оценим потенциал этой атаки:
* Она использует фундаментальный Интернет протокол коммуникаций;
* Машин, которые используют этот протокол, существует миллионы;
* чрезвычайно просто организовать атаку ‘SYN packet reflectors’.
Довольно легко может быть построен список, в котором будут перечислены router’ы и сервера, отвечающие на SYN пакеты. Имея большой список SYN "отражателей", каждый хакер может распределить поддельные SYN пакеты равномерно через весь набор роутеров/серверов в списке. Ни один из невинных "отражателей" не испытает существенной сетевой нагрузки. Роутеры вообще не сохраняют отчеты про пакеты с запросами на предварительное соединение, это делает отслеживание нападения чрезвычайно трудным.
"Отражатели"(роутеры и сервера) отправят в три или четыре раза большее количество SYN/ACK пакетов, чем число SYN пакетов которые они получат. TCP соединение, которое получает команду SYN, ожидает ACK ответ от машины на которую послало SYN/ACK пакет, поэтому компьютер посылается еще несколько SYN/ACK ответов через несколько минут. Эта особенность TCP протокола по существу умножает число злонамеренных SYN/ACK пакетов, посылаемых целевой машине на три или четыре. Это также означает, что flood SYN/ACK пакеты продолжат атаковать целевой сервер в течение минуты или двух даже после того, как нападавший отозвал нападение.
это одна из самых эффективных пакетных атак, дающая наибольший эффект с минимальными затратами. Она подменяет IP исходного соединения ложным, на который отвечающая сторона не в состоянии ответить. Установка TCP-соединения требует обмена тремя пакетами: первый с битом SYN (синхронизации) от пользователя, затем ответ SYN/ACK от Web-сервера, и, наконец, подтверждение ACK (от англ. ACKnowledge) от пользователя. В случае задержки в установке соединения, сервер посылает ответ SYN/ACK несколько раз, а затем переходит в режим ожидания, выделив ресурсы на возможное соединение.
Периоды повтора попытки и тайм-аута, в общем, могут занимать до трех минут на одно фиктивное соединение. Таким образом, даже небольшой поток SYN-пакетов, на которые невозможно ответить, может привести к переполнению сервера в небольшие сроки.
Программная реализация
Для реализации подходит как unix, так и windows-платформы. Программа должна запускаться с правами root и администратора соответственно. Под unix много готовых реализаций, например, synk4.c (искать поисковиками). Специализированные для координированных DDoS-атак реализации найти сложнее, но при минимальных навыках программирования можно доработать существующие или создать свои. Кроме стандартных сырых сокетов, D0minat0r из Nerf нашел очень красивый способ реализации SYN flood под linux, на других юниксоподобных не тестировалось, на win не работает.
Linux позволяет root'у биндить сокет к любому адресу, в т.ч. не принадлежащему локальному хосту. После этого можно вызывать connect() для этого сокета, и локальный хост пошлет SYN-пакет от адреса, к которому прибинжен сокет. Если сокет был в не блокирующем режиме, то сразу после connect() можно вызывать close(), и повторять операцию.
Реализации под windows встречаются реже, из-за расхожего мифа о невозможности генерации сырых пакетов в этой OS. На самом деле, win98 поддерживает сырые сокеты уровня до заголовка IP, а win2k и XP - и заголовок тоже (опция IP_HDRINCL), т.е. реализация атаки под win2k и XP отличается от юниксовской лишь несколькими строчками.
Механизмы защиты OS от SYN-flood
a) Стандартный таймаут. Полуоткрытые соединения по прошествии некоторого времени выбрасываются из буфера. При истощении буфера запросы клиентов на подключение будут проходить с вероятностью C1/C2, где C1 - количество SYN-пакетов от клиента, C2 - количество SYN-пакетов от всех остальных (включая атакующего). Даже при нагрузке на канал атакующего в 6 пакетов в секунду C1/C2 - примерно 1/100, т.е. служба выведена из строя на 99%.
б) Безлимитный буфер полуоткрытых соединений. При нагрузке на канал атакующего 100 Mб/сек и таймауту около минуты очередь полуоткрытых соединений будет занимать примерно 1 Гб памяти, что для крупных серверов не смертельно. Побочный эффект: атакуемый сервер отвечает трафиком, в 3 раза большим, чем трафик атакующего (говорят, что происходит DDoS с умножением в 4 раза), что может привести к истощению пропускной способности канала. Однако, при невозможности истощить ширину канала, защита от атаки будет абсолютной, ни одно клиентское соединение не будет отвергнуто.
в) Очистка наиболее старых полуоткрытых соединений. При переполнении буфера из него удаляется самое старое полуоткрытое соединение. Побочный эффект: если при атаке буфер заполняется за время t, то клиент не сможет подключиться во время атаки, если время подтверждения соединения больше t - его запрос тоже будет выброшен. Например, для нагрузки канала атакующего 4 Мбит/сек и длины буфера 512 (рекомендуемое значение для Win2K) время t - около 50 msec, что гарантированно отбросит все попытки подключения к серверу с диалапа и многие - с выделенных линий. Увеличивая размер буфера, защиту можно свести к предыдущему варианту.
г) SYN COOKIE. После истощения буфера информация, которая не помещается в буфер, отсылается клиенту, который якобы запросил ее. Если клиент - настоящий, то он возвращает информацию обратно, если поддельный - она теряется, причем механизм реализован в рамках RFC по TCP, т.е. его поддерживают и клиенты, не знакомые с этой технологией. Операционная система c SYN COOKIE, независимо от размера буфера полуоткрытых соединений, совершенно неуязвима для SYN-flood атак. Побочный эффект: запрет "больших окон".
Злонамеренные SYN-пакеты сложно выделять среди обычных, так как установка соединения - это необходимый элемент сетевого трафика. Атаку возможно предотвратить, изменяя количество повторных SYN/ACK ответов сервера, но существует опасность, что сервером будет отказано и в обычных соединениях.
Специалист компании Tech-Mavens Росс Оливер исследовал некоторые системы, представленные на рынке, на защищенность от SYN-атак. Результаты исследования были им представлены на симпозиуме по безопасности USENIX в Вашингтоне.
Наибольшую подверженность SYN-атакам показали брандмауэры CISCO PIX и Firewall-1 от Checkpoint, дополненные модулем SYNDefender. Тестовый сервер Оливера (Apache на Red Hat 7.1), оснащенный этими модулями отказывал в соединении при 500 SYN-запросах в секунду.
Самым защищенным от SYN-атак оказался коммутатор AppSafe от Top Layer, не встретивший никаких трудностей при числе запросов 22000 в секунду. Такое количество запросов было максимальным для системы Оливера.
Коммутатор разделяет "нормальный", "подозрительный" и "злонамеренный" траффик согласно правилам, которые задает администратор. Имеется также возможность отказывать в доступе "проблемным" IP-адресам на срок от 15 секунд до 7 дней.
Источник: xakep.ru