Security

Легко ли подделать IP-адреса?

Я читал некоторые заметки о новой публичной службе DNS от Google:

  1. Преимущества производительности

  2. Преимущества безопасности

В разделе «Безопасность» я заметил этот абзац:

Пока не будет повсеместно внедрено стандартное общесистемное решение уязвимостей DNS, такое как протокол DNSSEC2, открытые DNS-резолверы должны самостоятельно принимать некоторые меры для защиты от известных угроз. Было предложено множество методов; обзор большинства из них приведен в документе IETF RFC 4542: Measures for making DNS more resilient against forged answers. 

В Google Public DNS мы применили и рекомендуем следующие подходы:

Избыточное выделение ресурсов машины для защиты от прямых DoS-атак на сами резолверы. Поскольку IP-адреса легко подделываются злоумышленниками, невозможно блокировать запросы на основе IP-адреса или подсети; единственный эффективный способ борьбы с такими атаками просто поглотить нагрузку.

Мысль о том, что «талантливый» злоумышленник может тривиально использовать любой IP-адрес, какой захочет, и синтезировать столько уникальных поддельных IP-адресов, сколько захочет, действительно пугает!

Поэтому мой вопрос (вопросы):

  1. Действительно ли злоумышленнику так легко подделать IP-адрес?

  2. Если да, то какие меры защиты возможны?

Ответ 1

Как уже было сказано многими другими, IP-заголовки легко подделать, если не заботиться о получении ответа. Вот почему это в основном происходит с UDP, поскольку TCP требует трехстороннего соединения. Заметным исключением является SYN flood, который использует TCP и пытается задействовать ресурсы принимающего узла; опять же, поскольку ответы отбрасываются, адрес источника не имеет значения.

Особенно неприятным побочным эффектом способности злоумышленников подделывать адреса источников является атака обратного рассеивания. Здесь есть отличное описание, но если кратко, то это обратная сторона традиционной DDoS-атаки:

  1. Получите контроль над ботнетом.

  2. Настройте все ваши узлы на использование одного и того же IP-адреса источника для вредоносных пакетов. Этот IP-адрес будет вашей конечной жертвой.

  3. Отправьте пакеты со всех контролируемых вами узлов на различные адреса в интернете, используя порты, которые обычно не открыты, или подключаясь к действующим портам (TCP/80), утверждая, что вы являетесь частью уже существующей транзакции.

В любом из случаев, упомянутых в 3 пункте, многие узлы ответят ICMP unreachable или TCP reset, направленными на адрес источника вредоносного пакета. Теперь у злоумышленника есть потенциально тысячи нескомпрометированных машин в сети, осуществляющих DDoS-атаку на выбранную им жертву, и все это благодаря использованию поддельного IP-адреса источника.

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

  1. Фильтрация на входе обеспечение того, чтобы пакеты, поступающие в вашу сеть, исходили из диапазонов адресов, которые находятся на дальней стороне входящего интерфейса. Многие производители маршрутизаторов реализуют такие функции, как одноадресная переадресация обратного пути, которые используют таблицы маршрутизации и пересылки маршрутизатора для проверки того, что следующим пунктом адреса источника входящего пакета является входящий интерфейс. Лучше всего это выполняется на первом переходе третьего уровня в сети (т. е. на вашем шлюзе по умолчанию).

  2. Фильтрация на выходе обеспечение того, чтобы пакеты, покидающие вашу сеть, исходили только из принадлежащих вам диапазонов адресов. Это естественное дополнение к фильтрации на входе и, по сути, является частью «хорошего соседа», гарантируя, что, даже если ваша сеть скомпрометирована вредоносным трафиком, этот трафик не будет перенаправлен в сети, с которыми вы сотрудничаете.

Обе эти технологии наиболее эффективны и легко реализуются в «пограничных» сетях или сетях «доступа», где клиенты взаимодействуют с провайдером. Реализовать фильтрацию входящего/исходящего трафика на уровне выше уровня доступа становится труднее из-за сложностей, связанных с множественными путями и асимметричной маршрутизацией.

Я видел, как эти методы (особенно фильтрация входа) использовались с большим эффектом в корпоративной сети. Возможно, кто-то с большим опытом работы с поставщиками услуг сможет дать более глубокое представление о проблемах развертывания фильтрации на входе/выходе в интернете в целом. Я представляю, что поддержка аппаратного/программного обеспечения будет большой проблемой, а также невозможность заставить провайдеров в других странах внедрить аналогичную политику...

Ответ 2

Конечно, если меня не волнует получение ответов, я могу легко посылать пакеты, используя любой адрес источника. Так как многие провайдеры не имеют хороших правил маршрутизации, все, что я подделаю, будет доставлено.

Если атакующему действительно нужна двусторонняя связь, это превращается в очень сложный процесс. Если им нужна двусторонняя связь, то, как правило, проще просто использовать какой-нибудь прокси, который очень легко настроить, если вы знаете, что делаете.

Запрет людей по IP-адресу умеренно эффективен на SF/SO/SU, поскольку сайт использует http/https, что требует двусторонней связи.

Ответ 3

DNS использует пакеты UDP и TCP. UDP можно подделать, но не TCP. TCP требует трехстороннего соединения. Если IP-адрес для TCP-пакета подделан, то подделывающий компьютер не получит ответ и соединение не установится. UDP, как уже упоминалось в других ответах, «выстрелил и забыл» и не требует ответной связи. По этой причине DoS-атаки происходят почти исключительно в виде UDP-пакетов.

Есть много способов получить новый IP-адрес от своего провайдера. Смена MAC-адреса, безусловно, самый простой и работает у многих провайдеров. Кроме того, многие люди, которые замышляют атаки, могут использовать публичный прокси-сервер или TOR. Очевидно, что блокирование IP-адреса отправителя для этих пакетов просто заблокирует прокси или конечный узел TOR.

Так действует ли блокировка IP-адресов? Да, конечно. Но в итоге вы получите ошибки. Вы будете блокировать некоторые IP, которые на самом деле не являются источником проблемы (т. е. прокси), и у вас также будут люди, обходящие ваши блокировки путем смены IP. Человек, которому не повезло получить запрещенный IP, впоследствии не сможет получить доступ к сайтам семейства SO. Но процент ошибок должен быть небольшим. Если только вы не блокируете огромные наборы IP-адресов. Но если вы блокируете один или два в день, все должно быть в порядке.

Возможно, вы захотите внедрить более сложную схему, когда вы блокируете, но только на определенный период, например, на год. Если ваша сеть способна дросселировать пропускную способность или ограничивать соединение, вы также можете рассмотреть схему, при которой злоумышленников, запускающих на вашем сайте Apache Benchmarks, просто ограничивают в доступе.

Ответ 4

Подмена IP-адресов будет продолжаться, потому что провайдеры ленивы.

Мой провайдер очень хорошо знает, что я нахожусь на определенном адресе или, по крайней мере, в подсети. Тем не менее я могу использовать любой адрес источника. Почему так? 

Если я подделаю несколько адресов здесь или там, это ничего не будет стоить моему провайдеру. Если бы каждый пользователь моего провайдера подделал один пакет между 1:00 и 2:00, это было бы едва заметным для него. Однако когда ботнет посылает множество поддельных пакетов со многих узлов многих провайдеров, целевая машина или сеть падает.

Финансовая реальность такова, что, если только вы не являетесь объектом атаки, спуфинг ничего не стоит. Стоит денег внедрить фильтрацию у клиента, и тот, кто тратит деньги, получает очень мало отдачи, кроме осознания того, что он является хорошим гражданином сети.

Легче всего подделать UDP и ICMP, но TCP также возможен. Для этого требуется небезопасная удаленная ОС, которая использует предсказуемые порядковые номера для эксплуатации. Иногда именно машины балансировки нагрузки изменяют порядковые номера и делают их предсказуемыми. Таким образом, TCP возможен, но более сложен.

Борьба с подделкой DNS в основном сосредоточена на безопасности предотвращении отправки ложного ответа на рекурсивный резольвер. Аспекты флудинга UDP не являются специфическими для DNS, кроме того, что один небольшой запрос (скажем, на '.') вызовет довольно большой ответ. Таким образом, это хороший вектор усиления. Существует множество других протоколов UDP, которые работают, но DNS используется повсеместно, и легко найти машины, которые можно использовать для усиления атак.

DNSSEC делает это еще хуже, поскольку UDP-пакеты могут достигать размера 4k. 

Схожие статьи

Security

Как предотвратить атаки «нулевого дня»

Security

Установка прав администратора групповой политики для определенных пользователей

Security

Множество попыток взлома в день — как с этим бороться?

Киберпреступления в банковской сфере: самые известные случаи
Security

Киберпреступления в банковской сфере: самые известные случаи