Перейти к содержанию

IPv6

Ссылки

  • 2018г. Доклад Бориса Лыточкина (Яндекс) - Сетевая безопасность
  • IPv6 Toolkit - инструмент для проверки безопасности и поиска неисправностей в IPv6 сетях. Использовался в RFC7872, описывающим то, как теряются в глобальной сети IPv6 пакеты с расширенными заголовками.
  • RFC6105 (Feb 2011) - IPv6 Router Advertisement Guard.
  • RFC7113 (Feb 2014) - Implementation Advice for IPv6 Router Advertisement Guard (RA-Guard) - рекомендации для реализации RA Guard, призывающие анализировать всю цепочку расширенных заголовков для обнаружения RA сообщений.
  • RFC6980 (Aug 2013) - Security Implications of IPv6 Fragmentation with IPv6 Neighbor Discovery - описание последствий использования фрагментированного NDP.
  • RFC7112 - Implications of Oversized IPv6 Header Chains.
  • RFC5722 - Handling of Overlapping IPv6 Fragments.
  • RFC6946 - Processing of IPv6 "Atomic" Fragments.
  • RFC4941 (Sep 2007) - Privacy Extensions for Stateless Address Autoconfiguration in IPv6.
  • RFC4942 (Sep 2007) - IPv6 Transition/Coexistence Security Considerations.
  • RFC7721 (Mar 2016) - Security and Privacy Considerations for IPv6 Address Generation Mechanisms.
  • RFC7217 (Apr 2014) - A Method for Generating Semantically Opaque Interface Identifiers with IPv6 Stateless Address Autoconfiguration (SLAAC).
  • RFC7707 (Mar 2016) - Network Reconnaissance in IPv6 Networks - методы сканирования IPv6 сетей.
  • RFC3756 (May 2004) - IPv6 Neighbor Discovery (ND) Trust Models and Threats.
  • RFC6583 (Mar 2012) - Operational Neighbor Discovery Problems.
  • RFC6104 (Feb 2011) - Rogue IPv6 Router Advertisement Problem Statement.

Термины

  • FHS - First Hop Security - RA-GUARD, DHCPv6 Guard etc.

Атаки на заголовок

  • Flowlabel
    • Скрытая передача данных в поле flowlabel - маршрутизаторы не могут менять ненулевой flowlabel
    • Вызов перегрузок на разных участках сети - балансировка по полю flowlabel (ECMP, LAG)
  • Заголовок переменной длины (Extension Headers) - поле NH (next-header)
  • TrafficClass - передача скрытых данных

Атаки канального уровня

в конце строки способы защиты

  • Smurf attack - флуд пинг на мультикаст адрес - фильтрация
  • DAD - переполнение таблицы ND путем спуфинга - IPv6 snooping
    • Подделка ND - IPv6 snooping
    • Подделка RA - RA guard (можно обойти разными способами: фрагментированный NDP, добавление EH в ICMPv6 RA)
    • Подделка DHCPv6 server/relay - DHCPv6 snooping/guard

Безопасность

  • Изначально в IPv6 для безопасности было обязательно использовать IPSEC (MUST), но позже в RFC поменяли на SHOULD.
  • SEcure NDp (SEND) - дополнительные типы сообщений, использование X509 сертификатов

Эти способы не нашли широкой реализации.

Фильтрация

  • Фаерволл не должен фильтровать фрагменты (пакеты с EH Fragment Header).
  • Фаерволл должен корректно обрабатывать расширенные заголовки.

SLAAC

Развитие способов генерации адреса:

  • Modified EUI-64 - способ генерации "стабильного" адреса на основе MAC адреса. Таким образом IID остается одинаковым при смене сети. Таким образом имеет следующие недостатки в приватности:
  • Отслеживать сетевую активность устройства.
  • Отслеживать местоположение.
  • Упрощает сканирование сети.
  • Позволяет использовать уязвимости конкретных устройств.
  • Privacy Extensions - добавляет к постоянному адресу генерацию временного (приватного) адреса с ограниченным временем действия, который используется для исходящих подключений.
  • Не защищает от сканирования и обнаружения постоянного адреса.
  • Semantically Opaque IID - псевдорандомный IID, который остается неизменным, пока не изменится префикс.
  • Temporary Address Extensions - пришел на смену Privacy Extensions. Использует рандомизированный Semantically Opaque.

ICMPv6

Ключевые особенности для обеспечения безопасности:

  1. ICMPv6 error message не должны посылать в ответ на:
  2. пакеты с multicast адресом назначения, чтобы избежать обнаружение хостов и амплификаций.
  3. пакеты, адрес источника которых однозначно не идентифицирует хост, например, IPv6 Unspecified Address, Multicast address или Anycast address.
  4. Echo Reply опционален в ответе на Echo Request на multicast адрес. Лучше не слать во избежание Smurf атаки. В настоящее время большая часть операционных систем поступает именно так.
  5. Фильтруем информационные сообщения неизвестного типа, чтобы ICMPv6 не мог использоваться для обнаружения хостов.
  6. Нужно ограничивать рейт сообщений ICMPv6 error message.

Исключения

  1. Обработка Packet To Big Message для полноценной работы PMTUD.
  2. Обработка Parameter Problem Message, Code 2, сообщающего о нераспознанной IPv6 опции.

RIPE NCC IPv6 Security

Выжимка из курса RIPE с одноименным названием. Ниже перечислены виды атак.

Уязвимости основного заголовка

Threat #1 - IP spoofing

Описание

Заключается в подмене значения поля source address - IP spoofing.

Предотвращение

Техники также подходят и для IPv4.

  • Ingress Filtering [RFC2827 / BCP38] - фильтрация пакетов, исходящих из сети, с адресов, которые этой сети не принадлежат.
  • unicast Reverse Path Forwarding (uRPF) [RFC3704 / BCP84] - Ingress Filtering for Multihomed Networks - описывает несколько способов защиты, в том числе с использованием таблицы маршрутизации.

⁉️ - нужно разобраться, в чем отличие вышеуказанных практик.

Threat #2 - Covert channel

Описание

Заключается в передаче в полях flow label (20bit) или traffic class (8bit) информации, которая остается незамеченной инструментами защиты - covert channel. То есть общая пропускная способность скрытого канала - 28 бит.

Предотвращение

Использование IPS и IDS, которые могут заглядывать внутрь пакета, изучая его на предмет аномалий, например поле flow label, которое ожидается 0-м.

Уязвимости расширенных заголовков

image-20220105005945747

Threat #1 - Rouing Header

Описание

type 0 (RH0) уязвим и использовать его нельзя, а точнее он запрещен (RFC5095), т.к. позволяет удаленно зафлудить какой-либо путь или стык в интернете.

Предотвращение
  • Убедиться, что маршрутизаторы следуют RFC5095 и игнорируют RH0.
  • Фильтровать пакеты с RH0.

Threat #2 - Bypassing

Описание

Расширенные заголовки (EH) могу служить для скрытия типа отправленных пакетов. Есть два сценария:

  1. Обход RA Filtering/RA Guard при помощи любого EH - добавление в то место, где он не ожидается, например EH Destination Option перед ICMPv6 RA пакетом.

image-20220104234603554

В данный момент нет способа использовать EH в RA, но NDP не запрещает этого делать, просто игнорируя такие заголовки. RA-Guard в свою очередь определяет RA пакет только лишь заглядывая в поле Next Header основного заголовка, не следуя по всей цепочке EH.

  1. Обход RA Filtering/RA Guard при помощи EH Fragment (Fragmented NDP)- нацелен на то, чтобы устройство собирало фрагменты воедино, прежд чем понять, какой пакет был отправлен. Это непросто для реализации RA Guard на L2 коммутаторах.

image-20220105000042577

Предотвращение
  1. Проверять цепочку заголовков IPv6 правильно.

  2. Запрещать фрагментированные NDP пакеты (RFC6980).

Общим решением для защиты будет использовать RFC7112, который говорит о том, что цепочка заголовков всегда должна идти в первом фрагменте.

Threat #3 - Fragmentation

Описание

Для этого вектора атаки возможно 3 сценария:

  1. Пересекающиеся фрагменты - оффсет в EH Fragment нескольких пакетов указывает на то, что фрагменты пересекаются, т.е. один фрагмент частично или полностью перезаписывает другой.

Этот вектор может использоваться как teardrop атака, а также для обхода IDS. Фрагменты посылаются со случайными данными, которые в будущем могут быть перезаписаны на данные, являющиеся части атаки, если собранные IDS пакеты будут нераспознаны.

  1. Отсутствие последнего фрагмента - нацелен на исчерпание памяти целевой системы, т.к. она ждет последнего фрагмента, чтобы собрать все части вместе.

  2. Атомарные фрагменты - вектор атаки, при котором офсет выставляется в 0, а так же флаг M = 0 (последний фрагмент) - IPv6 пакет, фрагментированный на один фрагмент размером 0 байт. При получении такого пакета, целевая система отбросит все остальные фрагменты с таким же набором параметров: SRC, DST, Fragment Indetification. Т.е. атакующий заставляет целевой хост дропать легитимные пакеты с фрагментами.

В том числе могут отбрасываться и нефрагментированные пакеты, но у которых выставлен EH Fragment.

Предотвращение
  1. Пакеты с пересекающимися фрагментами и все остальные фрагменты дейтаграммы должны быть отброшены (RFC5722).
  2. Стандартом IPv6 установлен таймаут для ожидания последнего врагмента в 60сек начиная с первого полученного фрагмента. По его истечении все пакеты с фрагментами будут отброшены.
  3. Убедиться в том, что система правильно обрабатывает атомарные фрагменты (RFC6946). Такие фрагменты должны быть изолированы от остальных.

Методы сканирования сети

Способы определения префикса сети:

  1. Открытые источники (RIR например)
  2. Логи серверов
  3. Публичные архивы
  4. Bittorrent
  5. Общие шаблоны назначения/распределения адресов (/64)
  6. DNS (Direct/Reverse)
  7. Traceroute

Способы определения IID:

  1. EUI-64
  2. Low-bits / trivial ::1
  3. IPv4-based (2001:db8:1::10.0.0.5)
  4. Service port (2001:db8:1:1::80)
  5. Wordy address (2001:db8:1::bad:cafe)
  6. Sequential

Сканирование локальной сети

  1. Снифинг трафика
  2. В dual-stack сетях можно использовать IPv4 для извлечения полезной информациию
  3. Протоколы маршрутизации
  4. link-local протоколы. Например:
  5. Link-Local Multicast Name Resolution (LLMNR)
  6. Multicast DNS (mDNS)
  7. DNS Service Discovery (DNS-SD)

NDP

  • Hop limit 255 у сообщений.
  • В спецификации NDP упоминается использование IPSec для безопасности, но на практике не используется из-за сложности организации инфраструктуры публичных ключей (PKI).
  • Для безопасноти NDP был предложен SEND, но не прижился и не может быть использован.

Threat #1 - NS/NA Spoofing

Описание

Атакующий подменяет link-layer адрес в NS/NA сообщениях. В обоих случаях в кеш жертвы попадает этот неверный L2 адрес.

  • NS - подмена Source link-layer option.
  • NA - подмена Target link-layer option.

Целями такой подмены могут являться:

  • Перенаправление трафика.
  • DoS - дроп трафка, если подменненного link-layer адреса не существует.
  • Атакуя два хоста, можно осуществить MITM, пропуская их трафик между собой через себя.

Атака может применять в процессе NUD или DAD.

  • DAD - не дать хосту, который хочет сгенерировать себе адрес, сделать это.
  • NUD - создавать видимость того, что запрашиваемый хост все еще жив.
Предотвращение

Использовать FHS, реализованный на коммутаторах:

  • RA-GUARD
  • DHCPv6 Guard / DHCPv6 Shield
  • IPv6 Snooping (ND inspection + DHCPv6 Snooping) - создание таблицы биндингов на коммутаторе.
  • IPv6 Source / Prefix Guard - использует для фильтрации созданную при помощи IPv6 Snooping binding table.
  • IPv6 Destination Guard (or ND Resolution rate limiter)
  • MLD Snooping

Threat #2 - RA/RS Spoofing

Описание

  • Подмена роутера для перенаправления трафика на себя или DoS.
  • Фиктивный префикс on-link для перенаправяления трафика на себя или DoS.
  • Анонс фиктивного глобального префикса - DoS.
  • Подделка параметров, например для подсовывания DHCPv6 сервера.

Пердотвращение

...

...