Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Тандемные DDoS-атаки
    Артём Гавриченков
   <ag@highloadlab.com>
Проблема марсохода
Создавая Web-приложение,
90% разработчиков* программируют марсоход.


Как это происходит?


* – по данным сайта http://lurkmore.ru
Устройство Интернета
                Прикладной уровень
HTTP, HTTPS, FTP, ...
                Транспортный уровень
TCP, UDP, ...
                  Сетевой уровень
IP, ...
                 Канальный уровень
Ethernet, ...
Протокол TCP
   Придуман DARPA
   Используется для всего
       От задач Минобороны и NASA
       До гражданских приложений
   TCP – основа протокола HTTP
Протокол TCP
   Задачи:
     Целостность данных


       Устранение дубликатов


       Порядок


       Гарантия доставки


     Борьба с перегрузкой сети
Накладные расходы!
Протокол TCP
   TCP – это соединение
   Автомат TCP-соединения
Пример 1: установление соединения

«Без TCP»           TCP

     send();
     recv();
Проблема!
Много SYN-запросов
=> много занятых ресурсов
=> ресурсы заканчиваются

Такая атака называется SYN Flood
Решение
   SYN Cookies, SYN Cache, TCPMaxHalfOpen
       http://www.symantec.com/connect/articles/hardening-tcpip-stack-syn-
        attacks
       http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_9-
        4/syn_flooding_attacks.html
       http://people.redhat.com/sgrubb/files/hardening-rhel5.pdf
       http://support.microsoft.com/kb/324270
Пример 2: закрытие соединения

«Без TCP»           TCP

     nop;
Проблема!
После получения ACK атакующий
может не высылать FIN
=> соединение не закрывается
=> ресурсы не освобождаются

Так называемая «FIN-WAIT-2 атака»
Sockstress


 2008 г.
 Стресс-тестирование сетевого

  приложения
 Обнаружили FIN-WAIT-2 атаку
Решение
   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
Следите за руками.
Атакуем!
1. SYN Flood на машину
    Устанавливаем много соединений
    Переполняем stateful firewall
Атакуем!
1. SYN Flood на машину
    Устанавливаем много соединений
    Переполняем stateful firewall
2. Когда отслеживание соединений
   отключается – FIN-WAIT-2
Атакуем!
1. SYN Flood на машину
    Устанавливаем много соединений
    Переполняем stateful firewall
2. Когда отслеживание соединений
   отключается – FIN-WAIT-2
3. PROFIT!
Как же так?



   Как они могут ошибаться?
Как же так?



   Как они могут ошибаться?
   А они и не ошибаются.
Протокол TCP
   Придуман DARPA
   Используется для всего
       От задач Минобороны и NASA
       До гражданских приложений
   TCP – основа протокола HTTP
Протокол TCP
   Придуман DARPA
   Используется для всего
       От задач Минобороны и NASA
       До гражданских приложений
   TCP – основа протокола HTTP
TCP – швейцарский нож

   Делать можно всё
   Но не одновременно
Параметры TCP
   У автомата TCP есть мно-о-о-го
    параметров
       Не путать с TCP options!
       Таймауты
       Размеры временных окон
       Фрагментация
       ...
Параметры TCP
 Вендоры используют стандартные
  значения параметров TCP
 Стандартные значения одинаково [не]

  работают для всех приложений
Один TCP – на всех
                                                             VPN
        Web-сервер
                                          Телеметрия

                           MMS-гейт
                                                      Комплекс ПВО
    BitTorrent
                                                  



             Электронное голосование
                                                 Марсоход
         
                                             
Но у нас не марсоход!
1. ОС с параллельными SYN Cookies
2. Параметры автомата TCP
  Linux: net.ipv4.tcp_fin_timeout=5
  Windows: HKLMSystemCurrentControlSet
           ServicesTcpipParameters
           TcpFinWait2Delay [?]
Now it works!
 «Кончил, не кончил – 3 минуты!»
   – М. С. Горбачев
 Отключаем connection tracking


 Боремся с SYN Flood, как привыкли
Счастье!
...ага, щас.
Sockstress


 2009 г.
 Фундаментальная уязвимость

  в автомате TCP
Sockstress
 Тёмная лошадка
 Можем делать предположения


   Имитация SYN Cookies в ботнете


   Атака на механизмы борьбы с

    перегрузкой сети
Выводы?
 Протокол TCP был создан в 1970-х годах
 Автомат TCP-соединения описан

  недостаточно подробно
 Исследуя автомат TCP, можно находить

  актуальные уязвимости
Прогноз
 Анализ автомата TCP-соединения даст
  информацию о новых атаках
 Чтобы быть готовым к будущему,

  необходимо проводить такой анализ
Сейчас?
 Outpost24 тестирует протокол TCP
   Это даёт результаты


 Highload Lab занимается моделированием

  автомата TCP-соединения по
  спецификации
   Сложно, но перспективнее
Что же делать?
 Мы научились бороться с тандемной
  атакой. Уже хорошо
 Ждём новостей о новых проблемах
Встретимся через год
Спасибо за внимание!
Вопросы?

More Related Content

Тандемные DDoS-атаки (Артём Гавриченков)

  • 1. Тандемные DDoS-атаки Артём Гавриченков <ag@highloadlab.com>
  • 2. Проблема марсохода Создавая Web-приложение, 90% разработчиков* программируют марсоход. Как это происходит? * – по данным сайта http://lurkmore.ru
  • 3. Устройство Интернета Прикладной уровень HTTP, HTTPS, FTP, ... Транспортный уровень TCP, UDP, ... Сетевой уровень IP, ... Канальный уровень Ethernet, ...
  • 4. Протокол TCP  Придуман DARPA  Используется для всего  От задач Минобороны и NASA  До гражданских приложений  TCP – основа протокола HTTP
  • 5. Протокол TCP  Задачи:  Целостность данных  Устранение дубликатов  Порядок  Гарантия доставки  Борьба с перегрузкой сети
  • 7. Протокол TCP  TCP – это соединение  Автомат TCP-соединения
  • 8. Пример 1: установление соединения «Без TCP» TCP send(); recv();
  • 9. Проблема! Много SYN-запросов => много занятых ресурсов => ресурсы заканчиваются Такая атака называется SYN Flood
  • 10. Решение  SYN Cookies, SYN Cache, TCPMaxHalfOpen  http://www.symantec.com/connect/articles/hardening-tcpip-stack-syn- attacks  http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_9- 4/syn_flooding_attacks.html  http://people.redhat.com/sgrubb/files/hardening-rhel5.pdf  http://support.microsoft.com/kb/324270
  • 11. Пример 2: закрытие соединения «Без TCP» TCP nop;
  • 12. Проблема! После получения ACK атакующий может не высылать FIN => соединение не закрывается => ресурсы не освобождаются Так называемая «FIN-WAIT-2 атака»
  • 13. Sockstress  2008 г.  Стресс-тестирование сетевого приложения  Обнаружили 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
  • 16. Атакуем! 1. SYN Flood на машину  Устанавливаем много соединений  Переполняем stateful firewall
  • 17. Атакуем! 1. SYN Flood на машину  Устанавливаем много соединений  Переполняем stateful firewall 2. Когда отслеживание соединений отключается – FIN-WAIT-2
  • 18. Атакуем! 1. SYN Flood на машину  Устанавливаем много соединений  Переполняем stateful firewall 2. Когда отслеживание соединений отключается – FIN-WAIT-2 3. PROFIT!
  • 19. Как же так?  Как они могут ошибаться?
  • 20. Как же так?  Как они могут ошибаться?  А они и не ошибаются.
  • 21. Протокол TCP  Придуман DARPA  Используется для всего  От задач Минобороны и NASA  До гражданских приложений  TCP – основа протокола HTTP
  • 22. Протокол TCP  Придуман DARPA  Используется для всего  От задач Минобороны и NASA  До гражданских приложений  TCP – основа протокола HTTP
  • 23. TCP – швейцарский нож  Делать можно всё  Но не одновременно
  • 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, как привыкли
  • 31. Sockstress  2009 г.  Фундаментальная уязвимость в автомате TCP
  • 32. Sockstress  Тёмная лошадка  Можем делать предположения  Имитация SYN Cookies в ботнете  Атака на механизмы борьбы с перегрузкой сети
  • 33. Выводы?  Протокол TCP был создан в 1970-х годах  Автомат TCP-соединения описан недостаточно подробно  Исследуя автомат TCP, можно находить актуальные уязвимости
  • 34. Прогноз  Анализ автомата TCP-соединения даст информацию о новых атаках  Чтобы быть готовым к будущему, необходимо проводить такой анализ
  • 35. Сейчас?  Outpost24 тестирует протокол TCP  Это даёт результаты  Highload Lab занимается моделированием автомата TCP-соединения по спецификации  Сложно, но перспективнее
  • 36. Что же делать?  Мы научились бороться с тандемной атакой. Уже хорошо  Ждём новостей о новых проблемах