Типи DDoS-атак
Щороку їх стає дедалі більше. Тому ми вирішили написати цю статтю й розповісти про різноманітні DDoS-атаки, з якими ви, цілком можливо, ніколи не зіткнетеся, але все ж маєте знати, що вони існують. Почнімо!
Zero Day DDoS
Цю назву придумали для опису нових DDoS-атак, які використовують певні вразливості, про які раніше ніхто не чув. Зазвичай їх можна усунути тими чи іншими патчами.
Типи UDP-атак
DNS Flood
О, це, мабуть, найвідоміша й найпоширеніша DDoS-атака, з якою ви могли стикатися в мережі. Це атака типу UDP-флуд, спрямована на DNS-сервери. Її так часто використовують тому, що її важко виявити, не кажучи вже про те, щоб запобігти їй. Як вона виконується? Хакер надсилає величезну кількість підроблених DNS-запитів, які важко відрізнити від справжніх. Тепер помножте це на тисячі IP-адрес, і ось вам результат.
Ваш сервер не може зрозуміти, які запити легітимні, а які ні, тож у нього закінчуються ресурси для обробки цих запитів, і він падає.
UDP Flood
Назва говорить сама за себе. Атака спрямована на сервер і використовує UDP-пакети (хто б сумнівався). Якщо DNS-флуд виснажує обладнання, то UDP-флуд виснажує пропускну здатність. UDP-трафік дуже зручний для зловмисників, бо його не потрібно перевіряти серверу й клієнту, як TCP-трафік. По суті, на сервер постійно надсилається велика кількість підроблених або замаскованих UDP-пакетів. Їх маскують для того, щоб зворотні ICMP-пакети не дійшли до їхнього хоста, а також щоб анонімізувати атаку.
Direct UDP Flood
Direct UDP Flood має інший підхід. Якщо звичайний UDP-флуд зазвичай використовує підробку адрес, то прямий - ні. Це дає зловмисникам певні переваги, бо трафік, що йде через ботнет, може бути позначений як легітимний, що ускладнює його виявлення стороною, яка зазнає атаки. Як і у випадку з UDP-флудом, головна мета - повністю вичерпати ресурси сервера.
UDP Fragmentation Flood
Доволі цікавий різновид UDP-флуду - його фрагментована версія. Як і прямий UDP-флуд, вона імітує роботу легітимного трафіку, що тримається в межах лімітів. Тому її дуже важко виявити: пакети доволі великі, але водночас фрагментовані. Пропускна здатність виснажується ще сильніше. Уявіть, що у вас є частини трьох різних пазлів, ви отримуєте різні частини кожного з них, але не можете зрозуміти, яка деталь від якого пазла. Тепер помножте це на тисячу пазлів, і ви зрозумієте, як почувається ваш сервер під атакою UDP Fragmentation Flood. Неприємна штука.
VoIP Flood
Ми вирішили віднести цю атаку до UDP, оскільки вона використовує UDP-пакети для флуду VoIP-серверів. Підроблені запити, які зазвичай надсилаються з величезного пулу IP-адрес, сильно перевантажують сервер. Проблема з VoIP у тому, що дуже важко зрозуміти, який трафік справжній, а який ні. Продуктивність сервера серйозно страждає, що призводить або до його повільної роботи, або до перезавантаження.
ICMP Flood та його типи
ICMP Flood
ICMP використовує той самий метод, що й UDP. У ньому немає наскрізного процесу обміну даними, що робить його потенційною альтернативою UDP Flood. Як і у випадку з UDP, зловмисник надсилає велику кількість ICMP-пакетів із численних ботів з різними IP-адресами. У результаті система не може обробити всі ці запити, що призводить до перезавантаження сервера або суттєво погіршує його продуктивність.
ICMP Fragmentation Flood
Ще один різновид попереднього флуду - його фрагментована версія. Як і у випадку з UDP, зловмисник просто розбиває ICMP-пакети на дрібні частини й перевантажує сервер, надсилаючи не пов'язані між собою частини різних пакетів. Зазвичай сервер може з цим впоратися, але лише в певному обсязі. Якщо цей обсяг перевищено, сервер падає.
Ping Flood
ICMP flood версії 2.0 називається Ping Flood. Ті самі підроблені запити, спрямовані на застосунок. Уявіть, що ви пінгуєте будь-який сервер. Ви запитуєте сервер: «Яка затримка між нами?», і сервер зазвичай відповідає на це від 5 до 10 разів. А тепер уявіть, що те саме запитують 100 000 людей. Якщо обладнання має достатньо ресурсів, воно впорається, а якщо ні, сервер падає. Трафік від ping flood дуже важко розпізнати, бо його також можуть вважати легітимним.
Рівень протоколів
NTP Flood
NTP, або Network Time Protocol (протокол мережевого часу), спочатку розробили для синхронізації часу між годинниками та комп'ютерами. По суті, комп'ютер запитує в головного сервера поточний час і синхронізує з ним власний годинник за допомогою системи пакетів. Це ще один спосіб, яким зловмисник може атакувати ваш сервер, якщо на ньому працює протокол NTP, а його використовує практично кожен сервер. Зрештою ці підроблені запити використовуються для надсилання UDP-флуду на ціль. Коли сервер намагається розібратися, що до чого, він зрештою падає від переповнення даними.
CharGEN Flood
О, це справжній ветеран. Згадаємо його лише заради історії. Ще в 1984 році цей протокол розробили як Character Generator Protocol, і його використовували як джерело потоку байтів для налагодження мережевого коду TCP. Зараз у сучасних системах він заблокований за замовчуванням, тож якщо вам трапиться система, де він працює, вітаємо! Ви знайшли реліквію минулого. Колись він був досить поширений на мережевих принтерах, копіювальних апаратах та інших пристроях, але зараз цю діру в безпеці ліквідовано. Спочатку зловмисник просто атакував порт 19 і надсилав через нього UDP-флуд.
SNMP Flood
SNMP, або Simple Network Management Protocol (простий протокол мережевого керування), - це протокол для керування інформацією про пристрої в IP-мережах, її збирання та зміни. Це ще один тип флуду, який можна посилити (ампліфікувати), тобто зловмисник може завдати більшої шкоди меншими ресурсами. Цей варіант вигідніший, бо ефект посилення значно більший, ніж у DNS чи CharGEN Flood. По суті, атака спрямована на пристрої, що працюють із цим протоколом, і надсилає флуд із його використанням.
SSDP Flood
Simple Service Discovery Protocol, або протокол SSDP, використовується для оголошення та виявлення мережевих сервісів та інформації про присутність, але без використання DHCP чи DNS. Зазвичай його використовують у невеликих офісах, де обладнання має доступ до протоколу UPnP (Universal Plug n' Play). У 2014 році це призвело до DDoS-атаки на такі пристрої: на них надсилали пакети з підробленою IP-адресою цілі, що спричиняло падіння серверів.
Рівень HTTP
HTTP Flood
Зловмисники, які використовують HTTP Flood, перевантажують сервер запитами GET і POST. GET-запити не забирають у сервера надто багато ресурсів. Це може бути запит на показ певних зображень чи іншого статичного контенту. З POST-запитами інша справа, оскільки зазвичай вони просять сервер щось обробити, наприклад знайти певне значення в базі даних або виконати певні операції з інформацією. HTTP Flood не потребує підробки IP-адрес, тож для початку атаки вимоги нижчі.
Fragmented HTTP Flood
HTTP Flood завжди виконується за допомогою ботів із дійсними IP-адресами, оскільки їх захопили троянські віруси. Тож до атаки вони «спали» й навіть не знали, що їхні ресурси буде використано в DDoS-атаці. Фрагментація дає змогу зловмиснику розтягнути атаку до межі тайм-ауту. Це дозволяє підтримувати з'єднання тривалий час, перш ніж спрацює будь-який захист. Наприклад, якщо ви використовуєте Apache, у ньому немає спеціальних механізмів тайм-ауту, які могли б допомогти, тож хакери активно цим користуються.
Single Request HTTP Flood
Згодом програмісти та системи захисту від DDoS зрозуміли, як протидіяти атакам із численних вхідних пакетів, тож хакери вирішили знайти обхідний шлях. Так з'явилася ще одна лазівка, про яку ми зараз розповімо.
Усе зводиться до маніпуляцій із пакетами. А що, як створити кілька GET/POST-запитів в одній HTTP-сесії? Так можна, але це може вважатися кількома пакетами. Зловмисники знайшли спосіб об'єднати це в один пакет. Так зловмисник маскується під легітимного користувача, і його дуже важко відстежити.
Single Session HTTP Flood
Доволі старий метод, який можна реалізувати в HTTP 1.1, надсилаючи запити в межах однієї HTTP-сесії. Він допомагає зловмисникам обійти обмеження на кількість дозволених сесій, які встановлюють механізми захисту від DDoS.
Recursive HTTP GET Flood
Доволі цікава атака, що використовує GET-запит. Хакер запитує кілька вебсторінок і отримує інформацію про них. Після цього він починає аналізувати кожен об'єкт на сторінці й надсилати рекурсивні запити для кожного об'єкта на сайті. Її дуже важко відстежити, бо ці запити виглядають легітимними.
Random Recursive GET Flood
Різновид попередньої атаки, спрямований переважно на блоги, сайти з послідовними сторінками або блоги. Як і HTTP GET Flood, він проходить сторінками, а потім починає надсилати випадкові запити. Річ у тім, що, аби виглядати легітимним користувачем, зловмиснику потрібно вибирати випадкові сторінки, а потім випадкові числа зі сторінки, щоб щоразу надсилати новий GET-запит. Зрештою це призводить до низької продуктивності сервера аж до його перезавантаження чи падіння.
ACK & SYN
ACK & PUSH Flood
Спершу розберімося, що таке ACK. ACK - це прапорець, який показує серверу або клієнту, що дані успішно отримано. Наприклад, клієнт запитує, чи отримав сервер надіслану форму, і сервер дає відповідь ACK, повідомляючи клієнту: все гаразд, я отримав. Як же працює ця атака?
Зловмисник може надсилати серверу різну інформацію та встановлювати прапорець ACK, щоб сервер повідомив, що отримав цю інформацію.
Прапорець PUSH робить протилежне. За допомогою пакетів він просить сервер обробити для нього певну інформацію.
Такі запити споживають більше ресурсів, ніж попередні атаки, і мають вищий пріоритет порівняно з іншими, оскільки не належать до жодної сесії зі списку з'єднань сервера. У результаті сервер обробляє ці запити першими, а запити зі списку з'єднань останніми, що призводить до падіння сервера.
ACK Fragmentation Flood
Цей різновид ACK-флуду використовує невелику кількість пакетів максимального розміру, приблизно 1500 байтів. Початкова мета тут - вичерпати пропускну здатність мережі цілі. Цей флуд доволі підступний, оскільки він може легко пройти через ваше мережеве обладнання, як-от маршрутизатор чи брандмауер, якщо не застосовано фільтри на рівні застосунків, бо для них ці пакети можуть виглядати легітимними. Зазвичай такі пакети містять сміттєві дані, адже зловмиснику немає сенсу вкладати туди якусь інформацію: його мета - просто вичерпати пропускну здатність.
SYN Flood
SYN - це назва запиту на з'єднання через TCP. Коли клієнт намагається підключитися до сервера через TCP (наприклад, під час встановлення з'єднання HTTP або HTTPS), він має одразу пройти тристороннє рукостискання, перш ніж стане можливим обмін даними між клієнтом і сервером. Оскільки ініціатором тристороннього рукостискання TCP завжди є клієнт, він спершу надсилає серверу пакет із прапорцем SYN.
Під час атаки TCP SYN Flood зловмисники інтенсивно надсилають на сервер велику кількість SYN-пакетів із підробленими IP-адресами. Це змушує сервер реагувати, надсилаючи пакет SYN-ACK у відповідь на кожен такий хибний запит, виділяючи певні ресурси й залишаючи свої порти «напіввідкритими» в очікуванні численних відповідей (пакетів із прапорцем ACK) від хостів, яких насправді не існує, а отже, вони й не надішлють підтверджень.
SYN-ACK Flood
Ми вже говорили про тристороннє рукостискання. Цей тип атаки спрямований на хост. Коли зловмисник надсилає SYN-пакет, хост генерує відповідний ACK-пакет. Сервер не може зрозуміти, чому він отримує такі пакети поза чергою легітимного трафіку, і намагається розібратися в них та обробити їх. Зрештою все це призводить до того, що сервер надто зайнятий, щоб обробляти трафік, який мав би обробляти, і це закінчується перезавантаженням або падінням сервера.
RST/FIN Flood
Ми розповіли про флуди типу SYN і про те, як вони працюють. Після закриття кожної TCP-SYN-сесії має відбутися обмін пакетами RST або FIN. Коли починається RST або FIN Flood, сервер починає отримувати підроблені й фальшиві пакети, не пов'язані з жодною із сесій, які зараз є на сервері. Як і у випадку з SYN-ACK flood, сервер не може зрозуміти, звідки вони беруться, витрачає багато часу на їх обробку й зрештою не впорується.
Рівень IP
Fake Session Attack
Цей тип атаки не використовує підроблені IP-адреси, натомість використовує реальні IP-адреси ботів, що виконують атаку. Між сервером і ботом створюється сесія TCP-SYN. Атаку побудовано так, що через затримку ACK-пакетів сесія завершується за тайм-аутом. Порожні сесії починають виснажувати сервер, і він зрештою падає або працює досить погано.
IP Null Attack
Згідно з RFC, кожен заголовок IPv4 має містити інформацію про використовуваний транспортний протокол. Назва null-атаки походить від «нуля», який зловмисники вписують у це поле. Це означає, що такі пакети оминуть маршрутизатори чи брандмауери, бо вони невизначені або некатегоризовані. Сьогодні це значення зарезервоване для IPv6 Hop-by-Hop Option, але це не означає, що кожен сучасний сервер дійсно може обробити такий тип пакетів. Тепер помножте це на тисячі, і сервер падає.
Атаки на рівні застосунків
Атаки на рівні застосунків - це атаки, спрямовані на певні вразливості. Одна з найпопулярніших цілей - сервери з різними CMS, як-от WordPress, Drupal або Joomla. Звісно, ці компанії завжди закривають діри в безпеці, але хакери час від часу знаходять певні вразливості. Інший варіант - атакувати бази даних жертви за допомогою SQL-ін'єкцій. Зрештою сервер не може впоратися з фальшивими запитами й падає. Переконайтеся, що ви використовуєте найновіші версії CMS і що вашу базу даних адмініструють професіонали.
Атака Application Misuse
Таку атаку можна здійснити не проти кожного бізнесу. Жертва має розміщувати щось, що генерує багато трафіку, і мати інший сервер, куди весь цей трафік може спрямовуватися. Це нагадує кілька річищ, які ви вручну перенаправляєте на цільовий сервер жертви, щоб він упав. Спосіб вивести сервер з ладу залишається тим самим: перевантажити його надмірним трафіком. Головна проблема в тому, що трафік справді легітимний, бо сервери намагаються встановити законне з'єднання.
Висновок
Ми спробували охопити більшість DDoS-атак, з якими ви можете зіткнутися. Безумовно, кілька з них ми могли пропустити, але, гадаємо, ви отримали загальне уявлення про те, які бувають DDoS-атаки. Якщо ви бажаєте захистити свій сервер від таких атак, сміливо звертайтеся до нашої команди в LiveChat. Дякуємо за ваш час!