20 октября 2019 года    
Воскресенье | 05:43    
Главная
 Новости
Базы данных
Безопасность PC
Всё о компьютерах
Графика и дизайн
Интернет-технологии
Мобильные устройства
Операционные системы
Программирование
Программы
Связь
Сети
 Документация
Статьи
Самоучители
 Общение
Форум







Разделы / Всё о компьютерах / Другие

Принцип работы НЮКОВ.

Принцип работы НЮКОВ.

Словом 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

 Принцип работы НЮКОВ.
Лента новостей


2006 (c) Copyright Hardline.ru