Материал: Логико-лингвистические модели атак на компьютерные системы. Остапенко Г.А., Дмитриева Е.Ю

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

SRTT = R1

RTTVAR = (R1)/2

RTO = SRTT+max(G,4RTTVAR)

где G — степень дискретности (системных) часов (обычно меньше 100 мсек). При вычислении последующего RTT (R) хост устанавливает

RTTVAR = (1-β)*RTTVAR+ β*(SRTT- R)

SRTT = (1-α)*SRTT+αR

Где α = 1/8, β = 1/4. Комбинируя эти два выражения, хост-отправитель устанавливает значение RTO, исходя из следующей формулы:

RTO = max(minRTO, SRTT + max(G, 4RTTVAR))

Рисунок 5.14 - Поведение таймера повторной передачи пакетов

Рассмотрим управление переменной RTO на графике таймера повторной передачи пакетов (рисунок 5.14). Предположим, что пакет с последовательностью n отправлен в начале отсчета времени t=0 и таймер повторной передачи пакетов установлен в 1 сек в начале передачи. В случае потери пакета n и если адресатом принято менее 3-х одинаковых ACK, поток трафика "получает таймаут" по прошествию времени t=1 секунде. В этот момент отправитель входит в стадию экспоненциальной задержки: уменьшает поток трафика до одного пакета, удваивает значение RTO до 2-х секунд, передает пакет, на который не был получен ACK с последовательностью n и устанавливает новое значение для RTO (2 сек.). В случае повторной потери пакета (не отображено на рисунок 5.14), экспоненциальная задержка продолжается — отправитель ждет 2 секунды (пока истечет таймер). В момент времени t=3 секунды отправитель снова удваивает значение RTO до 4-х секунд и повторяет процесс.

Вариация, если пакет n удачно передан во второй раз: в момент времени t=1 секунде, как и показано на рисунок 5.14, ACK пакета n прибывает к отправителю в момент времени t=1+RTT. Отправитель выходит из экспоненциальной задержки и начинает "медленный старт", удваивая количество отправляемых пакетов, т.е. отправляет пакеты n+1 и n+2 и устанавливает значение таймера повторной передачи в текущее значение RTO (2 сек). Если эти два пакета не потеряны, подтверждение их принятия пришло в момент времени t=1+2*RTT, рассчитываются переменные SRTT, RTTVAR и RTO по формулам, указанным выше. При условии, что minRTO > SRTT+max(G,4RTTVAR) значение RTO снова устанавливается в 1 сек. В приведенном сценарии поток «отваливается» по таймауту, но отклонения значений RTO происходит в пределах от minRTO до RTT для времени t>minRTO+2RTT.

5.2.3.2 Моделирование и реализация атаки

Показанный в предыдущем разделе механизм таймаутов, с одной стороны, обеспечивает устойчивый алгоритм управления пропускной способностью канала, с другой стороны, предоставляет возможность проведения низкоскоростной атаки, который использует уязвимость динамики изменения таймеров повторной передачи (по малой временной шкале). В частности, атакующий может вызвать циклическое «отваливание» по таймауту потока трафика путем отправки мощных коротких импульсов трафика, имеющих длительность, сопоставимую с RTT шкалой и периодичностью более медленной шкалы RTO. Пропускная способность атакуемого снижается до нуля, в то же самое время средняя скорость атаки будет довольно низкой, что делает проблемным обнаружение подобной атаки.

Рассмотрим простую модель зависимости времени вывода из строя атакованной системы (это и будет периодом атаки) от ее полосы пропускания. Для начала смоделируем на одиночном потоке трафика и одиночном потоке DoS-трафика. Допустим, атакующий отправил первый пик в момент времени t=0, тем самым, выведя из строя удаленную систему. Как показано на рисунок 5.14, обычный отправитель в это время получил таймаут и вынужден ждать окончания таймера повторной передачи пакета 1 сек и удваивать RTO. Если атакующий повторил атаку (снова вывел из строя систему) в промежуток времени от 1 до 1+2RTT, то он вынудит ждать стек TCP еще 2 секунды. Создавая подобные выводы из строя в моменты времени 3, 5, 17, ..., атакующий тем самым фактически вынудит прекратить предоставление TCP-сервиса, в то же самое время атакующий будет отправлять пики DoS-трафика с довольно низкой средней скоростью. Приведенная ситуация эффективна для одиночного потока трафика, для нескольких входящих и выходящих потоков требуется периодичное (вместо экспоненциального, как указано для одиночного) создание ситуаций вывода из строя канала передачи по шкале RTO. Более того, в случае одинакового параметра minRTO (как рекомендует RFC 2988) у всех потоков, все потоки будут простаивать в таймауте более длительное время (в случае создания периодичных сбоев в канале).

Для атаки будет использованы импульсы (как показано на рисунке 5.15) длительностью L и скоростью R с определенным периодом T. Как показано ниже, атака будет удачной при следующих условиях: скорость передачи R достаточна для получения таймаута в канале (т.е. сумма скоростей обычного и DoS-трафика должна превышать суммарную пропускную способность канала), длительность L по шкале RTT достаточна для получения таймаута на канале (и довольно мала, чтобы избежать обнаружения) и период T по шкале RTO выбран таким образом, что поток трафика, пытающегося после таймаута пройти в канал, получил очередной таймаут.

Рисунок 5.15 - Импульсный трафик атаки

Рассмотрим сценарий атаки: «бутылочное горлышко» канала, очередь из n потоков TCP-трафика с разными RTT и одиночный поток DoS-трафика. Обозначим RTTi время RTT потока i, i=1,2,...n. Поток DoS-трафика показан на рисунок 5.15. Следующие формулы связывают пропускную способность канала и период атаки.

Допустим, что период атаки T. Если период вывода из строя канала удовлетворяет выражению

L` ≥ RTTi (С1)

и минимальное значение RTO удовлетворяет условию

minRTO > STRRi + 4*RTTVARi (C2)

Для всех i=1,..., n, то формула для нормализованной пропускной способности канала с множеством потоков трафика будет выглядеть следующим образом:

(2)

Объясним полученный результат: периодические пики длиной L создают короткие перебои длиной L` , которые сопровождаются большими потерями пакетов. Если значения L` достигают значений RTT потоков трафика, то есть L`>=RTTi для всех i=1,...,n, то задержка, вызванная атакой вполне достаточна, чтобы все потоки трафика получили таймаут. Более того, при выполнении условия (С2) для всех i=1,...,n, все TCP-потоки будут иметь идентичные значения RTO и именно поэтому таймаут после minRTO секунд — идеальный момент проведения повторного выведения из строя канала. В этом случае, несмотря на разные RTT, все TCP-потоки будут вынуждены "синхронизироваться" под атакующего и получат таймаут примерно в одно время. Обратим внимание, что при выборе периода T по формуле T>=1+2RTTi , все TCP потоки будут получать таймаут в 1 секунду. Формула (2) допускает, что RTO=minRTO для T > minRTO, в тоже время если T лежит в диапазонах (minRTO; minRTO+2RTT), то (2) определяет границу верхнего диапазона для T. Иными словами, импульсный DoS-трафик не использует уязвимость в механизме экспоненциального обратного хода, а использует факт повторения таймаутов.

Далее рассмотрим потоки, трафика, не удовлетворяющие условиям (С1) и (С2). Допустим период DoS-атаки T. В случае если период вывода из строя канала L`> RTTi и minRTO>STRRi+4*RTTVARi для i=1,...,k, и выполнено одно из условий L`<RTTj или minRTO<=STRRj+4*RTTVARj для j=k+1,...,n то формула (2) будет действовать для потоков 1,...,k.

На указанном выше примере можно утверждать, что DoS-атака, удовлетворяющая выражению (2), эффективна для выборки потоков, иными словами, атака, запущенная против группы потоков будет воздействовать только на потоки удовлетворяющие заданным условиям. Далее будем называть подобное явление «фильтр потоков» в результате, которого фильтруются определенные подсети.

Покажем, как атака влияет на «частотную характеристику». Сначала рассмотрим аналитическую модель сценария (рисунок 5.16), в которой выполняются условия (С1) и (С2) и minRTO=1 сек. Кривая, обозначенная на рисунке 5.17 является зависимостью ρ от T, вычисленная по формуле (2). Полоса пропускания нормализована по отношению к состоянию без атаки.

Рисунок 5.16 - Аналитическую модель сценария

Рисунок 5.17 - Пропускная способность при атаке — моделирование и эксперимент

Следует учесть, что средняя скорость атаки уменьшается с увеличением T, т.к. вычисляется по формуле Rl/T.

Однако исходя из формулы (2) и рисунка 5.17, эффективность атаки абсолютно не возрастает с увеличением средней скорости. Для нас наиболее актуальны два участка на рисунке 5.17 - где пропускная способность становится равной нулю. В частности функция ρ принимает значения ноль при двух параметрах T=minRTO и T=minRTO/2 . Физический смысл этих минимумов таков: если атакующий создает сбои в канале с периодичностью minRTO, то он полностью блокирует трафик TCP. Как только случается кратковременная блокировка канала, все потоки трафика, идущие через него, останавливаются. По прошествии времени minRTO, происходит попытка повторной передачи пакетов, но в это время атакующий создает очередную блокировку канала. Разумеется, что наиболее предпочтительный момент для следующей посылки атакующего — T=minRTO, а не minRTO/2, так как в таком случае уменьшается общая скорость атаки. В случае если T>minRTO, период атаки увеличивается, что влечет за собой увеличение общей пропускной способности канала в перерывах между посылками атакующего.

Далее проведем серию тестов ns-2 для сравнения с экспериментальными данными. В этом моделировании будем исследовать одиночный поток трафика (следует помнить, что выражение (2) используется для многочисленных потоков. Поток TCP Reno имеет minRTO=1 и удовлетворяет условиям (С1) и (С2). Конкретно, задержка распространения составляет 6 мс и RTT в диапазоне от 12 до 132 мс, при заданном буфере. Полоса пропускания канала — 1,5 Мб/с, скорость DoS-трафика 1,5 Мб/с и длительность пика 150 мс.

Проведенный эксперимент показан на рисунке 5.17 кривой симуляции. Из рисунке 5.17 видно, что выражение (2) охватывает основную часть графика и точки минимума практически совпадают. Следует отметить факт, что в промежутке между двумя минимумами моделирование не совсем правильно, т.к. моделирование предполагает, что TCP-стек может использовать полную емкость канала между окончанием времени RTO и приходом нового DoS-пика, этого не случается по причине "медленного старта".

Рассмотрим ситуацию, когда в «бутылочном горлышке» находятся TCP-поток и DoS-трафик, который каждые T секунд «вспыхивает» импульсом с постоянной скоростью Rdos и длительностью L. Остальные значения: Rtcp — мгновенная скорость TCP потока, B — размер очереди, В0 — размер очереди в начале атаки к моменту времени t=0. L1 — время за которое наполнится очередь вычисляется по формуле:

(3)

(С - ширина канала). После L1 секунд очередь остается заполненной на время L2=L-L1 секунд при условии выполнения выражения Rdos + Rtcp >=C. Более того, при выполнении Rdos>=C в течение того же периода, канал будет выведен из строя и вероятность того, что повторная передача снова «уйдет» в таймаут, будет очень велика.

5.2.3.2.1 Минимальная скорость DoS-атаки

Допустим, что атакующий ограничен максимальной скоростью Rmax, существованием второго «бутылочного горлышка» или пропускной способностью своего канала. В интересах атакующего, скрыть факт атаки от механизмов IDS и роутеров. Для минимизации объема трафика в моменты создания перебоев в канале атакующий может использовать двухступенчатые импульсы, как показано на рисисунке 5.18. Для заполнения буфера без участия нормального трафика атакующему нужно L1=B/( Rmax -C) секунд. Заметим, что максимальная скорость Rmax минимизирует время L1 и, как следствие, количество отправляемых байт. После заполнения буфера, атакующий снижает скорость до емкости «бутылочного горлышка» С для гарантированной потери пакетов, но при этом используется существенно меньшая скорость.

Поэтому двухуровневый (или двухскоростной) импульс уменьшает объем трафика, который необходимо передать для гарантированного вывода из строя канала на период T (для заданных B — размер очереди в «бутылочном горлышке», С — емкость «бутылочного горлышка» и диапазона возможных скоростей от 0 до Rmax).

Для воспроизведения двухскоростной атаки в реальных сетях, атакующий может воспользоваться следующими инструментами для обнаружения емкости «бутылочного горлышка», для измерения размера очереди «бутылочного горлышка» и для вычисления второй скорости «бутылочного горлышка».

Рисунок 5.18 - Двухуровневый импульс атаки

Несмотря на оптимальность двухуровневых импульсов для проведения атаки, в дальнейшем будем использовать простые одиночные импульсы (см. рисунок 5.15). Причин тому несколько: во-первых, необязательно (и даже не нужно) знать о других параметрах удаленной сети, кроме как емкости «бутылочного горлышка»; во-вторых, одиночные импульсы выделяют эффект от периодической атаки на отдельной временной шкале. Сравним эффекты от атаки одиночными импульсами и двойными, проведя соответствующее моделирование. В качестве примера возьмем следующие исходные данные: одиночный импульс со скоростью 3.75 Мб/с и длительностью L=50 мс и двухуровневый импульс с Rmax =10 Мб/с. Для двухскоростного потока L1=B/(Rmax -C) вычисляется, а L2 определено таким образом, что количество пакетов отправленных атакованному одинаково. Остальные параметры взяты из примеров выше. Результаты моделирования в виде графиков примерно идентичны, следовательно, одиночные импульсы DoS-атаки в приближении можно считать идентичными двухуровневым, и они не требуют знания параметров удаленной сети.

5.2.3.3 Многопоточность и синхронизация потоков

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

Рисунок 5.19 - DoS-атака и множество потоков

На рисунке 5.19 показана нормализованная пропускная способность множества потоков трафика от периода атаки T. Ситуация наблюдается аналогичная, как и при одиночном потоке, следовательно формула (2) также может использоваться для моделирования многопоточных каналов. Однако следует обратить внимание, что при T=L/minRTO, пропускная способность не равна нулю (как было в случае с одним потоком), так как максимальное RTT составляет 132 мс, что больше периода атаки 100 мс, и некоторые потоки все же смогли «прорваться» в канале. Так же, стоит отметить, что при частоте 2/minRTO пропускная способность практически сводится к нулю. Причиной этого могут быть две вещи: одинаковость RTO (по причине существования minRTO) предоставляет единственную временную шкалу для уязвимости; вынужденная синхронизация DoS-потоком случается при получении таймаута всеми потоками сразу. Из-за одинаковости RTO потоки пытаются «выйти» из таймаута одновременно. Синхронизация TCP-потоков служит причиной использования алгоритма RED, в задачи которого входит избежание синхронизации множества потоков. Но совершенно различен подход к проблеме, то есть избежать синхронизации при обычном трафике, а не при атаках. Как следствие механизм RED абсолютно не приспособлен к отражению таких атак.

Источник: https://studfile.net/preview/16563007/