Зараз розкажу про DOS-атаки так як цей вид атаки завжди є убийтсвенной для будь-якого сайту.Незабаром я викладу скрипти від цієї самої DOS-атаки

Оскільки дана тема досить обширна, ми розглянемо лише кілька класів атак цього типу.
Суть першого з них полягає в посилці великої кількості пакетів на заданий вузол мережі (мета атаки), що може призвести до виведення цього сайту з ладу, оскільки він «захлинеться» в лавині посилаються пакетів і не зможе обробляти запити авторизованих користувачів. За таким принципом діють атаки SYN FloodSmurf, UDP Flood, Тагда3 і т. д. найвідоміша з них це SYN Flood, з допомогою якої хакер Кевін Митник атакував комп’ютер фахівця по захисту інформації Цутому Шимомуры. В атаці цього типу зловмисник посилає запит на встановлення з’єднання (посилка SYN-пакет) з атакуемым вузлом. Реалізація болцшого числа таких запитів за короткий час призведе до того, що черга вузла, з яким встановлюється з’єднання, буде переповнена і він не зможе приймати нові запити. В атаці проти Митника »имомуры переповнення сталося після восьми запитів до сервісу 1одіп, «висить» на 513-му порту (як і в попередніх статтях, більшість прикладів ілюструється фрагментами лістингів утиліти ТСРdump).

[b]Атака SYN Flood; (фрагмент журналу ТСРdump)

14:18:22.516699 WS_LUKA.600 >
WS_LUKICH.1одіп: S 1382726960:1382726960(0)
win 4096
14:18:22.566069 WS_LUKA.601 >
WS_LUKICH.login: S 1382726961:1382726961(0)
win 4096
14:18:22.744477 WS_LUKA.602 >
WS_LUKICH.login: S 1382726962:1382726962(0)
win 4096
14:18:22.830111 WS_LUKA.603 )
WS_LUKICH.login: S 1382726963г1382726963(0)
win 4096
14:18:22.886128 WS_LUKA.604 )
WS_LUKICH.login: S 1382726964:1382726964(0)
win 4096
14:18:22.943514 WS_LUKA.605 )
МS_LUKICH.login: S 1382726965:1382726965(0)
win 4096
14з18:23.002715 WS_LUKA.606 >
WS_LUKICH.login: S 1382726966:1382726966(0)
win 4096
14:18:23.103275 WS_LUKA.607 >
WS_LUKICH.login: S 1382726967:1382726967(0)
win 4096
14:18:23.162781 WS_LUKA.608 >
WS_LUKICH.login: S 1382726968:1382726968(0)
win 4096
[/b]
лістинг можна продлжить…

Дана атака має особливість, яка не дозволяє сліпо копіювати шаблон її виявлення на всі без винятку порти. Якщо для сервісу 1одіп дійсно має місце атака, то, наприклад, для сервісу НТТР (80-й порт за замовчуванням) це вже не так. Справа в тому, що браузер Microsoft Internet Ехр1огег на кожен завантажений файл з розширенням JPG, GIF, HTML створює нове з’єднання з Web-сервером. Таким чином, завантаження HTML-сторінки з десятьма картинками означає відкриття 11 сполук, що при неповному розумінні може бути прийнято за атаку типу SYN Flood.

[b]Помилкове виявлення атаки SYN Flood (фрагмент журналу ТСРdump)

14:18:22.516699
WS_LUKA.600 > WS_LUKICH.80: S
1382726960:1382726960(0)
14:18:22.566069
WS_LUKA.601 ) WS_LUKICH.80: S
1382726961:1382726961(0)
14:18:22 744477
WS_LUKA.602 ) WS_LUKICH.80: S
1382726962:1382726962(0)
14:18:22.830111
WS_LUKA.603 > WS_LUKICH.80: S
1382726963:1382726963(0)
14:18:22.886128
WS_LUKA.604 > WS_LUKICH.80: S
1382726964:1382726964(0)
14:18:22.943514
WS_LUKA.605 ) WS_LUKICH.80: S
1382726965:1382726965(0)
14:18:23.002715
WS_LIKA.606 > WS_LUKICH.80: S
1382726966:1382726966(0)
14:1823.103275
WS_LUKA.607 ) WS_LUKICH.80: S
1382726967:1382726967(0)
14:18:23.162781
WS_LUKA.608 ) WS_LUKICH.80: S
1382726968:1382726968(0)
[/b]

Дія іншого класу атак типу «відмова в обслуговуванні» полягає в некоректному використанні даних, описаних у заголовку мережевого пакету (зокрема, адреси одержувача і відправника і номерів портів). Наприклад, атака Smurf виявляється по використанню широкомовних пакетів, що передаються протягом тривалого часу за допомогою протоколу ІСМР. Відомі випадки, коли такі пакети передавалися протягом декількох днів, в результаті чого атакується мережа виявлялася нездатною обробляти санкціонований трафік. Нижче наведені фрагменти журналу реєстрації ТСРdump і маршрутизатора Сіѕсо, в яких зафіксовані приклади атак Smurf і Рraggle (аналог Smurf UDP).

[b]Виявлення атаки Smurf (фрагмент журналу ТСРdump)

02:31:06.162135 172.20.20.1 > 200.0.0.255: icmp: ес?о request
02:31:06.597051 172.20.20.1 > 200.0.0.255: icmp: echo request
02 31:06.986372 172.20.20.1 > 200.0.0.255: icmp: ес?о request
02:31:07.162839 172.20.20.1 > 200.0.0.255: icmp: ес?о request [/b]

[b]Виявлення атак Smurf і Fraggle(фрагмент журналу маршрутизатора Сіѕсо)

Dec 22 16:15:26: %SEC-6-IPACCESSLODP: list internet
denied icmp 172.20.20.1 -> 200.0.0.255 (8/0), 1 packet
Dec 22 16:16:26: %SEC-6-IPACCESSLODP: list internet
denied icmp 172.20.20.2 -> 200.0.0.255 (8/0), 24 packets
Dec 22 16:16:56: %SEC-6-IPACCESSLODP: list internet
denied icmp 172.20.20,3(21820) -> 200.0.0.255 (19), 1 packet
Dec 22 16:26:26: %SEC-6-IPACCESSLODP: list internet
denied icmp 172.20.20.4 -> 200.0.0.255 (8/0), 3 packets
Dec 22 16:27:26: %SEC-6-IPACCESSLODP: list internet
denied icmp 172.20.20.5 -> 200.0.0.255 (8/0), 4 packets
[/b]
Існує і ще одна атака, дуже схожа на Smurf. Це попередні дії перед атакою (network mapping), які полягають в широкомовному запиті активності вузлів, обираних в подальшому в якості мети атаки. Приватний приклад таких дій сканування окремих вузлів атакується мережі, описаний у попередній статті (див. «ВУТЕ Росія» #5’2001).

[b]Виявлення Network Mapping (фрагмент журналу ТСРdump)

00:43:58.094644 pinger.mapper.com > 200.0.0.255: icmp: echo request
00:43:58.604889 pinger.mapper.com> 200.0.0.0: icmp: echo request
00:50:02.297035 pinger.mapper.com > 200.0.1.255: icmp: echo request
00:50:02.689911 pinger.mapper.com > 200.0.1.0: icmp: ес?о request
00:54:56.911891 pinger.mapper.com > 200.0.2.255: icmp: ес?о request
00:54:57.265833 р4пдег.паррень.ссип > 200.0.2.0: icmp: ес?о request
00:59:52.822243 pinger.mapper.com > 200.0.3.255: icmp: ес?о request
00:59:53.415182 pinger.mapper.com > 200.0.3.0: icmp: ес?о request [/b]

Відміну від атаки Smurf полягає у використанні реального адреси джерела широкомовних пакетів, систематичне збільшення номерів підмереж для аналізу активності входять до них вузлів та часу, що витрачається на обробку відповідей на надіслані запити (ес?о гер1у).
Іншою ознакою атак типу «відмова в обслуговуванні» розглянутого класу можуть служити неправильні адреси, указані в полях «адреса одержувача» або «адреса відправника». Наприклад, атака Land виявляється за збігом цих адрес в одному пакеті.

[b]Виявлення атаки Land (фрагмент журналу ТСРdump)

10:56:32.395383 200.0.0.104.139 > 200.0.0.104.139: S
10:56:35.145383 200.0.0.104.139 > 200.0.0.104.139: S
10:56:36.265383 200.0.0.104.139 > 200.0.0.104.139: S[/b]

До речі, різні системи виявлення атак використовують різні сигнатури для атаки Land. Наприклад, в Сіѕсо Secure IDS пакет визнається ворожим, якщо в ньому збігаються тільки адреси одержувача та відправника, а в системі RealSecure Sensor Network повинні збігатися не тільки адресу, але і порти одержувача і відправника.
Прикладом атаки, некоректно використовує порти відправника і одержувача, служить С?агдеп (деякі фахівці називають цю атаку Ес?о або Ес?о Chargen). Ця атака використовує особливості реалізації ІР-сервісів ЕсЬо і С?агдеп, внаслідок яких посилки пакетів з порту 19 (С?агдеп) на порт 7 (Ес?о) призводить до зациклювання, і всі доступні ресурси атакованих комп’ютерів використовуються для обробки нескінченного циклу. При цьому замість порту 7 може бути атакований будь-порт, автоматично відповідає на будь-який спрямований на нього запит (до таким відносяться порти 13 (daytime), 37 (time) і т. д.).

[/b]Виявлення атаки С?агдеп або Ес?о (фрагмент журналу ТСРdump)

08:08:16.155354 200.0.0.200.ес?о > 200.0.0.104.с?агдеп: udp [/b]

При аналізі мережевого трафіку необхідно звертати увагу на полі 1Р Options заголовка пакета. Це по ле досить рідко використовується в звичайному житті, і поява в мережі пакетів з інформацією в ньому може свідчити про нестандартній ситуації. Це поле може служити для вивчення маршруту проходження пакетів (source routing) або для реалізації атак типу «відмова в обслуговуванні». Наприклад, 20 жовтня 1999 року в Bugtraq з’явилося повідомлення про те, що модуль аналізу 1Р-пакетів міжмережевого екрану Raptor 6.0 компанії Symantec неправильно обробляє поле 1Р Оptions, в результаті чого він може бути виведений з ладу, і тільки перезавантаження комп’ютера з міжмережевим екраном повертає Raptor у нормальний стан. І хоча ця вразливість пізніше була усунена, факт залишається фактом.

[b]Виявлення атаки на міжмережевий екран Raptor 6.0 (фрагмент журналу ТСРdump)

13:07:52 10.0.0.1.www > target.net.61374: Р
2018915346:2018915378(32) аск 558065031 win 8192
[8ов 0х32] ttl 255, id 48879, орtlen=4[|ір ор 1еп 0])
4632 004с beef 0000 ff06 а222 0а00 0001
0а01 0165 4400 0001 0050 еfbe 7856 3412
2143 6587 5018 2000 5724 0000 0000 0000 0000 0000 0000
[/b]
Наступний ознака атак типу «відмова в обслуговуванні» використання широко відомих уразливих місць. Наприклад, посилка ІСМР-пакетів з типом 13 (Тimestamp) на сайт з встановленою ОС Microsoft Windows 98 внаслідок некоректної реалізації стеку ТСР/ІР в цій ОС може призвести до «зависання» вузла та появи «синього екрану».

[b]Атака Tiny Frafment (фрагмент журналу TCP dump)

06:25:55.315 [|tcp] (frag 38783:[email protected]+)
06:25:55.315 WS_LUKA > WS_LUKICH: (frag 38783:[email protected])
06:25:55.315 [|tcp] (frag 16422:[email protected]+)
06:25:55.315 WS_LUKA > WS_LUKICH: (frag 16422:[email protected]) [/b]

Нотація [|tср знаходимо] вказує на те, що утиліта ТСРdump не змогла захопити весь ТСР-заголовок і інтерпретувати призначення пакета.
Однак найвідоміший приклад атаки, що використовує фрагментовані пакети, це Ріпд of Death. Принцип її дії полягає в посилці ІСМР пакета довжиною більше б5 535 байтів (максимальний розмір 1Р-пакету). Довжина даного повідомлення, що складається з безлічі фрагментів, може становити наприклад 65 740 (380+65 360) байтів. Ще одна проблема, пов’язана з фрагментованими пакетами, полягає в тому, що довжина переданого фрагмента повинна бути кратна 8, що у наведеному прикладі не дотримується (довжина фрагмента 380 байт). Деякі мережеві пристрої чи програми «не вміють» правильно збирати фрагменти нестандартного розміру, що призводить до виходу їх з ладу.
На закінчення хочу зупинитися на розподілених атак, які істотно ускладнюють захист корпоративної мережі. Справа тут в тому, що якщо пропускна здатність каналу до мети атаки перевищує пропускну здатність атакуючого, то традиційна атака типу «відмова в обслуговуванні» (UDP Bomb, ІСМР Flood і т. д.) не буде успішною. Розподілена ж атака відбувається вже не з однієї точки Інтернету, а відразу з декількох, що призводить до різкого зростання трафіка і виведенню атакується вузла з ладу. Зловмисник може послати великий обсяг даних відразу зі всіх вузлів, задіяних у розподіленої атаки. Атакується вузол захлинеться величезним трафіком і не зможе обробляти запити від нормальних користувачів. Саме так були реалізовані гучні атаки на початку лютого 2000 року.
При звичайній реалізації аналогічної атаки необхідно мати достатньо «товстий» канал доступу в Інтернет, щоб відправити лавину пакетів на атакується вузол. У разі ж розподіленої атаки це умова перестає бути необхідним: достатньо мати dialup з’єднання з Інтернетом. Принцип лавини або шторму пакетів досягається за рахунок великого числа таких відносно повільних з’єднань.
Наведемо приклад: за даними «Росія-Онлайн» протягом двох діб, починаючи з 9 години ранку 28 грудня 2000 р., найбільший Інтернет-провайдер Вірменії «Арминко» піддавався розподіленої атаки. Суть еесостояла в тому, що хакер, виявивши слабо захищений сервер, за допомогою особливої програми примусив його до видачі безглуздої інформації з будь-якого комп’ютерного адресою. В даному випадку до атаки долучилося понад 50 машин з різних країн, які посилали за адресою «Арминко» безглузді повідомлення. Хто організував цю атаку і в якій країні перебував хакер, встановити не вдалося. «Хоча атаці піддалася в основному «Арминко», перевантаженої виявилася вся магістраль, що з’єднує Вірменію з Всесвітньою павутиною. 30 грудня завдяки співпраці іншого провайдера, «АрменТел», зв’язок була повністю відновлена. Незважаючи на це, комп’ютерна атака тривала, але з меншою інтенсивністю.
Розподілені атаки (наприклад, ТFN ) можна виявити за номерами використовуваних портів. Крім того, ознакою атаки може служити велика кількість мережевих пакетів, що передаються на заданий вузол з сотень і тисяч вузлів.

[b]Виявлення атаки TFN (фрагмент журналу TCPdump)

17:25:21.369 251.244.87.90 > 200.0.0.104: icmp: ес?о request
17:25:21.389 91.105.122.14 > 200.0.0.104: icmp: есЬо геquest
17:25:21.409 74.120.20.9 > 200.0.0.104: icmp: echo request
17:25:21.429 134.136.57.119 > 200.0.0.104: icmp: echo request
17:25:21.449 167.114.59.72 > 200.0.0.104: icmp: echo request
17:25:21.469 119.45.18.39 > 200.0.0.104: icmp: echo request
17:25:21.489 99.76.37.50 > 200.0.0.104: icmp: echo request
17:25:21.509 227.172.27.94 > 200.0.0.104: icmp: echo request
17:25:21.529 103.233.187.43 > 200.0.0.104: icmp: echo request
17:25:21.549 40.93.8.52 > 200.0.0.104: icmp: echo request
17:25:21.569 2.32.117.59 > 200.0.0.104: icmp: echo гequest[/b]

[b]А ось і сам скрипт від DOS атаки[/b]

Принцип дії я думаю, зрозумілий, ось сам код:

Наприклад, створимо каталог anti_ddos і кидаємо всі скрипти туди:

index.php (модуль виявлення DDOS атаки):
PHP код:[b] $ad_check_file=’check.txt’; // файл для запису поточного стану під час моніторингу
$ad_temp_file=’all_ip.txt’; // тимчасовий файл
$ad_black_file=’black_ip.txt’; // будуть заноситься ip машин зомбі
$ad_white_file=’white_ip.txt’; // заносяться ip відвідувачів
$ad_dir=’anti_ddos’; // каталог зі скриптами
$ad_num_query=0; // поточна кількість запитів в секунду з файлу $check_file
$ad_sec_query=0; // секунда з файлу $check_file
$ad_end_defense=0; // час закінчення захисту з файлу $check_file
$ad_sec=date(»s”); // поточна секунда
$ad_date=date(«mdHis»); // поточний час
$ad_defense_time=10000; // при виявленні ddos атаки час у секундах на яке припиняється моніторинг

if(!file_exists(“{$ad_dir}/{$ad_check_file}”) or !file_exists(“{$ad_dir}/{$ad_temp_file}”) or !file_exists(“{$ad_dir}/{$ad_black_file}”) or !file_exists(“{$ad_dir}/{$ad_white_file}”) or !file_exists(“{$ad_dir}/anti_ddos.php”)){
die(«Не вистачає файлів.»);
}

require(“{$ad_dir}/{$ad_check_file}”);

if ($ad_end_defense and $ad_end_defense>$ad_date){
require(“{$ad_dir}/anti_ddos.php”);
} else {
if($ad_sec==$ad_sec_query){
$ad_num_query++;
} else {
$ad_num_query=’1′;
}

if ($ad_num_query>=$ad_ddos_query){
$ad_file=fopen(“{$ad_dir}/{$ad_check_file}”,«w»);
$ad_end_defense=$ad_date+$ad_defense_time;
$ad_string=”;
fputs($ad_file,$ad_string);
fclose($ad_fp);
} else {
$ad_file=fopen(“{$ad_dir}/{$ad_check_file}”,«w»);
$ad_string=”;
fputs($ad_file,$ad_string);
fclose($ad_fp);
}
}
?>

anti_ddos.php (модуль погашення DDOS атаки):
PHP код:
function getIP() {
if(getenv(«HTTP_CLIENT_IP») and preg_match(“/^[0-9.]*?[0-9.]+$/is”,getenv(«HTTP_CLIENT_IP»)) and getenv(«HTTP_CLIENT_IP»)!=’127.0.0.1′) {
$ip = getenv(«HTTP_CLIENT_IP»);
} elseif(getenv(«HTTP_X_FORWARDED_FOR») and preg_match(“/^[0-9.]*?[0-9.]+$/is”,getenv(«HTTP_X_FORWARDED_FOR»)) and getenv(«HTTP_X_FORWARDED_FOR»)!=’127.0.0.1′) {
$ip = getenv(«HTTP_X_FORWARDED_FOR»);
} else {
$ip = getenv(«REMOTE_ADDR»);
}
return $ip;
}
$ad_ip=getIP();

$ad_source=file(“{$ad_dir}/{$ad_black_file}”);
$ad_source=explode(‘ ‘,$ad_source[0]);
if (in_array($ad_ip,$ad_source)){die();}

$ad_source=file(“{$ad_dir}/{$ad_white_file}”);
$ad_source=explode(‘ ‘,$ad_source[0]);
if (!in_array($ad_ip,$ad_source)){

$ad_source=file(“{$ad_dir}/{$ad_temp_file}”);
$ad_source=explode(‘ ‘,$ad_source[0]);
if (!in_array($ad_ip,$ad_source)){
$ad_file=fopen(“{$ad_dir}/{$ad_temp_file}”,«a+»);
$ad_string=$ad_ip.’ ‘;
fputs($ad_file,”$ad_string”);
fclose($ad_fp);
?>

Сайт в даний момент піддається DDOS атаці, якщо Ви не машина-зомбі атакують сайт натисніть на кнопку, інакше Ваш IP () буде заблокований!!!

die();
}
elseif ($_POST[‘ad_white_ip’]){
$ad_file=fopen(“{$ad_dir}/{$ad_white_file}”,«a+»);
$ad_string=$ad_ip.’ ‘;
fputs($ad_file,”$ad_string”);
fclose($ad_fp);
}
else {
$ad_file=fopen(“{$ad_dir}/{$ad_black_file}”,«a+»);
$ad_string=$ad_ip.’ ‘;
fputs($ad_file,”$ad_string”);
fclose($ad_fp);
die();
}
}
?>
[/b]
Також для роботи скрипта знадобляться 4 файлу check.txt, white_ip.txt, black_ip.txt і all_ip.txt створюємо їх в цьому ж каталозі і на всі ставимо права 666 (читання і запис).

Бажано також під час атаки списки IP адрес атакуючих машин формуються у файлі black_ip.txt переносити поступово в файл .htaccess і блокувати їх звідти, тоді навантаження ще значно знизиться.

Приклад файлу .htaccess
Код:
Deny from 11.11.11.11 22.22.22.22 і т. д. через пробіл

Та трохи не забув, для підключення скрипта, на початку кожного файлу, який може бути підданий атаці додаємо рядок:
Код:
require(«anti_ddos/index.php»);