Если рассмотреть внешний периметр, то можно обнаружить, что многие провайдеры или компании, а также банковские учреждения, которые уже начали внедрять IPv6, не спешат закрывать свои административные порты (SSH, RDP, Telnet, VNC и так далее). И если IPv4 уже почти все стараются хоть как-то фильтровать, то про IPv6 или забывают, или не знают, что их нужно защищать так же, как и в случае с IPv4. И если можно отчасти понять используемый IPv4 телнет - например, ограниченная память или процессор не позволяют в полной мере использовать SSH, - то каждое устройство, которое поддерживает сегодня IPv6, просто гарантированно будет поддерживать и протокол SSH. Бывают случаи, когда провайдер оставляет открытыми административные порты IPv6 на своих маршрутизаторах. Получается, что даже операторы связи более уязвимы к IPv6 атакам. Происходит это по различным причинам. Во-первых, хороших IPv6 файрволов ещё не так много, во-вторых, их ещё нужно где-то купить и настроить. Ну и самая главная причина - многие даже и не подозревают об угрозах IPv6. Также бытует мнение, что пока нет IPv6 хакеров, малвари и IPv6 атак, то и защищаться вроде как не от чего.
Если вспомнить IPv4, то там найдётся три атаки, которые эффективны и по сей день в локальных сетях, - это ARP spoofing, DHCP snooping, а также ICMP-перенаправления.
В случае же протокола IPv6, когда нарушитель находится в одном локальном сегменте с целью атаки, то есть кто-либо из сотрудников компании или банка, ситуация, как ни странно, остаётся примерно такой же. Вместо ARP появился NDP, на смену DHCP пришла автоконфигурация, а ICMP просто обновился до ICMPv6. Важно то, что концепция атак осталась прежней, но кроме того, добавились новые механизмы вроде DaD, и, соответственно, сразу же появились новые векторы проникновений и новые атаки.
Протокол обнаружения соседей (Neighbor Discovery Protocol, NDP) - это протокол, с помощью которого IPv6 машины могут обнаружить друг друга, определить адрес канального уровня соседнего хоста (вместо ARP, который использовался в IPv4), обнаружить маршрутизаторы или что-то ещё. Чтобы этот механизм работал с использованием мультикаста каждый раз, когда назначается линк-локал или глобал IPv6 адрес на интерфейс, хост присоединяется к мультикаст-группе. Собственно, используется всего два типа сообщений в процессе neighbor discovery: запрос информации, или NS (neighbor solicitation), и предоставление информации - NA (neighbor advertisment).
В результате нарушителю нужно всего лишь запустить утилиту parasite6, которая будет отвечать на все NS, пролетающие в отдельно взятом сегменте. Перед этим нужно включить маршрутизацию (echo 1 > /proc/sys/net/ipv6/conf/all/forwarding), в противном случае произойдет не MiTM перехват трафика, а Black Hole.
Минусами такого внедрения является то, что нарушитель будет пытаться отравить ND-кеш всех рабочих станций, что, во-первых, шумно, во-вторых, затруднительно в случае больших объёмов трафика. Поэтому можно взять scapy и провести это внедрение вручную и прицельно. Сначала необходимо заполнить все нужные нам переменные
Вначале идут адреса канального уровня, в качестве адреса отправителя выступает MAC адрес нарушителя, в качестве получателя - MAC адрес цели.
Далее задаются адреса сетевого уровня, адрес отправителя подменяется (на самом деле это адрес маршрутизатора), адрес получателя - это IPv6 адрес цели.
Третьей переменной нужно указать правильно собранный пакет NA, где ICMPv6ND_NA - это ICMPv6 Neighbor Discovery - Neighbor Advertisment, а tgt - это собственно адрес маршрутизатора, который анонсируется как адрес нарушителя. Важно правильно установить все флаги: R=1 означает, что отправитель является маршрутизатором, S=1 скажет о том, что анонс отправляется в ответ на NS-сообщение, ну а O=1 - это так называемый override-флаг.
Следующая переменная - это Link local адрес ICMPv6NDOptDstLLAddr (ICMP Neighbor Discovery Option - Destination Link-Layer). Это MAC адрес нарушителя.
>>> packet=ether/ipv6/na/lla
Осталось собрать пакет в единое целое, и можно отправлять такой пакет в сеть.
>>> sendp(packet,loop=1,inter=3)
Значение loop=1 говорит о том, что отправлять нужно бесконечно, через каждые 3 секунды.
В итоге через некоторое время цель обновит свой кеш соседей и будет отправлять весь свой трафик, который предназначается маршрутизатору, через машину нарушителя. Нужно отметить, что для того, чтобы создать полноценный MiTM, потребуется запустить ещё один экземпляр scapy, где адреса будут инвертированы для отравления маршрутизатора. Как видишь, всё очень просто.
Также стоит отметить, что в IPv6 не существует понятия gratuitous NA, как это было во времена ARP (gratuitous ARP - это ARP-ответ, присланный без запроса), но вместе с тем кеш ND живёт недолго и быстро устаревает. Это было разработано, чтобы избежать отправки пакетов на несуществующие MAC адреса. Поэтому в сети IPv6 обмен сообщениями NS - NA происходит очень часто, что сильно играет на руку любому нарушителю.
Если вспомнить IPv4, то там найдётся три атаки, которые эффективны и по сей день в локальных сетях, - это ARP spoofing, DHCP snooping, а также ICMP-перенаправления.
В случае же протокола IPv6, когда нарушитель находится в одном локальном сегменте с целью атаки, то есть кто-либо из сотрудников компании или банка, ситуация, как ни странно, остаётся примерно такой же. Вместо ARP появился NDP, на смену DHCP пришла автоконфигурация, а ICMP просто обновился до ICMPv6. Важно то, что концепция атак осталась прежней, но кроме того, добавились новые механизмы вроде DaD, и, соответственно, сразу же появились новые векторы проникновений и новые атаки.
Протокол обнаружения соседей (Neighbor Discovery Protocol, NDP) - это протокол, с помощью которого IPv6 машины могут обнаружить друг друга, определить адрес канального уровня соседнего хоста (вместо ARP, который использовался в IPv4), обнаружить маршрутизаторы или что-то ещё. Чтобы этот механизм работал с использованием мультикаста каждый раз, когда назначается линк-локал или глобал IPv6 адрес на интерфейс, хост присоединяется к мультикаст-группе. Собственно, используется всего два типа сообщений в процессе neighbor discovery: запрос информации, или NS (neighbor solicitation), и предоставление информации - NA (neighbor advertisment).
Минусами такого внедрения является то, что нарушитель будет пытаться отравить ND-кеш всех рабочих станций, что, во-первых, шумно, во-вторых, затруднительно в случае больших объёмов трафика. Поэтому можно взять scapy и провести это внедрение вручную и прицельно. Сначала необходимо заполнить все нужные нам переменные
Вначале идут адреса канального уровня, в качестве адреса отправителя выступает MAC адрес нарушителя, в качестве получателя - MAC адрес цели.
Далее задаются адреса сетевого уровня, адрес отправителя подменяется (на самом деле это адрес маршрутизатора), адрес получателя - это IPv6 адрес цели.
Третьей переменной нужно указать правильно собранный пакет NA, где ICMPv6ND_NA - это ICMPv6 Neighbor Discovery - Neighbor Advertisment, а tgt - это собственно адрес маршрутизатора, который анонсируется как адрес нарушителя. Важно правильно установить все флаги: R=1 означает, что отправитель является маршрутизатором, S=1 скажет о том, что анонс отправляется в ответ на NS-сообщение, ну а O=1 - это так называемый override-флаг.
Следующая переменная - это Link local адрес ICMPv6NDOptDstLLAddr (ICMP Neighbor Discovery Option - Destination Link-Layer). Это MAC адрес нарушителя.
>>> packet=ether/ipv6/na/lla
Осталось собрать пакет в единое целое, и можно отправлять такой пакет в сеть.
>>> sendp(packet,loop=1,inter=3)
Значение loop=1 говорит о том, что отправлять нужно бесконечно, через каждые 3 секунды.
В итоге через некоторое время цель обновит свой кеш соседей и будет отправлять весь свой трафик, который предназначается маршрутизатору, через машину нарушителя. Нужно отметить, что для того, чтобы создать полноценный MiTM, потребуется запустить ещё один экземпляр scapy, где адреса будут инвертированы для отравления маршрутизатора. Как видишь, всё очень просто.
Также стоит отметить, что в IPv6 не существует понятия gratuitous NA, как это было во времена ARP (gratuitous ARP - это ARP-ответ, присланный без запроса), но вместе с тем кеш ND живёт недолго и быстро устаревает. Это было разработано, чтобы избежать отправки пакетов на несуществующие MAC адреса. Поэтому в сети IPv6 обмен сообщениями NS - NA происходит очень часто, что сильно играет на руку любому нарушителю.
No comments:
Post a Comment