DOS И DDOS АТАКИ НА WEB СЕРВЕРА. СТРЕСС-ТЕСТИРОВАНИЕ.
Сегодня мы рассмотрим варианты нагрузочного стресс-тестирования серверов и имитацию DoS (или DDoS, если тестировать с нескольких серверов) для Web серверов. Для чего это может быть полезно: для проверки собственных серверов и хостинг-провайдеров на данные типы уязвимостей.
DoS атаки будем использовать L3/4 и L7 уровней OSI.
dstIP – это IP адрес или FQDN имя атакуемой машины.
Первой будет утилита hping версии 3.
Начнем с атаки на превышение максимального количества полуоткрытых сессий (SYN-flood):
1
hping3 --flood -S -p 80 192.168.232.7
используемые параметры:
–flood – отправлять столько пакетов, сколько возможно.
-S – использовать SYN пакеты
-p 80 – пакеты отправляются на порт 80 (HTTP).
Вторым типом атаки будет ICMP-flood. Его лучше использовать вместе с большим размером пакетов, чтобы попробовать исчерпать входящий канал атакуемого сервера.
1
hping3 --flood --icmp -d 1000 dstIP
используемые параметры:
–icmp – используем пакеты ICMP
-d 1000 – указываем размер пакета
Теперь попробуем UDP-flood. Эта атака так же насыщает полосу пропускания.
1
hping3 --flood --udp -s 53 --keep -p 68 192.168.232.36
используемые параметры:
–udp – используем UDP
-s 53 – отправляем с порта 53
–keep – фиксируем порт отправления, иначе он будет увеличиваться на 1 для каждого следующего пакета
-p 68 – отправляем пакеты на порт 68
Теперь перейдем к атакам непосредственно на сам Web сервер.
Первой будет атака на медленные подключения. Смысл данной атаки в том, что у любого Web сервера есть лимит на количество одновременных подключений, но когда мы подключаемся и очень медленно запрашиваем страницу – соединение не сбрасывается, а количество параллельных подключений у сервера ограниченно.
1
slowhttptest -c 1000 -H -i 20 -r 200 -t GET -u http://dstIP -x 24 -p 3
используемые параметры:
-c – общее суммарное количество подключений
-i – пауза между сессиями для загрузкой части страницы (в рамках одного подключения)
-r – количество подключений в секунду
-t GET – использовать GET запросы (так же можно POST)
-u – URL. Поддерживает HTTP и HTTPS ссылки
-x – количество загружаемых байт из части страницы за одну сессию (в рамках одного подключения)
-p – время ожидания при проверке подключения. Если ответ от сервера не получен за это время, то сервер считается недоступным
-H – атака slow headers a.k.a. Slowloris
Так же доступные типы атак:
-B – атака slow body a.k.a R-U-Dead-Yet
-R – атака range attack a.k.a Apache killer
-X – атака Slow Read
И последний тип рассматриваемых атак. Утилита siege, которая просто запрашивает, в огромное количество потоков, страницы сайта, после чего происходит исчерпание либо ресурсов сервера (если запрашиваем тяжелые станицы) либо ресурсов исходящего канала (если запрашиваем тяжелые файлы).
1
siege -i -c 2000 https://dstIP/page
используемые параметры:
-i – симулировать обычного пользователя
-c – количество подключений
page – запрашиваемая страницы. тип атаки зависит от выбранной страницы.
Так же можно данной утилите передать флагом -R файл с перечислением страниц
Вот мы и рассмотрели набор для стресс-тестирования Web серверов.
Комментарии
Как это осуществляется?
Приблизительно как в торренте? В торрентах есть возможность регулирования скорости отдачи.
R.U.D.Y генерирует POST-запросы и затем долго, байт за байтом, дополняет их, чередуя периоды активности и бездействия. В результате все рабочие потоки атакуемого приложения зависают, ибо заняты нескончаемой обработкой однобайтовых фрагментов POST.
Http-клиент Slowloris вполне отвечает своему имени: он медленный и прожорливый. Клиент удерживает открытые соединения на атакуемом сервере, отправляя неполные http-запросы. Затем с заданной периодичностью он начинает досылать заголовки, сервер быстро исчерпывает весь лимит по прикладному стеку и становится недоступен для законных пользователей. Для успешной DDoS-атаки Slowloris хватит пары сотен запросов, подаваемых с заданной периодичностью и в течение долгого времени.
Как то так........
То есть дополнительные пакеты заголовка посылаются таким образом,чтобы не выйти за пределы лимита времени ,после которого происходит сброс.
Скажем,сервак способен на одновременную обработку двухсот запросов. Если все 200 полос запроса одновременно заняты,то двести первый и следующие запросы отклоняются.
В итоге - сайт или ресурс становится недоступным.
Что-то вроде пробки на дороге.