Види DDoS-атак: як саме виводять з ладу сервіси
Складність боротьби з DDoS-атаками зумовлена тим, що ураження можуть зазнавати різні рівні функціонування атакованої веб-системи — від мережевого до рівня додатків. Тому виявити їх і вчасно вжити заходів для їх відбиття не завжди є можливим. Однак знання особливостей кожного виду таких атак допоможе краще підготуватися до їх відбиття та зменшити можливі втрати. Про це й поговоримо в статті.
Рівні атак: L3/L4 проти L7
Атаки рівнів L3/L4 здійснюються на мережевому (L3) та транспортному (L4) рівнях відповідно до архітектури мережевої моделі OSI. Їхня основна мета — перевантажити канал зв’язку, який використовує сервер. Їх посилення може відбуватися за рахунок мережі та її ресурсів, зокрема, шляхом формування безлічі запитів від об'ємних ботнетів (об'єднаних у мережу груп ботів). Зазвичай її легко виявити, наприклад, за різким сплеском трафіку в «тихі» години доби.
Атаки рівня L7 відповідають прикладному рівню моделі OSI і спрямовані на мережеві додатки. Їхня мета – вивести ці додатки «з ладу». «Нападу» можуть піддаватися веб-сервери, CMS-системи, різноманітні онлайн-сервіси та інші веб-компоненти, кількість яких постійно зростає. Посилення може здійснюватися тільки за рахунок машинних ресурсів – CPU, RAM та ін. Найнебезпечніша характеристика L7 – складність виявлення, оскільки вона діє повільно і непомітно. А результат може бути згубним для всієї системи.
Малюнок 1. L3/L4 проти L7
Flood-атаки (SYN, UDP) — «забиваємо канал»
Ці види атак «діють» на рівні транспортних протоколів і мають на меті звести до нуля пропускну здатність каналу передачі даних. Звідси й назва — Flood (переповнення або надмірність)
SYN-флуд є класичним видом атак цього типу. Суть їх дії полягає у відправці на атакований сервер безлічі SYN-пакетів для встановлення TCP-з'єднання. Однак його встановлення ніколи не завершується, оскільки з боку спамера (того, хто ініціював атаку), в порушення існуючих правил, не надсилається ACK-пакет у відповідь на SYN-ACK. В результаті, на сервері в спеціальній таблиці станів створюється безліч записів для всіх незавершених з'єднань, що призводить до її переповнення. Після цього сервер переходить з робочого режиму обробки запитів у режим «відмова в обслуговуванні», що рівнозначно його виходу з ладу.
UDP-флуд став подальшим розвитком SYN-флуду і зараз є одним із найпоширеніших видів DDoS. Його назва походить від назви пакетів типу UDP (User Datagram Protocol), які спамер у великій кількості надсилає на цільовий сервер. У відповідь на кожен такий запит він змушений надсилати ICMP-повідомлення про те, що порт недоступний (Destination Unreachable), що призводить до перевантаження мережі та витрачання виробничої потужності сервера (CPU, RAM, ...). У підсумку, через якийсь час (залежно від інтенсивності «штурму») сервер переходить у режим «відмова в обслуговуванні».
Витонченість UDP-флуду ще й у тому, що спамер, у більшості випадків, підробляє IP-адреси відправників UDP-пакетів або «зомбі» (скомпрометовані пристрої, що складають ботнет). У результаті, ICMP-відповіді сервера перенаправляються на інші адреси і не заважають «зомбі» тривалий час зберігати свою працездатність і залишатися анонімними. Для його здійснення часто використовуються такі програми, як, наприклад, UDP Unicorn.
Малюнок 2. Flood-атаки: SYN і UDP
Посилення (DNS, NTP) — «збільшуємо трафік у 10–100 разів»
Одними з найбільш руйнівних за масштабами завданої шкоди є «посилені» або amplification-атаки на DNS-сервери. Теоретично вони здатні вивести з ладу цілі сектори Інтернет-мережі, які, як відомо, прив’язуються до певних DNS-серверів. «Штурми» можуть бути здійснені як шляхом захоплення системних ресурсів сервера, так і шляхом «забивання» пропускної здатності каналу зв’язку.
Головне їхнє завдання — перевести DNS-сервер у режим «Denial of Service» і таким чином вивести його з ладу. У цьому випадку http-запити на «розпізнавання» IP-адрес сайтів за їхнім доменним ім'ям не даватимуть позитивного результату, і тому сайти будуть недоступні для перегляду.
Для проведення «штурму», наприклад, може бути використана атака типу UDP Flood DNS, яка є окремим випадком UDP-флуду, спрямованого на DNS-сервер. При цьому зазвичай використовується 53 порт. Суть запитів, що формуються до сервера, полягає в запиті інформації про IP-адресу неіснуючого домену. При цьому обсяг відповідей DNS-сервера значно перевищує обсяг надійшовших запитів, що може в десятки і навіть сотні разів посилити атаку і перетворити її на найпотужніший DDoS-«штурм» для будь-якого сервера.
Слід зазначити, що не всі DNS-сервери можуть «впасти» під дією таких атак, а лише ті, які використовують набір протоколів розширень безпеки DNSSEC і неправильно налаштовані. Таких серверів у світі налічується близько 70 тисяч, більша частина яких знаходиться на території Білорусі, Росії, Кореї, Чилі, Аргентини, Китаю та Тайваню. Саме на них спрямовані основні зусилля зловмисників.
Останніми роками значно зросла кількість атак на сервери NTP (Network Time Protocol). Вони забезпечують синхронізацію часу в мережі за допомогою протоколу NTP, який є різновидом протоколу UDP. Разом з тим, як відомо, всі UDP-сервіси мають один істотний недолік – для будь-якого запиту можна легко підмінити IP-адресу джерела пакетів. Це дає можливість посилити атаку в 1000 разів (!). Цьому також сприяє велика кількість програмних інструментів, наявних на ринку ПЗ. Такий вид атаки отримав назву NTP-флуд, як один із різновидів UDP-флуду.
Малюнок 3. Amplification-атаки: DNS і NTP
Application-атаки (HTTP flood, API abuse)
HTTP-flood відноситься до DDoS-атак рівня додатків, про які ми вже говорили раніше. Деталізуємо тут деякі його характеристики та розглянемо існуючі види.
HTTP-флуд маскується під звичайний трафік користувачів і майже не залежить від пропускної здатності каналу зв’язку. Наприклад, «штурм» невеликої інтенсивності — 100 запитів на секунду — здатний вивести з ладу безліч сайтів середнього рівня. Причому кешування на рівні сервера тут не допоможе. Вхідні URL динамічно змінюються і додаток змушений перезавантажувати контент з БД для кожного запиту зі створенням нової сторінки. При цьому виникає «перевантаження» сервера і додатка.
Виокремимо основні види HTTP-флуду:
Базовий. Сюди належать найпростіші «штурми», суть яких полягає в періодичних спробах отримання доступу до однієї й тієї ж веб-сторінки. При цьому найчастіше використовується один і той самий діапазон IP-адрес джерел.
Рандомізований. Це більш складний тип, коли задіюється великий пул IP-адрес джерел і виконується рандомізація URL.
З обходом кешу. Один із різновидів рандомізованого HTTP-флуду, який діє в обхід механізму кешування додатків.
WordPress XMLRPC. Тут для здійснення атак використовується пінгбек WordPress. Це дозволяє будь-якому сайту з увімкненим пінгбеком використовувати його як генератор великої кількості випадкових запитів. Цей механізм здатний значно збільшити масштаб атаки. Достатньо одного пінгбек-запиту до XML-RPC-файлу, і кілька тисяч сайтів на CMS WordPress стануть учасниками атаки на боці спамера.
Малюнок 4. Види HTTP-флуду
Ще один вид атак рівня додатків використовує вразливості в API – прикладному програмному інтерфейсі додатків. До таких вразливостей, наприклад, можна віднести похибки в коді, неправильну конфігурацію в будь-якій частині API-стека та інші «слабкі місця» безпеки додатків. У результаті може бути порушена робота сервісів, а спамер отримає несанкціонований доступ до управління сайтом.
Чим небезпечні атаки L7
Виокремимо найбільш небезпечні характеристики атак рівня додатків або L7-рівня, які ускладнюють боротьбу з ними:
- Імітація реальних користувачів;
- Труднощі своєчасного виявлення;
- Легкість у реалізації;
- Наявність безлічі готових інструментів для організації атак;
- Різноманітність видів.
Малюнок 5. Чим небезпечні атаки L7
Багатовекторні атаки
Цей вид об’єднує в собі кілька інших видів, наприклад, атаки на рівнях L3/L4 (мережевий та протокольний рівні) та L7 (рівень додатків). На практиці це може бути реалізовано у вигляді комбінації UDP-флуду для перевантаження мережі, DNS-ампліфікації для зменшення пропускної здатності каналу та HTTP-флуду для виведення веб-сервера з робочого стану. Протистояти такому «штурму» буде непросто навіть для таких «гігантів», як, наприклад, CloudFlare або Google.
Малюнок 6. Багатовекторна атака
Висновок: не існує «єдиного типу DDoS»
Розглянувши все розмаїття DDoS-атак, що застосовуються на практиці, можна зробити щодо них кілька висновків:
- Не існує DDoS одного типу;
- Їхнє головне завдання — вивести систему з ладу;
- Для боротьби з DDoS необхідний комплексний підхід.
Уникнути DDoS неможливо, однак можна зробити так, щоб вони завдавали якомога менших втрат для будь-якого рівня атакованої системи.
FAQ
Чим відрізняються атаки L3/L4 і L7? L3/L4 діють на мережевому й транспортному рівнях і перевантажують канал зв’язку, їх легко виявити за різким сплеском трафіку. L7 діє на прикладному рівні, виводить із ладу додатки й посилюється лише ресурсами сервера (CPU, RAM). Її найнебезпечніша риса — складність виявлення.
Що таке SYN-флуд? Це відправка безлічі SYN-пакетів для встановлення TCP-з’єднання без підтвердження ACK. Таблиця станів на сервері переповнюється, і він переходить у режим «відмова в обслуговуванні».
Що таке UDP-флуд? Це масове надсилання UDP-пакетів на сервер. У відповідь він змушений надсилати ICMP-повідомлення про недоступність порту, що перевантажує мережу та ресурси сервера. Нападник зазвичай підробляє IP-адреси відправників, тому відповіді йдуть на чужі адреси.
Що таке amplification-атака? Це атака, у якій малий запит викликає значно більшу відповідь, наприклад, від DNS або NTP-сервера. Для DNS посилення сягає десятків і сотень разів, для NTP — до 1000 разів, бо в UDP-запиті легко підмінити IP-адресу джерела.
Чому HTTP-флуд небезпечний навіть при невеликому трафіку? Він маскується під звичайних користувачів і майже не залежить від пропускної здатності каналу. Атака в 100 запитів на секунду здатна вивести з ладу безліч сайтів середнього рівня, а кеш сервера не допомагає: URL змінюються динамічно, і додаток щоразу заново вантажить контент із БД.
Що таке атака WordPress XMLRPC? Вона використовує пінгбек WordPress: сайт із увімкненим пінгбеком стає генератором випадкових запитів. Одного пінгбек-запиту до XML-RPC-файлу достатньо, щоб кілька тисяч сайтів на WordPress стали учасниками атаки.
Що таке багатовекторна атака? Це комбінація кількох видів: наприклад, UDP-флуд перевантажує мережу, DNS-ампліфікація зменшує пропускну здатність, а HTTP-флуд виводить веб-сервер з ладу. Протистояти їй непросто навіть таким гігантам, як Cloudflare або Google.
Чи можна уникнути DDoS? Ні, але можна зробити так, щоб атаки завдавали якомога менших втрат. Для цього потрібен комплексний підхід, бо не існує єдиного типу DDoS.
Що робити власнику сайту? Оберіть VPS і VDS або виділений сервер, подбайте про адміністрування й бекапи.