Загрузка...

Network stress test: DoS a website on Kali Linux with GoldenEye

Thread in Kali Linux created by renameduser_37329 Jun 18, 2016. 2940 views

  1. renameduser_37329
    renameduser_37329 Topic starter Jun 18, 2016 Banned 77 Apr 12, 2016
    Подробности об инструменте GoldenEye:

    Из поста автора 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. Если у вас нет каталога для сторонних программ, то создайте его и перейдите туда:


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


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


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


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


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

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

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

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

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

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

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

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

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

    Следить за состоянием сервера я буду командой top:
    [IMG]
    Т.е. сервер находится в состоянии простоя, процесс полностью свободен, свободной оперативной памяти доступно 350 мегабайт.


    Атака


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

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

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

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


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

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


    Одного взгляда на **** достаточно, что каждый запрос 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/*** может быстро истощить ресурсы сервера. Он даже может замедлить
    атаки на один IP для избежания начального выявления:


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

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

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

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

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

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


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

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


      • Понижение соединений на один IP (обычно их 300 на IP для Apache)
      • Редактирование порога соединений на IP
      • Отключить настройки KeepAlive и нижний Connection Timeout (по умолчанию это 300)
      • Если вы хоститесь на общем сервере, обратитесь к сисадминам. Если они не могут защитить от этой простой атаки, то просто переезжайте к хостинг компании получше.
      • Используйте Web application Firewall (WAF).
      • Использование белых листов для входящих запросов — и эта атака не окажет эффекта на ваш сервер.
      • NGINX и Node.js вроде бы лучше справляются с атаками подобного рода.
    Заключение
    GoldenEye выглядит как расширенная (или схожая на) HTTP Flooder программа. Обе работают похожим образом, но NoCache и KeepAlive от GoldenEye делают большую разницу. Также она использует интересный способ перемешивания браузеров, операционных систем и рефереров, что может обмануть файервол.

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

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

     
Loading...
Top