Презентация к докладу Артёма Гавриченкова (ximaera), ведущего разработчика сети фильтрации трафика Qrator, для конференции HighLoad++ (25-26 октября 2010, Москва).
В данном докладе описывается потенциальная тандемная атака, включающая в себя одновременно SYN flood и одну из атак на FIN-WAIT-2 или Sockstress.
Широко известная атака на отказ в обслуживании протокола TCP — SYN Flood — хорошо изучена, существуют популярные методы борьбы с ней, включая, например, технологию SYN cookies [1]. Важным свойством этого вида атак является их влияние на модули отслеживания соединений (connection tracking). Даже при использовании SYN cookies каждый входящий TCP-сегмент с выставленным флагом SYN создаёт запись в базе отслеживаемых соединений, что спустя некоторое время может привести к переполнению базы и потере новых запросов на соединения.
Менее известная атака, носящая кодовое название FIN-WAIT-2 attack, эксплуатирует особенности алгоритма закрытия TCP-соединения. Данная атака подробно разбирается в CPNI Technical Note 3/2009: Security Assessment of the Transmission Control Protocol. Её основная цель — исчерпание памяти, используемой TCP-соединениями, находящимися в фазе FIN-WAIT-2 закрытия соединения. При определённых условиях соединение может находиться в этом состоянии продолжительное время, при этом все ресурсы, задействованные соединением, не будут доступны активным компонентам атакуемой системы.
1. Dave Dittrich, Some TCP/IP Vulnerabilities: Weaknesses, attack tools, defenses [HTML] (http://staff.washington.edu/dittrich/talks/agora/index.html).
3. Устройство Интернета
Прикладной уровень
HTTP, HTTPS, FTP, ...
Транспортный уровень
TCP, UDP, ...
Сетевой уровень
IP, ...
Канальный уровень
Ethernet, ...
4. Протокол TCP
Придуман DARPA
Используется для всего
От задач Минобороны и NASA
До гражданских приложений
TCP – основа протокола HTTP
5. Протокол TCP
Задачи:
Целостность данных
Устранение дубликатов
Порядок
Гарантия доставки
Борьба с перегрузкой сети
12. Проблема!
После получения ACK атакующий
может не высылать FIN
=> соединение не закрывается
=> ресурсы не освобождаются
Так называемая «FIN-WAIT-2 атака»
14. Решение
Stateful firewall
Помним уже установленные соединения
Ограничиваем количество новых
Ссылки:
http://www.microsoft.com/technet/security/Bulletin/MS09-048.mspx
http://kbase.redhat.com/faq/docs/DOC-18730
http://www.cisco.com/warp/public/707/cisco-sa-20090908-tcp24.shtml
24. Параметры TCP
У автомата TCP есть мно-о-о-го
параметров
Не путать с TCP options!
Таймауты
Размеры временных окон
Фрагментация
...
25. Параметры TCP
Вендоры используют стандартные
значения параметров TCP
Стандартные значения одинаково [не]
работают для всех приложений
26. Один TCP – на всех
VPN
Web-сервер
Телеметрия
MMS-гейт
Комплекс ПВО
BitTorrent
Электронное голосование
Марсоход
27. Но у нас не марсоход!
1. ОС с параллельными SYN Cookies
2. Параметры автомата TCP
Linux: net.ipv4.tcp_fin_timeout=5
Windows: HKLMSystemCurrentControlSet
ServicesTcpipParameters
TcpFinWait2Delay [?]
28. Now it works!
«Кончил, не кончил – 3 минуты!»
– М. С. Горбачев
Отключаем connection tracking
Боремся с SYN Flood, как привыкли
32. Sockstress
Тёмная лошадка
Можем делать предположения
Имитация SYN Cookies в ботнете
Атака на механизмы борьбы с
перегрузкой сети
33. Выводы?
Протокол TCP был создан в 1970-х годах
Автомат TCP-соединения описан
недостаточно подробно
Исследуя автомат TCP, можно находить
актуальные уязвимости
34. Прогноз
Анализ автомата TCP-соединения даст
информацию о новых атаках
Чтобы быть готовым к будущему,
необходимо проводить такой анализ
35. Сейчас?
Outpost24 тестирует протокол TCP
Это даёт результаты
Highload Lab занимается моделированием
автомата TCP-соединения по
спецификации
Сложно, но перспективнее
36. Что же делать?
Мы научились бороться с тандемной
атакой. Уже хорошо
Ждём новостей о новых проблемах