Атаки, що використовують помилки реалізації мережевих служб

Атаки, що використовують помилки реалізації мережевих служб

атака Land

Наші експерименти показали, що такої вразливості піддаються всі версії ОС Windows NT / 95. Причому Service Pack 4.0 в цьому випадку майже не допомагає. Після прийому одного Land-запиту на деякий час (45 секунд при встановленому Service Pack 3) завантаження системи збільшується до 100% і доступ в систему стає неможливим (Windows 95 звичайно показує синій екран). Ми недарма виділили слово "одного". Адже ніщо не заважає атакуючому організувати шторм або міні-шторм Land-запитів, а це зробить роботу Windows-системи практично неможливою. Наприклад, при тестуванні спрямованим штормом Land-запитів Windows NT 4.0 на платформі Pentium 200 з встановленим Service Pack 4 (де серйозно поліпшена реакція NT на атаку Land) поріг "нормальної" роботи був в разі шторму не більше 3 500 зап. / С. При штормі Land-запитів понад зазначеного порогового значення система "завмирала" і доступ до неї ставав неможливим.

Атаки teardrop і bonk

Дана уразливість заснована на помилках розробників операційної системи в модулі, що відповідає за складання фрагментіроваіних IP-пакетів. При такій збірці, як і слід було очікувати, формується цикл по всім отриманим фрагментам, з них в окремий буфер копіюється інформативна частина, а потім цей буфер передається на рівень IP для подальшої обробки.

Коли фрагмент повідомлення поміщається в чергу збірки, виконується пошук його положення в черзі:

Відповідно, якщо (фрагменти перекриваються, то потрібно вирівняти їх таким чином, щоб усунути накладення:

Таким чином, якщо зсув поточного фрагмента потрапило в попередній фрагмент, необхідно провести коректне вирівнювання. Даний фрагмент коду працює правильно завжди, крім одного випадку: якщо довжина поточного пакета занадто мала, щоб заповнити собою перекриття, то offset виявиться більше, ніж end (саме ці змінні визначають довжину фрагмента, що копіюється в окремий буфер, де і здійснюється збірка).

Тоді при заповненні структури, яка описує копіюється блок даних, виникає наступна ситуація:

Ув'язнена в цикл інструкція по збірці фрагментів виглядає наступним чином:

де: ptr + fp-> offset - зміщення фрагмента в буфері;
fp-> ptr - область даних фрагмента;
fp-> len - довжина копійованого блоку даних.

Спроба скопіювати блок даних негативною довжини (що рівносильно копіювання дуже великого блоку даних) призводить до затирання досить великої ділянки пам'яті і до "зависання" або перезавантаження комп'ютера.

Таким чином, для реалізації даної атаки пакети формуються за таким правилом (розглянемо атаку з двох пакетів):
  1. Надсилається пакет, що передбачає фрагментацію (прапор MF = 1), зі зміщенням фрагмента 0, блоком даних довжиною N.
  2. Надсилається останній фрагмент повідомлення (прапор MF = 0) з позитивним зміщенням фрагмента offset

Є й інша варіація на тему цієї атаки - bonk. В даному випадку після складання фрагментів у пакеті залишаються "дірки" - порожні, не заповнені даними місця, що також може привести до збою ядра операційної системи і "зависання" комп'ютера.

Обидві ці уразливості були присутні у всіх версіях ОС Windows 95 / NT до Service Pack 4 включно і в ранніх версіях ОС Linux (наприклад, Linux 2.0.0). На сьогоднішній день помилки, пов'язані з некоректною складанням фрагментів, швидше за все, виправлені в більшості мережевих ОС.

Атака передачею широковещательного запиту від імені "жертви"

Таким чином, можна зробити висновок, що атака Smurf є практично (але не принципово!) Нездійсненною.

Атака Windows-систем передачею пакетів TCP / IP на відкритий порт

Така атака, яка називається Out of Band (00В), на сьогоднішній день абсолютно застаріла: вона полягала в передачі на атакується Windows-систему пакета TCP / IP з прапором 00В на відкритий (зазвичай 139-й) TCP-порт і ефективно "підвішувала" Windows NT / 95 до виходу Service Pack 3.