Sockstress

Метод атаки

Sockstress — это метод атаки на серверы и другие устройства, которые принимают TCP- соединения в Интернете и других сетях на основе TCP . [1] Этот метод истощает локальные ресурсы, чтобы вызвать сбой службы или всего компьютера, по сути функционируя как атака типа «отказ в обслуживании».

Sockstress был разработан в качестве внутреннего доказательства концепции покойным Джеком С. Луисом из Outpost24. Луис обнаружил аномалии, используя Unicornscan для тестирования и зондирования сетей для корпоративной безопасности, что привело к разработке Sockstress. [2] Концепция была впервые продемонстрирована в сентябре 2008 года. [3] [4] [5] [6] Исследователи планировали опубликовать более подробную информацию на конференции T2 в Финляндии, где они продемонстрировали атаки. [7] [8] Вместо этого они решили продолжить тесное сотрудничество с сообществами поставщиков и стандартов и уделять им больше времени. В записи в блоге они сказали: «Мы не оказываем на них [поставщиков] чрезмерного давления, чтобы они в спешке выпускали плохо реализованные исправления».

Инструмент проверки концепции Nkiller2, демонстрирующий атаку, похожую на sockstress, был выпущен Фотисом Чанцисом, также известным как ithillgore, в журнале Phrack . [9] Nkiller2 работает полностью без сохранения состояния, используя методы анализа пакетов и виртуальные состояния, а также использует внутренний механизм TCP, Persist Timer, таким образом, имея возможность выполнять и бесконечно продлевать обычную DoS-атаку с минимальным объемом сетевого трафика.

О Sockstress

Sockstress — это пользовательский TCP-сокет стресс-фреймворк, который может закрывать произвольное количество открытых сокетов без типичных накладных расходов на отслеживание состояния. После того, как сокет установлен, он способен отправлять TCP-атаки, нацеленные на определенные типы ресурсов ядра и системы, такие как счетчики, таймеры и пулы памяти. Некоторые из описанных здесь атак считаются «общеизвестными»; однако полные последствия этих атак менее известны. Кроме того, есть еще атаки, которые еще предстоит обнаружить или задокументировать. Поскольку исследователи документируют способы истощения определенных ресурсов, модули атак могут быть добавлены в дерево фреймворка sockstress.

Инструмент атаки sockstress состоит из двух основных частей:

1) Fantaip: Fantaip [10] — это программа, которая подделывает IP-адреса для использования с sockstress. Она достигает этого, отправляя ARP-ответы хостам, которые выполняют запрос на поддельный IP. Чтобы использовать fantaip, введите «fantaip -i interface CIDR», например, «fantaip -i eth0 192.168.0.128/25». Эта функция ARP/Layer 2 может быть опционально предоставлена ​​другими способами в зависимости от требований топологии локальной сети. Поскольку sockstress завершает TCP-сокеты в пользовательском пространстве, не рекомендуется использовать sockstress с IP-адресом, настроенным для использования ядром, поскольку ядро ​​затем будет RST сокетов. Это не является строго обязательным, так как использование брандмауэра для отбрасывания входящих пакетов с флагом rst может использоваться для достижения той же цели и предотвращения вмешательства ядра в вектор атаки.

2) Sockstress: в своем самом простом использовании sockstress просто открывает TCP-сокеты и отправляет указанный стресс-тест TCP. Он может опционально отправлять полезную нагрузку TCP, специфичную для приложения (например, HTTP-запрос). По умолчанию после атаки он игнорирует последующие коммуникации на установленном сокете. Он может опционально подтверждать зонды для активных сокетов. Атаки используют открытые ресурсы, которые цель делает доступными после рукопожатия.

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

Сценарии атак

Каждая атака в рамках sockstress оказывает некоторое влияние на систему/сервис, который она атакует. Однако некоторые атаки более эффективны, чем другие, против определенной комбинации системы/сервиса.

Стресс от наводнения в соединении

В Sockstress нет специального модуля атаки для выполнения простой атаки с переполнением соединений, но любой из модулей атаки может быть использован в качестве такового, если используются параметры -c-1 (макс. число подключений неограниченно) и -m-1 (макс. число синхроимпульсов неограниченно).

Примеры команд:

  1. fantaip -i eth0 192.168.1.128/25 -vvv
  2. sockstress -A -c-1 -d 192.168.1.100 -m-1 -Mz -p22,80 -r300 -s192.168.1.128/25 -vv

Нулевое напряжение в оконном соединении

Создайте соединение с прослушиваемым сокетом и после трехстороннего рукопожатия (внутри последнего ACK) отправьте 0 window.

 syn -> (окно 4k) <- syn+ack (окно 32k) подтверждение -> (0 окно)

Теперь сервер должен будет «зондировать» клиента, пока не откроется нулевое окно. Это самый простой из типов атак для понимания. Результат похож на поток соединений, за исключением того, что сокеты остаются открытыми потенциально бесконечно (когда включен -A/ACK). Это описано в документе CPNI в разделе 2.2. Вариантом здесь будет PSH полезной нагрузки клиента (т. е. 'GET / HTTP/1.0') перед установкой окна в 0. Этот вариант будет похож на то, что описано в разделе 5.1.1 документа CPNI. Еще одним вариантом будет иногда объявлять окно TCP больше 0, а затем возвращаться к 0-окну.

Хорошо против:

  • Службы с длительным временем ожидания

Примеры команд:

  1. fantaip -i eth0 192.168.1.128/25 -vvv
  2. sockstress -A -c-1 -d 192.168.1.100 -m-1 -Mz -p22,80 -r300 -s192.168.1.128/25 -vv

Стресс от небольшого окна

Создайте соединение с прослушиваемым сокетом и при трехстороннем рукопожатии (внутри последнего ACK) установите размер окна в 4 байта, затем создайте пакет ACK/PSH с полезной нагрузкой TCP (в окне, которое, как мы надеемся, достаточно велико, чтобы принять его) с окном, по-прежнему установленным в 4 байта. Это потенциально приведет к потреблению памяти ядра, поскольку оно принимает ответ и разбивает его на крошечные 4-байтовые фрагменты. Это не похоже на поток соединений, поскольку теперь память потребляется для каждого сделанного запроса. Это надежно перевело системы Linux/Apache и Linux/sendmail в нефункционирующее состояние. Это также эффективно против других систем. Ожидается, что это будет иметь аналогичные эффекты, что описаны в документе CPNI в предпоследнем абзаце страницы 17.

Посмотрите на файл payload.c в исходном коде sockstress. Найдите оператор hport switch. В этом разделе вы можете указать полезные данные, которые будут отправлены на определенные порты. Наиболее эффективно отправлять полезные данные, которые сгенерируют максимально большой ответ (например, 'GET /largefile.zip').

Хорошо против:

  • Услуги, содержащие баннеры начального подключения
  • Службы, которые принимают первоначальный запрос и отправляют большой ответ (например, запрос GET к большой веб-странице или загрузка файла)

Примеры команд:

  1. fantaip -i eth0 192.168.1.128/25 -vvv
  2. sockstress -A -c-1 -d 192.168.1.100 -m-1 -Mw -p22,80 -r300 -s192.168.1.128/25 -vv

Напряжение в сегментном отверстии

Создайте соединение с прослушиваемым сокетом и после трехстороннего рукопожатия (внутри последнего ACK) отправьте 4 байта в начало окна, как объявлено удаленной системой. Затем отправьте 4 байта в конец окна. Затем 0-окно соединения. В зависимости от стека это может привести к тому, что удаленная система выделит несколько страниц памяти ядра на соединение. Это не похоже на затопление соединений, поскольку теперь память потребляется для каждого установленного соединения. Эта атака была создана для Linux. Она также довольно эффективна против Windows. Это атака, которая использовалась в демонстрациях sec-t и T2. Ожидается, что это будет иметь эффекты, аналогичные описанным в документе CPNI в разделе 5.2.2 5-й абзац и разделе 5.3.

Хорошо против:

  • Стеки, которые выделяют несколько страниц памяти ядра в ответ на этот стимул

Примеры команд:

  1. fantaip -i eth0 192.168.1.128/25 -vvv
  2. sockstress -A -c-1 -d 192.168.1.100 -m-1 -Ms -p22,80 -r300 -s192.168.1.128/25 -vv

REQ FIN пауза стресс

Создайте соединение с прослушивающим сокетом. PSH — это полезная нагрузка приложения (т. е. «GET / HTTP/1.0»). FIN-соединение и 0-window-его. Эта атака будет иметь совершенно разные результаты в зависимости от стека/приложения, на которые вы нацелились. Используя это против веб-сервера Cisco 1700 (IOS), было замечено, что сокеты оставались в FIN_WAIT_1 неопределенно долго. После достаточного количества таких сокетов маршрутизатор больше не мог правильно взаимодействовать по TCP.

Посмотрите на файл payload.c в исходном коде sockstress. Найдите оператор hport switch. В этом разделе вы можете указать полезные данные, которые будут отправлены на определенные порты. Вы должны отправить полезные данные, которые будут выглядеть как обычный клиент, приложению, с которым вы взаимодействуете. При использовании этой атаки против Cisco 1700 важно было атаковать с очень низкой скоростью.

Примеры команд:

  1. fantaip -i eth0 192.168.1.128/25 -vvv
  2. sockstress -A -c-1 -d 192.168.1.100 -m-1 -MS -p80 -r10 -s192.168.1.128/25 -vv

Активировать напряжение давления Рено

Создать соединение с прослушиваемым сокетом. PSH — это полезная нагрузка приложения (т. е. 'GET / HTTP/1.0'). Тройной дубликат ACK.

Посмотрите на файл payload.c в исходном коде sockstress. Найдите оператор hport switch. В этом разделе вы можете указать полезные данные, которые будут отправлены на определенные порты. Вы должны отправить полезные данные, которые будут выглядеть как обычный клиент, приложению, с которым вы взаимодействуете.

Хорошо против:

  • Стеки, поддерживающие этот метод активации reno или аналогичных функций планировщика

Примеры команд:

  1. fantaip -i eth0 192.168.1.128/25 -vvv
  2. sockstress -A -c-1 -d 192.168.1.100 -m-1 -MR -p22,80 -r300 -s192.168.1.128/25 -vv

Другие идеи

  • FIN_WAIT_2 стресс

Создать соединение с прослушиваемым сокетом. PSH-запрос полезной нагрузки приложения, который, скорее всего, заставит приложение на другой стороне закрыть сокет (Target отправляет FIN). ACK FIN.

Хорошо против:

  • Стеки, не имеющие тайм-аута FIN_WAIT_2.
  • Большое окно перегрузки стресс
  • Путь сжатия MTU стресс
  • MD5 стресс

Последствия атак

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

В то время как сделать так, чтобы одна служба стала недоступной за считанные секунды, тривиально, чтобы сделать целую систему неработоспособной, может потребоваться много минут, а в некоторых случаях и часов. Как правило, чем больше служб в системе, тем быстрее она поддастся разрушительным (сломанный TCP, блокировка системы, перезагрузка и т. д.) последствиям атак. В качестве альтернативы, усиление атаки может быть достигнуто путем атаки с большего количества IP-адресов. Мы [ who? ] обычно атакуем с /29 по /25 в наших лабораториях. Атака с /32 обычно менее эффективна для возникновения общесистемных сбоев.

Предостережения относительно эксплуатации

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

Эксплойт в стиле sockstress также требует доступа к сырым сокетам на атакующей машине, поскольку пакеты должны обрабатываться в пользовательском пространстве , а не с помощью API connect() ОС . Сырые сокеты отключены в Windows XP SP2 и выше, но драйверы устройств легко доступны [11], чтобы вернуть эту возможность в Windows. Эксплойт может быть запущен как есть на других платформах с сырыми сокетами, такими как *nix , и требует привилегий root (суперпользователя).

Смягчение

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

Согласно ответу Cisco [12], текущая рекомендация по смягчению заключается в том, чтобы разрешить доступ к службам на основе TCP только доверенным источникам. Это смягчение особенно важно для критически важных инфраструктурных устройств. Red Hat заявила, что «из-за решения апстрима не выпускать обновления, Red Hat не планирует выпускать обновления для решения этих проблем; однако последствия этих атак могут быть уменьшены». В Linux использование iptables с отслеживанием соединений и ограничением скорости может значительно ограничить последствия эксплуатации. [13]

Ссылки

  1. ^ Подкаст Security Now!, объясняющий Sockstress
  2. Интервью с Робертом Э. Ли и Джеком С. Луисом (первые 8 минут после начала английского) Архивировано 2008-10-02 на Wayback Machine
  3. ^ "Robert E. Lee: Sec-T Sockstress Recap". Архивировано из оригинала 2008-11-05.
  4. ^ Запись в блоге Карла Норденфельта. Архивировано 05.10.2008 на Wayback Machine.
  5. ^ Запись в блоге Амелии Нильссон
  6. ^ Запись в блоге Микаэля (FireLynx) Архивировано 2012-08-02 в archive.today
  7. ^ http://www.t2.fi/
  8. ^ http://radian.org/notebook/van-helsingfors
  9. ^ Эксплуатация TCP и бесконечности Persist Timer
  10. ^ Fantaip поставляется с Unicornscan Архивировано 16.04.2013 на archive.today
  11. ^ «Необработанные TCP-сокеты и Npcap | PingPlotter».
  12. ^ Ответ Cisco
  13. ^ Влияет ли CVE-2008-4609 на Red Hat Enterprise Linux?
  • Исходный код - компилируется чисто на Slackware 14
  • Реализация C в общедоступном домене (третья сторона)
  • Аванпост24
  • Редактировать подкаст Security Now
  • Security Now #164 показать заметки Транскрипт
  • Unicornscan
  • Новостная статья Slashdot
Взято с "https://en.wikipedia.org/w/index.php?title=Sockstress&oldid=1224161273"