Много се говори напоследък за DDoS атаки и как да се защитим от тях, но рядко можем да видим реалния мащаб на проблема. Затова и в Еволинк АД като експерти по мрежови технологии и информационна сигурност, направихме разбор на тенденциите, които се наблюдават в областта на разпределените мрежови атаки тип DDoS през изминалата година. По-долу ще видите детайлен технически анализ на някои комплексни и трудни за предотвратяване атаки, а в заключение са обобщени съвети за конкретни мерки за превенция и защита на корпоративните мрежи от DDoS.
Статистика и тенденции
Разполагайки с богата статистика за типа и естеството на DDoS атаките, направихме най-общо групиране на реално регистрираните от Еволинк DDoS атаки за 12 месеца – от ноември 2018 г., до октомври 2019 г. Групирали сме атаките според техния брой, според големината на атакуващия трафик и според броя на атакуващите пакети. Всяко от сеченията е представено за тримесечен период, за да могат да се проследят и тенденции в хронологичен порядък.
Групирането по типове атаки е на база десет от най-често срещаните категории. Представената статистика има за цел да илюстрира богатата динамика в разпределението на DDoS атаките, както и огромния обем зловреден трафик, който те причиняват. Тази статистика ни показва, че чрез филтрация на различни типове трафик, реално не можем да постигнем пълна защита.
Първо тримесечие (ноември 2018 – януари 2019)
Общият брой на атаките за този период е бил 4664, общото количество злонамерен трафик – 1.668 TB, а общият брой на пакети, измерени в Т-пакети – 1.4863.
Тип атака | Брой атаки | Процент от общия брой | |
1 | ACK Flood | 2101 | 45.0% |
2 | HTTPS Flood | 1096 | 23.5% |
3 | Filter Attack | 433 | 9.3% |
4 | DNS Query Flood | 365 | 7.8% |
5 | UDP Flood | 227 | 4.9% |
6 | Private IP | 164 | 3.5% |
7 | HTTP Flood | 68 | 1.5% |
8 | CLDAP | 34 | 0.7% |
9 | SYN Flood | 33 | 0.7% |
10 | UDP Fragment Flood | 24 | 0.5% |
Тип атака | Трафик на атаката (KB) | Процент от общия брой | |
1 | UDP Flood | 1341427472 | 79.4% |
2 | IP Bandwidth Overflow | 194558297 | 11.5% |
3 | CLDAP | 58542326 | 3.5% |
4 | DNS Query Flood | 21751182 | 1.3% |
5 | HTTPS Flood | 16492153 | 1.0% |
6 | HTTP Flood | 16129617 | 1.0% |
7 | UDP Fragment Flood | 15010573 | 0.9% |
8 | UDP Fragment Abnormal | 10294896 | 0.6% |
9 | SSDP_Amplification_Attack | 5915563 | 0.4% |
10 | DNS Reply Flood | 4695616 | 0.3% |
Тип атака | Брой пакети от атаката | Процент от общия брой | |
1 | UDP Flood | 927053440 | 58.1% |
2 | DNS Query Flood | 194746240 | 12.2% |
3 | HTTPS Flood | 133455104 | 8.4% |
4 | IP Bandwidth Overflow | 130569571 | 8.2% |
5 | HTTP Flood | 110615859 | 6.9% |
6 | CLDAP | 39010176 | 2.4% |
7 | SSDP_Amplification_Attack | 16508288 | 1.0% |
8 | UDP Fragment Flood | 12388224 | 0.8% |
9 | UDP Fragment Abnormal | 11085056 | 0.7% |
10 | SYN Flood | 6673536 | 0.4% |
Второ тримесечие (февруари 2019 – април 2019)
Общият брой на атаките за този период е бил 13 554, общото количество злонамерен трафик – 1.94 TB, а общият брой на пакети, измерени в Т-пакети – 2.07.
Тип атака | Брой атаки | Процент от общия брой | |
1 | Packet Length Filter | 6526 | 48.1% |
2 | ACK Flood | 3057 | 22.6% |
3 | Filter Attack | 1124 | 8.3% |
4 | HTTPS Flood | 941 | 6.9% |
5 | DNS Size Abnormal | 739 | 5.5% |
6 | Private IP | 435 | 3.2% |
7 | DNS Query Flood | 243 | 1.8% |
8 | UDP Flood | 133 | 1.0% |
9 | FIN/RST Flood | 80 | 0.6% |
10 | HTTP Flood | 65 | 0.5% |
Тип атака | Трафик на атаката (KB) | Процент от общия брой | |
1 | UDP Flood | 1186598872 | 59.3% |
2 | UDP Fragment Flood | 294147379 | 14.7% |
3 | DNS Reply Flood | 207193111 | 10.4% |
4 | CLDAP | 71936632 | 3.6% |
5 | QUIC | 60329215 | 3.0% |
6 | UDP Fragment Abnormal | 54974611 | 2.7% |
7 | HTTPS Flood | 30754169 | 1.5% |
8 | DNS Size Abnormal | 21586672 | 1.1% |
9 | NTP Amplification | 15884731 | 0.8% |
10 | DNS Query Flood | 14434434 | 0.7% |
Тип атака | Брой пакети от атаката | Процент от общия брой | |
1 | UDP Flood | 817308416 | 37.7% |
2 | HTTPS Flood | 350565376 | 16.2% |
3 | UDP Fragment Flood | 203012096 | 9.4% |
4 | SYN Flood | 157567104 | 7.3% |
5 | DNS Reply Flood | 140070272 | 6.5% |
6 | FIN/RST Flood | 139293440 | 6.4% |
7 | DNS Query Flood | 129278848 | 6.0% |
8 | CLDAP | 47905536 | 2.2% |
9 | UDP Fragment Abnormal | 41096320 | 1.9% |
10 | QUIC | 40319488 | 1.9% |
Трето тримесечие (май 2019 – юли 2019)
Общият брой на атаките за този период е бил 69 529, общото количество злонамерен трафик – 4.1 TB, а общият брой на пакети, измерени в Т-пакети – 7.79.
Тип атака | Брой атаки | Процент от общия брой | |
1 | D_Length | 34309 | 49.3% |
2 | DNS Size Abnormal | 23613 | 34.0% |
3 | ACK Flood | 3836 | 5.5% |
4 | HTTPS Flood | 2809 | 4.0% |
5 | Filter Attack | 1777 | 2.6% |
6 | Private IP | 1095 | 1.6% |
7 | FIN/RST Flood | 458 | 0.7% |
8 | IP Length | 402 | 0.6% |
9 | HTTP Flood | 305 | 0.4% |
10 | UDP Flood | 260 | 0.4% |
Тип атака | Трафик на атаката (KB) | Процент от общия брой | |
1 | CLDAP | 2538544509 | 58.2% |
2 | UDP Fragment Abnormal | 649887350 | 14.9% |
3 | QUIC | 319244817 | 7.3% |
4 | FIN/RST Flood | 189895017 | 4.4% |
5 | UDP Flood | 108199778 | 2.5% |
6 | ACK Flood | 83973086 | 1.9% |
7 | DNS Size Abnormal | 81752657 | 1.9% |
8 | UDP Fragment Flood | 58441197 | 1.3% |
9 | HTTPS Flood | 58244317 | 1.3% |
10 | HTTP Flood | 55778506 | 1.3% |
Тип атака | Брой пакети от атаката | Процент от общия брой | |
1 | FIN/RST Flood | 2356763904 | 28.7% |
2 | CLDAP | 1693330688 | 20.6% |
3 | ACK Flood | 1020098176 | 12.4% |
4 | HTTPS Flood | 619644032 | 7.5% |
5 | Other Abnormal | 520355840 | 6.3% |
6 | QUIC | 496791040 | 6.0% |
7 | UDP Fragment Abnormal | 464935040 | 5.7% |
8 | HTTP Flood | 297436672 | 3.6% |
9 | UDP Flood | 214685056 | 2.6% |
10 | D_Length | 143557120 | 1.7% |
Четвърто тримесечие (август 2019 – октомври 2019)
Общият брой на атаките за този период е бил 133 378, общото количество злонамерен трафик – 1.118 TB, а общият брой на пакети, измерени в Т-пакети – 5.2.
Тип атака | Брой атаки | Процент от общия брой | |
1 | D_Length | 86880 | 65.1% |
2 | DNS Size Abnormal | 29312 | 22.0% |
3 | HTTPS Flood | 4717 | 3.5% |
4 | ACK Flood | 3480 | 2.6% |
5 | Filter Attack | 3443 | 2.6% |
6 | HTTP Flood | 1734 | 1.3% |
7 | SYN Flood | 1273 | 1.0% |
8 | FIN/RST Flood | 1187 | 0.9% |
9 | Private IP | 999 | 0.7% |
10 | UDP Flood | 77 | 0.1% |
Тип атака | Трафик на атаката (KB) | Процент от общия брой | |
1 | DNS Size Abnormal | 212926678 | 17.9% |
2 | UDP Abnormal | 189274153 | 15.9% |
3 | HTTP Flood | 166542343 | 14.0% |
4 | FIN/RST Flood | 124499339 | 10.5% |
5 | UDP Flood | 123482676 | 10.4% |
6 | CLDAP | 97128928 | 8.2% |
7 | UDP Fragment Abnormal | 83082796 | 7.0% |
8 | QUIC | 63530201 | 5.3% |
9 | HTTPS Flood | 57418585 | 4.8% |
10 | D_Length | 18489009 | 1.6% |
Тип атака | Брой пакети от атаката | Процент от общия брой | |
1 | UDP Flood | 1670480128 | 30.9% |
2 | FIN/RST Flood | 1536034176 | 28.4% |
3 | HTTP Flood | 699726188 | 12.9% |
4 | HTTPS Flood | 612374400 | 11.3% |
5 | D_Length | 177999488 | 3.3% |
6 | UDP Abnormal | 175509376 | 3.2% |
7 | DNS Size Abnormal | 150610432 | 2.8% |
8 | QUIC | 71598848 | 1.3% |
9 | CLDAP | 64825600 | 1.2% |
10 | UDP Fragment Abnormal | 55522560 | 1.0% |
Следната графика представя визуално разпределението на регистрираните от Еволинк DDoS атаки за едногодишен период:
Един допълнителен показател, по който често групираме DDoS атаките освен по брой, големина на трафика и брой на пакетите, е тяхната продължителност. Нашата статистика за последната година показва следните параметри за средна продължителност на DDoS атаките (данните са групирани само за по-големи атаки с обеми над 100 000 пакета):
Времеви интервал на атаките | Общо количeство | Процент от общия брой |
Атаки под 10 мин. | 13 909 | 86.0% |
Атаки между 10 и 30 мин. | 1 737 | 10.7% |
Атаки между 30 и 60 мин. | 328 | 2.0% |
Атаки над 60 мин. | 193 | 1.2% |
Таблицата ясно показва преобладаващо мнозинство на атаките с кратка продължителност, но това e подвеждаща констатация. В повечето случаи на DDoS атака, ние регистрираме постоянно променящи се вектори и всъщност една масирана атака се реализира чрез множество атаки, които преминават от един тип в друг и поради тази причина са отчетени като отделни събития от мониторинг системите. Атаките не само променят типа си, за да затруднят евентуалното им филтриране, но често пъти променят и своята дестинация, като целят други хостове по пътя на обекта на атака или в съседство с него, които може да не са предпазени, но да доведат до срив в инфраструктурата и по този начин отново да саботират целта.
Сравнението на статистика за броя атаки на годишен период спрямо предходни години показва постоянна тенденция за увеличение. Според публични анализи на други водещи международни компании в областта на информационната сигурност за периода 2017-2018 г. всяка пета компания е била подложена на DDoS атака поне веднъж. Прогнозите за предстоящата 2020 г. е всяка трета компания да бъде подложена на този вид електронен тероризъм.
От показаните данни ясно се вижда увеличаване както на броя на дистрибутираните атаки, така и на количеството на пакетите и обема на трафика. Направените наблюдения са базирани само на системите за мониторинг в мрежата на Еволинк, където обектите са юридически лица и държавни организации с най-широк спектър профил на дейност. Интензитетът на DDoS атаки към дадена организация зависи от много фактори – популярността на организацията, броя потребители, които обслужва дадена онлайн услуга или конкурентната среда, в която оперира. Фактор за атака може да бъде и бизнес цикъла на организацията, например при планирани и широко анонсирани промоции на онлайн магазини. Рекламата неизбежно привлича и зложелатели, които биха искали да навредят точно в момента, в който дадена компания цели да извлече най-големи дивиденти. Неслучайно в представената статистика периодите не си съответстват един с друг по стойности.
Комплексни атаки
Спомняме си времето, когато DDoS атака само по един протокол можеше да има значителни последствия, като например Ping of Death. Такъв тип атаки можеха лесно да се филтрират с ограничаване на ICMP трафика в мрежата на Интернет доставчика. В днешно време DDoS атаките са в повечето случаи серия от различни типове атаки с различни протоколи, интензивност и цели. Нещата се усложняват допълнително с прилагането на така наречените Amplification DDoS атаки. Това са типове атаки, при които с относително малки манипулирани заявки към легитимни сървъри в Интернет може да се предизвика лавина от реципрочни пакети към обекта на атаката. Използват се уязвимости в стандартните интернет протоколи, които да умножат многократно нежелания трафик, който се стоварва върху атакувания обект. Кратка извадка от www.us-cert.gov показва фактора на умножение на трафика за няколко популярни интернет протокола, които се използват за Amplification DDoS атаки:
Колкото по-голям е амплификационният фактор, толкова по-разрушителна е съответната DDoS атака. Със сигурност можем да твърдим, че една атака ще бъде толкова силна и успешна, колкото е планирал нейния „дизайнер“. Една от обичайните първи стъпки при проектирането на атаките е сканиране на атакуваната мрежа за отворени портове чрез NMAP или друг метод за наблюдение на комуникацията между два или повече крайни хоста. Когато се цели разрушителен ефект, често пъти се прилагат някои от посочените по-горе протоколи. В допълнение обаче при първоначалното сканиране, създателите на атаката опитват да открият възможно най-много слабости във възможно най-много съпътстващи устройства по пътя, включващи защитни стени и рутери. Впоследствие се прилагат атаки с разнороден брой пакети, различен интензитет, поредност и честота, насочени както към атакувания сървър, така и към прилежащите мрежови устройства.
Анализ на реална DDoS атака
Ето как изглежда една реална DDoS атака, погледната през системите за мониторинг и защита на Еволинк и допълнителен детайлен анализ на IP комуникацията:
Един от елементите на атаката, който разглеждаме по-детайлно, е регистрираният SYN Flood. В детайлния анализ на трафика по-долу се вижда, че той е директно насочен към порт 80. Този порт в 99% процента от случаите е отворен, тъй като е стандартният порт, на който отговарят web сървърите.
За опитен мрежов специалист правят впечатление две стойности в тази извадка. Първата е параметърът TSecr=0. Той показва, че в тази комуникация не е имало предхождащ ACK пакет от атакувания хост, който изисква TCP протокола. Следователно уверено можем да класифицираме този трафик като целенасочен зловреден трафик. За отбелязване е и стойността на MSS, която гравитира в максимално допустимите стойности между 1400 и 1460.
По-долу пък е представен анализ на параметрите, зададени в един сегмент.
Множителят на зададената стойност на сегмента показва отново много високи стойности от 65 535 x 4 096. Получената стойност може да бъде видяна в ACK в отговор от засегнатата страна. Така изградената атака няма за цел да натовари хардуерните ресурси (сървъра) на жертвата, а да запълни Интернет канала до този сървър. По този начин се блокира достъпът за всички други легитимни заявки и сървъра става откъснат от Глобалната мрежа.
Друг съществен вектор на разглежданата атака е DNS Reply Flood. Това е специфичен тип атака от групата на рефлекторните DDoS атаки. Тя се реализира като се изпращат DNS заявки към легитимни DNS сървъри в Интернет, но в заявките е подменен IP адресът на изпращача с IP адреса на обекта на атаката. DNS сървърите съответно изпращат отговори до посочения IP адрес и за жертвата изглежда, че е затрупан с трафик от съвсем реални и легитимни хостове.
Илюстрация на такъв тип трафик:
Така изглежда IP комуникацията за атакувания IP адрес. Едно от подозрителните неща в тази комуникация е, че се получават само пакети от тип „отговор на заявка“ – rеsponse от DNS сървъри.
Вторият елемент, идентифициращ атака, е параметърът тип ANY във всички отговори от DNS сървърите, поставен с цел да се реализира максимално натоварване на комуникационния канал. Инициаторът на атаката е поставил параметъра за случайно генерирани заявки.
В допълнение атакуващият е приложил още един елемент, водещ до претоварване на мрежовите връзки. В хедъра (IP packet header) на пакетите е поставен флаг с указание, че пакетът е фрагментиран и е серия от пакети, които ще последват първия. По този начин се подава указание към атакуваното устройство да приеме последващите заявки.
Друг вектор на комплексната атака е отбелязан като Single IP address bandwidth overflow. Тук атакуващият експлоатира хипотезата, че в мрежата на жертвата се прилага политика за разпределение на общия Интернет капацитет поравно между всички адреси в мрежата. Например в мрежа с 254 крайни хоста, която има общ капацитет от 512Mbps, не е рядка практика да се прилага разпределение на капацитета. Чрез така наречения IP shaping администраторите на мрежата поделят по равно капацитета, така че всеки хост би получил около 2Mbps. В конкретния случай атакуващият е използвал протокол CLDAP (Connection-less Lightweight Directory Access Protocol), който дава възможност за голяма мултипликация на рефлекторната атака и бързо препълване на Интернет канала на жертвата при наличие на IP shaping за поделяне на капацитета в крайната мрежа.
Пореден вектор на разглежданата комплексна атака е HTTP Flood, който се причислява към атаките на Layer 7, т.е. атаки на приложно ниво, а не на протоколно ниво, както по-горе разглежданите.
Извадката от комуникацията ни показва, че се използват множество заявки от тип GET. Чрез този GET flood не се натоварват съществено процесорните ресурси на потърпевшата страна и атаката би могла да се сметне за безобидна. Реалната цел на тази атака е да резервира максимално количество сесии към атакуван web сървър и по този начин да се изчерпи техния капацитет, което ще направи сървъра недостъпен за легитимните си потребители. В конкретния случай чрез множество GET заявки е извличано изображение от web сървъра, което за различни браузъри изглежда така:
Firefox: image/webp,*/*
Chrome: image/webp,image/apng,image/*,*/*;q=0.8
В конкретната атака го регистрираме в следната извадка от комуникацията:
Като обобщение на анализа на атаката се налага изводът, че чрез нея се е целяло да се запълни целия наличен Интернет капацитет на жертвата, като по този начин се попречи на легитимния трафик. Приложени са няколко различни метода на атака, които да подсигурят успеха й. Приложени са атаки тип flood, за да се запълнят комуникационните канали. В допълнение е направен опит да се запълнят максимално възможния брой TCP сесии на атакувания сървър. Финално е използвана и хипотезата за препълване на капацитета на отделен IP адрес в мрежата, ако в нея се прилагат вътрешни правила за контрол на трафика.
Препоръки за защита
Представените до момента детайлни извадки от трафика и IP комуникацията са разглеждани след реалния край на атаката. Изключително трудно е да се правят такива технически анализи в реално време, затова в случай на DDoS атака трябва да се действа незабавно и напълно автоматизирано. Това естествено се случва през специализирани хардуерни и облачни платформи, които са способни да правят автоматизиран и детайлен анализ с производителност десетки милиони пакети в секунда. Ръчният анализ е необходим като постоянен последващ процес за подобряване на автоматизираните защити и залагане на нови правила и филтри в тях.
Даже при отсъствието на специализирани платформи за защита има някои мерки за сигурност, които организациите могат да прилагат за превенция от DDoS атаки. Важно е да се отбележи, че всяка организация има съществено предимство пред източниците на атака, тъй като тя много по-добре от всеки друг познава своята инфраструктура и своите хардуерни и софтуерни ресурси.
Добра практика е прилагането на IP access-lists на граничните мрежови устройства, които да оформят общите граници на комуникация. Подходящи такива са:
- Забрана на входящи заявки от описаните по RFC 1918 частни IP адреси
- Забрана на достъпа от DNS и NTP сървъри, които не са стриктно проверени и предварително одобрени
- Забрана на IP достъпа до всички ресурси от непроверено IP адресно пространство според препоръките на IETF в RFC 2827
Много добра практика е и създаването на правила за разделяне на ресурсите и прилагане на Quality of service на базата на изградена сесия или на протоколно ниво.
Трябва да се има предвид, че при масивна DDoS атака всяко устройство на пътя между източника и крайната дестинация на атаката е потенциално слабо звено. То може да се претовари и предизвика прекъсване на услугата още преди самата DDoS атака да е достигнала своята дестинация. Така атаката става успешна, макар и чрез индиректно саботиране на своята цел. За превенция в такива случаи е най-удачно защитата да се изнесе извън мрежата на организацията – към Интернет доставчика.