Бесплатное обучение DDoS-атакам | Часть 1

  • Автор темы cracker92
  • Дата начала
  • Просмотров 9616 Просмотров

cracker92

Местный
372
128
22 Июн 2019
План обучения:
1. Введение

2. Базовая теория

3. Методы DDOS атак

4. Выбор оборудования для DDOS атак

5. Настройка оборудования для DDOS атак

6. Виды защит и как их обходить

7. Безопасность и анонимность

8. Методы монетизации

9. Прочие плюшки

10. Контакты, хосты, полезные ссылки, материал и пр.

1. Введение
Ты по-любому слышал или даже на практике знаком с DDOS атаками. Кто-то видел по новостям, кто-то занимался ну и кто-то просто слышал. В данном обучении я постараюсь максимально просто объяснить все подробности и показать, как это делается профессионалами.

Настоятельно попрошу вас не атаковать государственные ресурсы и крупные
компании, особенно банки твоей страны)))
Коммерческие организации не прощают подобного, в суде грызут жестко. В противном случае тебя могут ждать уголовное дело, пусть расследование и затянется на какой-то срок, но, доказать успеют.

Думаю, все понятно, тянуть не буду, перейдем к теории.

2. Базовая теория
Для начала разберем сам термин DDOS. Для этого обратимся к вики, а потом я распишу своими словами.

DDOS - это сокращение английского выражения Distributed Denial of Service, что переводится на русский язык как «Распределённый отказ от обслуживания». Это означает отказ от обслуживания сетевого ресурса в результате многочисленных распределенных (то есть происходящих с разных точек интернет-доступа) запросов. Отличие DoS-атаки (Denial of Service — «Отказ от обслуживания») от DDOS состоит в том, что в этом случае перегрузка происходит в результате запросов с какого-либо определенного интернет-узла.

А теперь своими словами:
Давай представим ситуацию, есть некий Вася и куча бухих бомжей.
Идет Вася по улице, никого не трогает, направляется на работу. Вдруг, из неоткуда появляется куча бомжей и начинают до него до*бываться. Что делать Васе? Его окружили и не дают пройти, более того, он даже не может пошевелиться, потому что они озверели и начали его кусать. Добив его окончательно они резко уходят. Что остается Васе? Правильно, умирать или ждать скорую.

В данном случае атакуемый ресурс - это Вася, а бомжи - это наш DDOS.

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

TCP/IP - это сетевая модель передачи данных, предоставленная в цифровом виде. Данная модель описывает способ передачи данных от отправителя до получателя.

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


Давай теперь по порядку разберем каждый из уровней:

1. Прикладной уровень - протокол верхнего уровня сетевой модели OSI, обеспечивает взаимодействие сети и пользователя. Уровень разрешает приложеним пользователя иметь доступ к сетевым службам, таким как обработчик запросов к базам данных, доступ к файлам, пересылке эл. почты.

Типы данные: Данные
Функции: Доступ к сетевым службам
Примеры: HTTP, Telnet, FTP, etc.

2. Транспортный уровень - 4-й уровень сетевой модели OSI, предназначен для
доставки данных. При этом неважно, какие данные передаются, откуда и куда, то есть, он предоставляет сам механизм передачи. Блоки данных он разделяет на фрагменты, размеры которых зависят от протокола: короткие объединяет в одни, а длинные разбивает.


Типы данных: Сегменты/Дейтаграммы
Функции: Прямая связь между конечными пунктами и надежность
Примеры: TCP/UDP

3. Сетевой уровень - 3-й уровень сетевой модели OSI, предназначенная для
определения пути передачи данных. Отвечает за трансляцию логических адресов и имен в физические, определение кратчайших маршрутов, коммутацию и маршрутизацию, отслеживание неполадок и заторов в сети.


Типы данных: Пакеты
Функции: Определение маршрута и логическая адресация
Примеры: ICMP, GRE и др.

Я не описал канальный уровень, почему?
Потому что в нашем случае это не пригодится. Для DDOS атак мы будем использовать атаки на прикладном и транспортном уровне, редко - на сетевом.

• На прикладном уровне это будут HTTP методы, на транспортном TCP и UDP
• На сетевом GRE, т.к. ICMP уже неактуален.

А теперь разберем, что мы будем делать с HTTP, TCP и UDP:

В случае с HTTP флудом
мы будем флудить огромным количеством HTTP Get/Post
запросов, да так, чтобы веб-сервер охуевал по дудосерски.

HTTP - Это соединение, устанавливаемое между клиентом и сервером, для передачи данных по протоколу HTTP.

  • Подключение HTTP идентифицируется как <Исходный IP, исходный порт> и <Айпи приемника, порт приемника>.
  • На клиентском уровне протокол предоставлен кортежем: <IP, порт>
Установка соединения между двумя конечными точками - процесс многоступенчатый. Он включает в себя след. шаги:
1. Расчет айпи по имени хоста DNS
2. Установление соединения с сервером
2. Отправка запроса
3. ожидание ответа
4. закрытие соединения


В случае с UDP и TCP флудом - мы будем флудить огромным количеством пакетов в секунду. НО, для начала разберем один нюанс. А именно, отличие TCP от UDP.

Если кто из вас не знает, TCP является безопасным протоколом, в отличии от UDP.
Его отличие в том, что он гарантирует доставку пакетов до адресата, в случае с UDP - он не проверяет доставку, его задача лишь отправить. TCP имеет так называемое "тройное рукопожатие", которое устанавливается между
клиентом и сервером, если описывать кратко происходит это так:

1. От клиента идет запрос на создание TCP-сессии и отправляется TCP пакет с флагом SYN.
2. Сервер отправляет в ответ TCP пакет с флагами SYN+ACK клиенту.
3. Клиент отправляет 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-a получить доступ к FTP и т.д?
Нет, доступ к FTP уже взлом, никак не DDOS.

3. Методы DDOS атак
Методов DDOS немало, поэтому я их разделю на три категории, в зависимости от
типа протокола. Начну пожалуй с HTTP методов.

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

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

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

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


f0ded014-45a8-4a99-9f43-fd0a015972ce.png

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

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

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

Часто задаваемые вопросы:
Какой используется чаще всего?
HTTP Get/Post самый распространенный. Реже XMLRPC

А атаки на логику работы приложения? Например пройтись по всем разделам и запросам сайта небольшим ботнетом, считывая скорость ответа приложения, после фаззингом выявлять самые тяжёлые места приложухи и целенаправлено по ним атаковать?
Не имеет особого смысла, если есть ботнет. Ботнет априори уебет что угодно. Но имеет смысл если ботнет крайне мал. POST флуд лучше, например на регистрацию. Но если стоит проверка по типу капчи - смысл пропадает. Только если не найдёшь скуль инъекцию в ней ==Ну так в этом и прикол, если ботнета нет, то через какой-нибудь Apache Bench можно найти, например, хуёво работающий кэш БД и через определённые запросы в поисковике сайта в одно лицо втащить.

Какую актуальнее выбрать?
XMLRPC живее всех живых, опять таки на днях Сахарный им положил РКН. HTTP флуд всегда будет актуален-это основа Layer 7 XMLRPC, а не Joomla и будет счастье. Ну и JSBypass когда увидите Клауд с заглушкой

Что за лист бля))
Потом расскажу что за лист

Я описал самые популярные и часто используемые методы, как реализовать большинство я буду описывать уже в следующих этапах по плану.

Теперь я хотел бы поговорить о 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 году.

Часто задаваемые вопросы:
Как определить, какой метод подходит? То есть, понятно, что задача *положить*, а вот можно ли пробить с первого раза или же это только методом тыка делается?
Методом тыка. Бывает что сайты ставят те же syn-coockie, которые не сразу заметишь и фильтруется, вжух но мозгов в СНГ мало, и все тупые. + смотря какая защита, но об этом позже.

Можно ли несколько одновременно использовать?)
Да! Но смысл запускать сразу несколько, если можно запустить dominate.

Какой из вариантов тяжелее отбивать куратору, клоудфлеру и т.п.?
АСК

Я постарался как можно доступнее описать методы TCP чтобы начать долгое путешествие по методам UDP.

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.

4. Выбор оборудования для DDOS атак
Скоро