В данной статье я не буду открывать велосипед!
Я знаю что запрещена тематика DDoS-атак, но если внимательно прочитать статью, то можно понять что я призываю к ответственности за поступки, а не к организации данных атак.
Я постараюсь описать то, что обычно в мануалах упускается
[Enter]
О DDoS-атаках пожалуй слышал каждый кто каким либо образом связывают свою жизнь с интернетом как с бизнесом или как с местом развития бизнеса.
Уже не раз писались статьи что такое DDoS-атаки, где они используются и какие разновидности существуют. Я лишь постараюсь дополнить упущенные моменты =)
Вспомним: DoS (Denial of service) - отказ в обслуживании. Как вы понимаете - данные термин определяет той или иной сбой в системе. Классическим примером является сервер, на котором размещен сайт. Если начинается DDoS-атака на данный сайт - вероятнее всего, что при отсутствии защиты со стороны сервера (в частности безобидности сисадмина) - сайт ляжет (точнее сервер на котором он стоит или же бывает что модули типа ngnix, apache или панели ISP перерезают доступ к определенному сайту спасая при этом сервер).
Если покопаться в истории, то мы узнаем что DoS раньше использовался сисадминами для проверки "прочности" своих серверов, но попав данная идея в руки РУССКИХ хакеров - весь мир тут-же обзавелся ботнетами и теперь мы можем увидеть сотни предложений за скромненькие суммы убить сайты конкурентов и так далее.
[It just...DDoS?]
Атаки DoS делятся на 2 основных типа:
1) Использование уязвимостей в веб-сервере или определенном скрипте, что в большинстве случаев вызывает зависание в последствии переполнения буфера или не правильной обработки каким-либо модулем запроса.
Ярким примером есть PHP-include и бездарная настройка связки apache + php при которой тяжеловесный цикл вызовет зависание сервера.
Спасением будет лишь перезагрузка сервера.
2) Забивание канала или HTTP-get атаки.
Об этом способе довольно таки много чего рассказано. Я лишь хочу выделить несколько моментов:
Во-первых для каждого сервера подбирается свой тип атаки:
Сообщение от
None
Для мощный серверов что защищаются Анти-DDoS'ом может подойти лишь забивание канала syn'ом, udp или icmp типами флудов.
Против syn и udp поможет КАЧЕСТВЕННАЯ настройка сервера. Против syn нужно установить максимальный лимит подключений и максимальное время ответа в 2-200мс.
Для UDP лучше всего отключить лишние службы.
Для ICMP отключить пинг.
Для мощных без антиддоса пробуют сначало HTTP-get, но для этого нужен не хилый ботнет хотябы в 2-3к ботов.
Позже уже пробуют то что выше.
Для шареда идеально подходит HTTP-get, по скольку В ОСНОВНОМ сисадмины защищаются от данного типа отключением сайтов, что хакерам и надо.
Что касается древних времен, то думаю все имевшие с этим дело помнять программу sprut =)
Эта программа выполнялась на одном компьютере посылая на сервер кучу запросов. Ее преимуществом на то время было в том, что о защите от DDoS никто и не думал, потому убить сайт было проще всего.
Поподробнее о syn:
Наиболее простым способом проведения DoS-атак является SYN-наводнение. Происходит это по следующей схеме. Атакующий компьютер посылает SYN-пакет жертве и, соответственно, получает обратно SYN/ACK-пакет. Если атакующий подтвердит ACK-пакетом факт получения ответа, то машины посчитают, что соединение установлено. Однако если атакующий не будет подтверждать этот факт, а продолжит постоянно передавать SYN-пакет на соединение, то запись о незавершенной процедуре подключения будет добавлена в буфер жертвы до истечения тайм-аута ответа. Когда в буфере накопится достаточное количество запросов, произойдет переполнение. После этого жертва перестанет отвечать на пользовательские запросы. Вот, собственно, и вся схема атаки. Чтобы не быть голословным, приведу пример заголовка пакета при данной атаке:
Сообщение от
None
sock.ip.version=4; // Версия
sock.ip.ihl=5; // Длина заголовка
sock.ip.tos=0; // Тип сервиса
sock.ip.tot_len=htons(40); // Общая длина
sock.ip.id=getpid(); // ID
sock.ip.frag_off=0; // Смещение фрагмента
sock.ip.ttl=255; // Время жизни
sock.ip.protocol=IPPROTO_TCP; // Используемый протокол
sock.ip.check=0; // Контрольная сумма
sock.ip.saddr=saddress; // Адрес источника
sock.ip.daddr=daddress; // Адрес назначения
Аналогичные примеры разбросаны по всему Интернету, поэтому я не удивлюсь, если ты его уже где-то встречал или же постил сам. Обрати внимание на fragment_off, то есть на смещение фрагмента. В некоторых случаях использование длинных пакетов с большой фрагментацией дает желаемый результат намного быстрее приведенного метода.
Вот еще хороший пример нашей атаки. Нам потребуются, как минимум, два компьютера . Мы посылаем пакет на порт 7 (echo) атакуемого хоста. При этом надо подменить адрес отправителя (кстати, об этом позже), который будет указывать у нас на порт 19 (chargen) другого хоста. Между двумя хостами произойдет процесс передачи информации постоянным потоком. То есть пакет, как феерический заяц-забегаец, начнет прыгать от одного хоста к другому, переключая все внимание серверов на себя. Таким образом, они буквально забомбят себя до состояния вантуза. Как итог — отказ в обслуживании.
Slow HTTP Post
Совсем недавно был открыт новый метод DoS, который практически сделал революцию в многолетнем стаже DDoS атак как классических.
Чтобы понять суть данного метода стоит всего лишь вдуматся в его название: медленный HTTP пост-запрос.
На практике это выглядит следующим образом: Клиент передает серверу "Content-Length", а после удачного запроса начинает ОЧЕНЬ медленно передавать сам post-запрос. При этом на сервере потребляется большое количество ресурсов что в конечном итоге приводит к зависанию.
Имеется ввиду что для 1 такого запроса требуется намного больше времени. Если организовать ботнет, то в теории получится смесь http-get и syn флуда.
Сообщение от
None
Атака была впервые продемонстрирована широкой публике на OWASP 2010 Application Security Conference. Исследователь Wong Onn Chee первый обнаружил атаку в 2009 совместно с командой исследователей из Сингапура. Позже были проведены исследования атаки (в том числе компанией Microsoft). Уязвимость в протоколе сейчас официально признана. Изначально атаки такого рода проводились в Китае. Для рекрутинга ботов использовались онлайн игры — компьютеры незадачливых игроков использовались для отправки специально сформированных HTTP-запросов целевой системе.
Подробнее на
хабре
[Happy End?]
Сообщение от
None
Что дозволено Юпитеру - не дозволено быку
Вот такие вот мы теперь крутые, можем устроить свой DDoS, да и вообще все замечательно. Однако не следует забывать, что повесить яндекс с диалапа не так просто, как кажется на первый взгляд. В принципе, можешь попытаться. Умные люди для этих целей используют свои армии затрояненных машин - DDoS ботнеты.
Еще не конец!
Всего, конечно же, не опишешь, однако я хотел рассказать про самую суть, чтобы ты узрел, наконец, в корень проблемы, а не в стебель конопли. Как видишь, нет ничего сверхсложного в технологии DDoS. Написать своего DDoS-бота можешь даже ты. Другое дело, что люди в погонах тебе спасибо не скажут, но это уже дело твое.
И в итоге:
Хотелось бы "внедрить" Вам лишь одно: Я работаю в данной сфере уже на протяжении 3 лет. Занимаюсь как и проведением DDoS-атак, так и настройкой серверов для защиты от них.
Но за это время я для себя выделил 3 вещи:
1) Не существует защиты, которая могла бы одолеть КАЧЕСТВЕННУЮ DDoS-атаку. Все зависит от Ваших рук и мозгов. Если ВЫ не настроете сервер качественно, то конец будет довольно печальным.
2) Не существует бота, который мог бы обойти умного сисадмина.
3) Нужно делать все во благо) Лично я беру заказы на DDoS лишь если там сайты с легальными наркотиками, педофилами и прочей нечестью.
Я даже, бывает, за бесплатно DDoS'ю некоторое время, пока не появится другой заказ.
Так что дорогие! Живите правильно, думайте умно и не забывайте 7 раз отмерять и 1 раз настроить.
Всем удачи!
Спасибо за внимание =)
С Вами был IsteriQ (OnlyOn)
[UPDATE]
Прошу прощения!
Когда делал шапку для статьи, хотел написать как в теории можно было бы завалить дата-центр google с помощю одного DDoS-зомби.
Так вот:
Если принять во внимание что у google есть свой дата-центр, который оснащен явно мощными серверами и причем в больших количествах, то выводы о анти-ддосе и канале напрашиваются сами по себе.
Как я описывал выше, единственным выходом остается забить канал.
Канал google примерно 1тБайт/с (Не путать с Бит).
Если взять во внимание что к ПОИСКОВОЙ системе google постоянно обращается народ, то в запасе остается примерно 100 гБайт/c.
Теоритично можно запустить syn, icmp, udp флуд с таким траффиком и google загнется.
Но если все таки подумать головой, то проще организовать ботнет:
1 средняя машина зомби имеет канал 512кбайт/c.
100гБайт * 1024 * 1024 / 512 = 204800 машин.
Что в современном мире является огромнейшим ботнетом!
За историю 21 века известно всего 3 ботнета что по мощности равнялись выше указаным размерам, но только 1 из них был заточен под DDoS (Те кто знают что админы ботнета натворили - поймут о чем я).
В любом случае в планетарных масштабах все очень просто, а вот с организацией будет сложновато.