Sockstress - Sockstress

Sockstress это метод, который используется для атак на серверы в Интернете и других сетях с использованием TCP, включая Windows, Mac, Linux, BSD и любой маршрутизатор или другое интернет-устройство, которое принимает TCP соединения.[1] Метод делает это, пытаясь использовать локальные ресурсы для сбоя службы или всей машины, что по сути является атакой отказа в обслуживании.

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

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

О Sockstress

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

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

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

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

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

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

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

Напряжение подключения к наводнению

Sockstress не имеет специального модуля атаки для выполнения простой атаки лавинным потоком соединений, но любой из модулей атаки может использоваться как таковой, если параметры -c-1 (максимальное количество подключений неограничено) и -m-1 (максимальное количество синхросигналов не ограничено). использовал. Это будет примерно соответствовать атаке naptha, выполняя лавинную рассылку соединений, исчерпывая все доступные TCB, как описано в документе CPNI в разделе 3.1.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

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

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

       syn -> (окно 4k) <- syn + ack (окно 32k) ack -> (окно 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

Малое напряжение окна

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

Посмотрите файл payload.c в источнике sockstress. Найдите оператор переключения hport. В этом разделе вы можете указать полезные данные, которые будут отправляться на определенные порты. Наиболее эффективно отправлять полезные данные, которые будут генерировать как можно больший ответ (например, 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

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

Создайте соединение с прослушивающим сокетом и после трехстороннего рукопожатия (внутри последнего подтверждения) отправьте 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 pause stress

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

Посмотрите файл payload.c в источнике sockstress. Найдите оператор переключения hport. В этом разделе вы можете указать полезные данные, которые будут отправляться на определенные порты. Важно, чтобы вы отправляли полезную нагрузку, которая будет выглядеть как обычный клиент, в приложение, с которым вы взаимодействуете. Против нашего 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. В этом разделе вы можете указать полезные данные, которые будут отправляться на определенные порты. Важно, чтобы вы отправляли полезную нагрузку, которая будет выглядеть как обычный клиент, в приложение, с которым вы взаимодействуете.

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

Стеки, поддерживающие этот метод активации 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). Подтвердите FIN.

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

Стеки, у которых нет тайм-аута FIN_WAIT_2. Напряжение большого окна перегрузки

  • путь усадки mtu напряжение
  • md5 стресс

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

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

Хотя сделать одну службу недоступной в считанные секунды тривиально, на то, чтобы вывести из строя всю систему, может потребоваться много минут, а в некоторых случаях и часы. Как правило, чем больше сервисов в системе, тем быстрее она поддастся разрушительным (нарушенный TCP, блокировка системы, перезагрузка и т. Д.) Последствиям атак. В качестве альтернативы усиление атаки может быть достигнуто путем атаки с большего количества IP-адресов. Обычно в наших лабораториях мы атакуем от / 29 до / 25. Атака с / 32 обычно менее эффективна для возникновения системных ошибок.

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

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

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

Смягчение

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

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

Рекомендации

внешняя ссылка