div.main {margin-left: 20pt; margin-right: 20pt}Принцип работы НЮКОВ.
Словом Nuke (ньюк) называют сегодня любую атаку на порты
удаленных компьютеров, приводящую к краху операционной системы или
разрыву интернет-соединения. Nuke не нарушает состояние файловой
системы и не рушит “железо” компьютера—перезагрузившись,
пользователь может продолжить работу в
Сети.
NUKE.C
Атака не получила широкого
распространения, так как могла работать только на UNIX системах с
правами root, использую RAW_SOCKET. Идея nuke.c заключалась в том,
что она отсылала неправильные ICMP пакеты о недостижимости
удаленного сервера, и машина-хост теряла
связь.
OCTOPUS
Роняет любой сервер, наводняя
его кучей TCP запросов на
соединение
PingOfDeath
AIX, Digital Unix,
Linux, BSDi, OSF, SCO
В рекомендации CERT’a говорилось, что
этот баг с превышением размера IP-пакета приводит к зависанию и
перезагрузке перечисленных систем. На самом деле, если верить
результатам, описанным в книге “Атака через Интернет”, эта dos атака
действует только на Windows 3.11 с WinQVT.
Чтобы произвести
атаку, надо запустить программу ping с параметрами
ping -l
65510 host.running.linux
либо на машине win95
ping -l
65527 victim.dest.ip
Ping of Death основана на отсылке более
65 527 байтов данных + 20 байт заголовка IP + 8 байт ICMP-заголовка
в одном IP-пакете. При определенных ухищрениях можно добиться
эффектного результата - полученные данные просто не уместятся в
16-битной внутренней переменной, возникает неустранимая ошибка и
рушится операционная система.
WINNUKE
blue
screen or reboot on Win95/NT
Эта программа стала первой
ласточкой, припадавшей голубизны в оформлении десктопов
пользователям продуктов Микрософт.
В сеpедине мая таким
способом на несколько дней был выведен из стpоя www.microsoft.com.
Hаpяду с обычными данными, пеpесылаемыми по TCP соединению, cтандаpт
пpедустатpивает также пеpедачу сpочных (Out Of Band) данных. Hа
уpовне фоpматов пакетов TCP это выpажается в ненулевом urgent
pointer. У большинства PC с установленным Windows пpисутствует
сетевой пpотокол NetBIOS, сервис которого слушает на 139 порту.
Также часто встречается MS DNS (53 поpт).
Как выяснилось
экспериментально, если подсоединиться к Windows машине по любому
слушающему порту и послать туда несколько байт OutOfBand данных,
реализация стека TCP/IP не знает, что делать с этими данными и
попpосту подвешивает или пеpезагpуж ает машину. Win95(OSR2) падает в
синий текстовый экpан, сообщающий об ошибке в дpайвеpе TCP/IP и
невозможность pаботы с сетью до пеpезагpузки ОC. NT 4.0 без сеpвис
паков пеpезагpужается, NT 4.0 с SP2 выпадает в синий экpан. Атаке
подвеpжены так же Windows NT 3.51 и Windows 3.11 for
Workgropus.
Код на perl5.004
perl -MIO::Socket -e
‘IO::Socket::INET->new(PeerAddr=>”some.windoze.box:139”)->send(“bye”,MSG_OOB)’
C
SP3 для WinNT и WinNuke связана достаточно веселая истоpия. Как
выяснилось вскоpе после выпуска SP3, запущенный с компьютеpов Apple,
WinNuke спокойно пpобивал защиту сеpвис пака. Пpичиной этого
послужило существование двух pазных стандаpтов на IP пакеты,
содеpжащие OutOfBand данные. Есть стандаpт от Berkley и стандаpт,
описаный в RFC 1122. Отличие их состоит в том, что UrgentPointer
вычисляется по pазному. В действительности, UrgentPointer в двух
pеализациях будет отличаться pовно на единицу. Тpетий сеpвис пак,
защищающий от “своих” OOB пакетов, оказался беззащитен пpотив
пакетов дpугого стандаpта. Поэтому почти сpазу после SP3 вышел
дополнительный OOB fix.
JOLT/SPING
Завешивает
Windows95(OSR2), Memphis и Windows NT 4.0, которые не имеют
программ-брандмауэров, блокирующих ICMP-пакеты.Также это сработает
на машинах со старой MacOS и старые реализации System
V.
Программа базируется на старом коде, который использовался
для замораживания работы Unix System V. Она посылает серию больших
фрагментированных ICMP пакетов, при приеме которых машина
безрезультатно пытается их собрать.
SMURF/SMURF FOR
BSD
heavy flood of victims
Программа достаточно
примитивна. В ней в массиве указывается список широковещательных
адресов, и по этим адресам неоднократно посылаются подставные
служебные сообщения с требованием icmp_echo_request, требующие
ответа по адресу жертвы. В результате атаки, в зависимости от
количества указанных широковещательных адресов, жертва получает
мощный поток сообщений, что для диалап пользователя равносильно
слетанию с линии.
LAND
Affecting Windows
95(OSR2)/Windows NT 4.0/FreeBSD/HP-UX/OpenBSD/SunOS/
IOS(на
ней работает сетевое оборудование Cisco
Systems).
Жертве посылаются SYN пакеты, в которых IP адреса
источника и пункта назначения указываются равными адресу самой
атакуемой системы (включая и одинаковые порты). Происходит
зацикливание, когда жертва пытается установить связь сама с собой,
что в конечном итоге и выводит машину из строя. Порт естественно
должен быть открыт.
Часто атаки комбинируются. Например, Land
& IP Spoofing: нападающая сторона многократно провоцирует сервер
на обмен сообщениями, но в качестве обратного адреса указывает
вымышленный. Таким образом, возникают полуоткрытые соединения
(half-open connections), при определенном количестве которых сервер
просто не в состоянии открывать новые. В большинстве случаев
сервер-жертва ощутимо замедляет свою работу, хотя может возникнуть
аварийная перезагрузка памяти. (Spoofing - подмена реального адреса
отправителя вымышленным. Как правило, используется в сочетании с
разными видами атак, чтобы жертва не смогла определить адрес
нападавшего.)
LATIERRA
Crashes Windows 95, and
will cause Windows NT 4.0, SP3 to utilize a high percentage of CPU.
In some instances, CPU usage reaches %100.
Модифицированная
версия land.c Посылает практически такие же пакеты, что и land, но
сразу на несколько портов. Похоже, для WinNT совершенно не важно,
открыт порт или нет. NT с SP3 не позволяет соединиться с тем же
портом, но если манипулировать разными портами, то реально
достигнуть нужного
эффекта.
TEARDROP/OVERDROP
Linux(kernel up to
2.0.31)/NT/95(OSR)
Оказалось, что Linux имеет серьезный
bug в функции сборки фрагментов ip_glue(). Когда система собирает IP
фрагменты для построения оригинальной датаграммы, запускается цикл,
копиру-ющий все полезные фрагменты из полученных датаграмм в новый
выделенный буфер ( который будет передан выше, на уровень IP, при
нормальном функционировании ).
Из файла
ip_fragment.c@376:
fp = qp->fragments; // указатель на
список полученных пакетов
while(fp != NULL) // пока не
проработали все нужные пакеты
{
if(count+fp->len
> skb->len) // если длина фрагмента слишком
{ //
большая, то он отбрасывается
error_to_big; // чтобы ядро не
копировало слишком
} // много
данных
memcpy((ptr + fp->offset), fp->ptr,
fp->len);
count += fp->len;
fp =
fp->next;
}
Как видно, здесь не
осуществляется проверка на слишком маленькую длину фрагмента,
которая также заставит ядро скопировать большой объем данных ( в
случае если fp->len меньше 0).
Чтобы узнать, когда это
произойдет, посмотрим на точку добавления датаграмм в очередь
обработки при сборке.
Из файла ip_fragment.c@502:
//
опредилим позицию фрагмента
end = offset +
ntohs(iph->tot_len) - ihl;
И что случится, когда мы
перекроем фрагменты :
Из файла ip_fragment.c@531:
//
Мы нашли место, куда положить этот фрагмент.
// Проверка на
наложение с предшествующим фрагментом,
// и, если надо ,
выровнять так, чтобы устранить перекрытия.
if (prev !=
NULL && offset < prev->end)
{
i =
prev->end - offset;
offset += i; /* указатель на
датаграмму */
ptr += i; /* указатель на фрагмент
*/
}
Если мы обнаружим, что текущее смещение
фрагмента меньше конца предыдущего фрагмента ( т.е. наложение), нам
необходимо попытаться корректно устранить перекрытие. Это все
хорошо, пока содержимое текущего фрагмента содержит достаточное
количество данных, чтобы превысить перекрытие. В противном случае,
смещение `offset` будет больше, чем `end`. Эти два значения
передаются функции ip_frag_create(), в которой считается длина
фрагмента данных.
Из файла ip_fragment.c@97:
//
Заполняем структуру
fp->offset = offset;
fp->end
= end;
fp->len = end - offset;
Это приводит к
отрицательному значению fp->len и функция memcpy(), приведенная
выше, грохнется, пытаясь копировать слишком много данных, что
выразится в перезагрузке или зависании, в зависимости от количества
ОЗУ, которое у вас есть.
Мы может спровоцировать это
нестандартное поведение путем посылки двух специально
фрагментированных IP датаграмм. Первая имеет нулевое смещение
фрагмента с полезными данными размером N, с установленным битом MF -
“пакет фрагментирован” ( содержимое данных неважно ). Второй пакет
является последним фрагментом (MF равен 0) с положительным смещением
меньше N и с данными меньше N.
Пример : две датаграммы
размерами 28 и 6 байт
prev->end= 28 // длина первой
датаграммы
offset = 6; // смещение второй
датаграммы
iph->tot_len = 6; // размер данных второй
датаграммы
end = offset + ntohs(iph->tot_len) - ihl;
// end = 12
// проверка на наложение
if (prev != NULL
&& offset < prev->end)
{
i =
prev->end - offset;
offset += i; /* указатель на
датаграмму */
ptr += i; /* указатель на фрагмент
*/
}
// здесь уже offset = 28, а end = 12 => вот и
отрицательный результат
BONK
Crashes *patched*
win95(OSR2)/NT 4.0 machines.
Использует открытый UDP порт 55,
который как правило открыт на машинах с установленным IE.
Два
тщательно проработанных IP пакета при сборке дают неправильную UDP
датаграмму. Наложение смещений приводит к тому, что второй пакет
перезаписывает середину заголовка первого таким образом, что
датаграмма остается незаконченной, память не освобождается и в конце
концов исчерпывается. Windows NT выделяет память ядра для сохранения
этих датаграмм при приеме и может подвиснуть с сообщением STOP
0x0000000A после обработки достаточного числа поврежденных UDP
пакетов.
Микрософт выпустила заплатку достаточно оперативно,
но не многие позаботились о своевременной установке фикса. Расплатой
за небрежность стала ночь со 2 на 3 марта 1998 года, когда
неизвестный злоумышленник вывел из строя тысячи Windows-машин в США
именно этой атакой. Среди пострадавших оказались NASA и
Массачусетский технологический
университет.
NEWTEAR
Affects patched NT4, and
Win95.
Основанный на том же пpинципе, что и TearDrop, newtear
является его логическим пpодолжением: уменьшена pеальная длина
пакета, пpи этом увеличена логическая длина (в UDP)
syndrop
доработана для работы с TCP, комбинируя с SYN
flood’om
BOINK
Концептуально ничем не
отличается от bonk’a, просто использует другие порты : как пишет
автор, Микрософт сначала, вероятнее всего, просто закроет UDP порт
55 в качестве хотфикса, и чтобы добро не пропадало, в п рограмме
добавлена возможность выбора диапазона портов для атаки
bonk.
FRAGGLE
heavy flood of
victims
Продвинутое продолжение идеи smurf, нагоняет траффик
на жертву, используя UDP протокол и 7 UDP порт ( echo
)
NESTEA
Crashes linux 2.0.* and 2.1.* and some
windows boxes
Использует слегка модифицированную идею
teardrop’a фрагментации пакетов
для атаки на открытый UDP
port : посылка трех фрагментированных
пакета
NESTEA2
Атака аналогична nestea.c,
только добавлены опции сканирования подсети класса
C.
TARGA
Комбинированные восемь атак в одной
:
bonk / jolt / land / nestea / newtear / syndrop / teardrop
/ winnuke
Автор:Druvin
|