Интересно Основы DDoS. Часть 1

Takeshi

Перо Дьявола
Команда форума
PR-group
CPA & Трафик
Регистрация
23 Янв 2019
Сообщения
1,351
Баллы
0
Общие продажи
0$
Общие покупки
0$
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
заголовки новостей пестрят сообщениями о DDoS-атаках (Distributed Denial of Service). Распределенным атакам «отказ в обслуживании» подвержены любые организации, присутствующие в интернете. Вопрос не в том, атакуют вас, или нет, а в том, когда это случится. Государственные учреждения, сайты СМИ и электронной коммерции, сайты компаний, коммерческих и некоммерческих организаций – все они являются потенциальными жертвами DDoS-атак.

Каковы последствия DDoS-атаки? Во время атаки жертва теряет клиентов из-за медленной работы или полной недоступности сайта, страдает репутация бизнеса. Сервис-провайдер может заблокировать IP-адрес жертвы, чтобы минимизировать ущерб для других клиентов. Чтобы все восстановить, потребуется время, а возможно и деньги.

Основная теория
Для понимания того, что такое DDoS, обратимся к википедии (ИМХО - большая помойка) DDoS (аббр. англ. Denial of Service «отказ в обслуживании») — хакерская атака на вычислительную систему с целью довести её до отказа, то есть создание таких условий, при которых добросовестные пользователи системы не могут получить доступ к предоставляемым системным ресурсам (серверам), либо этот доступ затруднён. Отказ «вражеской» системы может быть и шагом к овладению системой (если в нештатной ситуации ПО выдаёт какую-либо критическую информацию — например, версию, часть программного кода и т. д.). Но чаще это мера экономического давления: потеря простой службы, приносящей доход, счета от провайдера и меры по уходу от атаки ощутимо бьют «цель» по карману. В настоящее время DoS и DDoS-атаки наиболее популярны, так как позволяют довести до отказа практически любую систему, не оставляя юридически значимых улик.

Если вы до сих пор не поняли, что такое DDoS, то объясню "как есть"
Включаем мозг и внимательно читаем - это интересно, так вот, на нашем форуме есть Odisson, думаю, что каждый, кто распространяет софт на форуме знает его. Обычный день, Odisson вернулся с работы, включил компьютер и уселся в своё уютное кресло, затем он зашел на форум, чтобы провести ревизию склеек и прочих вирусов, и откуда не возьмись добрая сотня школобесов заваливает Odisson'a склейками и прочей вирусней. Odisson был в сильном замешательстве после такого казуса - "что можно сделать?!Как быть?!" В данном случае ресурс это Odisson, а школобесы это DDoS.

Хакеры из других сфер и обычные люди часто недооценивают DDOS, но, это и является их ошибкой.

Продолжаем вникать дальше, а для этого нам нужно начать с сетевых моделей. В случае с DDOS мы затронем стек протоколов TCP/IP. TCP/IP - это сетевая модель передачи данных, представленная в цифровом виде. Данная модель описывает способ передачи данных от отправителя до получателя.

Стек протоколов TCP/IP включает в себя четыре уровня, а именно:
  • Прикладной уровень (Layer 7)
  • Транспортный уровень (layer 4)
  • Сетевой уровень (Layer 3)
  • Канальный уровень (Layer 2)

Прикладной уровень объединил в себе 3 уровня модели OSI: сеансовый, представления и прикладной. То есть он выполняет такие функции, как поддержка сеанса связи, преобразование протоколов и информации, а также взаимодействие пользователя и сети.
Примеры: HTTP, SMTP, SNMP, FTP, Telnet, SSH, SMB, NFS;

Транспортный отвечает за связь между процессами на разных компьютерах, а также за доставку переданной информации без дублирования, потерь и ошибок, в необходимой последовательности.
Примеры: TCP, UDP, SCTP, SPX, RTP, ATP, DCCP, GRE;

Сетевой уровень обеспечивает поиск оптимального маршрута, включая выявление неполадок в сети. Именно на этом уровне работает маршрутизатор.
Примеры: IP, ICMP, IGMP, CLNP, OSPF, RIP, IPX, DDP, ARP, RARP;

Канальный уровень описывает, каким образом передаются пакеты данных через физический уровень, включая кодирование(то есть специальные последовательности бит, определяющих начало и конец пакета данных).
Примеры: Ethernet, Token ring, HDLC, X.25, Frame relay, ISDN, ATM;

Для DDoS атак мы будем использовать атаки на прикладном и транспортном уровне, реже - на сетевом.
На прикладном уровне это будут HTTP методы, на транспортном TCP и UDP. На сетевом GRE, потому, что ICMP уже неактуален. Теперь разберем, что мы будем делать с HTTP, TCP и UDP. В случае с HTTP мы будем флудить огромным количеством HTTP Get/Post запросов.

HTTP - Это соединение, устанавливаемое между клиентом и сервером, для передачи данных по протоколу HTTP. Подключение HTTP идентифицируется как <Исходный IP, исходный порт> и <Айпи приемника, порт приемника>.
На клиентском уровне протокол предоставлен кортежем: <IP, порт>

Установка соединения между двумя конечными точками - процесс многоступенчатый. В него входят следующие шаги:
  • Расчет айпи по имени хоста DNS;
  • Установление соединения с сервером;
  • Отправка запроса;
  • Ожидание ответа;
  • Закрытие соединения;

В случае с UDP и TCP флудом - мы будем флудить огромным количеством пакетов в секунду. Но, для начала разберем один нюанс. А именно, отличие TCP от UDP. Если кто из вас не знает, TCP является безопасным протоколом, в отличии от UDP. Его отличие в том, что он гарантирует доставку пакетов до адресата, в случае с UDP - он не проверяет доставку, его задача лишь отправить. TCP имеет так называемое "тройное рукопожатие", которое устанавливается между клиентом и сервером, если описывать кратко происходит это так: От клиента идет запрос на создание TCP-сессии и отправляется TCP пакет с флагом SYN. Сервер отправляет в ответ TCP пакет с флагами SYN+ACK клиенту. Клиент отправляет TCP пакет с флагом ACK серверу.

Теперь давайте разберем подробнее:
1. Клиент, который намеревается установить соединение, посылает серверу сегмент с номером последовательности и флагом SYN.

Дальнейший алгоритм:
  • Сервер получает сегмент, запоминает номер последовательности и пытается создать сокет (буферы и управляющие структуры памяти) для обслуживания нового клиента;
  • В случае успеха сервер посылает клиенту сегмент с номером последовательности и флагами SYN+ACK, и переходит в состояние SYN-RECEIVED;
  • В случае успеха сервер посылает клиенту сегмент с номером последовательности и флагами SYN+ACK, и переходит в состояние SYN-RECEIVED;
  • В случае неудачи сервер посылает клиенту сегмент с флагом RST.

2. Если клиент получает сегмент с флагом SYN, то он запоминает номер последовательности и посылает сегмент с флагом ACK.

Дальнейший алгоритм:
  • Если он одновременно получает и флаг ACK (что обычно и происходит), то он переходит в состояние ESTABLISHED;
  • Если клиент получает сегмент с флагом RST, то он прекращает попытки соединиться;
  • Если клиент не получает ответа в течение 10 секунд, то он повторяет процесс соединения заново.

3. Если сервер в состоянии SYN-RECEIVED получает сегмент с флагом ACK, то он переходит в состояние ESTABLISHED.
В противном случае после тайм-аута он закрывает сокет и переходит в состояние CLOSED.

Процесс называется «трёхэтапным рукопожатием», так как несмотря на то что возможен процесс установления соединения с использованием четырёх сегментов (SYN в сторону сервера, ACK в сторону клиента, SYN в сторону клиента, ACK в сторону сервера), на практике для экономии времени используется три сегмента.

А теперь давайте разберем флаги TCP:
  • ACK - Флаг в TCP сегменте, установка которого означает, что поле «Номер подтверждения» задействовано. Если установлен флаг ACK, то это поле содержит порядковый номер, ожидаемый получателем в следующий раз. Помечает этот сегмент как подтверждение получения.
  • RST - Флаг, в заголовке сегмента TCP, включение которого сигнализирует об обрыве соединения.
  • FIN - Флаг, в заголовке сегмента TCP, включение которого сигнализирует о завершении сессии.
  • SYN - Флаг, в заголовке сегмента TCP, служащий для синхронизация номеров сессий приема/передачи данных. Именно этим флагом устанавливается соединение.

Теперь перейдем к UDP
UDP — протокол пользовательских дейтаграмм. Один из ключевых элементов TCP/IP, набора сетевых протоколов для Интернета. С UDP компьютерные приложения могут посылать сообщения (в данном случае называемые дейтаграммами) другим хостам по IP-сети без необходимости и предварительного сообщения для установки специальных каналов передачи или путей данных. Говоря проще, в отличии от TCP он не проверяет ничего и не устанавливает соединение. Он просто отправляет нужную информацию адресатам. Ну и одно из отличий UDP от TCP - это конечно же скорость, она значительно выше.

Методы DDoS атак
На этом этапе, имея представление о том, что такое DDoS, плавно переходим к разбору методов атак. Методов DDoS немало, поэтому я их разделю на три категории, в зависимости от типа протокола:

  1. HTTP методы
  2. TCP методы
  3. UDP методы

HTTP методы

HTTP Get/Post Flood - Генерируем большое количество HTTP запросов к серверу жертвы. В большинстве случаев это GET запросы на получение максимально больших элементов сайта. Каждый бот может генерировать большое количество легитимных запросов (более 10 раз в секунду). Таким образом, не нужно иметь большую армию ботов или сверхприватный ботнет для осуществления данного метода атаки. Кроме GET запросов также могут посылаться POST запросы и осуществляться другие HTTP действия, приводящие к одному и тому же результату - перегрузке веб-сервера жертвы и его недоступности. Реализовать можно даже со своего компьютера/сервера.

HTTP Strong - Генерируется также большое количество HTTP запросов к серверу жертвы, но, отличие этого метода заключается в том, что, отправляются пустые HTTP запросы на веб- сервер. Этот метод является очень мощным и соответственно находится в привате. Метод очень мощный, и если вам доведется встретить - покупайте.

HTTP Null - Генерируется большое количество HTTP запросов, также пустых, но отличие этого метода от Strong'a в том, что HTTP Strong ждет ответа от веб-сервера, а HTTP Null нет.

JSBypass - Метод обходящий заглушку CloudFlare и аналогов. Наверное, большинству из вас доводилось встречать такую картину: заходите вы на наш форум, а там 5 секунд крутится непонятная картина, вот такая:



Это и есть заглушка CloudFlare. Данный метод обходит ее довольно простым образом, парсятся куки и ваша жертва мгновенно падает. Также к данному методу можно дополнительно указать прокси для большей эффективности.

XML-RPC - Довольно непростой метод. Используя данный метод, запросы будут идти не с вашего сервера, а с уязвимых сайтов на CMS WordPress. Т.е. - вы сканируете диапазоны, среди них находите уязвимые сайты и при атаке подаете удаленную команду. Метод очень эффективный, и малозатратный. Так как для его использования вам не нужен ботнет или сверхмощный сервер. Достаточно того, чтобы не забанил хостинг-провайдер.

Joomla Reflection - Похожий на XML-RPC метод, принцип работы у них один, но, в данном случае идет уже не WordPress а CMS Joomla.


[B]TCP методы[/B]

Теперь я хотел бы поговорить о TCP методах, их довольно-таки не много, в отличии от UDP, но тем не менее транспортный уровень решил затронуть начиная с TCP. Большинство атак на транспортном уровне реализуются за счет IP спуфинга.

IP спуфинг - это кратко говоря подмена обратного IP адреса. Который позволяет обманывать систему, подменяя адрес отправителя. Именно благодаря IP спуфингу невозможно вычислить атакующего.

SSYN - (Spoofed SYN) В данном случае, мы посылаем поддельные SYN-запросы на сервер, подменяя адрес отправителя (Спуфинг). Ответный SYN+ACK отправляется на несуществующий адрес, в результате в очереди подключений появляются так называемые полуоткрытые соединения, ожидающие подтверждения от клиента. По истечении определённого тайм-аута эти подключения отбрасываются. Метод очень эффективный и актуальный по сей день. От него могут защититься, но в СНГ мало у кого на это хватит ума.

SYN-ACK Flood - В данном случае, во время SYN-ACK флуда мы заваливаем поддельными SYN-ACK пакетами, поступающими в большом количестве. Пытаясь принять решение по каждому SYN-ACK пакету и сопоставить его с одной из записей, хранящихся в таблице соединений, сервер жертвы выделяет на это вычислительные ресурсы (ОЗУ, проц, и пр.) для обработки потока поддельных SYN-ACK пакетов. В итоге происходит то же, что и вовремя SYN-флуда: перегрузка сервера жертвы, ведущая к его частичной или полной недоступности.

Dominate - В данном случае идет большое количество TCP пакетов с разными флагами, на практике этот метод показывает большой успех.

xMAS - Данный метод бьет по закрытым TCP портам и жестко добивает процессор, заставляя их буквально плавиться.

RST/FIN Flood - В данном случае, чтобы закрыть TCP-SYN сессию, между клиентом и хостом производится обмен RST или FIN пакетами. Вовремя RST или FIN флуда сервер жертвы на высокой скорости получает поддельные RST или FIN пакеты, не имеющие отношения к любой из сессий в базе данных сервера. Во время RST или FIN флуда сервер жертвы вынужден выделять значительное количество системных ресурсов (опять-таки это оперативная память, процессор и пр.) для сопоставления входящих пакетов с текущими соединениями, что приводит к потере производительности сервера и к его частичной недоступности.

ACK Flood - В данном случае, при фрагментированном ACK флуде используются пакеты максимально допустимого размера (например, 1500 байт) для заполнения значительной полосы пропускания канала при относительно небольшом количестве передаваемых пакетов. Фрагментированные ACK пакеты обычно легко проходят через роутеры, файрволлы и системы предотвращения вторжений, т.к. эти устройства не пересобирают фрагментированные пакеты на сетевом уровне. Как правило, такие пакеты содержат случайные данные. Поскольку целью злоумышленника является заполнения всей полосы пропускания внешних каналов сети жертвы, данный вид флуда снижает производительность всех серверов в атакуемой сети.

ESSYN - По сути метод TCP SSYN, но был переписан Starfall'ом в 2013 году. Ходят слухи, что он эффективнее. Видимо, это не слухи.

xSYN - Также метод TCP SSYN, но был также переписан Starfall'ом в 2013 году.


[B]UDP методы[/B]

UDP Flood - Во время UDP флуда сервер жертвы получает огромное количество поддельных UDP пакетов от большого диапазона IP-адресов. Сервер жертвы или сетевое оборудование перед ним, оказывается, переполненным поддельными UDP пакетами. Атака провоцирует перегрзу сетевых интерфейсов путем занятия всей полосы пропускания. В протоколе UDP нет понятия об установлении соединения (хэндшейк), как в TCP. Это делает фильтрацию UDP флуда с сохранением легитимного UDP-трафика крайне сложной задачей, а также эффективным средством для переполнения канала. UDP флуд поражает сеть пакетами, содержащими случайные или статические IP-адреса, и может быть реализован с целью выведения из строя сервера, используя информацию о нем, такую как целевой порт легитимного сервиса и IP-адрес назначения. Из-за наличия сложностей проверки UDP трафика (отсутствие механизма проверки сессии как с TCP), многие операторы связи предлагают своим клиентам блокировку трафика по различным критериям, что является по сути спасением сети за счет блокировки отдельных серверов.

NTP Амплификация - Это тип DDOS атаки транспортного уровня, при котором публично доступный NTP (Network Time Protocol) сервер используется для генерации “мусорного” трафика. Так, отправляя короткие запросы одному из открытых NTP серверов можно получить ответ в десятки раз большего объема (эффект амплификации). Этим мы и пользуемся, отправляя запросы с указанием адреса сервера-жертвы в качестве IP-адреса источника запроса. В итоге сеть сервера жертвы перегружаются “мусорным” UDP- трафиком, из которого достаточно сложно выявить легитимные запросы и ответы NTP. Реализовать данный метод проще простого, как и все методы амплификаций. Данный метод использует 123 порт.

DNS амплификация - Этот тип DDOS атаки транспортного уровня использует специфику работы DNS служб в сети. Суть заключается в том, чтобы запросить у публичного DNS- сервера данные о домене и направить его ответ на атакуемый сервер. При реализации данного вида атаки мы формируем и херачим запрос, в ответ на который DNS-сервер возвращает как можно больше данных. Например, запрос списка всех DNS-записей в определенной зоне. Т.к. в протоколе UDP не осуществляется проверка IP-адресов источника, создаем генерацию запросов от имени сервера жертвы, указывая его IP- адрес в поле исходящего адреса. Основной целью тут является заполнение канала сервера жертвы объемными ответами от публичных DNS-серверов. Так, используя хороший лист для генерации запросов к публичным DNS-серверам, мы можем увеличить поток генерируемого “мусорного” трафика до 100 раз. При этом вычислить нас или вычислить хотя бы IP-адреса генераторов запросов почти невозможно, т.к. реальный исходящий IP- адрес всегда заменяется на другой. Метод хоть и староватый, но живет и по сей день. Данный метод использует 53 порт.

Chargen амплификация - Этот тип DDOS атаки транспортного уровня работает также, как и NTP амплификация, только отправляются запросы на сервера использующие службу Chargen. Данный метод практически ничем не отличается от других амплификаций, ну и еще используется другой порт, 19. Данный метод также легко реализовать имея спуфинг.

SSDP амплификация - Данный метод является базируемым протоколом UDP, использующий для усиления универсальные устройства Plug and Play, что позволяет отправлять запросы, используя порт 1900. SSDP является одним из сильнейших методов, превосходящий по мощности NTP, DNS, Chargen и др.

VSE - Этот тип DDOS атаки транспортного уровня нацелен на атаку серверов Valve. Очень эффективен и используется также для других игровых серверов, использует порт 27015.

[B]Выводы по вводной части [/B]
В первой части мы с вами узнали, что такое DDoS в общих чертах, ознакомились с моделями передачи данных, а также разобрали актуальные (и не очень) методы DDoS атак.

[COLOR=rgb(184, 49, 47)]Ожидаем продолжения...[/COLOR]
 

Goodshek

Новый пользователь
Пользователь
Регистрация
16 Май 2019
Сообщения
40
Баллы
0
Общие продажи
0$
Общие покупки
0$
Спасибо ,полезная информация (y)